-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathrobby-mode.el
73 lines (59 loc) · 2.33 KB
/
robby-mode.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
;;; robby-mode.el --- robby-mode minor mode -*- lexical-binding:t -*-
;;; Commentary:
;; Provides robby-minor-mode. This mode binds the default robby keybindings,
;; and adds a robby spinner lighter.
;;; Code:
(require 'robby-commands)
(require 'robby-process)
(require 'robby-spinner)
;;;###autoload (autoload 'robby-command-map "robby")
(defvar robby-command-map
(let ((map (make-sparse-keymap)))
(define-key map "a" 'robby-append-region)
(define-key map "b" 'robby-builder)
(define-key map "c" 'robby-chat)
(define-key map "C" 'robby-chat-from-region)
(define-key map "e" 'robby-commands)
(define-key map "i" 'robby-insert-last-command)
(define-key map "k" 'robby-kill-last-process)
(define-key map "l" 'robby-clear-history)
(define-key map "m" 'robby-message)
(define-key map "o" 'robby-api-options)
(define-key map "p" 'robby-prepend-region)
(define-key map "r" 'robby-replace-region)
(define-key map "u" 'robby-run-last-command)
(define-key map "fd" 'robby-describe-code)
(define-key map "ff" 'robby-fix-code)
(define-key map "fg" 'robby-git-commit-message)
(define-key map "fo" 'robby-add-comment)
(define-key map "ft" 'robby-write-tests)
(define-key map "fs" 'robby-summarize)
(define-key map "fx" 'robby-proof-read)
map)
"Robby command map.")
;;;###autoload (autoload 'robby-keymap-prefix "robby")
(defvar robby-keymap-prefix (kbd "C-c C-r"))
;;;###autoload (autoload 'robby-mode-map "robby")
(defvar robby-mode-map
(let ((map (make-sparse-keymap)))
(define-key map robby-keymap-prefix robby-command-map)
map))
(defun robby--kill-robby-process ()
"Kill robby process associated with the current buffer.
Silently kill any robby process associated with the current
buffer."
(when (and (boundp 'robby-mode) robby-mode)
(robby-kill-last-process t)))
;;;###autoload (autoload 'robby-mode "robby")
(define-minor-mode robby-mode
"Minor mode for running robby commands."
:global t
:lighter (:eval (robby-spinner-modeline))
:keymap robby-mode-map
:group 'robby
;; add robby-kill-robby-process to kill-buffer-hook when entering robby-mode, remove when leaving
(if robby-mode
(add-hook 'kill-buffer-hook #'robby--kill-robby-process)
(remove-hook 'kill-buffer-hook #'robby--kill-robby-process)))
(provide 'robby-mode)
;;; robby-mode.el ends here