@@ -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