diff --git a/haskell-debug.el b/haskell-debug.el index 969112076..d6119e06f 100644 --- a/haskell-debug.el +++ b/haskell-debug.el @@ -72,21 +72,25 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Mode +(defvar haskell-debug-mode-map + (let ((map (make-sparse-keymap))) + (define-key map (kbd "g") 'haskell-debug/refresh) + (define-key map (kbd "s") 'haskell-debug/step) + (define-key map (kbd "t") 'haskell-debug/trace) + (define-key map (kbd "d") 'haskell-debug/delete) + (define-key map (kbd "b") 'haskell-debug/break-on-function) + (define-key map (kbd "a") 'haskell-debug/abandon) + (define-key map (kbd "c") 'haskell-debug/continue) + (define-key map (kbd "p") 'haskell-debug/previous) + (define-key map (kbd "n") 'haskell-debug/next) + (define-key map (kbd "RET") 'haskell-debug/select) + map) + "Keymap for `haskell-debug-mode'.") + (define-derived-mode haskell-debug-mode text-mode "Debug" "Major mode for debugging Haskell via GHCi.") -(define-key haskell-debug-mode-map (kbd "g") 'haskell-debug/refresh) -(define-key haskell-debug-mode-map (kbd "s") 'haskell-debug/step) -(define-key haskell-debug-mode-map (kbd "t") 'haskell-debug/trace) -(define-key haskell-debug-mode-map (kbd "d") 'haskell-debug/delete) -(define-key haskell-debug-mode-map (kbd "b") 'haskell-debug/break-on-function) -(define-key haskell-debug-mode-map (kbd "a") 'haskell-debug/abandon) -(define-key haskell-debug-mode-map (kbd "c") 'haskell-debug/continue) -(define-key haskell-debug-mode-map (kbd "p") 'haskell-debug/previous) -(define-key haskell-debug-mode-map (kbd "n") 'haskell-debug/next) -(define-key haskell-debug-mode-map (kbd "RET") 'haskell-debug/select) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Globals diff --git a/haskell-indent.el b/haskell-indent.el index 0075f46f9..0d81d546e 100644 --- a/haskell-indent.el +++ b/haskell-indent.el @@ -1524,9 +1524,8 @@ One indentation cycle is used." (let ((map (current-local-map))) (while (and map (not (eq map haskell-indent-map))) (setq map (keymap-parent map))) - (if map - ;; haskell-indent-map is already active: nothing to do. - nil + ;; if haskell-indent-map is already active: there's nothing to do. + (unless map ;; Put our keymap on top of the others. We could also put it in ;; second place, or in a minor-mode. The minor-mode approach would be ;; easier, but it's harder for the user to override it. This approach diff --git a/haskell-indentation.el b/haskell-indentation.el index c4845d3da..03c5348a6 100644 --- a/haskell-indentation.el +++ b/haskell-indentation.el @@ -89,10 +89,11 @@ positions are allowed." :group 'haskell-indentation) (defconst haskell-indentation-mode-map - (let ((keymap (make-sparse-keymap))) - (define-key keymap (kbd "RET") 'haskell-indentation-newline-and-indent) - (define-key keymap (kbd "") 'haskell-indentation-indent-backwards) - keymap)) + (let ((map (make-sparse-keymap))) + (define-key map (kbd "RET") 'haskell-indentation-newline-and-indent) + (define-key map (kbd "") 'haskell-indentation-indent-backwards) + map) + "Keymap for `haskell-indentation-mode'.") ;;;###autoload (define-minor-mode haskell-indentation-mode diff --git a/haskell-interactive-mode.el b/haskell-interactive-mode.el index e9e7f80e1..715e980a8 100644 --- a/haskell-interactive-mode.el +++ b/haskell-interactive-mode.el @@ -81,7 +81,7 @@ interference with prompts that look like haskell expressions." (define-key map (kbd "TAB") 'haskell-interactive-mode-tab) (define-key map (kbd "") 'haskell-interactive-mode-kill-whole-line) map) - "Interactive Haskell mode map.") + "Keymap used in `haskell-interactive-mode'") (define-derived-mode haskell-interactive-mode fundamental-mode "Interactive-Haskell" "Interactive mode for Haskell. diff --git a/haskell-menu.el b/haskell-menu.el index b57f604f7..655a8fe41 100644 --- a/haskell-menu.el +++ b/haskell-menu.el @@ -48,6 +48,14 @@ (switch-to-buffer-other-window (get-buffer haskell-menu-buffer-name)) (haskell-menu-revert-function nil nil)) +(defvar haskell-menu-mode-map + (let ((map (make-sparse-keymap))) + (define-key map (kbd "n") 'next-line) + (define-key map (kbd "p") 'previous-line) + (define-key map (kbd "RET") 'haskell-menu-mode-ret) + map) + "Keymap for `haskell-menu-mode'.") + (define-derived-mode haskell-menu-mode special-mode "Haskell Session Menu" "Major mode for managing Haskell sessions. Each line describes one session. @@ -59,9 +67,6 @@ Letters do not insert themselves; instead, they are commands." (haskell-menu-revert-function nil t)) (suppress-keymap haskell-menu-mode-map t) -(define-key haskell-menu-mode-map (kbd "n") 'next-line) -(define-key haskell-menu-mode-map (kbd "p") 'previous-line) -(define-key haskell-menu-mode-map (kbd "RET") 'haskell-menu-mode-ret) (defun haskell-menu-revert-function (_arg1 _arg2) "Function to refresh the display." diff --git a/haskell-mode.el b/haskell-mode.el index 62fabad2a..58a4e7409 100644 --- a/haskell-mode.el +++ b/haskell-mode.el @@ -208,7 +208,7 @@ be set to the preferred literate style." (define-key map (kbd "C-c C-i") 'haskell-mode-enable-process-minor-mode) (define-key map (kbd "C-c C-s") 'haskell-mode-toggle-scc-at-point) map) - "Keymap used in Haskell mode.") + "Keymap used in `haskell-mode'.") (defvar haskell-ghc-supported-extensions diff --git a/haskell-presentation-mode.el b/haskell-presentation-mode.el index 956197ff5..c60454578 100644 --- a/haskell-presentation-mode.el +++ b/haskell-presentation-mode.el @@ -28,6 +28,13 @@ (require 'haskell-mode) (require 'haskell-session) +(defvar haskell-presentation-mode-map + (let ((map (make-sparse-keymap))) + (define-key map (kbd "q") 'quit-window) + (define-key map (kbd "c") 'haskell-presentation-clear) + map) + "Keymap for `haskell-presentation-mode'.") + (define-derived-mode haskell-presentation-mode haskell-mode "Presentation" "Major mode for viewing Haskell snippets. @@ -42,12 +49,6 @@ "-- Hit `q' to close this window; `c' to clear.\n\n" "Hint message appered in Haskell Presentation buffer.") -(easy-mmode-defmap - haskell-presentation-mode-map - `(("q" . quit-window) - ("c" . haskell-presentation-clear)) - "The base key map for `haskell-presentation-mode'.") - (defun haskell-presentation-buffer () "Return Haskell Presentaion buffer. Return current presenation buffer or create new one if absent. diff --git a/haskell.el b/haskell.el index 39d36dd3d..0ffaa9643 100644 --- a/haskell.el +++ b/haskell.el @@ -59,7 +59,7 @@ (define-key map (kbd "M-p") 'haskell-goto-prev-error) (define-key map (kbd "C-c M-p") 'haskell-goto-first-error) map) - "Keymap for using haskell-interactive-mode.") + "Keymap for using `interactive-haskell-mode'.") ;;;###autoload (define-minor-mode interactive-haskell-mode diff --git a/inf-haskell.el b/inf-haskell.el index 6cdd3bd01..308541606 100644 --- a/inf-haskell.el +++ b/inf-haskell.el @@ -816,7 +816,7 @@ we load it." (define-key map (kbd "C-c C-d") 'inferior-haskell-find-haddock) (define-key map (kbd "C-c C-v") 'haskell-check) map) - "Keymap for using inf-haskell.") + "Keymap for using `inf-haskell-mode'.") ;;;###autoload (define-minor-mode inf-haskell-mode