aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2018-09-14 11:52:15 -0400
committerStefan Monnier2018-09-14 11:52:15 -0400
commit4ee34ee82d2e1b944165bee7bf31076f1db594ef (patch)
treea6d9d80e4e5f1212f881964a89bee4c79acdcdd4
parente6380c43338fe4f8ca2df78eb549f96b14275ffc (diff)
downloademacs-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.el211
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)'.
1147If buffer exists but shell process is not running, start new IDL. 1146If buffer exists but shell process is not running, start new IDL.
1148If buffer exists and shell process is running, just switch to the buffer. 1147If 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.
1886Also get rid of widget events in the queue." 1885Also 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.
2162We assume that we are after a file name when completing one of the 2161We assume that we are after a file name when completing one of the
2163args of an executive .run, .rnew or .compile." 2162args 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
4255When Idlwave Shell Electric Debug mode is enabled, the Idlwave 4247When Idlwave Shell Electric Debug mode is enabled, the Idlwave
4256Shell debugging commands are available as single key sequences." 4248Shell 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)