diff options
| author | Stefan Monnier | 2018-09-14 11:52:15 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2018-09-14 11:52:15 -0400 |
| commit | 4ee34ee82d2e1b944165bee7bf31076f1db594ef (patch) | |
| tree | a6d9d80e4e5f1212f881964a89bee4c79acdcdd4 | |
| parent | e6380c43338fe4f8ca2df78eb549f96b14275ffc (diff) | |
| download | emacs-4ee34ee82d2e1b944165bee7bf31076f1db594ef.tar.gz emacs-4ee34ee82d2e1b944165bee7bf31076f1db594ef.zip | |
* lisp/progmodes/idlw-shell.el: Use lexical-binding
(idlwave-shell-source-frame): Remove unused var 'frame'.
(idlwave-shell): Remove unused arg 'quick'.
(idlwave-shell-complete-filename, idlwave-shell-edit-default-command-line)
(idlwave-shell-retall, idlwave-shell-closeall): Remove unused arg 'arg'.
(idlwave-shell-move-to-bp): Remove unused var 'got-bp'.
(zmacs-regions): Declare.
(idlwave-shell-update-bp-overlays): Remove unused var 'win'.
(idlwave-shell-delete-expression-overlay)
(idlwave-shell-mouse-nop): Delete function. Use 'ignore' instead.
(idlwave-shell-delete-output-overlay): Ignore 'ignore' commands rather
than idlwave-shell-mouse-nop commands.
(idlwave-shell-mode-map, idlwave-shell-electric-debug-mode-map):
Move (part of) the initialization into the declaration.
(idlwave-shell-electric-debug-mode-on-hook)
(idlwave-shell-electric-debug-mode-off-hook): Keep them empty, move
code into the minor mode's definition instead.
(idlwave-shell-electric-debug-mode): Don't use advice needlessly.
| -rw-r--r-- | lisp/progmodes/idlw-shell.el | 211 |
1 files changed, 96 insertions, 115 deletions
diff --git a/lisp/progmodes/idlw-shell.el b/lisp/progmodes/idlw-shell.el index 616341b0a2c..46e2ecaa397 100644 --- a/lisp/progmodes/idlw-shell.el +++ b/lisp/progmodes/idlw-shell.el | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | ;; idlw-shell.el --- run IDL as an inferior process of Emacs. | 1 | ;; idlw-shell.el --- run IDL as an inferior process of Emacs. -*- lexical-binding:t -*- |
| 2 | 2 | ||
| 3 | ;; Copyright (C) 1999-2018 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 1999-2018 Free Software Foundation, Inc. |
| 4 | 4 | ||
| @@ -1115,8 +1115,7 @@ IDL has currently stepped.") | |||
| 1115 | (setq idlwave-shell-display-wframe | 1115 | (setq idlwave-shell-display-wframe |
| 1116 | (if (eq (selected-frame) idlwave-shell-idl-wframe) | 1116 | (if (eq (selected-frame) idlwave-shell-idl-wframe) |
| 1117 | (or | 1117 | (or |
| 1118 | (let ((flist (visible-frame-list)) | 1118 | (let ((flist (visible-frame-list))) |
| 1119 | (frame (selected-frame))) | ||
| 1120 | (catch 'exit | 1119 | (catch 'exit |
| 1121 | (while flist | 1120 | (while flist |
| 1122 | (if (not (eq (car flist) | 1121 | (if (not (eq (car flist) |
| @@ -1142,7 +1141,7 @@ IDL has currently stepped.") | |||
| 1142 | (make-frame idlwave-shell-frame-parameters))))) | 1141 | (make-frame idlwave-shell-frame-parameters))))) |
| 1143 | 1142 | ||
| 1144 | ;;;###autoload | 1143 | ;;;###autoload |
| 1145 | (defun idlwave-shell (&optional arg quick) | 1144 | (defun idlwave-shell (&optional arg) |
| 1146 | "Run an inferior IDL, with I/O through buffer `(idlwave-shell-buffer)'. | 1145 | "Run an inferior IDL, with I/O through buffer `(idlwave-shell-buffer)'. |
| 1147 | If buffer exists but shell process is not running, start new IDL. | 1146 | If buffer exists but shell process is not running, start new IDL. |
| 1148 | If buffer exists and shell process is running, just switch to the buffer. | 1147 | If buffer exists and shell process is running, just switch to the buffer. |
| @@ -1881,10 +1880,10 @@ directory." | |||
| 1881 | 'idlwave-shell-filter-directory | 1880 | 'idlwave-shell-filter-directory |
| 1882 | 'hide 'wait)) | 1881 | 'hide 'wait)) |
| 1883 | 1882 | ||
| 1884 | (defun idlwave-shell-retall (&optional arg) | 1883 | (defun idlwave-shell-retall () |
| 1885 | "Return from the entire calling stack. | 1884 | "Return from the entire calling stack. |
| 1886 | Also get rid of widget events in the queue." | 1885 | Also get rid of widget events in the queue." |
| 1887 | (interactive "P") | 1886 | (interactive) |
| 1888 | (save-selected-window | 1887 | (save-selected-window |
| 1889 | ;;if (widget_info(/MANAGED))[0] gt 0 then for i=0,n_elements(widget_info(/MANAGED))-1 do widget_control,(widget_info(/MANAGED))[i],/clear_events & | 1888 | ;;if (widget_info(/MANAGED))[0] gt 0 then for i=0,n_elements(widget_info(/MANAGED))-1 do widget_control,(widget_info(/MANAGED))[i],/clear_events & |
| 1890 | (idlwave-shell-send-command "retall" nil | 1889 | (idlwave-shell-send-command "retall" nil |
| @@ -1892,9 +1891,9 @@ Also get rid of widget events in the queue." | |||
| 1892 | nil t) | 1891 | nil t) |
| 1893 | (idlwave-shell-display-line nil))) | 1892 | (idlwave-shell-display-line nil))) |
| 1894 | 1893 | ||
| 1895 | (defun idlwave-shell-closeall (&optional arg) | 1894 | (defun idlwave-shell-closeall () |
| 1896 | "Close all open files." | 1895 | "Close all open files." |
| 1897 | (interactive "P") | 1896 | (interactive) |
| 1898 | (idlwave-shell-send-command "close,/all" nil | 1897 | (idlwave-shell-send-command "close,/all" nil |
| 1899 | (idlwave-shell-hide-p 'misc) nil t)) | 1898 | (idlwave-shell-hide-p 'misc) nil t)) |
| 1900 | 1899 | ||
| @@ -2157,7 +2156,7 @@ keywords." | |||
| 2157 | (if entry (setq idlw-help-link (cdr entry)))) ; setting dynamic variable! | 2156 | (if entry (setq idlw-help-link (cdr entry)))) ; setting dynamic variable! |
| 2158 | (t (error "This should not happen"))))) | 2157 | (t (error "This should not happen"))))) |
| 2159 | 2158 | ||
| 2160 | (defun idlwave-shell-complete-filename (&optional arg) | 2159 | (defun idlwave-shell-complete-filename () |
| 2161 | "Complete a file name at point if after a file name. | 2160 | "Complete a file name at point if after a file name. |
| 2162 | We assume that we are after a file name when completing one of the | 2161 | We assume that we are after a file name when completing one of the |
| 2163 | args of an executive .run, .rnew or .compile." | 2162 | args of an executive .run, .rnew or .compile." |
| @@ -2739,10 +2738,9 @@ Runs to the last statement and then steps 1 statement. Use the .out command." | |||
| 2739 | (bp-alist idlwave-shell-bp-alist) | 2738 | (bp-alist idlwave-shell-bp-alist) |
| 2740 | (orig-func (if (> dir 0) '> '<)) | 2739 | (orig-func (if (> dir 0) '> '<)) |
| 2741 | (closer-func (if (> dir 0) '< '>)) | 2740 | (closer-func (if (> dir 0) '< '>)) |
| 2742 | bp got-bp bp-line cur-line) | 2741 | bp bp-line cur-line) |
| 2743 | (while (setq bp (pop bp-alist)) | 2742 | (while (setq bp (pop bp-alist)) |
| 2744 | (when (string= file (car (car bp))) | 2743 | (when (string= file (car (car bp))) |
| 2745 | (setq got-bp 1) | ||
| 2746 | (setq cur-line (nth 1 (car bp))) | 2744 | (setq cur-line (nth 1 (car bp))) |
| 2747 | (if (and | 2745 | (if (and |
| 2748 | (funcall orig-func cur-line orig-bp-line) | 2746 | (funcall orig-func cur-line orig-bp-line) |
| @@ -2759,6 +2757,8 @@ Runs to the last statement and then steps 1 statement. Use the .out command." | |||
| 2759 | (interactive "P") | 2757 | (interactive "P") |
| 2760 | (idlwave-shell-print arg 'help)) | 2758 | (idlwave-shell-print arg 'help)) |
| 2761 | 2759 | ||
| 2760 | (defvar zmacs-regions) | ||
| 2761 | |||
| 2762 | (defmacro idlwave-shell-mouse-examine (help &optional ev) | 2762 | (defmacro idlwave-shell-mouse-examine (help &optional ev) |
| 2763 | "Create a function for generic examination of expressions." | 2763 | "Create a function for generic examination of expressions." |
| 2764 | `(lambda (event) | 2764 | `(lambda (event) |
| @@ -2782,7 +2782,7 @@ Runs to the last statement and then steps 1 statement. Use the .out command." | |||
| 2782 | 2782 | ||
| 2783 | ;; Begin terrible hack section -- XEmacs tests for button2 explicitly | 2783 | ;; Begin terrible hack section -- XEmacs tests for button2 explicitly |
| 2784 | ;; on drag events, calling drag-n-drop code if detected. Ughhh... | 2784 | ;; on drag events, calling drag-n-drop code if detected. Ughhh... |
| 2785 | (defun idlwave-default-mouse-track-event-is-with-button (event n) | 2785 | (defun idlwave-default-mouse-track-event-is-with-button (_event _n) |
| 2786 | t) | 2786 | t) |
| 2787 | 2787 | ||
| 2788 | (defun idlwave-xemacs-hack-mouse-track (event) | 2788 | (defun idlwave-xemacs-hack-mouse-track (event) |
| @@ -3193,22 +3193,20 @@ size(___,/DIMENSIONS)" | |||
| 3193 | output-begin output-end buffer)))) | 3193 | output-begin output-end buffer)))) |
| 3194 | 3194 | ||
| 3195 | (defun idlwave-shell-delete-output-overlay () | 3195 | (defun idlwave-shell-delete-output-overlay () |
| 3196 | (unless (or (eq this-command 'idlwave-shell-mouse-nop) | 3196 | (unless (memql this-command '(ignore handle-switch-frame)) |
| 3197 | (eq this-command 'handle-switch-frame)) | ||
| 3198 | (condition-case nil | 3197 | (condition-case nil |
| 3199 | (if idlwave-shell-output-overlay | 3198 | (if idlwave-shell-output-overlay |
| 3200 | (delete-overlay idlwave-shell-output-overlay)) | 3199 | (delete-overlay idlwave-shell-output-overlay)) |
| 3201 | (error nil)) | 3200 | (error nil)) |
| 3202 | (remove-hook 'pre-command-hook 'idlwave-shell-delete-output-overlay))) | 3201 | (remove-hook 'pre-command-hook #'idlwave-shell-delete-output-overlay))) |
| 3203 | 3202 | ||
| 3204 | (defun idlwave-shell-delete-expression-overlay () | 3203 | (defun idlwave-shell-delete-expression-overlay () |
| 3205 | (unless (or (eq this-command 'idlwave-shell-mouse-nop) | 3204 | (unless (memql this-command '(ignore handle-switch-frame)) |
| 3206 | (eq this-command 'handle-switch-frame)) | ||
| 3207 | (condition-case nil | 3205 | (condition-case nil |
| 3208 | (if idlwave-shell-expression-overlay | 3206 | (if idlwave-shell-expression-overlay |
| 3209 | (delete-overlay idlwave-shell-expression-overlay)) | 3207 | (delete-overlay idlwave-shell-expression-overlay)) |
| 3210 | (error nil)) | 3208 | (error nil)) |
| 3211 | (remove-hook 'pre-command-hook 'idlwave-shell-delete-expression-overlay))) | 3209 | (remove-hook 'pre-command-hook #'idlwave-shell-delete-expression-overlay))) |
| 3212 | 3210 | ||
| 3213 | (defvar idlwave-shell-bp-alist nil | 3211 | (defvar idlwave-shell-bp-alist nil |
| 3214 | "Alist of breakpoints. | 3212 | "Alist of breakpoints. |
| @@ -3591,7 +3589,7 @@ Existing overlays are recycled, in order to minimize consumption." | |||
| 3591 | (bp-list idlwave-shell-bp-alist) | 3589 | (bp-list idlwave-shell-bp-alist) |
| 3592 | (use-glyph (and (memq idlwave-shell-mark-breakpoints '(t glyph)) | 3590 | (use-glyph (and (memq idlwave-shell-mark-breakpoints '(t glyph)) |
| 3593 | idlwave-shell-bp-glyph)) | 3591 | idlwave-shell-bp-glyph)) |
| 3594 | ov ov-list bp buf old-buffers win) | 3592 | ov ov-list bp buf old-buffers) |
| 3595 | 3593 | ||
| 3596 | ;; Delete the old overlays from their buffers | 3594 | ;; Delete the old overlays from their buffers |
| 3597 | (if ov-alist | 3595 | (if ov-alist |
| @@ -3798,9 +3796,9 @@ only for glyphs)." | |||
| 3798 | (t | 3796 | (t |
| 3799 | (message "Unimplemented: %s" select)))))) | 3797 | (message "Unimplemented: %s" select)))))) |
| 3800 | 3798 | ||
| 3801 | (defun idlwave-shell-edit-default-command-line (arg) | 3799 | (defun idlwave-shell-edit-default-command-line () |
| 3802 | "Edit the current execute command." | 3800 | "Edit the current execute command." |
| 3803 | (interactive "P") | 3801 | (interactive) |
| 3804 | (setq idlwave-shell-command-line-to-execute | 3802 | (setq idlwave-shell-command-line-to-execute |
| 3805 | (read-string "IDL> " idlwave-shell-command-line-to-execute))) | 3803 | (read-string "IDL> " idlwave-shell-command-line-to-execute))) |
| 3806 | 3804 | ||
| @@ -4057,9 +4055,56 @@ Otherwise, just expand the file name." | |||
| 4057 | 4055 | ||
| 4058 | ;; Keybindings ------------------------------------------------------------ | 4056 | ;; Keybindings ------------------------------------------------------------ |
| 4059 | 4057 | ||
| 4060 | (defvar idlwave-shell-mode-map (copy-keymap comint-mode-map) | 4058 | (defvar idlwave-shell-mode-map |
| 4059 | (let ((map (make-sparse-keymap))) | ||
| 4060 | (set-keymap-parent map comint-mode-map) | ||
| 4061 | |||
| 4062 | ;;(define-key map "\M-?" 'comint-dynamic-list-completions) | ||
| 4063 | ;;(define-key map "\t" 'comint-dynamic-complete) | ||
| 4064 | |||
| 4065 | (define-key map "\C-w" 'comint-kill-region) | ||
| 4066 | (define-key map "\t" 'idlwave-shell-complete) | ||
| 4067 | (define-key map "\M-\t" 'idlwave-shell-complete) | ||
| 4068 | (define-key map "\C-c\C-s" 'idlwave-shell) | ||
| 4069 | (define-key map "\C-c?" 'idlwave-routine-info) | ||
| 4070 | (define-key map "\C-g" 'idlwave-keyboard-quit) | ||
| 4071 | (define-key map "\M-?" 'idlwave-context-help) | ||
| 4072 | (define-key map [(control meta ?\?)] | ||
| 4073 | 'idlwave-help-assistant-help-with-topic) | ||
| 4074 | (define-key map "\C-c\C-i" 'idlwave-update-routine-info) | ||
| 4075 | (define-key map "\C-c\C-y" 'idlwave-shell-char-mode-loop) | ||
| 4076 | (define-key map "\C-c\C-x" 'idlwave-shell-send-char) | ||
| 4077 | (define-key map "\C-c=" 'idlwave-resolve) | ||
| 4078 | (define-key map "\C-c\C-v" 'idlwave-find-module) | ||
| 4079 | (define-key map "\C-c\C-k" 'idlwave-kill-autoloaded-buffers) | ||
| 4080 | (define-key map idlwave-shell-prefix-key | ||
| 4081 | 'idlwave-shell-debug-map) | ||
| 4082 | (define-key map [(up)] 'idlwave-shell-up-or-history) | ||
| 4083 | (define-key map [(down)] 'idlwave-shell-down-or-history) | ||
| 4084 | (define-key idlwave-shell-mode-map | ||
| 4085 | (if (featurep 'xemacs) [(shift button3)] [(shift mouse-3)]) | ||
| 4086 | 'idlwave-mouse-context-help) | ||
| 4087 | map) | ||
| 4061 | "Keymap for `idlwave-mode'.") | 4088 | "Keymap for `idlwave-mode'.") |
| 4062 | (defvar idlwave-shell-electric-debug-mode-map (make-sparse-keymap)) | 4089 | |
| 4090 | (defvar idlwave-shell-electric-debug-mode-map | ||
| 4091 | (let ((map (make-sparse-keymap))) | ||
| 4092 | ;; A few extras in the electric debug map | ||
| 4093 | (define-key map " " 'idlwave-shell-step) | ||
| 4094 | (define-key map "+" 'idlwave-shell-stack-up) | ||
| 4095 | (define-key map "=" 'idlwave-shell-stack-up) | ||
| 4096 | (define-key map "-" 'idlwave-shell-stack-down) | ||
| 4097 | (define-key map "_" 'idlwave-shell-stack-down) | ||
| 4098 | (define-key map "e" (lambda () (interactive) (idlwave-shell-print '(16)))) | ||
| 4099 | (define-key map "q" 'idlwave-shell-retall) | ||
| 4100 | (define-key map "t" | ||
| 4101 | (lambda () (interactive) (idlwave-shell-send-command "help,/TRACE"))) | ||
| 4102 | (define-key map [(control ??)] 'idlwave-shell-electric-debug-help) | ||
| 4103 | (define-key map "x" | ||
| 4104 | (lambda (arg) (interactive "P") | ||
| 4105 | (idlwave-shell-print arg nil nil t))) | ||
| 4106 | map)) | ||
| 4107 | |||
| 4063 | (defvar idlwave-shell-mode-prefix-map (make-sparse-keymap)) | 4108 | (defvar idlwave-shell-mode-prefix-map (make-sparse-keymap)) |
| 4064 | (fset 'idlwave-shell-mode-prefix-map idlwave-shell-mode-prefix-map) | 4109 | (fset 'idlwave-shell-mode-prefix-map idlwave-shell-mode-prefix-map) |
| 4065 | (defvar idlwave-mode-prefix-map (make-sparse-keymap)) | 4110 | (defvar idlwave-mode-prefix-map (make-sparse-keymap)) |
| @@ -4069,29 +4114,6 @@ Otherwise, just expand the file name." | |||
| 4069 | "Define a key in both the shell and buffer mode maps." | 4114 | "Define a key in both the shell and buffer mode maps." |
| 4070 | (define-key idlwave-mode-map key hook) | 4115 | (define-key idlwave-mode-map key hook) |
| 4071 | (define-key idlwave-shell-mode-map key hook)) | 4116 | (define-key idlwave-shell-mode-map key hook)) |
| 4072 | |||
| 4073 | ;(define-key idlwave-shell-mode-map "\M-?" 'comint-dynamic-list-completions) | ||
| 4074 | ;(define-key idlwave-shell-mode-map "\t" 'comint-dynamic-complete) | ||
| 4075 | |||
| 4076 | (define-key idlwave-shell-mode-map "\C-w" 'comint-kill-region) | ||
| 4077 | (define-key idlwave-shell-mode-map "\t" 'idlwave-shell-complete) | ||
| 4078 | (define-key idlwave-shell-mode-map "\M-\t" 'idlwave-shell-complete) | ||
| 4079 | (define-key idlwave-shell-mode-map "\C-c\C-s" 'idlwave-shell) | ||
| 4080 | (define-key idlwave-shell-mode-map "\C-c?" 'idlwave-routine-info) | ||
| 4081 | (define-key idlwave-shell-mode-map "\C-g" 'idlwave-keyboard-quit) | ||
| 4082 | (define-key idlwave-shell-mode-map "\M-?" 'idlwave-context-help) | ||
| 4083 | (define-key idlwave-shell-mode-map [(control meta ?\?)] | ||
| 4084 | 'idlwave-help-assistant-help-with-topic) | ||
| 4085 | (define-key idlwave-shell-mode-map "\C-c\C-i" 'idlwave-update-routine-info) | ||
| 4086 | (define-key idlwave-shell-mode-map "\C-c\C-y" 'idlwave-shell-char-mode-loop) | ||
| 4087 | (define-key idlwave-shell-mode-map "\C-c\C-x" 'idlwave-shell-send-char) | ||
| 4088 | (define-key idlwave-shell-mode-map "\C-c=" 'idlwave-resolve) | ||
| 4089 | (define-key idlwave-shell-mode-map "\C-c\C-v" 'idlwave-find-module) | ||
| 4090 | (define-key idlwave-shell-mode-map "\C-c\C-k" 'idlwave-kill-autoloaded-buffers) | ||
| 4091 | (define-key idlwave-shell-mode-map idlwave-shell-prefix-key | ||
| 4092 | 'idlwave-shell-debug-map) | ||
| 4093 | (define-key idlwave-shell-mode-map [(up)] 'idlwave-shell-up-or-history) | ||
| 4094 | (define-key idlwave-shell-mode-map [(down)] 'idlwave-shell-down-or-history) | ||
| 4095 | (define-key idlwave-mode-map "\C-c\C-y" 'idlwave-shell-char-mode-loop) | 4117 | (define-key idlwave-mode-map "\C-c\C-y" 'idlwave-shell-char-mode-loop) |
| 4096 | (define-key idlwave-mode-map "\C-c\C-x" 'idlwave-shell-send-char) | 4118 | (define-key idlwave-mode-map "\C-c\C-x" 'idlwave-shell-send-char) |
| 4097 | 4119 | ||
| @@ -4112,22 +4134,12 @@ Otherwise, just expand the file name." | |||
| 4112 | [(control shift down-mouse-2)]) | 4134 | [(control shift down-mouse-2)]) |
| 4113 | 'idlwave-shell-examine-select) | 4135 | 'idlwave-shell-examine-select) |
| 4114 | ;; Add this one from the idlwave-mode-map | 4136 | ;; Add this one from the idlwave-mode-map |
| 4115 | (define-key idlwave-shell-mode-map | ||
| 4116 | (if (featurep 'xemacs) | ||
| 4117 | [(shift button3)] | ||
| 4118 | [(shift mouse-3)]) | ||
| 4119 | 'idlwave-mouse-context-help) | ||
| 4120 | |||
| 4121 | ;; For Emacs, we need to turn off the button release events. | 4137 | ;; For Emacs, we need to turn off the button release events. |
| 4122 | (defun idlwave-shell-mouse-nop (event) | 4138 | |
| 4123 | (interactive "e")) | ||
| 4124 | (unless (featurep 'xemacs) | 4139 | (unless (featurep 'xemacs) |
| 4125 | (idlwave-shell-define-key-both | 4140 | (idlwave-shell-define-key-both [(shift mouse-2)] 'ignore) |
| 4126 | [(shift mouse-2)] 'idlwave-shell-mouse-nop) | 4141 | (idlwave-shell-define-key-both [(shift control mouse-2)] 'ignore) |
| 4127 | (idlwave-shell-define-key-both | 4142 | (idlwave-shell-define-key-both [(control meta mouse-2)] 'ignore)) |
| 4128 | [(shift control mouse-2)] 'idlwave-shell-mouse-nop) | ||
| 4129 | (idlwave-shell-define-key-both | ||
| 4130 | [(control meta mouse-2)] 'idlwave-shell-mouse-nop)) | ||
| 4131 | 4143 | ||
| 4132 | 4144 | ||
| 4133 | ;; The following set of bindings is used to bind the debugging keys. | 4145 | ;; The following set of bindings is used to bind the debugging keys. |
| @@ -4207,26 +4219,6 @@ Otherwise, just expand the file name." | |||
| 4207 | (define-key idlwave-shell-electric-debug-mode-map (char-to-string c2) | 4219 | (define-key idlwave-shell-electric-debug-mode-map (char-to-string c2) |
| 4208 | cmd)))) | 4220 | cmd)))) |
| 4209 | 4221 | ||
| 4210 | ;; A few extras in the electric debug map | ||
| 4211 | (define-key idlwave-shell-electric-debug-mode-map " " 'idlwave-shell-step) | ||
| 4212 | (define-key idlwave-shell-electric-debug-mode-map "+" 'idlwave-shell-stack-up) | ||
| 4213 | (define-key idlwave-shell-electric-debug-mode-map "=" 'idlwave-shell-stack-up) | ||
| 4214 | (define-key idlwave-shell-electric-debug-mode-map "-" | ||
| 4215 | 'idlwave-shell-stack-down) | ||
| 4216 | (define-key idlwave-shell-electric-debug-mode-map "_" | ||
| 4217 | 'idlwave-shell-stack-down) | ||
| 4218 | (define-key idlwave-shell-electric-debug-mode-map "e" | ||
| 4219 | (lambda () (interactive) (idlwave-shell-print '(16)))) | ||
| 4220 | (define-key idlwave-shell-electric-debug-mode-map "q" 'idlwave-shell-retall) | ||
| 4221 | (define-key idlwave-shell-electric-debug-mode-map "t" | ||
| 4222 | (lambda () (interactive) (idlwave-shell-send-command "help,/TRACE"))) | ||
| 4223 | (define-key idlwave-shell-electric-debug-mode-map [(control ??)] | ||
| 4224 | 'idlwave-shell-electric-debug-help) | ||
| 4225 | (define-key idlwave-shell-electric-debug-mode-map "x" | ||
| 4226 | (lambda (arg) (interactive "P") | ||
| 4227 | (idlwave-shell-print arg nil nil t))) | ||
| 4228 | |||
| 4229 | |||
| 4230 | ; Enter the prefix map in two places. | 4222 | ; Enter the prefix map in two places. |
| 4231 | (fset 'idlwave-debug-map idlwave-mode-prefix-map) | 4223 | (fset 'idlwave-debug-map idlwave-mode-prefix-map) |
| 4232 | (fset 'idlwave-shell-debug-map idlwave-shell-mode-prefix-map) | 4224 | (fset 'idlwave-shell-debug-map idlwave-shell-mode-prefix-map) |
| @@ -4254,43 +4246,32 @@ Otherwise, just expand the file name." | |||
| 4254 | 4246 | ||
| 4255 | When Idlwave Shell Electric Debug mode is enabled, the Idlwave | 4247 | When Idlwave Shell Electric Debug mode is enabled, the Idlwave |
| 4256 | Shell debugging commands are available as single key sequences." | 4248 | Shell debugging commands are available as single key sequences." |
| 4257 | nil " *Debugging*" idlwave-shell-electric-debug-mode-map) | 4249 | :lighter " *Debugging*" |
| 4258 | 4250 | (cond | |
| 4259 | (add-hook | 4251 | (idlwave-shell-electric-debug-mode |
| 4260 | 'idlwave-shell-electric-debug-mode-on-hook | 4252 | (set (make-local-variable 'idlwave-shell-electric-debug-read-only) |
| 4261 | (lambda () | 4253 | buffer-read-only) |
| 4262 | (set (make-local-variable 'idlwave-shell-electric-debug-read-only) | 4254 | (setq buffer-read-only t) |
| 4263 | buffer-read-only) | 4255 | (add-to-list 'idlwave-shell-electric-debug-buffers (current-buffer)) |
| 4264 | (setq buffer-read-only t) | 4256 | (if idlwave-shell-stop-line-overlay |
| 4265 | (add-to-list 'idlwave-shell-electric-debug-buffers (current-buffer)) | 4257 | (overlay-put idlwave-shell-stop-line-overlay 'face |
| 4266 | (if idlwave-shell-stop-line-overlay | 4258 | idlwave-shell-electric-stop-line-face)) |
| 4267 | (overlay-put idlwave-shell-stop-line-overlay 'face | 4259 | (if (facep 'fringe) |
| 4268 | idlwave-shell-electric-stop-line-face)) | 4260 | (set-face-foreground 'fringe idlwave-shell-electric-stop-color |
| 4269 | (if (facep 'fringe) | 4261 | (selected-frame))) |
| 4270 | (set-face-foreground 'fringe idlwave-shell-electric-stop-color | ||
| 4271 | (selected-frame))))) | ||
| 4272 | |||
| 4273 | (add-hook | ||
| 4274 | 'idlwave-shell-electric-debug-mode-off-hook | ||
| 4275 | (lambda () | ||
| 4276 | ;; Return to previous read-only state | ||
| 4277 | (setq buffer-read-only (if (boundp 'idlwave-shell-electric-debug-read-only) | ||
| 4278 | idlwave-shell-electric-debug-read-only)) | ||
| 4279 | (setq idlwave-shell-electric-debug-buffers | ||
| 4280 | (delq (current-buffer) idlwave-shell-electric-debug-buffers)) | ||
| 4281 | (if idlwave-shell-stop-line-overlay | ||
| 4282 | (overlay-put idlwave-shell-stop-line-overlay 'face | ||
| 4283 | idlwave-shell-stop-line-face) | ||
| 4284 | (if (facep 'fringe) | ||
| 4285 | (set-face-foreground 'fringe (face-foreground 'default)))))) | ||
| 4286 | |||
| 4287 | ;; easy-mmode defines electric-debug-mode for us, so we need to advise it. | ||
| 4288 | (defadvice idlwave-shell-electric-debug-mode (after print-enter activate) | ||
| 4289 | "Print out an entrance message." | ||
| 4290 | (when idlwave-shell-electric-debug-mode | ||
| 4291 | (message | 4262 | (message |
| 4292 | "Electric Debugging mode entered. Press [C-?] for help, [q] to quit")) | 4263 | "Electric Debugging mode entered. Press [C-?] for help, [q] to quit")) |
| 4293 | (force-mode-line-update)) | 4264 | (t |
| 4265 | ;; Return to previous read-only state | ||
| 4266 | (setq buffer-read-only (if (boundp 'idlwave-shell-electric-debug-read-only) | ||
| 4267 | idlwave-shell-electric-debug-read-only)) | ||
| 4268 | (setq idlwave-shell-electric-debug-buffers | ||
| 4269 | (delq (current-buffer) idlwave-shell-electric-debug-buffers)) | ||
| 4270 | (if idlwave-shell-stop-line-overlay | ||
| 4271 | (overlay-put idlwave-shell-stop-line-overlay 'face | ||
| 4272 | idlwave-shell-stop-line-face) | ||
| 4273 | (if (facep 'fringe) | ||
| 4274 | (set-face-foreground 'fringe (face-foreground 'default))))))) | ||
| 4294 | 4275 | ||
| 4295 | ;; Turn it off in all relevant buffers | 4276 | ;; Turn it off in all relevant buffers |
| 4296 | (defvar idlwave-shell-electric-debug-buffers nil) | 4277 | (defvar idlwave-shell-electric-debug-buffers nil) |