From 792466ea51fcd25192dea9b1b28a4d4cd9faf6c2 Mon Sep 17 00:00:00 2001 From: Jose Antonio Ortega Ruiz Date: Mon, 14 Jun 2010 23:54:51 +0200 Subject: Menus for geiser-mode. --- elisp/geiser-doc.el | 4 +-- elisp/geiser-menu.el | 6 ++-- elisp/geiser-mode.el | 93 +++++++++++++++++++++++++++++----------------------- 3 files changed, 57 insertions(+), 46 deletions(-) (limited to 'elisp') diff --git a/elisp/geiser-doc.el b/elisp/geiser-doc.el index cf7b7a7..b8701b4 100644 --- a/elisp/geiser-doc.el +++ b/elisp/geiser-doc.el @@ -349,8 +349,6 @@ With prefix, the current page is deleted from history." (set-keymap-parent map button-buffer-map) map)) -(defun geiser-doc--visible-p () ) - (geiser-menu--defmenu doc geiser-doc-mode-map ("Next page" ("n" "f") geiser-doc-next "Next item" :enable (geiser-doc--history-next-p)) @@ -358,7 +356,7 @@ With prefix, the current page is deleted from history." :enable (geiser-doc--history-previous-p)) ("Next link" nil forward-button) ("Previous link" nil backward-button) - ("Go to REPL" ("z" "\C-cz" "\C-\C-z") switch-to-geiser) + ("Go to REPL" ("z" "\C-cz" "\C-c\C-z") switch-to-geiser) ("Refresh" ("g" "r") geiser-doc-refresh "Refresh current page") -- ("Edit symbol" ("." "\M-.") geiser-doc-edit-symbol-at-point diff --git a/elisp/geiser-menu.el b/elisp/geiser-menu.el index a298092..f1aa5d8 100644 --- a/elisp/geiser-menu.el +++ b/elisp/geiser-menu.el @@ -89,7 +89,8 @@ (defmacro geiser-menu--mode-toggle (title bindings mode keymap map) `(geiser-menu--add-item ,keymap ,map - (,title ,bindings ,mode :button (:toggle . (and (boundp ',mode) ,mode))))) + (,title ,bindings ,mode + :button (:toggle . (and (boundp ',mode) ,mode))))) (defmacro geiser-menu--defmenu (name keymap &rest keys) (let ((mmap (make-symbol "mmap"))) @@ -102,7 +103,8 @@ (cons "Switch to" geiser-menu--custom-switch)) (define-key ,mmap [Run] (cons "Run" geiser-menu--custom-run)) (geiser-menu--add-line ,mmap) - (geiser-menu--add-items ,keymap ,mmap ,keys))))) + (geiser-menu--add-items ,keymap ,mmap ,keys) + ,mmap)))) (put 'geiser-menu--defmenu 'lisp-indent-function 2) diff --git a/elisp/geiser-mode.el b/elisp/geiser-mode.el index 86baabc..0b53428 100644 --- a/elisp/geiser-mode.el +++ b/elisp/geiser-mode.el @@ -11,6 +11,8 @@ +(require 'geiser-repl) +(require 'geiser-menu) (require 'geiser-doc) (require 'geiser-compile) (require 'geiser-completion) @@ -21,7 +23,6 @@ (require 'geiser-debug) (require 'geiser-impl) (require 'geiser-eval) -(require 'geiser-repl) (require 'geiser-popup) (require 'geiser-custom) (require 'geiser-base) @@ -156,6 +157,11 @@ With prefix, try to enter the current's buffer module." (interactive "P") (if arg (switch-to-geiser-module) (switch-to-geiser))) +(defun geiser-mode-switch-to-repl-and-enter () + "Switches to Geiser REPL and enters current's buffer module." + (interactive) + (geiser-mode-switch-to-repl t)) + ;;; Geiser mode: @@ -167,8 +173,7 @@ With prefix, try to enter the current's buffer module." (or geiser-mode-string (format " %s" (or (geiser-impl--impl-str) "G")))) -(defvar geiser-mode-map (make-sparse-keymap) - "Key map for geiser-mode") +(defvar geiser-mode-map (make-sparse-keymap)) (define-minor-mode geiser-mode "Toggle Geiser's mode. @@ -203,44 +208,50 @@ interacting with the Geiser REPL is at your disposal. ;;; Keys: -(defun geiser-mode--triple-chord (p k c) - (define-key geiser-mode-map (vector '(control ?c) `(control ,p) k) c) - (define-key geiser-mode-map (vector '(control ?c) `(control ,p) - `(control ,k)) c)) - -(define-key geiser-mode-map "\C-c\C-z" 'geiser-mode-switch-to-repl) -(define-key geiser-mode-map "\C-c\C-s" 'geiser-set-scheme) - -(define-key geiser-mode-map "\C-c\C-l" 'geiser-load-current-buffer) -(define-key geiser-mode-map "\C-c\C-k" 'geiser-compile-current-buffer) - -(define-key geiser-mode-map (kbd "M-TAB") 'geiser-completion--complete-symbol) -(define-key geiser-mode-map (kbd "M-`") 'geiser-completion--complete-module) -(define-key geiser-mode-map (kbd "C-.") 'geiser-completion--complete-module) -(define-key geiser-mode-map "\M-." 'geiser-edit-symbol-at-point) -(define-key geiser-mode-map "\M-," 'geiser-edit-pop-edit-symbol-stack) -(define-key geiser-mode-map (kbd "C-c <") 'geiser-xref-callers) -(define-key geiser-mode-map (kbd "C-c >") 'geiser-xref-callees) - -(define-key geiser-mode-map "\M-\C-x" 'geiser-eval-definition) -(define-key geiser-mode-map "\C-x\C-e" 'geiser-eval-last-sexp) -(define-key geiser-mode-map "\C-c\M-e" 'geiser-eval-definition-and-go) -(define-key geiser-mode-map "\C-c\C-r" 'geiser-eval-region) -(define-key geiser-mode-map "\C-c\M-r" 'geiser-eval-region-and-go) -(define-key geiser-mode-map "\C-c\M-c" 'geiser-compile-definition) -(define-key geiser-mode-map "\C-c\C-c" 'geiser-compile-definition-and-go) - -(geiser-mode--triple-chord ?d ?a 'geiser-autodoc-mode) -(geiser-mode--triple-chord ?d ?d 'geiser-doc-symbol-at-point) -(geiser-mode--triple-chord ?d ?m 'geiser-doc-module) - -(geiser-mode--triple-chord ?e ?m 'geiser-edit-module) - -(geiser-mode--triple-chord ?m ?e 'geiser-expand-last-sexp) -(geiser-mode--triple-chord ?m ?r 'geiser-expand-region) -(geiser-mode--triple-chord ?m ?x 'geiser-expand-definition) - -(geiser-mode--triple-chord ?x ?m 'geiser-xref-generic-methods) +(geiser-menu--defmenu geiserm geiser-mode-map + ("Eval sexp before point" "\C-x\C-e" geiser-eval-last-sexp) + ("Eval definition" "\M-\C-x" geiser-eval-definition) + ("Eval definition and go" "\C-c\M-e" geiser-eval-definition-and-go) + ("Eval region" "\C-c\C-r" geiser-eval-region :enable mark-active) + ("Eval region and go" "\C-c\M-r" geiser-eval-region-and-go + geiser-eval-region :enable mark-active) + ("Compile definition" "\C-c\M-c" geiser-compile-definition) + ("Compile definition and go" "\C-c\C-c" geiser-compile-definition-and-go) + (menu "Macroexpand" + ("Sexp before point" ("\C-c\C-m\C-e" "\C-c\C-me") + geiser-expand-last-sexp) + ("Region" ("\C-c\C-m\C-r" "\C-c\C-mr") geiser-expand-region) + ("Definition" ("\C-c\C-m\C-x" "\C-c\C-mx") geiser-expand-definition)) + -- + ("Symbol documentation" ("\C-c\C-d\C-d" "\C-c\C-dd") + geiser-doc-symbol-at-point :enable (symbol-at-point)) + ("Module documentation" ("\C-c\C-d\C-m" "\C-c\C-dm") geiser-doc-module) + (mode "Autodoc mode" ("\C-c\C-d\C-a" "\C-c\C-da") geiser-autodoc-mode) + -- + ("Compile buffer" "\C-c\C-k" geiser-compile-current-buffer) + ("Switch to REPL" "\C-c\C-z" geiser-mode-switch-to-repl) + ("Switch to REPL and enter module" "\C-c\C-Z" + geiser-mode-switch-to-repl-and-enter) + ("Set Scheme..." "\C-c\C-s" geiser-set-scheme) + ;; ("Load buffer" "\C-l" geiser-compile-current-buffer) + -- + ("Edit symbol at point" "\M-." geiser-edit-symbol-at-point + :enable (symbol-at-point)) + ("Go to previous definition" "\M-," geiser-edit-pop-edit-symbol-stack) + ("Complete symbol" ((kbd "M-TAB")) geiser-completion--complete-symbol + :enable (symbol-at-point)) + ("Complete module name" ((kbd "M-`") (kbd "C-.")) + geiser-completion--complete-module) + ("Edit module" ("\C-c\C-e\C-m" "\C-c\C-em") geiser-edit-module) + -- + ("Callers" ((kbd "C-c <")) geiser-xref-callers) + ("Callees" ((kbd "C-c >")) geiser-xref-callees) + -- + (mode "Smart TAB mode" nil geiser-smart-tab-mode) + -- + (custom "Customize Geiser mode" geiser-mode)) + +;; (geiser-mode--triple-chord ?x ?m 'geiser-xref-generic-methods) ;;; Reload support: -- cgit v1.2.3