branch: elpa/gnuplot
commit 837bd9853d0b196927f3c1d9d32bda87608b0ca3
Author: Daniel Mendler <m...@daniel-mendler.de>
Commit: Daniel Mendler <m...@daniel-mendler.de>

    Simplify keymap and menu setup
---
 gnuplot.el | 94 ++++++++++++++++++++++++++++----------------------------------
 1 file changed, 42 insertions(+), 52 deletions(-)

diff --git a/gnuplot.el b/gnuplot.el
index a562a0a9b5..3dc00e7ead 100644
--- a/gnuplot.el
+++ b/gnuplot.el
@@ -625,6 +625,8 @@ These are set by `gnuplot--set-keywords-list' from the 
values in
 ;;; --- key bindings and menus
 
 (defvar-keymap gnuplot-mode-map
+  :doc "Keymap used by `gnuplot-mode'."
+  :parent prog-mode-map
   "C-c C-b"     #'gnuplot-send-buffer-to-gnuplot
   "C-c C-o"     #'gnuplot-gui-set-options-and-insert
   "C-c C-e"     #'gnuplot-show-comint-buffer
@@ -643,8 +645,6 @@ These are set by `gnuplot--set-keywords-list' from the 
values in
   "M-TAB"       #'completion-at-point
   "S-<mouse-2>" #'gnuplot-gui-set-options-and-insert)
 
-(defvar gnuplot-mode-menu nil)
-
 (defvar gnuplot--display-options-menu
   (cl-flet ((make-image-setter (type)
               `[,(concat (upcase type) " images")
@@ -666,7 +666,8 @@ These are set by `gnuplot--set-keywords-list' from the 
values in
       ,@(mapcar #'make-image-setter (list "png" "jpeg" "svg"))
       ["Other image type..." gnuplot-set-image-format])))
 
-(defvar gnuplot--menu
+(easy-menu-define gnuplot-mode-menu gnuplot-mode-map
+  "Menu used in `gnuplot-mode'."
   `("Gnuplot"
     ["Send line to gnuplot"             gnuplot-send-line-to-gnuplot   t]
     ["Send line & move forward"         gnuplot-send-line-and-forward (not 
(eobp))]
@@ -698,8 +699,7 @@ These are set by `gnuplot--set-keywords-list' from the 
values in
     "---"
     ["Customize gnuplot"                gnuplot-customize t]
     "---"
-    ["Kill gnuplot"                     gnuplot-kill-comint-buffer t])
-  "Menu for `gnuplot-mode'.")
+    ["Kill gnuplot"                     gnuplot-kill-comint-buffer t]))
 
 
 ;;; --- syntax colorization, syntax table
@@ -1156,8 +1156,22 @@ this function is attached to `gnuplot-after-plot-hook'"
 
 ;;; --- functions controlling the gnuplot process
 
-;; Menu for the comint-mode buffer
-(defvar gnuplot--comint-menu
+(defvar-keymap gnuplot-comint-mode-map
+  :doc "Keymap used by `gnuplot-comint-mode'."
+  :parent comint-mode-map
+  "C-M-p"   #'gnuplot-plot-from-comint
+  "C-M-f"   #'gnuplot-save-and-plot-from-comint
+  "C-d"      #'gnuplot-delchar-or-maybe-eof
+  "M-TAB"    #'completion-at-point
+  "C-c C-d"  #'gnuplot-info-lookup-symbol
+  "C-c C-i"  #'gnuplot-insert-filename
+  "C-c C-n"  #'gnuplot-negate-option
+  "C-c C-z"  #'gnuplot-customize
+  "C-c C-e"  #'gnuplot-pop-to-recent-buffer)
+
+(easy-menu-define
+  gnuplot-comint-mode-menu gnuplot-comint-mode-map
+  "Menu used in `gnuplot-comint-mode'."
   `("Gnuplot"
     ["Plot most recent gnuplot buffer"          gnuplot-plot-from-comint
      (buffer-live-p gnuplot--comint-recent-buffer)]
@@ -1209,27 +1223,7 @@ buffer."
   (add-hook 'comint-output-filter-functions
             #'gnuplot--protect-prompt-fn
             nil t)
-  (add-hook 'completion-at-point-functions 
#'gnuplot-completion-at-point-info-look nil t)
-
-  ;; Set up menu (see below)
-  (easy-menu-define
-    gnuplot-comint-mode-menu gnuplot-comint-mode-map "Menu used in 
gnuplot-comint-mode"
-    gnuplot--comint-menu))
-
-;; Key bindings for gnuplot-comint-mode
-(define-key gnuplot-comint-mode-map "\M-\C-p"   #'gnuplot-plot-from-comint)
-(define-key gnuplot-comint-mode-map "\M-\C-f"   
#'gnuplot-save-and-plot-from-comint)
-(define-key gnuplot-comint-mode-map "\C-d"      #'gnuplot-delchar-or-maybe-eof)
-(define-key gnuplot-comint-mode-map "\M-\t"     #'completion-at-point)
-(define-key gnuplot-comint-mode-map "\C-c\C-d"  #'gnuplot-info-lookup-symbol)
-(define-key gnuplot-comint-mode-map "\C-c\C-i"  #'gnuplot-insert-filename)
-(define-key gnuplot-comint-mode-map "\C-c\C-n"  #'gnuplot-negate-option)
-(define-key gnuplot-comint-mode-map "\C-c\C-z"  #'gnuplot-customize)
-(define-key gnuplot-comint-mode-map "\C-c\C-e"  #'gnuplot-pop-to-recent-buffer)
-
-;; Menu for gnuplot-comint-mode
-(defvar gnuplot-comint-mode-menu nil
-  "Menu for `gnuplot-comint-mode'.")
+  (add-hook 'completion-at-point-functions 
#'gnuplot-completion-at-point-info-look nil t))
 
 (defun gnuplot--make-comint-buffer ()
   "Switch to the gnuplot program buffer or create one if none exists."
@@ -1779,29 +1773,25 @@ shown."
                "Help will be displayed after insertions."
              "Help no longer displayed after insertions.")))
 
-(defun gnuplot--setup-menubar ()
-  "Initial setup of gnuplot and insertions menus."
-  (unless gnuplot-mode-menu
-    (when gnuplot-insertions-menu-flag
-      (easy-menu-define gnuplot--insertions-menu gnuplot-mode-map
-        "Insertions menu used in Gnuplot-mode"
-        `("Insertions"
-          ,@gnuplot-insertions-top
-          ,gnuplot-insertions-adornments
-          ,gnuplot-insertions-plot-options
-          ,gnuplot-insertions-terminal
-          ,gnuplot-insertions-x-axis
-          ,gnuplot-insertions-y-axis
-          ,gnuplot-insertions-z-axis
-          ,gnuplot-insertions-x2-axis
-          ,gnuplot-insertions-y2-axis
-          ,gnuplot-insertions-parametric-plots
-          ,gnuplot-insertions-polar-plots
-          ,gnuplot-insertions-surface-plots
-          ,@gnuplot-insertions-bottom)))
-    (easy-menu-define                     ; set up gnuplot menu
-      gnuplot-mode-menu gnuplot-mode-map "Menu used in gnuplot-mode"
-      gnuplot--menu)))
+(defun gnuplot--setup-insertions-menu ()
+  "Initial setup of insertions menu."
+  (when (and gnuplot-insertions-menu-flag (not gnuplot--insertions-menu))
+    (easy-menu-define gnuplot--insertions-menu gnuplot-mode-map
+      "Insertions menu used in Gnuplot-mode"
+      `("Insertions"
+        ,@gnuplot-insertions-top
+        ,gnuplot-insertions-adornments
+        ,gnuplot-insertions-plot-options
+        ,gnuplot-insertions-terminal
+        ,gnuplot-insertions-x-axis
+        ,gnuplot-insertions-y-axis
+        ,gnuplot-insertions-z-axis
+        ,gnuplot-insertions-x2-axis
+        ,gnuplot-insertions-y2-axis
+        ,gnuplot-insertions-parametric-plots
+        ,gnuplot-insertions-polar-plots
+        ,gnuplot-insertions-surface-plots
+        ,@gnuplot-insertions-bottom))))
 
 (defun gnuplot--mark-active ()
   "Return non-nil if the mark is active and it is not equal to point."
@@ -1866,7 +1856,7 @@ a list:
   (add-hook 'syntax-propertize-extend-region-functions
             #'gnuplot--syntax-propertize-extend-region nil t)
   (setq gnuplot--comint-recent-buffer (current-buffer))
-  (gnuplot--setup-menubar))
+  (gnuplot--setup-insertions-menu))
 
 ;;;###autoload
 (defun gnuplot-make-buffer ()

Reply via email to