Skip to content

Commit 753992b

Browse files
committed
Add prefix customization for beluga-mode
1 parent b24b727 commit 753992b

File tree

1 file changed

+40
-13
lines changed

1 file changed

+40
-13
lines changed

tools/beluga-mode.el

Lines changed: 40 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -139,21 +139,46 @@ in unicode using Font Lock mode."
139139

140140
(defgroup beluga ()
141141
"Editing support for the Beluga language."
142-
:group 'languages)
142+
:group 'languages
143+
:prefix 'beluga-mode
144+
:link '(function-link beluga-mode))
143145

144-
(defvar beluga-mode-map
146+
(defvar beluga-mode-command-map
145147
(let ((map (make-sparse-keymap)))
146-
(define-key map "\C-c\C-c" 'compile)
147-
(define-key map "\C-c\C-l" 'beluga-highlight-holes)
148-
(define-key map "\C-c\C-e" 'beluga-erase-holes)
149-
(define-key map "\C-c\C-x" 'beluga-run-command)
150-
(define-key map "\C-c\C-t" 'beluga-get-type)
151-
(define-key map "\C-c\C-s" 'beluga-split-hole)
152-
(define-key map "\C-c\C-i" 'beluga-intro-hole)
153-
(define-key map "\C-c\C-j" 'beluga-hole-jump)
154-
(define-key map "\C-c\C-p" 'beluga-hole-info)
148+
(define-key map "\C-c" 'compile)
149+
(define-key map "\C-l" 'beluga-highlight-holes)
150+
(define-key map "\C-e" 'beluga-erase-holes)
151+
(define-key map "\C-x" 'beluga-run-command)
152+
(define-key map "\C-t" 'beluga-get-type)
153+
(define-key map "\C-s" 'beluga-split-hole)
154+
(define-key map "\C-i" 'beluga-intro-hole)
155+
(define-key map "\C-j" 'beluga-hole-jump)
156+
(define-key map "\C-p" 'beluga-hole-info)
155157
map))
156158

159+
(defvar beluga-mode-map (make-sparse-keymap))
160+
161+
(defcustom beluga-mode-prefix-key "\C-c"
162+
"Prefix key for beluga-mode commands.
163+
164+
Changing this variable outside Customize does not have any
165+
effect. To change the prefix key from Lisp, you need to
166+
explicitly re-define the prefix key:
167+
168+
(define-key beluga-mode-map beluga-mode-prefix-key nil)
169+
(setq beluga-mode-prefix-key (kbd \"C-c C-b\"))
170+
(define-key beluga-mode-map beluga-mode-prefix-key
171+
beluga-mode-command-map)"
172+
:type 'key-sequence
173+
:group 'beluga
174+
:risky t
175+
:set
176+
(lambda (variable key)
177+
(when (and (boundp variable) (boundp 'beluga-mode-map))
178+
(define-key beluga-mode-map (symbol-value variable) nil)
179+
(define-key beluga-mode-map key beluga-mode-command-map))
180+
(set-default variable key)))
181+
157182
(defvar beluga-mode-syntax-table
158183
(let ((st (make-syntax-table)))
159184
(modify-syntax-entry ?% "< 14" st)
@@ -649,12 +674,14 @@ function returns nil."
649674

650675
(defun beluga--prompt-with-hole-at-point (prompt)
651676
"Prompt the user to specify a hole with PROMPT.
652-
The named hole at point is provided as the default if any."
677+
The named hole at point is provided as the default if any.
678+
Otherwise, the first hole (with id \"0\") is used as the default."
653679
(let ((name (beluga-named-hole-at-point)))
654680
(if name
655681
(read-string (format "%s (%s): " prompt name)
656682
nil nil name)
657-
(read-string (format "%s: " prompt)))))
683+
(read-string (format "%s (0): " prompt)
684+
nil nil "0"))))
658685

659686
(defun beluga--begin-command ()
660687
"Perform necessary setup to begin a compound Beluga Interactive command.

0 commit comments

Comments
 (0)