aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/progmodes/idlwave.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/progmodes/idlwave.el')
-rw-r--r--lisp/progmodes/idlwave.el193
1 files changed, 34 insertions, 159 deletions
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index f7e53ec02d6..153f2578bf1 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -581,12 +581,7 @@ like this:
581MyMethod <Class1,Class2,Class3> 581MyMethod <Class1,Class2,Class3>
582 582
583The value of this variable may be nil to inhibit display, or an integer to 583The value of this variable may be nil to inhibit display, or an integer to
584indicate the maximum number of classes to display. 584indicate the maximum number of classes to display."
585
586On XEmacs, a full list of classes will also be placed into a `help-echo'
587property on the completion items, so that the list of classes for the current
588item is displayed in the echo area. If the value of this variable is a
589negative integer, the `help-echo' property will be suppressed."
590 :group 'idlwave-completion 585 :group 'idlwave-completion
591 :type '(choice (const :tag "Don't show" nil) 586 :type '(choice (const :tag "Don't show" nil)
592 (integer :tag "Number of classes shown" 1))) 587 (integer :tag "Number of classes shown" 1)))
@@ -1054,7 +1049,6 @@ goto Goto Statements
1054common-blocks Common Blocks 1049common-blocks Common Blocks
1055keyword-parameters Keyword Parameters in routine definitions and calls 1050keyword-parameters Keyword Parameters in routine definitions and calls
1056system-variables System Variables 1051system-variables System Variables
1057fixme FIXME: Warning in comments (on XEmacs only v. 21.0 and up)
1058class-arrows Object Arrows with class property" 1052class-arrows Object Arrows with class property"
1059 :group 'idlwave-misc 1053 :group 'idlwave-misc
1060 :type '(set 1054 :type '(set
@@ -1069,7 +1063,6 @@ class-arrows Object Arrows with class property"
1069 (const :tag "Common Blocks" common-blocks) 1063 (const :tag "Common Blocks" common-blocks)
1070 (const :tag "Keyword Parameters" keyword-parameters) 1064 (const :tag "Keyword Parameters" keyword-parameters)
1071 (const :tag "System Variables" system-variables) 1065 (const :tag "System Variables" system-variables)
1072 (const :tag "FIXME: Warning" fixme)
1073 (const :tag "Object Arrows with class property " class-arrows))) 1066 (const :tag "Object Arrows with class property " class-arrows)))
1074 1067
1075(defcustom idlwave-mode-hook nil 1068(defcustom idlwave-mode-hook nil
@@ -1138,23 +1131,16 @@ As a user, you should not set this to t.")
1138 ;; Common blocks 1131 ;; Common blocks
1139 (common-blocks 1132 (common-blocks
1140 '("\\<\\(common\\)\\>[ \t]*\\(\\sw+\\)?[ \t]*,?" 1133 '("\\<\\(common\\)\\>[ \t]*\\(\\sw+\\)?[ \t]*,?"
1141 (1 font-lock-keyword-face) ; "common" 1134 (1 font-lock-keyword-face) ; "common"
1142 (2 font-lock-constant-face nil t) ; block name 1135 (2 font-lock-constant-face nil t) ; block name
1143 ("[ \t]*\\(\\sw+\\)[ ,]*" 1136 ("[ \t]*\\(\\sw+\\)[ ,]*"
1144 ;; Start with point after block name and comma 1137 ;; Start with point after block name and comma
1145 (goto-char (match-end 0)) ; needed for XEmacs, could be nil 1138 nil nil (1 font-lock-variable-name-face)))) ; variable names
1146 nil
1147 (1 font-lock-variable-name-face) ; variable names
1148 )))
1149 1139
1150 ;; Batch files 1140 ;; Batch files
1151 (batch-files 1141 (batch-files
1152 '("^[ \t]*\\(@[^ \t\n]+\\)" (1 font-lock-string-face))) 1142 '("^[ \t]*\\(@[^ \t\n]+\\)" (1 font-lock-string-face)))
1153 1143
1154 ;; FIXME warning.
1155 (fixme
1156 '("\\<FIXME:" (0 font-lock-warning-face t)))
1157
1158 ;; Labels 1144 ;; Labels
1159 (label 1145 (label
1160 '("^[ \t]*\\([a-zA-Z]\\sw*:\\)" (1 font-lock-constant-face))) 1146 '("^[ \t]*\\([a-zA-Z]\\sw*:\\)" (1 font-lock-constant-face)))
@@ -1241,9 +1227,6 @@ As a user, you should not set this to t.")
1241 ((?$ . "w") (?_ . "w") (?. . "w") (?| . "w") (?& . "w")) 1227 ((?$ . "w") (?_ . "w") (?. . "w") (?| . "w") (?& . "w"))
1242 beginning-of-line)) 1228 beginning-of-line))
1243 1229
1244(put 'idlwave-mode 'font-lock-defaults
1245 idlwave-font-lock-defaults) ; XEmacs
1246
1247(defconst idlwave-comment-line-start-skip "^[ \t]*;" 1230(defconst idlwave-comment-line-start-skip "^[ \t]*;"
1248 "Regexp to match the start of a full-line comment. 1231 "Regexp to match the start of a full-line comment.
1249That is the _beginning_ of a line containing a comment delimiter `;' preceded 1232That is the _beginning_ of a line containing a comment delimiter `;' preceded
@@ -1479,9 +1462,7 @@ Otherwise ARGS forms a list that is evaluated."
1479 (define-key map "\M-\C-i" 'idlwave-complete) 1462 (define-key map "\M-\C-i" 'idlwave-complete)
1480 (define-key map "\C-c\C-i" 'idlwave-update-routine-info) 1463 (define-key map "\C-c\C-i" 'idlwave-update-routine-info)
1481 (define-key map "\C-c=" 'idlwave-resolve) 1464 (define-key map "\C-c=" 'idlwave-resolve)
1482 (define-key map 1465 (define-key map [(shift mouse-3)] 'idlwave-mouse-context-help)
1483 (if (featurep 'xemacs) [(shift button3)] [(shift mouse-3)])
1484 'idlwave-mouse-context-help)
1485 map) 1466 map)
1486 "Keymap used in IDL mode.") 1467 "Keymap used in IDL mode.")
1487 1468
@@ -1916,8 +1897,6 @@ The main features of this mode are
1916 (add-to-list 'tag-table-alist '("\\.pro$" . "IDLTAGS"))) 1897 (add-to-list 'tag-table-alist '("\\.pro$" . "IDLTAGS")))
1917 1898
1918 ;; Font-lock additions 1899 ;; Font-lock additions
1919 ;; Following line is for Emacs - XEmacs uses the corresponding property
1920 ;; on the `idlwave-mode' symbol.
1921 (set (make-local-variable 'font-lock-defaults) idlwave-font-lock-defaults) 1900 (set (make-local-variable 'font-lock-defaults) idlwave-font-lock-defaults)
1922 (set (make-local-variable 'font-lock-mark-block-function) 1901 (set (make-local-variable 'font-lock-mark-block-function)
1923 'idlwave-mark-subprogram) 1902 'idlwave-mark-subprogram)
@@ -3814,15 +3793,8 @@ If PATTERN is omitted, it defaults to \"[ \\f\\t\\n\\r\\v]+\"."
3814 (setq start (match-end 0))) 3793 (setq start (match-end 0)))
3815 (setq ret_string (concat ret_string (substring string start last))))) 3794 (setq ret_string (concat ret_string (substring string start last)))))
3816 3795
3817(defun idlwave-get-buffer-visiting (file) 3796(define-obsolete-function-alias 'idlwave-get-buffer-visiting
3818 ;; Return the buffer currently visiting FILE 3797 #'find-buffer-visiting "28.1")
3819 (cond
3820 ((boundp 'find-file-compare-truenames) ; XEmacs
3821 (let ((find-file-compare-truenames t))
3822 (get-file-buffer file)))
3823 ((fboundp 'find-buffer-visiting) ; Emacs
3824 (find-buffer-visiting file))
3825 (t (error "This should not happen (idlwave-get-buffer-visiting)"))))
3826 3798
3827(defvar idlwave-outlawed-buffers nil 3799(defvar idlwave-outlawed-buffers nil
3828 "List of buffers pulled up by IDLWAVE for special reasons. 3800 "List of buffers pulled up by IDLWAVE for special reasons.
@@ -3830,7 +3802,7 @@ Buffers in this list may be killed by `idlwave-kill-autoloaded-buffers'.")
3830 3802
3831(defun idlwave-find-file-noselect (file &optional why) 3803(defun idlwave-find-file-noselect (file &optional why)
3832 ;; Return a buffer visiting file. 3804 ;; Return a buffer visiting file.
3833 (or (idlwave-get-buffer-visiting file) 3805 (or (find-buffer-visiting file)
3834 (let ((buf (find-file-noselect file))) 3806 (let ((buf (find-file-noselect file)))
3835 (if why (add-to-list 'idlwave-outlawed-buffers (cons buf why))) 3807 (if why (add-to-list 'idlwave-outlawed-buffers (cons buf why)))
3836 buf))) 3808 buf)))
@@ -6618,7 +6590,6 @@ This function is not general, can only be used for completion stuff."
6618 "A form to evaluate after completion selection in *Completions* buffer.") 6590 "A form to evaluate after completion selection in *Completions* buffer.")
6619(defconst idlwave-completion-mark (make-marker) 6591(defconst idlwave-completion-mark (make-marker)
6620 "A mark pointing to the beginning of the completion string.") 6592 "A mark pointing to the beginning of the completion string.")
6621(defvar completion-highlight-first-word-only) ;XEmacs.
6622 6593
6623(defun idlwave-complete-in-buffer (type stype list selector prompt isa 6594(defun idlwave-complete-in-buffer (type stype list selector prompt isa
6624 &optional prepare-display-function 6595 &optional prepare-display-function
@@ -6697,12 +6668,7 @@ accumulate information on matching completions."
6697 list)) 6668 list))
6698 (let* ((list all-completions) 6669 (let* ((list all-completions)
6699 ;; "complete" means, this is already a valid completion 6670 ;; "complete" means, this is already a valid completion
6700 (complete (memq spart all-completions)) 6671 (complete (memq spart all-completions)))
6701 (completion-highlight-first-word-only t)) ; XEmacs
6702 ;; (completion-fixup-function ; Emacs
6703 ;; (lambda () (and (eq (preceding-char) ?>)
6704 ;; (re-search-backward " <" beg t)))))
6705
6706 (setq list (sort list (lambda (a b) 6672 (setq list (sort list (lambda (a b)
6707 (string< (downcase a) (downcase b))))) 6673 (string< (downcase a) (downcase b)))))
6708 (if prepare-display-function 6674 (if prepare-display-function
@@ -6764,7 +6730,6 @@ accumulate information on matching completions."
6764 (let* ((do-prop (and (>= show-classes 0) 6730 (let* ((do-prop (and (>= show-classes 0)
6765 (>= emacs-major-version 21))) 6731 (>= emacs-major-version 21)))
6766 (do-buf (not (= show-classes 0))) 6732 (do-buf (not (= show-classes 0)))
6767 ;; (do-dots (featurep 'xemacs))
6768 (do-dots t) 6733 (do-dots t)
6769 (inherit (if (and (not (eq type 'class-tag)) super-classes) 6734 (inherit (if (and (not (eq type 'class-tag)) super-classes)
6770 (cons class-selector super-classes))) 6735 (cons class-selector super-classes)))
@@ -6830,10 +6795,6 @@ accumulate information on matching completions."
6830;;---------------------------------------------------------------------- 6795;;----------------------------------------------------------------------
6831;;---------------------------------------------------------------------- 6796;;----------------------------------------------------------------------
6832;;---------------------------------------------------------------------- 6797;;----------------------------------------------------------------------
6833(when (featurep 'xemacs)
6834 (defvar rtn)
6835 (defun idlwave-pset (item)
6836 (set 'rtn item)))
6837 6798
6838(defun idlwave-popup-select (ev list title &optional sort) 6799(defun idlwave-popup-select (ev list title &optional sort)
6839 "Select an item in LIST with a popup menu. 6800 "Select an item in LIST with a popup menu.
@@ -6844,17 +6805,6 @@ sort the list before displaying."
6844 (cond ((null list)) 6805 (cond ((null list))
6845 ((= 1 (length list)) 6806 ((= 1 (length list))
6846 (setq rtn (car list))) 6807 (setq rtn (car list)))
6847 ((featurep 'xemacs)
6848 (if sort (setq list (sort list (lambda (a b)
6849 (string< (upcase a) (upcase b))))))
6850 (setq menu
6851 (append (list title)
6852 (mapcar (lambda (x) (vector x (list 'idlwave-pset
6853 x)))
6854 list)))
6855 (setq menu (idlwave-split-menu-xemacs menu maxpopup))
6856 (let ((resp (get-popup-menu-response menu)))
6857 (funcall (event-function resp) (event-object resp))))
6858 (t 6808 (t
6859 (if sort (setq list (sort list (lambda (a b) 6809 (if sort (setq list (sort list (lambda (a b)
6860 (string< (upcase a) (upcase b)))))) 6810 (string< (upcase a) (upcase b))))))
@@ -6862,36 +6812,14 @@ sort the list before displaying."
6862 (list 6812 (list
6863 (append (list "") 6813 (append (list "")
6864 (mapcar (lambda(x) (cons x x)) list))))) 6814 (mapcar (lambda(x) (cons x x)) list)))))
6865 (setq menu (idlwave-split-menu-emacs menu maxpopup)) 6815 (setq menu (idlwave-split-menu menu maxpopup))
6866 (setq rtn (x-popup-menu ev menu)))) 6816 (setq rtn (x-popup-menu ev menu))))
6867 rtn)) 6817 rtn))
6868 6818
6869(defun idlwave-split-menu-xemacs (menu N) 6819(define-obsolete-function-alias 'idlwave-split-menu-emacs
6870 "Split the MENU into submenus of maximum length N." 6820 #'idlwave-split-menu "28.1")
6871 (if (<= (length menu) (1+ N))
6872 ;; No splitting needed
6873 menu
6874 (let* ((title (car menu))
6875 (entries (cdr menu))
6876 (menu (list title))
6877 (cnt 0)
6878 (nextmenu nil))
6879 (while entries
6880 (while (and entries (< cnt N))
6881 (setq cnt (1+ cnt)
6882 nextmenu (cons (car entries) nextmenu)
6883 entries (cdr entries)))
6884 (setq nextmenu (nreverse nextmenu))
6885 (setq nextmenu (cons (format "%s...%s"
6886 (aref (car nextmenu) 0)
6887 (aref (nth (1- cnt) nextmenu) 0))
6888 nextmenu))
6889 (setq menu (cons nextmenu menu)
6890 nextmenu nil
6891 cnt 0))
6892 (nreverse menu))))
6893 6821
6894(defun idlwave-split-menu-emacs (menu N) 6822(defun idlwave-split-menu (menu N)
6895 "Split the MENU into submenus of maximum length N." 6823 "Split the MENU into submenus of maximum length N."
6896 (if (<= (length (nth 1 menu)) (1+ N)) 6824 (if (<= (length (nth 1 menu)) (1+ N))
6897 ;; No splitting needed 6825 ;; No splitting needed
@@ -6946,10 +6874,7 @@ sort the list before displaying."
6946 (move-marker idlwave-completion-mark beg) 6874 (move-marker idlwave-completion-mark beg)
6947 (setq idlwave-before-completion-wconf (current-window-configuration))) 6875 (setq idlwave-before-completion-wconf (current-window-configuration)))
6948 6876
6949 (if (featurep 'xemacs) 6877 (idlwave-display-completion-list-1 list)
6950 (idlwave-display-completion-list-xemacs
6951 list)
6952 (idlwave-display-completion-list-emacs list))
6953 6878
6954 ;; Store a special value in `this-command'. When `idlwave-complete' 6879 ;; Store a special value in `this-command'. When `idlwave-complete'
6955 ;; finds this in `last-command', it will scroll the *Completions* buffer. 6880 ;; finds this in `last-command', it will scroll the *Completions* buffer.
@@ -7007,8 +6932,7 @@ The key which is associated with each option is generated automatically.
7007First, the strings are checked for preselected keys, like in \"[P]rint\". 6932First, the strings are checked for preselected keys, like in \"[P]rint\".
7008If these don't exist, a letter in the string is automatically selected." 6933If these don't exist, a letter in the string is automatically selected."
7009 (let* ((alist (symbol-value sym)) 6934 (let* ((alist (symbol-value sym))
7010 (temp-buffer-show-hook (if (fboundp 'fit-window-to-buffer) 6935 (temp-buffer-show-hook '(fit-window-to-buffer))
7011 '(fit-window-to-buffer)))
7012 keys-alist char) 6936 keys-alist char)
7013 ;; First check the cache 6937 ;; First check the cache
7014 (if (and (eq (symbol-value sym) (get sym :one-key-alist-last))) 6938 (if (and (eq (symbol-value sym) (get sym :one-key-alist-last)))
@@ -7094,42 +7018,17 @@ If these don't exist, a letter in the string is automatically selected."
7094 (and (local-variable-p var (current-buffer)) 7018 (and (local-variable-p var (current-buffer))
7095 (symbol-value var)))) 7019 (symbol-value var))))
7096 7020
7097;; In XEmacs, we can use :activate-callback directly to advice the
7098;; choose functions. We use the private keymap only for the online
7099;; help feature.
7100
7101(defvar idlwave-completion-map nil 7021(defvar idlwave-completion-map nil
7102 "Keymap for `completion-list-mode' with `idlwave-complete'.") 7022 "Keymap for `completion-list-mode' with `idlwave-complete'.")
7103 7023
7104(defun idlwave-display-completion-list-xemacs (list &rest cl-args)
7105 (with-output-to-temp-buffer "*Completions*"
7106 (apply 'display-completion-list list
7107 ':activate-callback 'idlwave-default-choose-completion
7108 cl-args))
7109 (with-current-buffer "*Completions*"
7110 (use-local-map
7111 (or idlwave-completion-map
7112 (setq idlwave-completion-map
7113 (idlwave-make-modified-completion-map-xemacs
7114 (current-local-map)))))))
7115
7116(defun idlwave-default-choose-completion (&rest args) 7024(defun idlwave-default-choose-completion (&rest args)
7117 "Execute `default-choose-completion' and then restore the win-conf." 7025 "Execute `default-choose-completion' and then restore the win-conf."
7118 (apply 'idlwave-choose 'default-choose-completion args)) 7026 (apply 'idlwave-choose 'default-choose-completion args))
7119 7027
7120(defun idlwave-make-modified-completion-map-xemacs (old-map) 7028(define-obsolete-function-alias 'idlwave-display-completion-list-emacs
7121 "Replace `choose-completion' and `mouse-choose-completion' in OLD-MAP." 7029 #'idlwave-display-completion-list-1 "28.1")
7122 (let ((new-map (copy-keymap old-map)))
7123 (define-key new-map [button3up] 'idlwave-mouse-completion-help)
7124 (define-key new-map [button3] (lambda ()
7125 (interactive)
7126 (setq this-command last-command)))
7127 new-map))
7128
7129;; In Emacs we also replace keybindings in the completion
7130;; map in order to install our wrappers.
7131 7030
7132(defun idlwave-display-completion-list-emacs (list) 7031(defun idlwave-display-completion-list-1 (list)
7133 "Display completion list and install the choose wrappers." 7032 "Display completion list and install the choose wrappers."
7134 (with-output-to-temp-buffer "*Completions*" 7033 (with-output-to-temp-buffer "*Completions*"
7135 (display-completion-list list)) 7034 (display-completion-list list))
@@ -7137,10 +7036,12 @@ If these don't exist, a letter in the string is automatically selected."
7137 (use-local-map 7036 (use-local-map
7138 (or idlwave-completion-map 7037 (or idlwave-completion-map
7139 (setq idlwave-completion-map 7038 (setq idlwave-completion-map
7140 (idlwave-make-modified-completion-map-emacs 7039 (idlwave-make-modified-completion-map (current-local-map)))))))
7141 (current-local-map)))))))
7142 7040
7143(defun idlwave-make-modified-completion-map-emacs (old-map) 7041(define-obsolete-function-alias 'idlwave-make-modified-completion-map-emacs
7042 #'idlwave-make-modified-completion-map "28.1")
7043
7044(defun idlwave-make-modified-completion-map (old-map)
7144 "Replace `choose-completion' and `mouse-choose-completion' in OLD-MAP." 7045 "Replace `choose-completion' and `mouse-choose-completion' in OLD-MAP."
7145 (let ((new-map (copy-keymap old-map))) 7046 (let ((new-map (copy-keymap old-map)))
7146 (substitute-key-definition 7047 (substitute-key-definition
@@ -7352,7 +7253,7 @@ class/struct definition."
7352 (file (idlwave-routine-source-file 7253 (file (idlwave-routine-source-file
7353 (nth 3 (idlwave-rinfo-assoc pro 'pro nil 7254 (nth 3 (idlwave-rinfo-assoc pro 'pro nil
7354 (idlwave-routines)))))) 7255 (idlwave-routines))))))
7355 (cons file (if file (idlwave-get-buffer-visiting file))))) 7256 (cons file (if file (find-buffer-visiting file)))))
7356 7257
7357 7258
7358(defun idlwave-scan-class-info (class) 7259(defun idlwave-scan-class-info (class)
@@ -8223,15 +8124,9 @@ If we do not know about MODULE, just return KEYWORD literally."
8223 8124
8224(defvar idlwave-rinfo-mouse-map 8125(defvar idlwave-rinfo-mouse-map
8225 (let ((map (make-sparse-keymap))) 8126 (let ((map (make-sparse-keymap)))
8226 (define-key map 8127 (define-key map [mouse-2] 'idlwave-mouse-active-rinfo)
8227 (if (featurep 'xemacs) [button2] [mouse-2]) 8128 (define-key map [(shift mouse-2)] 'idlwave-mouse-active-rinfo-shift)
8228 'idlwave-mouse-active-rinfo) 8129 (define-key map [mouse-3] 'idlwave-mouse-active-rinfo-right)
8229 (define-key map
8230 (if (featurep 'xemacs) [(shift button2)] [(shift mouse-2)])
8231 'idlwave-mouse-active-rinfo-shift)
8232 (define-key map
8233 (if (featurep 'xemacs) [button3] [mouse-3])
8234 'idlwave-mouse-active-rinfo-right)
8235 (define-key map " " 'idlwave-active-rinfo-space) 8130 (define-key map " " 'idlwave-active-rinfo-space)
8236 (define-key map "q" 'idlwave-quit-help) 8131 (define-key map "q" 'idlwave-quit-help)
8237 map)) 8132 map))
@@ -8283,7 +8178,6 @@ If we do not know about MODULE, just return KEYWORD literally."
8283 "Button2: Display info about same method in superclass") 8178 "Button2: Display info about same method in superclass")
8284 (col 0) 8179 (col 0)
8285 (data (list name type class (current-buffer) nil initial-class)) 8180 (data (list name type class (current-buffer) nil initial-class))
8286 (km-prop (if (featurep 'xemacs) 'keymap 'local-map))
8287 (face 'idlwave-help-link) 8181 (face 'idlwave-help-link)
8288 beg props win cnt total) 8182 beg props win cnt total)
8289 ;; Fix keywords, but don't add chained super-classes, since these 8183 ;; Fix keywords, but don't add chained super-classes, since these
@@ -8308,7 +8202,7 @@ If we do not know about MODULE, just return KEYWORD literally."
8308 idlwave-current-obj_new-class) 8202 idlwave-current-obj_new-class)
8309 (when superclasses 8203 (when superclasses
8310 (setq props (list 'mouse-face 'highlight 8204 (setq props (list 'mouse-face 'highlight
8311 km-prop idlwave-rinfo-mouse-map 8205 'local-map idlwave-rinfo-mouse-map
8312 'help-echo help-echo-class 8206 'help-echo help-echo-class
8313 'data (cons 'class data))) 8207 'data (cons 'class data)))
8314 (let ((classes (cons initial-class superclasses)) c) 8208 (let ((classes (cons initial-class superclasses)) c)
@@ -8324,7 +8218,7 @@ If we do not know about MODULE, just return KEYWORD literally."
8324 (add-text-properties beg (point) props)))) 8218 (add-text-properties beg (point) props))))
8325 (insert "\n"))) 8219 (insert "\n")))
8326 (setq props (list 'mouse-face 'highlight 8220 (setq props (list 'mouse-face 'highlight
8327 km-prop idlwave-rinfo-mouse-map 8221 'local-map idlwave-rinfo-mouse-map
8328 'help-echo help-echo-use 8222 'help-echo help-echo-use
8329 'data (cons 'usage data))) 8223 'data (cons 'usage data)))
8330 (if html-file (setq props (append (list 'face face 'link html-file) 8224 (if html-file (setq props (append (list 'face face 'link html-file)
@@ -8352,7 +8246,7 @@ If we do not know about MODULE, just return KEYWORD literally."
8352 (setq beg (point) 8246 (setq beg (point)
8353 ;; Relevant keywords already have link property attached 8247 ;; Relevant keywords already have link property attached
8354 props (list 'mouse-face 'highlight 8248 props (list 'mouse-face 'highlight
8355 km-prop idlwave-rinfo-mouse-map 8249 'local-map idlwave-rinfo-mouse-map
8356 'data (cons 'keyword data) 8250 'data (cons 'keyword data)
8357 'help-echo help-echo-kwd 8251 'help-echo help-echo-kwd
8358 'keyword (car x))) 8252 'keyword (car x)))
@@ -8366,7 +8260,7 @@ If we do not know about MODULE, just return KEYWORD literally."
8366 ;; Here entry is (key file (list of type-conses)) 8260 ;; Here entry is (key file (list of type-conses))
8367 (while (setq entry (pop all)) 8261 (while (setq entry (pop all))
8368 (setq props (list 'mouse-face 'highlight 8262 (setq props (list 'mouse-face 'highlight
8369 km-prop idlwave-rinfo-mouse-map 8263 'local-map idlwave-rinfo-mouse-map
8370 'help-echo help-echo-src 8264 'help-echo help-echo-src
8371 'source (list (car (car (nth 2 entry))) ;type 8265 'source (list (car (car (nth 2 entry))) ;type
8372 (nth 1 entry) 8266 (nth 1 entry)
@@ -8471,8 +8365,7 @@ to it."
8471 (add-text-properties beg (point) (list 'face 'bold))) 8365 (add-text-properties beg (point) (list 'face 'bold)))
8472 (when (and file (not (equal file ""))) 8366 (when (and file (not (equal file "")))
8473 (setq beg (point)) 8367 (setq beg (point))
8474 (insert (apply 'abbreviate-file-name 8368 (insert (apply 'abbreviate-file-name (list file)))
8475 (if (featurep 'xemacs) (list file t) (list file))))
8476 (if file-props 8369 (if file-props
8477 (add-text-properties beg (point) file-props))))) 8370 (add-text-properties beg (point) file-props)))))
8478 8371
@@ -8632,10 +8525,9 @@ can be used to detect possible name clashes during this process."
8632 idlwave-user-catalog-routines 8525 idlwave-user-catalog-routines
8633 idlwave-buffer-routines 8526 idlwave-buffer-routines
8634 nil)) 8527 nil))
8635 (km-prop (if (featurep 'xemacs) 'keymap 'local-map))
8636 (keymap (make-sparse-keymap)) 8528 (keymap (make-sparse-keymap))
8637 (props (list 'mouse-face 'highlight 8529 (props (list 'mouse-face 'highlight
8638 km-prop keymap 8530 'local-map keymap
8639 'help-echo "Mouse2: Find source")) 8531 'help-echo "Mouse2: Find source"))
8640 (nroutines (length (or special-routines routines))) 8532 (nroutines (length (or special-routines routines)))
8641 (step (/ nroutines 100)) 8533 (step (/ nroutines 100))
@@ -8658,7 +8550,7 @@ can be used to detect possible name clashes during this process."
8658 (nth 2 b) (car b))))))) 8550 (nth 2 b) (car b)))))))
8659 (message "Sorting routines...done") 8551 (message "Sorting routines...done")
8660 8552
8661 (define-key keymap (if (featurep 'xemacs) [(button2)] [(mouse-2)]) 8553 (define-key keymap [(mouse-2)]
8662 (lambda (ev) 8554 (lambda (ev)
8663 (interactive "e") 8555 (interactive "e")
8664 (mouse-set-point ev) 8556 (mouse-set-point ev)
@@ -9020,23 +8912,6 @@ Assumes that point is at the beginning of the unit as found by
9020 'imenu) 8912 'imenu)
9021 (error nil))))) 8913 (error nil)))))
9022 8914
9023;; Here we hack func-menu.el in order to support this new mode.
9024;; The latest versions of func-menu.el already have this stuff in, so
9025;; we hack only if it is not already there.
9026(when (featurep 'xemacs)
9027 (eval-after-load "func-menu"
9028 '(progn
9029 (or (assq 'idlwave-mode fume-function-name-regexp-alist)
9030 (not (boundp 'fume-function-name-regexp-idl)) ; avoid problems
9031 (setq fume-function-name-regexp-alist
9032 (cons '(idlwave-mode . fume-function-name-regexp-idl)
9033 fume-function-name-regexp-alist)))
9034 (or (assq 'idlwave-mode fume-find-function-name-method-alist)
9035 (not (fboundp 'fume-find-next-idl-function-name)) ; avoid problems
9036 (setq fume-find-function-name-method-alist
9037 (cons '(idlwave-mode . fume-find-next-idl-function-name)
9038 fume-find-function-name-method-alist))))))
9039
9040(defun idlwave-edit-in-idlde () 8915(defun idlwave-edit-in-idlde ()
9041 "Edit the current file in IDL Development environment." 8916 "Edit the current file in IDL Development environment."
9042 (interactive) 8917 (interactive)