aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/progmodes
diff options
context:
space:
mode:
authorMiles Bader2007-12-06 09:51:45 +0000
committerMiles Bader2007-12-06 09:51:45 +0000
commit0bd508417142ff377f34aec8dcec9438d9175c2c (patch)
tree4d60fe09e5cebf7d79766b11e9cda8cc1c9dbb9b /lisp/progmodes
parent98fe991da804a42f53f6a5e84cd5eab18a82e181 (diff)
parent9fb1ba8090da3528de56158a79bd3527d31c7f2f (diff)
downloademacs-0bd508417142ff377f34aec8dcec9438d9175c2c.tar.gz
emacs-0bd508417142ff377f34aec8dcec9438d9175c2c.zip
Merge from emacs--devo--0
Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-294
Diffstat (limited to 'lisp/progmodes')
-rw-r--r--lisp/progmodes/antlr-mode.el21
-rw-r--r--lisp/progmodes/cc-engine.el26
-rw-r--r--lisp/progmodes/cc-subword.el2
-rw-r--r--lisp/progmodes/compile.el51
-rw-r--r--lisp/progmodes/cperl-mode.el10
-rw-r--r--lisp/progmodes/dcl-mode.el1
-rw-r--r--lisp/progmodes/flymake.el7
-rw-r--r--lisp/progmodes/fortran.el2
-rw-r--r--lisp/progmodes/gdb-ui.el138
-rw-r--r--lisp/progmodes/grep.el61
-rw-r--r--lisp/progmodes/gud.el20
-rw-r--r--lisp/progmodes/idlw-complete-structtag.el3
-rw-r--r--lisp/progmodes/idlw-help.el40
-rw-r--r--lisp/progmodes/idlwave.el10
-rw-r--r--lisp/progmodes/octave-mod.el2
-rw-r--r--lisp/progmodes/perl-mode.el4
-rw-r--r--lisp/progmodes/prolog.el5
-rw-r--r--lisp/progmodes/ps-mode.el3
-rw-r--r--lisp/progmodes/python.el6
-rw-r--r--lisp/progmodes/sh-script.el2
20 files changed, 292 insertions, 122 deletions
diff --git a/lisp/progmodes/antlr-mode.el b/lisp/progmodes/antlr-mode.el
index 01f1c86618c..9f6e70dcce5 100644
--- a/lisp/progmodes/antlr-mode.el
+++ b/lisp/progmodes/antlr-mode.el
@@ -840,7 +840,8 @@ Do not change."
840(defface antlr-keyword 840(defface antlr-keyword
841 (cond-emacs-xemacs 841 (cond-emacs-xemacs
842 '((((class color) (background light)) 842 '((((class color) (background light))
843 (:foreground "black" :EMACS :weight bold :XEMACS :bold t)))) 843 (:foreground "black" :EMACS :weight bold :XEMACS :bold t))
844 (t :inherit font-lock-keyword-face)))
844 "ANTLR keywords." 845 "ANTLR keywords."
845 :group 'antlr) 846 :group 'antlr)
846;; backward-compatibility alias 847;; backward-compatibility alias
@@ -850,7 +851,8 @@ Do not change."
850(defface antlr-syntax 851(defface antlr-syntax
851 (cond-emacs-xemacs 852 (cond-emacs-xemacs
852 '((((class color) (background light)) 853 '((((class color) (background light))
853 (:foreground "black" :EMACS :weight bold :XEMACS :bold t)))) 854 (:foreground "black" :EMACS :weight bold :XEMACS :bold t))
855 (t :inherit font-lock-constant-face)))
854 "ANTLR syntax symbols like :, |, (, ), ...." 856 "ANTLR syntax symbols like :, |, (, ), ...."
855 :group 'antlr) 857 :group 'antlr)
856;; backward-compatibility alias 858;; backward-compatibility alias
@@ -860,7 +862,8 @@ Do not change."
860(defface antlr-ruledef 862(defface antlr-ruledef
861 (cond-emacs-xemacs 863 (cond-emacs-xemacs
862 '((((class color) (background light)) 864 '((((class color) (background light))
863 (:foreground "blue" :EMACS :weight bold :XEMACS :bold t)))) 865 (:foreground "blue" :EMACS :weight bold :XEMACS :bold t))
866 (t :inherit font-lock-function-name-face)))
864 "ANTLR rule references (definition)." 867 "ANTLR rule references (definition)."
865 :group 'antlr) 868 :group 'antlr)
866;; backward-compatibility alias 869;; backward-compatibility alias
@@ -870,7 +873,8 @@ Do not change."
870(defface antlr-tokendef 873(defface antlr-tokendef
871 (cond-emacs-xemacs 874 (cond-emacs-xemacs
872 '((((class color) (background light)) 875 '((((class color) (background light))
873 (:foreground "blue" :EMACS :weight bold :XEMACS :bold t)))) 876 (:foreground "blue" :EMACS :weight bold :XEMACS :bold t))
877 (t :inherit font-lock-function-name-face)))
874 "ANTLR token references (definition)." 878 "ANTLR token references (definition)."
875 :group 'antlr) 879 :group 'antlr)
876;; backward-compatibility alias 880;; backward-compatibility alias
@@ -878,7 +882,8 @@ Do not change."
878 882
879(defvar antlr-ruleref-face 'antlr-ruleref) 883(defvar antlr-ruleref-face 'antlr-ruleref)
880(defface antlr-ruleref 884(defface antlr-ruleref
881 '((((class color) (background light)) (:foreground "blue4"))) 885 '((((class color) (background light)) (:foreground "blue4"))
886 (t :inherit font-lock-type-face))
882 "ANTLR rule references (usage)." 887 "ANTLR rule references (usage)."
883 :group 'antlr) 888 :group 'antlr)
884;; backward-compatibility alias 889;; backward-compatibility alias
@@ -886,7 +891,8 @@ Do not change."
886 891
887(defvar antlr-tokenref-face 'antlr-tokenref) 892(defvar antlr-tokenref-face 'antlr-tokenref)
888(defface antlr-tokenref 893(defface antlr-tokenref
889 '((((class color) (background light)) (:foreground "orange4"))) 894 '((((class color) (background light)) (:foreground "orange4"))
895 (t :inherit font-lock-type-face))
890 "ANTLR token references (usage)." 896 "ANTLR token references (usage)."
891 :group 'antlr) 897 :group 'antlr)
892;; backward-compatibility alias 898;; backward-compatibility alias
@@ -896,7 +902,8 @@ Do not change."
896(defface antlr-literal 902(defface antlr-literal
897 (cond-emacs-xemacs 903 (cond-emacs-xemacs
898 '((((class color) (background light)) 904 '((((class color) (background light))
899 (:foreground "brown4" :EMACS :weight bold :XEMACS :bold t)))) 905 (:foreground "brown4" :EMACS :weight bold :XEMACS :bold t))
906 (t :inherit font-lock-string-face)))
900 "ANTLR special literal tokens. 907 "ANTLR special literal tokens.
901It is used to highlight strings matched by the first regexp group of 908It is used to highlight strings matched by the first regexp group of
902`antlr-font-lock-literal-regexp'." 909`antlr-font-lock-literal-regexp'."
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index a019f598918..7666da75f9b 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -604,7 +604,7 @@ comment at the start of cc-engine.el for more info."
604 ;; (e.g. if). 604 ;; (e.g. if).
605 ;; 605 ;;
606 ;; 606 ;;
607 ;; The following diagram briefly outlines the PDA. 607 ;; The following diagram briefly outlines the PDA.
608 ;; 608 ;;
609 ;; Common state: 609 ;; Common state:
610 ;; "else": Push state, goto state `else'. 610 ;; "else": Push state, goto state `else'.
@@ -1079,7 +1079,7 @@ single `?' is found, then `c-maybe-labelp' is cleared.
1079 1079
1080For AWK, a statement which is terminated by an EOL (not a \; or a }) is 1080For AWK, a statement which is terminated by an EOL (not a \; or a }) is
1081regarded as having a \"virtual semicolon\" immediately after the last token on 1081regarded as having a \"virtual semicolon\" immediately after the last token on
1082the line. If this virtual semicolon is _at_ from, the function recognises it. 1082the line. If this virtual semicolon is _at_ from, the function recognizes it.
1083 1083
1084Note that this function might do hidden buffer changes. See the 1084Note that this function might do hidden buffer changes. See the
1085comment at the start of cc-engine.el for more info." 1085comment at the start of cc-engine.el for more info."
@@ -1916,7 +1916,7 @@ comment at the start of cc-engine.el for more info."
1916(defun c-partial-ws-p (beg end) 1916(defun c-partial-ws-p (beg end)
1917 ;; Is the region (beg end) WS, and is there WS (or BOB/EOB) next to the 1917 ;; Is the region (beg end) WS, and is there WS (or BOB/EOB) next to the
1918 ;; region? This is a "heuristic" function. ..... 1918 ;; region? This is a "heuristic" function. .....
1919 ;; 1919 ;;
1920 ;; The motivation for the second bit is to check whether removing this 1920 ;; The motivation for the second bit is to check whether removing this
1921 ;; region would coalesce two symbols. 1921 ;; region would coalesce two symbols.
1922 ;; 1922 ;;
@@ -3291,7 +3291,7 @@ comment at the start of cc-engine.el for more info."
3291;; The workaround for this is for the AWK Mode initialisation to switch the 3291;; The workaround for this is for the AWK Mode initialisation to switch the
3292;; defalias for c-in-literal to c-slow-in-literal. This will slow down other 3292;; defalias for c-in-literal to c-slow-in-literal. This will slow down other
3293;; cc-modes in Xemacs whenever an awk-buffer has been initialised. 3293;; cc-modes in Xemacs whenever an awk-buffer has been initialised.
3294;; 3294;;
3295;; (Alan Mackenzie, 2003/4/30). 3295;; (Alan Mackenzie, 2003/4/30).
3296 3296
3297(defun c-fast-in-literal (&optional lim detect-cpp) 3297(defun c-fast-in-literal (&optional lim detect-cpp)
@@ -3406,7 +3406,7 @@ comment at the start of cc-engine.el for more info."
3406 (if (and (consp range) (progn 3406 (if (and (consp range) (progn
3407 (goto-char (car range)) 3407 (goto-char (car range))
3408 (looking-at c-line-comment-starter))) 3408 (looking-at c-line-comment-starter)))
3409 (let ((col (current-column)) 3409 (let ((col (current-column))
3410 (beg (point)) 3410 (beg (point))
3411 (bopl (c-point 'bopl)) 3411 (bopl (c-point 'bopl))
3412 (end (cdr range))) 3412 (end (cdr range)))
@@ -4045,7 +4045,7 @@ comment at the start of cc-engine.el for more info."
4045 ;; example, this happens to "foo" when "foo \n bar();" becomes 4045 ;; example, this happens to "foo" when "foo \n bar();" becomes
4046 ;; "foo(); \n bar();". Such stale types, if not removed, foul up 4046 ;; "foo(); \n bar();". Such stale types, if not removed, foul up
4047 ;; the fontification. 4047 ;; the fontification.
4048 ;; 4048 ;;
4049 ;; Have we, perhaps, added non-ws characters to the front/back of a found 4049 ;; Have we, perhaps, added non-ws characters to the front/back of a found
4050 ;; type? 4050 ;; type?
4051 (when (> end beg) 4051 (when (> end beg)
@@ -4064,7 +4064,7 @@ comment at the start of cc-engine.el for more info."
4064 (c-beginning-of-current-token))) 4064 (c-beginning-of-current-token)))
4065 (c-unfind-type (buffer-substring-no-properties 4065 (c-unfind-type (buffer-substring-no-properties
4066 (point) beg)))))) 4066 (point) beg))))))
4067 4067
4068 (if c-maybe-stale-found-type ; e.g. (c-decl-id-start "foo" 97 107 " (* ooka) " "o") 4068 (if c-maybe-stale-found-type ; e.g. (c-decl-id-start "foo" 97 107 " (* ooka) " "o")
4069 (cond 4069 (cond
4070 ;; Changing the amount of (already existing) whitespace - don't do anything. 4070 ;; Changing the amount of (already existing) whitespace - don't do anything.
@@ -5929,7 +5929,7 @@ comment at the start of cc-engine.el for more info."
5929 macro-start ; if we're in one. 5929 macro-start ; if we're in one.
5930 label-type) 5930 label-type)
5931 (cond 5931 (cond
5932 ;; "case" or "default" (Doesn't apply to AWK). 5932 ;; "case" or "default" (Doesn't apply to AWK).
5933 ((looking-at c-label-kwds-regexp) 5933 ((looking-at c-label-kwds-regexp)
5934 (let ((kwd-end (match-end 1))) 5934 (let ((kwd-end (match-end 1)))
5935 ;; Record only the keyword itself for fontification, since in 5935 ;; Record only the keyword itself for fontification, since in
@@ -6048,7 +6048,7 @@ comment at the start of cc-engine.el for more info."
6048 (c-forward-label nil pte start)))))))))) 6048 (c-forward-label nil pte start))))))))))
6049 6049
6050 ;; Point is still at the beginning of the possible label construct. 6050 ;; Point is still at the beginning of the possible label construct.
6051 ;; 6051 ;;
6052 ;; Check that the next nonsymbol token is ":", or that we're in one 6052 ;; Check that the next nonsymbol token is ":", or that we're in one
6053 ;; of QT's "slots" declarations. Allow '(' for the sake of macro 6053 ;; of QT's "slots" declarations. Allow '(' for the sake of macro
6054 ;; arguments. FIXME: Should build this regexp from the language 6054 ;; arguments. FIXME: Should build this regexp from the language
@@ -6074,7 +6074,7 @@ comment at the start of cc-engine.el for more info."
6074 (and (c-major-mode-is 'c++-mode) 6074 (and (c-major-mode-is 'c++-mode)
6075 (string-match 6075 (string-match
6076 "\\(p\\(r\\(ivate\\|otected\\)\\|ublic\\)\\|more\\)\\>" 6076 "\\(p\\(r\\(ivate\\|otected\\)\\|ublic\\)\\|more\\)\\>"
6077 (buffer-substring start (point))))) 6077 (buffer-substring start (point)))))
6078 (c-forward-syntactic-ws limit) 6078 (c-forward-syntactic-ws limit)
6079 (cond 6079 (cond
6080 ((looking-at ":\\([^:]\\|\\'\\)") ; A single colon. 6080 ((looking-at ":\\([^:]\\|\\'\\)") ; A single colon.
@@ -7238,7 +7238,7 @@ comment at the start of cc-engine.el for more info."
7238 ;; needed with further syntax elements of the types `substatement', 7238 ;; needed with further syntax elements of the types `substatement',
7239 ;; `inexpr-statement', `arglist-cont-nonempty', `statement-block-intro', and 7239 ;; `inexpr-statement', `arglist-cont-nonempty', `statement-block-intro', and
7240 ;; `defun-block-intro'. 7240 ;; `defun-block-intro'.
7241 ;; 7241 ;;
7242 ;; Do the generic processing to anchor the given syntax symbol on 7242 ;; Do the generic processing to anchor the given syntax symbol on
7243 ;; the preceding statement: Skip over any labels and containing 7243 ;; the preceding statement: Skip over any labels and containing
7244 ;; statements on the same line, and then search backward until we 7244 ;; statements on the same line, and then search backward until we
@@ -7424,7 +7424,7 @@ comment at the start of cc-engine.el for more info."
7424 c-other-decl-block-key-in-symbols-alist)) 7424 c-other-decl-block-key-in-symbols-alist))
7425 (max (c-point 'boi paren-pos) (point)))) 7425 (max (c-point 'boi paren-pos) (point))))
7426 (t (c-add-syntax 'defun-block-intro nil)))) 7426 (t (c-add-syntax 'defun-block-intro nil))))
7427 7427
7428 (c-add-syntax 'statement-block-intro nil))) 7428 (c-add-syntax 'statement-block-intro nil)))
7429 7429
7430 (if (= paren-pos boi) 7430 (if (= paren-pos boi)
@@ -8264,7 +8264,7 @@ comment at the start of cc-engine.el for more info."
8264 'statement-cont) 8264 'statement-cont)
8265 nil nil containing-sexp paren-state)) 8265 nil nil containing-sexp paren-state))
8266 )) 8266 ))
8267 8267
8268 ;; CASE 5F: Close of a non-class declaration level block. 8268 ;; CASE 5F: Close of a non-class declaration level block.
8269 ((and (eq char-after-ip ?}) 8269 ((and (eq char-after-ip ?})
8270 (c-keyword-member containing-decl-kwd 8270 (c-keyword-member containing-decl-kwd
diff --git a/lisp/progmodes/cc-subword.el b/lisp/progmodes/cc-subword.el
index 68ecd3a0515..d3e613fa254 100644
--- a/lisp/progmodes/cc-subword.el
+++ b/lisp/progmodes/cc-subword.el
@@ -123,6 +123,8 @@ telling us which (X)Emacs version you're using."
123 map) 123 map)
124 "Keymap used in command `c-subword-mode' minor mode.") 124 "Keymap used in command `c-subword-mode' minor mode.")
125 125
126 ;; Produces compiler warning about make-variable-buffer-local not
127 ;; being called at toplevel (due to fboundp test).
126 (define-minor-mode c-subword-mode 128 (define-minor-mode c-subword-mode
127 "Mode enabling subword movement and editing keys. 129 "Mode enabling subword movement and editing keys.
128In spite of GNU Coding Standards, it is popular to name a symbol by 130In spite of GNU Coding Standards, it is popular to name a symbol by
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index 3de5b7eeb7e..b4148c59b49 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -339,6 +339,57 @@ File = \\(.+\\), Line = \\([0-9]+\\)\\(?:, Column = \\([0-9]+\\)\\)?"
339 nil 2 nil 2 nil 339 nil 2 nil 2 nil
340 (0 'default t) 340 (0 'default t)
341 (1 compilation-error-face prepend) (2 compilation-line-face prepend)) 341 (1 compilation-error-face prepend) (2 compilation-line-face prepend))
342
343 (compilation-perl--Pod::Checker
344 ;; podchecker error messages, per Pod::Checker.
345 ;; The style is from the Pod::Checker::poderror() function, eg.
346 ;; *** ERROR: Spurious text after =cut at line 193 in file foo.pm
347 ;;
348 ;; Plus end_pod() can give "at line EOF" instead of a
349 ;; number, so for that match "on line N" which is the
350 ;; originating spot, eg.
351 ;; *** ERROR: =over on line 37 without closing =back at line EOF in file bar.pm
352 ;;
353 ;; Plus command() can give both "on line N" and "at line N";
354 ;; the latter is desired and is matched because the .* is
355 ;; greedy.
356 ;; *** ERROR: =over on line 1 without closing =back (at head1) at line 3 in file x.pod
357 ;;
358 "^\\*\\*\\* \\(?:ERROR\\|\\(WARNING\\)\\).* \\(?:at\\|on\\) line \
359\\([0-9]+\\) \\(?:.* \\)?in file \\([^ \t\n]+\\)"
360 3 2 nil (1))
361 (compilation-perl--Test
362 ;; perl Test module error messages.
363 ;; Style per the ok() function "$context", eg.
364 ;; # Failed test 1 in foo.t at line 6
365 ;;
366 "^# Failed test [0-9]+ in \\([^ \t\r\n]+\\) at line \\([0-9]+\\)"
367 1 2)
368 (compilation-perl--Test::Harness
369 ;; perl Test::Harness output, eg.
370 ;; NOK 1# Test 1 got: "1234" (t/foo.t at line 46)
371 ;;
372 ;; Test::Harness is slightly designed for tty output, since
373 ;; it prints CRs to overwrite progress messages, but if you
374 ;; run it in with M-x compile this pattern can at least step
375 ;; through the failures.
376 ;;
377 "^.*NOK.* \\([^ \t\r\n]+\\) at line \\([0-9]+\\)"
378 1 2)
379 (compilation-weblint
380 ;; The style comes from HTML::Lint::Error::as_string(), eg.
381 ;; index.html (13:1) Unknown element <fdjsk>
382 ;;
383 ;; The pattern only matches filenames without spaces, since that
384 ;; should be usual and should help reduce the chance of a false
385 ;; match of a message from some unrelated program.
386 ;;
387 ;; This message style is quite close to the "ibm" entry which is
388 ;; for IBM C, though that ibm bit doesn't put a space after the
389 ;; filename.
390 ;;
391 "^\\([^ \t\r\n(]+\\) (\\([0-9]+\\):\\([0-9]+\\)) "
392 1 2 3)
342 ) 393 )
343 "Alist of values for `compilation-error-regexp-alist'.") 394 "Alist of values for `compilation-error-regexp-alist'.")
344 395
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index 13f1e0c24b8..4a397a9d012 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -1510,6 +1510,8 @@ the last)."
1510 2 3)) 1510 2 3))
1511 "Alist that specifies how to match errors in perl output.") 1511 "Alist that specifies how to match errors in perl output.")
1512 1512
1513(defvar compilation-error-regexp-alist)
1514
1513;;;###autoload 1515;;;###autoload
1514(defun cperl-mode () 1516(defun cperl-mode ()
1515 "Major mode for editing Perl code. 1517 "Major mode for editing Perl code.
@@ -1790,9 +1792,11 @@ or as help on variables `cperl-tips', `cperl-problems',
1790 (set 'vc-sccs-header cperl-vc-sccs-header) 1792 (set 'vc-sccs-header cperl-vc-sccs-header)
1791 ;; This one is obsolete... 1793 ;; This one is obsolete...
1792 (make-local-variable 'vc-header-alist) 1794 (make-local-variable 'vc-header-alist)
1793 (set 'vc-header-alist (or cperl-vc-header-alist ; Avoid warning 1795 (with-no-warnings
1794 `((SCCS ,(car cperl-vc-sccs-header)) 1796 (set 'vc-header-alist (or cperl-vc-header-alist ; Avoid warning
1795 (RCS ,(car cperl-vc-rcs-header))))) 1797 `((SCCS ,(car cperl-vc-sccs-header))
1798 (RCS ,(car cperl-vc-rcs-header)))))
1799 )
1796 (cond ((boundp 'compilation-error-regexp-alist-alist);; xemacs 20.x 1800 (cond ((boundp 'compilation-error-regexp-alist-alist);; xemacs 20.x
1797 (make-local-variable 'compilation-error-regexp-alist-alist) 1801 (make-local-variable 'compilation-error-regexp-alist-alist)
1798 (set 'compilation-error-regexp-alist-alist 1802 (set 'compilation-error-regexp-alist-alist
diff --git a/lisp/progmodes/dcl-mode.el b/lisp/progmodes/dcl-mode.el
index 6a3e9e82d6e..4546880cca5 100644
--- a/lisp/progmodes/dcl-mode.el
+++ b/lisp/progmodes/dcl-mode.el
@@ -2201,6 +2201,7 @@ otherwise return nil."
2201 () 2201 ()
2202 (equal start (match-end 0)))))) 2202 (equal start (match-end 0))))))
2203 2203
2204(declare-function imenu-default-create-index-function "imenu" ())
2204 2205
2205;;;------------------------------------------------------------------------- 2206;;;-------------------------------------------------------------------------
2206(defun dcl-imenu-create-index-function () 2207(defun dcl-imenu-create-index-function ()
diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el
index 5538bd8984a..1e144282de5 100644
--- a/lisp/progmodes/flymake.el
+++ b/lisp/progmodes/flymake.el
@@ -1268,10 +1268,9 @@ For the format of LINE-ERR-INFO, see `flymake-ler-make-ler'."
1268(defun flymake-goto-file-and-line (file line) 1268(defun flymake-goto-file-and-line (file line)
1269 "Try to get buffer for FILE and goto line LINE in it." 1269 "Try to get buffer for FILE and goto line LINE in it."
1270 (if (not (file-exists-p file)) 1270 (if (not (file-exists-p file))
1271 (flymake-log 1 "file %s does not exists" file) 1271 (flymake-log 1 "File %s does not exist" file)
1272 (progn 1272 (find-file file)
1273 (find-file file) 1273 (goto-line line)))
1274 (goto-line line))))
1275 1274
1276;; flymake minor mode declarations 1275;; flymake minor mode declarations
1277(defvar flymake-mode-line nil) 1276(defvar flymake-mode-line nil)
diff --git a/lisp/progmodes/fortran.el b/lisp/progmodes/fortran.el
index 43cb61cba6b..1954319269d 100644
--- a/lisp/progmodes/fortran.el
+++ b/lisp/progmodes/fortran.el
@@ -908,6 +908,8 @@ affects all Fortran buffers, and also the default."
908 "Fortran mode adds this to `hack-local-variables-hook'." 908 "Fortran mode adds this to `hack-local-variables-hook'."
909 (fortran-line-length fortran-line-length)) 909 (fortran-line-length fortran-line-length))
910 910
911(declare-function gud-find-c-expr "gud.el" nil)
912
911(defun fortran-gud-find-expr () 913(defun fortran-gud-find-expr ()
912 ;; Consider \n as punctuation (end of expression). 914 ;; Consider \n as punctuation (end of expression).
913 (with-syntax-table fortran-gud-syntax-table 915 (with-syntax-table fortran-gud-syntax-table
diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el
index 0d1a4b05d65..32db8850b66 100644
--- a/lisp/progmodes/gdb-ui.el
+++ b/lisp/progmodes/gdb-ui.el
@@ -43,12 +43,22 @@
43;; section in the GDB info manual. 43;; section in the GDB info manual.
44 44
45;; GDB developers plan to make the annotation interface obsolete. A new 45;; GDB developers plan to make the annotation interface obsolete. A new
46;; interface called GDB/MI (machine interface) has been designed to replace 46;; interface called GDB/MI (machine interface) has been designed to replace it.
47;; it. Some GDB/MI commands are used in this file through the CLI command 47;; Some GDB/MI commands are used in this file through the CLI command
48;; 'interpreter mi <mi-command>'. A file called gdb-mi.el is included with 48;; 'interpreter mi <mi-command>'. To help with the process of fully migrating
49;; GDB (6.2 onwards) that uses GDB/MI as the primary interface to GDB. It is 49;; Emacs from annotations to GDB/MI, there is an experimental package called
50;; still under development and is part of a process to migrate Emacs from 50;; gdb-mi in the Emacs Lisp Package Archive ("http://tromey.com/elpa/"). It
51;; annotations to GDB/MI. 51;; comprises of modified gud.el and a file called gdb-mi.el which replaces
52;; gdb-ui.el. When installed, this overrides the current files and invoking
53;; M-x gdb will use GDB/MI directly (starts with "gdb -i=mi"). When deleted
54;; ('d' followed by 'x' in Package Menu mode), the files are deleted and old
55;; functionality restored. This provides a convenient way to review the
56;; current status/contribute to its improvement. For someone who just wants to
57;; use GDB, however, the current mode in Emacs 22 is a much better option.
58;; There is also a file, also called gdb-mi.el, a version of which is included
59;; the GDB distribution. This will probably only work with versions
60;; distributed with GDB 6.5 or later. Unlike the version in ELPA it works on
61;; top of gdb-ui.el and you can only start it with M-x gdbmi.
52 62
53;; This mode SHOULD WORK WITH GDB 5.0 or later but you will NEED AT LEAST 63;; This mode SHOULD WORK WITH GDB 5.0 or later but you will NEED AT LEAST
54;; GDB 6.0 to use watch expressions. It works best with GDB 6.4 or later 64;; GDB 6.0 to use watch expressions. It works best with GDB 6.4 or later
@@ -69,25 +79,13 @@
69 79
70;;; Known Bugs: 80;;; Known Bugs:
71 81
72;; 1) Strings that are watched don't update in the speedbar when their 82;; 1) Cannot handle multiple debug sessions.
73;; contents change unless the first character changes. 83;; 2) If you wish to call procedures from your program in GDB
74;; 2) Cannot handle multiple debug sessions.
75;; 3) M-x gdb doesn't work with "run" command in .gdbinit, use M-x gdba instead.
76;; 4) M-x gdb doesn't work if the corefile is specified in the command in the
77;; minibuffer, use M-x gdba instead (or specify the core in the GUD buffer).
78;; 5) If you wish to call procedures from your program in GDB
79;; e.g "call myproc ()", "p mysquare (5)" then use level 2 annotations 84;; e.g "call myproc ()", "p mysquare (5)" then use level 2 annotations
80;; "gdb --annotate=2 myprog" to keep source buffer/selected frame fixed. 85;; "gdb --annotate=2 myprog" to keep source buffer/selected frame fixed.
81;; 6) After detaching from a process, clicking on the "GO" icon on toolbar 86;; 3) After detaching from a process, clicking on the "GO" icon on toolbar
82;; (gud-go) sends "continue" to GDB (should be "run"). 87;; (gud-go) sends "continue" to GDB (should be "run").
83 88
84;;; Problems with watch expressions, GDB/MI:
85
86;; 1) They go out of scope when the inferior is re-run.
87;; 2) -stack-list-locals has a type field but also prints type in values field.
88;; 3) VARNUM increments even when variable object is not created
89;; (maybe trivial).
90
91;;; TODO: 89;;; TODO:
92 90
93;; 1) Use MI command -data-read-memory for memory window. 91;; 1) Use MI command -data-read-memory for memory window.
@@ -138,6 +136,7 @@ Emacs can't find.")
138(defvar gdb-frame-begin nil 136(defvar gdb-frame-begin nil
139 "Non-nil when GDB generates frame-begin annotation.") 137 "Non-nil when GDB generates frame-begin annotation.")
140(defvar gdb-printing t) 138(defvar gdb-printing t)
139(defvar gdb-parent-bptno-enabled nil)
141 140
142(defvar gdb-buffer-type nil 141(defvar gdb-buffer-type nil
143 "One of the symbols bound in `gdb-buffer-rules'.") 142 "One of the symbols bound in `gdb-buffer-rules'.")
@@ -222,7 +221,6 @@ handlers.")
222The directory containing FILE becomes the initial working 221The directory containing FILE becomes the initial working
223directory and source-file directory for your debugger. 222directory and source-file directory for your debugger.
224 223
225
226If `gdb-many-windows' is nil (the default value) then gdb just 224If `gdb-many-windows' is nil (the default value) then gdb just
227pops up the GUD buffer unless `gdb-show-main' is t. In this case 225pops up the GUD buffer unless `gdb-show-main' is t. In this case
228it starts with two windows: one displaying the GUD buffer and the 226it starts with two windows: one displaying the GUD buffer and the
@@ -1860,7 +1858,7 @@ static char *magick[] = {
1860 :group 'gud) 1858 :group 'gud)
1861 1859
1862(defconst gdb-breakpoint-regexp 1860(defconst gdb-breakpoint-regexp
1863 "\\([0-9]+\\).*?\\(?:point\\|catch\\s-+\\S-+\\)\\s-+\\S-+\\s-+\\(.\\)\\s-+") 1861 "\\(?:\\([0-9]+\\).*?\\(?:point\\|catch\\s-+\\S-+\\)\\s-+\\S-+\\|\\([0-9]+\\.[0-9]+\\)\\)\\s-+\\(.\\)\\s-+")
1864 1862
1865;; Put breakpoint icons in relevant margins (even those set in the GUD buffer). 1863;; Put breakpoint icons in relevant margins (even those set in the GUD buffer).
1866(defun gdb-info-breakpoints-custom () 1864(defun gdb-info-breakpoints-custom ()
@@ -1879,10 +1877,12 @@ static char *magick[] = {
1879 (forward-line 1) 1877 (forward-line 1)
1880 (if (looking-at gdb-breakpoint-regexp) 1878 (if (looking-at gdb-breakpoint-regexp)
1881 (progn 1879 (progn
1882 (setq bptno (match-string 1)) 1880 (setq bptno (or (match-string 1) (match-string 2)))
1883 (setq flag (char-after (match-beginning 2))) 1881 (setq flag (char-after (match-beginning 3)))
1882 (if (match-string 1)
1883 (setq gdb-parent-bptno-enabled (eq flag ?y)))
1884 (add-text-properties 1884 (add-text-properties
1885 (match-beginning 2) (match-end 2) 1885 (match-beginning 3) (match-end 3)
1886 (if (eq flag ?y) 1886 (if (eq flag ?y)
1887 '(face font-lock-warning-face) 1887 '(face font-lock-warning-face)
1888 '(face font-lock-type-face))) 1888 '(face font-lock-type-face)))
@@ -1938,6 +1938,9 @@ static char *magick[] = {
1938 (end-of-line)))))) 1938 (end-of-line))))))
1939 (if (gdb-get-buffer 'gdb-assembler-buffer) (gdb-assembler-custom))) 1939 (if (gdb-get-buffer 'gdb-assembler-buffer) (gdb-assembler-custom)))
1940 1940
1941(declare-function gud-remove "gdb-ui" t t) ; gud-def
1942(declare-function gud-break "gdb-ui" t t) ; gud-def
1943
1941(defun gdb-mouse-set-clear-breakpoint (event) 1944(defun gdb-mouse-set-clear-breakpoint (event)
1942 "Set/clear breakpoint in left fringe/margin with mouse click." 1945 "Set/clear breakpoint in left fringe/margin with mouse click."
1943 (interactive "e") 1946 (interactive "e")
@@ -1963,17 +1966,18 @@ static char *magick[] = {
1963 (save-excursion 1966 (save-excursion
1964 (goto-char (posn-point posn)) 1967 (goto-char (posn-point posn))
1965 (if (posn-object posn) 1968 (if (posn-object posn)
1966 (gdb-enqueue-input 1969 (let* ((bptno (get-text-property
1967 (list 1970 0 'gdb-bptno (car (posn-string posn)))))
1968 (let ((bptno (get-text-property 1971 (string-match "\\([0-9+]\\)*" bptno)
1969 0 'gdb-bptno (car (posn-string posn))))) 1972 (gdb-enqueue-input
1973 (list
1970 (concat gdb-server-prefix 1974 (concat gdb-server-prefix
1971 (if (get-text-property 1975 (if (get-text-property
1972 0 'gdb-enabled (car (posn-string posn))) 1976 0 'gdb-enabled (car (posn-string posn)))
1973 "disable " 1977 "disable "
1974 "enable ") 1978 "enable ")
1975 bptno "\n")) 1979 (match-string 1 bptno) "\n")
1976 'ignore)))))))) 1980 'ignore)))))))))
1977 1981
1978(defun gdb-mouse-toggle-breakpoint-fringe (event) 1982(defun gdb-mouse-toggle-breakpoint-fringe (event)
1979 "Enable/disable breakpoint in left fringe with mouse click." 1983 "Enable/disable breakpoint in left fringe with mouse click."
@@ -1991,14 +1995,16 @@ static char *magick[] = {
1991 (when (overlay-get overlay 'put-break) 1995 (when (overlay-get overlay 'put-break)
1992 (setq obj (overlay-get overlay 'before-string)))) 1996 (setq obj (overlay-get overlay 'before-string))))
1993 (when (stringp obj) 1997 (when (stringp obj)
1994 (gdb-enqueue-input 1998 (let* ((bptno (get-text-property 0 'gdb-bptno obj)))
1995 (list 1999 (string-match "\\([0-9+]\\)*" bptno)
1996 (concat gdb-server-prefix 2000 (gdb-enqueue-input
1997 (if (get-text-property 0 'gdb-enabled obj) 2001 (list
1998 "disable " 2002 (concat gdb-server-prefix
1999 "enable ") 2003 (if (get-text-property 0 'gdb-enabled obj)
2000 (get-text-property 0 'gdb-bptno obj) "\n") 2004 "disable "
2001 'ignore)))))))) 2005 "enable ")
2006 (match-string 1 bptno) "\n")
2007 'ignore)))))))))
2002 2008
2003(defun gdb-breakpoints-buffer-name () 2009(defun gdb-breakpoints-buffer-name ()
2004 (with-current-buffer gud-comint-buffer 2010 (with-current-buffer gud-comint-buffer
@@ -2064,21 +2070,25 @@ static char *magick[] = {
2064 (gdb-enqueue-input 2070 (gdb-enqueue-input
2065 (list 2071 (list
2066 (concat gdb-server-prefix 2072 (concat gdb-server-prefix
2067 (if (eq ?y (char-after (match-beginning 2))) 2073 (if (eq ?y (char-after (match-beginning 3)))
2068 "disable " 2074 "disable "
2069 "enable ") 2075 "enable ")
2070 (match-string 1) "\n") 'ignore)) 2076 (or (match-string 1) (match-string 2)) "\n") 'ignore))
2071 (error "Not recognized as break/watchpoint line")))) 2077 (error "Not recognized as break/watchpoint line"))))
2072 2078
2073(defun gdb-delete-breakpoint () 2079(defun gdb-delete-breakpoint ()
2074 "Delete the breakpoint at current line." 2080 "Delete the breakpoint at current line."
2075 (interactive) 2081 (interactive)
2076 (beginning-of-line 1) 2082 (save-excursion
2077 (if (looking-at gdb-breakpoint-regexp) 2083 (beginning-of-line 1)
2078 (gdb-enqueue-input 2084 (if (looking-at gdb-breakpoint-regexp)
2079 (list 2085 (if (match-string 1)
2080 (concat gdb-server-prefix "delete " (match-string 1) "\n") 'ignore)) 2086 (gdb-enqueue-input
2081 (error "Not recognized as break/watchpoint line"))) 2087 (list
2088 (concat gdb-server-prefix "delete " (match-string 1) "\n")
2089 'ignore))
2090 (message-box "This breakpoint cannot be deleted on its own."))
2091 (error "Not recognized as break/watchpoint line"))))
2082 2092
2083(defun gdb-goto-breakpoint (&optional event) 2093(defun gdb-goto-breakpoint (&optional event)
2084 "Display the breakpoint location specified at current line." 2094 "Display the breakpoint location specified at current line."
@@ -2086,7 +2096,7 @@ static char *magick[] = {
2086 (if event (posn-set-point (event-end event))) 2096 (if event (posn-set-point (event-end event)))
2087 (save-excursion 2097 (save-excursion
2088 (beginning-of-line 1) 2098 (beginning-of-line 1)
2089 (if (looking-at "\\([0-9]+\\) .+ in .+ at\\s-+\\(\\S-+\\):\\([0-9]+\\)") 2099 (if (looking-at "\\([0-9]+\\.?[0-9]*\\) .+ in .+ at\\s-+\\(\\S-+\\):\\([0-9]+\\)")
2090 (let ((bptno (match-string 1)) 2100 (let ((bptno (match-string 1))
2091 (file (match-string 2)) 2101 (file (match-string 2))
2092 (line (match-string 3))) 2102 (line (match-string 3)))
@@ -3156,6 +3166,8 @@ BUFFER nil or omitted means use the current buffer."
3156 (delete-overlay overlay)))) 3166 (delete-overlay overlay))))
3157 3167
3158(defun gdb-put-breakpoint-icon (enabled bptno) 3168(defun gdb-put-breakpoint-icon (enabled bptno)
3169 (if (string-match "[0-9+]+\\." bptno)
3170 (setq enabled gdb-parent-bptno-enabled))
3159 (let ((start (- (line-beginning-position) 1)) 3171 (let ((start (- (line-beginning-position) 1))
3160 (end (+ (line-end-position) 1)) 3172 (end (+ (line-end-position) 1))
3161 (putstring (if enabled "B" "b")) 3173 (putstring (if enabled "B" "b"))
@@ -3215,8 +3227,8 @@ BUFFER nil or omitted means use the current buffer."
3215 (setq left-margin-width 2) 3227 (setq left-margin-width 2)
3216 (let ((window (get-buffer-window (current-buffer) 0))) 3228 (let ((window (get-buffer-window (current-buffer) 0)))
3217 (if window 3229 (if window
3218 (set-window-margins 3230 (set-window-margins
3219 window left-margin-width right-margin-width))))) 3231 window left-margin-width right-margin-width)))))
3220 (gdb-put-string 3232 (gdb-put-string
3221 (propertize putstring 3233 (propertize putstring
3222 'face (if enabled 'breakpoint-enabled 'breakpoint-disabled)) 3234 'face (if enabled 'breakpoint-enabled 'breakpoint-disabled))
@@ -3286,18 +3298,16 @@ BUFFER nil or omitted means use the current buffer."
3286 (goto-char (point-min)) 3298 (goto-char (point-min))
3287 (while (< (point) (- (point-max) 1)) 3299 (while (< (point) (- (point-max) 1))
3288 (forward-line 1) 3300 (forward-line 1)
3289 (if (looking-at "[^\t].*?breakpoint") 3301 (when (looking-at
3290 (progn 3302 "\\([0-9]+\\.?[0-9]*\\).*?\\s-+\\(.\\)\\s-+0x0*\\(\\S-+\\)")
3291 (looking-at 3303 (setq bptno (match-string 1))
3292 "\\([0-9]+\\)\\s-+\\S-+\\s-+\\S-+\\s-+\\(.\\)\\s-+0x0*\\(\\S-+\\)") 3304 (setq flag (char-after (match-beginning 2)))
3293 (setq bptno (match-string 1)) 3305 (setq address (match-string 3))
3294 (setq flag (char-after (match-beginning 2))) 3306 (with-current-buffer buffer
3295 (setq address (match-string 3)) 3307 (save-excursion
3296 (with-current-buffer buffer 3308 (goto-char (point-min))
3297 (save-excursion 3309 (if (search-forward address nil t)
3298 (goto-char (point-min)) 3310 (gdb-put-breakpoint-icon (eq flag ?y) bptno)))))))
3299 (if (search-forward address nil t)
3300 (gdb-put-breakpoint-icon (eq flag ?y) bptno))))))))
3301 (if (not (equal gdb-pc-address "main")) 3311 (if (not (equal gdb-pc-address "main"))
3302 (with-current-buffer buffer 3312 (with-current-buffer buffer
3303 (set-window-point (get-buffer-window buffer 0) pos))))) 3313 (set-window-point (get-buffer-window buffer 0) pos)))))
@@ -3458,7 +3468,7 @@ is set in them."
3458 (gdb-force-mode-line-update 3468 (gdb-force-mode-line-update
3459 (propertize "ready" 'face font-lock-variable-name-face))) 3469 (propertize "ready" 'face font-lock-variable-name-face)))
3460 3470
3461; Uses "-var-list-children --all-values". Needs GDB 6.1 onwards. 3471; Uses "-var-list-children --all-values". Needs GDB 6.4 onwards.
3462(defun gdb-var-list-children-1 (varnum) 3472(defun gdb-var-list-children-1 (varnum)
3463 (gdb-enqueue-input 3473 (gdb-enqueue-input
3464 (list 3474 (list
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el
index 091735ee09d..f811fce6e7f 100644
--- a/lisp/progmodes/grep.el
+++ b/lisp/progmodes/grep.el
@@ -333,6 +333,12 @@ This variable's value takes effect when `grep-compute-defaults' is called.")
333This variable's value takes effect when `grep-compute-defaults' is called.") 333This variable's value takes effect when `grep-compute-defaults' is called.")
334 334
335;;;###autoload 335;;;###autoload
336(defvar xargs-program "xargs"
337 "The default xargs program for `grep-find-command'.
338See `grep-find-use-xargs'.
339This variable's value takes effect when `grep-compute-defaults' is called.")
340
341;;;###autoload
336(defvar grep-find-use-xargs nil 342(defvar grep-find-use-xargs nil
337 "Non-nil means that `grep-find' uses the `xargs' utility by default. 343 "Non-nil means that `grep-find' uses the `xargs' utility by default.
338If `exec', use `find -exec'. 344If `exec', use `find -exec'.
@@ -365,11 +371,16 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'."
365 (unless (or (not grep-highlight-matches) (eq grep-highlight-matches t)) 371 (unless (or (not grep-highlight-matches) (eq grep-highlight-matches t))
366 (grep-compute-defaults)) 372 (grep-compute-defaults))
367 (when (eq grep-highlight-matches t) 373 (when (eq grep-highlight-matches t)
368 ;; Modify `process-environment' locally bound in `compilation-start' 374 ;; `setenv' modifies `process-environment' let-bound in `compilation-start'
369 (setenv "GREP_OPTIONS" (concat (getenv "GREP_OPTIONS") " --color=always")) 375 ;; Any TERM except "dumb" allows GNU grep to use `--color=auto'
370 ;; for GNU grep 2.5.1 376 (setenv "TERM" "emacs-grep")
377 ;; `--color=auto' emits escape sequences on a tty rather than on a pipe,
378 ;; thus allowing to use multiple grep filters on the command line
379 ;; and to output escape sequences only on the final grep output
380 (setenv "GREP_OPTIONS" (concat (getenv "GREP_OPTIONS") " --color=auto"))
381 ;; GREP_COLOR is used in GNU grep 2.5.1, but deprecated in later versions
371 (setenv "GREP_COLOR" "01;31") 382 (setenv "GREP_COLOR" "01;31")
372 ;; for GNU grep 2.5.1-cvs 383 ;; GREP_COLORS is used in GNU grep 2.5.2 and later versions
373 (setenv "GREP_COLORS" "mt=01;31:fn=:ln=:bn=:se=:ml=:cx=:ne")) 384 (setenv "GREP_COLORS" "mt=01;31:fn=:ln=:bn=:se=:ml=:cx=:ne"))
374 (set (make-local-variable 'compilation-exit-message-function) 385 (set (make-local-variable 'compilation-exit-message-function)
375 (lambda (status code msg) 386 (lambda (status code msg)
@@ -475,15 +486,15 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'."
475 (cond 486 (cond
476 ((and 487 ((and
477 (grep-probe find-program `(nil nil nil ,null-device "-print0")) 488 (grep-probe find-program `(nil nil nil ,null-device "-print0"))
478 (grep-probe "xargs" `(nil nil nil "-0" "-e" "echo"))) 489 (grep-probe xargs-program `(nil nil nil "-0" "-e" "echo")))
479 'gnu) 490 'gnu)
480 (t 491 (t
481 'exec)))) 492 'exec))))
482 (unless grep-find-command 493 (unless grep-find-command
483 (setq grep-find-command 494 (setq grep-find-command
484 (cond ((eq grep-find-use-xargs 'gnu) 495 (cond ((eq grep-find-use-xargs 'gnu)
485 (format "%s . -type f -print0 | xargs -0 -e %s" 496 (format "%s . -type f -print0 | %s -0 -e %s"
486 find-program grep-command)) 497 find-program xargs-program grep-command))
487 ((eq grep-find-use-xargs 'exec) 498 ((eq grep-find-use-xargs 'exec)
488 (let ((cmd0 (format "%s . -type f -exec %s" 499 (let ((cmd0 (format "%s . -type f -exec %s"
489 find-program grep-command))) 500 find-program grep-command)))
@@ -493,22 +504,22 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'."
493 (shell-quote-argument ";")) 504 (shell-quote-argument ";"))
494 (1+ (length cmd0))))) 505 (1+ (length cmd0)))))
495 (t 506 (t
496 (format "%s . -type f -print | xargs %s" 507 (format "%s . -type f -print | %s %s"
497 find-program grep-command))))) 508 find-program xargs-program grep-command)))))
498 (unless grep-find-template 509 (unless grep-find-template
499 (setq grep-find-template 510 (setq grep-find-template
500 (let ((gcmd (format "%s <C> %s <R>" 511 (let ((gcmd (format "%s <C> %s <R>"
501 grep-program grep-options))) 512 grep-program grep-options)))
502 (cond ((eq grep-find-use-xargs 'gnu) 513 (cond ((eq grep-find-use-xargs 'gnu)
503 (format "%s . <X> -type f <F> -print0 | xargs -0 -e %s" 514 (format "%s . <X> -type f <F> -print0 | %s -0 -e %s"
504 find-program gcmd)) 515 find-program xargs-program gcmd))
505 ((eq grep-find-use-xargs 'exec) 516 ((eq grep-find-use-xargs 'exec)
506 (format "%s . <X> -type f <F> -exec %s {} %s %s" 517 (format "%s . <X> -type f <F> -exec %s {} %s %s"
507 find-program gcmd null-device 518 find-program gcmd null-device
508 (shell-quote-argument ";"))) 519 (shell-quote-argument ";")))
509 (t 520 (t
510 (format "%s . <X> -type f <F> -print | xargs %s" 521 (format "%s . <X> -type f <F> -print | %s %s"
511 find-program gcmd)))))))) 522 find-program xargs-program gcmd))))))))
512 (unless (or (not grep-highlight-matches) (eq grep-highlight-matches t)) 523 (unless (or (not grep-highlight-matches) (eq grep-highlight-matches t))
513 (setq grep-highlight-matches 524 (setq grep-highlight-matches
514 (with-temp-buffer 525 (with-temp-buffer
@@ -543,7 +554,7 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'."
543 "")) 554 ""))
544 555
545(defun grep-default-command () 556(defun grep-default-command ()
546 "Compute the default grep command for C-u M-x grep to offer." 557 "Compute the default grep command for \\[universal-argument] \\[grep] to offer."
547 (let ((tag-default (shell-quote-argument (grep-tag-default))) 558 (let ((tag-default (shell-quote-argument (grep-tag-default)))
548 ;; This a regexp to match single shell arguments. 559 ;; This a regexp to match single shell arguments.
549 ;; Could someone please add comments explaining it? 560 ;; Could someone please add comments explaining it?
@@ -596,19 +607,19 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'."
596 "Run grep, with user-specified args, and collect output in a buffer. 607 "Run grep, with user-specified args, and collect output in a buffer.
597While grep runs asynchronously, you can use \\[next-error] (M-x next-error), 608While grep runs asynchronously, you can use \\[next-error] (M-x next-error),
598or \\<grep-mode-map>\\[compile-goto-error] in the grep \ 609or \\<grep-mode-map>\\[compile-goto-error] in the grep \
599output buffer, to go to the lines 610output buffer, to go to the lines where grep
600where grep found matches. 611found matches.
601 612
602For doing a recursive `grep', see the `rgrep' command. For running 613For doing a recursive `grep', see the `rgrep' command. For running
603`grep' in a specific directory, see `lgrep'. 614`grep' in a specific directory, see `lgrep'.
604 615
605This command uses a special history list for its COMMAND-ARGS, so you can 616This command uses a special history list for its COMMAND-ARGS, so you
606easily repeat a grep command. 617can easily repeat a grep command.
607 618
608A prefix argument says to default the argument based upon the current 619A prefix argument says to default the argument based upon the current
609tag the cursor is over, substituting it into the last grep command 620tag the cursor is over, substituting it into the last grep command
610in the grep command history (or into `grep-command' 621in the grep command history (or into `grep-command' if that history
611if that history list is empty)." 622list is empty)."
612 (interactive 623 (interactive
613 (progn 624 (progn
614 (grep-compute-defaults) 625 (grep-compute-defaults)
@@ -736,8 +747,9 @@ before it is executed.
736With two \\[universal-argument] prefixes, directly edit and run `grep-command'. 747With two \\[universal-argument] prefixes, directly edit and run `grep-command'.
737 748
738Collect output in a buffer. While grep runs asynchronously, you 749Collect output in a buffer. While grep runs asynchronously, you
739can use \\[next-error] (M-x next-error), or \\<grep-mode-map>\\[compile-goto-error] 750can use \\[next-error] (M-x next-error), or \\<grep-mode-map>\\[compile-goto-error] \
740in the grep output buffer, to go to the lines where grep found matches. 751in the grep output buffer,
752to go to the lines where grep found matches.
741 753
742This command shares argument histories with \\[rgrep] and \\[grep]." 754This command shares argument histories with \\[rgrep] and \\[grep]."
743 (interactive 755 (interactive
@@ -797,8 +809,9 @@ before it is executed.
797With two \\[universal-argument] prefixes, directly edit and run `grep-find-command'. 809With two \\[universal-argument] prefixes, directly edit and run `grep-find-command'.
798 810
799Collect output in a buffer. While find runs asynchronously, you 811Collect output in a buffer. While find runs asynchronously, you
800can use \\[next-error] (M-x next-error), or \\<grep-mode-map>\\[compile-goto-error] 812can use \\[next-error] (M-x next-error), or \\<grep-mode-map>\\[compile-goto-error] \
801in the grep output buffer, to go to the lines where grep found matches. 813in the grep output buffer,
814to go to the lines where grep found matches.
802 815
803This command shares argument histories with \\[lgrep] and \\[grep-find]." 816This command shares argument histories with \\[lgrep] and \\[grep-find]."
804 (interactive 817 (interactive
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index ce231f4c662..3c6736ac79b 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -318,6 +318,8 @@ Uses `gud-<MINOR-MODE>-directories' to find the source files."
318 (setq directories (cdr directories))) 318 (setq directories (cdr directories)))
319 result))) 319 result)))
320 320
321(declare-function gdb-create-define-alist "gdb-ui" ())
322
321(defun gud-find-file (file) 323(defun gud-find-file (file)
322 ;; Don't get confused by double slashes in the name that comes from GDB. 324 ;; Don't get confused by double slashes in the name that comes from GDB.
323 (while (string-match "//+" file) 325 (while (string-match "//+" file)
@@ -709,6 +711,9 @@ The option \"--fullname\" must be included in this value."
709(defvar gud-filter-pending-text nil 711(defvar gud-filter-pending-text nil
710 "Non-nil means this is text that has been saved for later in `gud-filter'.") 712 "Non-nil means this is text that has been saved for later in `gud-filter'.")
711 713
714;; If in gdba mode, gdb-ui is loaded.
715(declare-function gdb-restore-windows "gdb-ui" ())
716
712;; The old gdb command (text command mode). The new one is in gdb-ui.el. 717;; The old gdb command (text command mode). The new one is in gdb-ui.el.
713;;;###autoload 718;;;###autoload
714(defun gud-gdb (command-line) 719(defun gud-gdb (command-line)
@@ -2597,6 +2602,8 @@ It is saved for when this flag is not set.")
2597(defvar gud-overlay-arrow-position nil) 2602(defvar gud-overlay-arrow-position nil)
2598(add-to-list 'overlay-arrow-variable-list 'gud-overlay-arrow-position) 2603(add-to-list 'overlay-arrow-variable-list 'gud-overlay-arrow-position)
2599 2604
2605(declare-function gdb-reset "gdb-ui" ())
2606
2600(defun gud-sentinel (proc msg) 2607(defun gud-sentinel (proc msg)
2601 (cond ((null (buffer-name (process-buffer proc))) 2608 (cond ((null (buffer-name (process-buffer proc)))
2602 ;; buffer killed 2609 ;; buffer killed
@@ -2666,6 +2673,11 @@ Obeying it means displaying in another window the specified file and line."
2666 (setq gud-last-last-frame gud-last-frame 2673 (setq gud-last-last-frame gud-last-frame
2667 gud-last-frame nil))) 2674 gud-last-frame nil)))
2668 2675
2676(declare-function global-hl-line-highlight "hl-line" ())
2677(declare-function hl-line-highlight "hl-line" ())
2678(declare-function gdb-display-source-buffer "gdb-ui" (buffer))
2679(declare-function gdb-display-buffer "gdb-ui" (buf dedicated &optional size))
2680
2669;; Make sure the file named TRUE-FILE is in a buffer that appears on the screen 2681;; Make sure the file named TRUE-FILE is in a buffer that appears on the screen
2670;; and that its line LINE is visible. 2682;; and that its line LINE is visible.
2671;; Put the overlay-arrow on the line LINE in that buffer. 2683;; Put the overlay-arrow on the line LINE in that buffer.
@@ -2998,6 +3010,12 @@ Link exprs of the form:
2998 (t nil))) 3010 (t nil)))
2999 (t nil)))) 3011 (t nil))))
3000 3012
3013
3014(declare-function c-langelem-sym "cc-defs" (langelem))
3015(declare-function c-langelem-pos "cc-defs" (langelem))
3016(declare-function syntax-symbol "gud" (x))
3017(declare-function syntax-point "gud" (x))
3018
3001(defun gud-find-class (f line) 3019(defun gud-find-class (f line)
3002 "Find fully qualified class in file F at line LINE. 3020 "Find fully qualified class in file F at line LINE.
3003This function uses the `gud-jdb-classpath' (and optional 3021This function uses the `gud-jdb-classpath' (and optional
@@ -3383,6 +3401,8 @@ With arg, dereference expr if ARG is positive, otherwise do not derereference."
3383 ((xdb pdb) (concat "p " expr)) 3401 ((xdb pdb) (concat "p " expr))
3384 (sdb (concat expr "/")))) 3402 (sdb (concat expr "/"))))
3385 3403
3404(declare-function gdb-enqueue-input "gdb-ui" (item))
3405
3386(defun gud-tooltip-tips (event) 3406(defun gud-tooltip-tips (event)
3387 "Show tip for identifier or selection under the mouse. 3407 "Show tip for identifier or selection under the mouse.
3388The mouse must either point at an identifier or inside a selected 3408The mouse must either point at an identifier or inside a selected
diff --git a/lisp/progmodes/idlw-complete-structtag.el b/lisp/progmodes/idlw-complete-structtag.el
index d005c6de63e..cfd9834abca 100644
--- a/lisp/progmodes/idlw-complete-structtag.el
+++ b/lisp/progmodes/idlw-complete-structtag.el
@@ -91,6 +91,8 @@
91 91
92(require 'idlwave) 92(require 'idlwave)
93 93
94(declare-function idlwave-shell-buffer "idlw-shell")
95
94;; Some variables to identify the previously used structure 96;; Some variables to identify the previously used structure
95(defvar idlwave-current-tags-var nil) 97(defvar idlwave-current-tags-var nil)
96(defvar idlwave-current-tags-buffer nil) 98(defvar idlwave-current-tags-buffer nil)
@@ -101,6 +103,7 @@
101(defvar idlwave-sint-structtags nil) 103(defvar idlwave-sint-structtags nil)
102 104
103;; Create the sintern type for structure talks 105;; Create the sintern type for structure talks
106(declare-function idlwave-sintern-structtag "idlw-complete-structtag" t t)
104(idlwave-new-sintern-type 'structtag) 107(idlwave-new-sintern-type 'structtag)
105 108
106;; Hook the plugin into idlwave 109;; Hook the plugin into idlwave
diff --git a/lisp/progmodes/idlw-help.el b/lisp/progmodes/idlw-help.el
index 2269e179357..69f24686e82 100644
--- a/lisp/progmodes/idlw-help.el
+++ b/lisp/progmodes/idlw-help.el
@@ -42,13 +42,10 @@
42 42
43 43
44;;; Code: 44;;; Code:
45(defvar idlwave-help-browse-url-available nil 45(defvar idlwave-help-browse-url-available t
46 "Whether browse-url is available") 46 "Whether browse-url is available")
47 47
48(setq idlwave-help-browse-url-available 48(require 'browse-url)
49 (condition-case nil
50 (require 'browse-url)
51 (error nil)))
52 49
53(defgroup idlwave-online-help nil 50(defgroup idlwave-online-help nil
54 "Online Help options for IDLWAVE mode." 51 "Online Help options for IDLWAVE mode."
@@ -258,6 +255,39 @@ support."
258(defvar idlwave-help-def-pos) 255(defvar idlwave-help-def-pos)
259(defvar idlwave-help-args) 256(defvar idlwave-help-args)
260(defvar idlwave-help-in-header) 257(defvar idlwave-help-in-header)
258(declare-function idlwave-prepare-structure-tag-completion "idlw-complete-structtag")
259(declare-function idlwave-all-method-classes "idlwave")
260(declare-function idlwave-all-method-keyword-classes "idlwave")
261(declare-function idlwave-beginning-of-statement "idlwave")
262(declare-function idlwave-best-rinfo-assoc "idlwave")
263(declare-function idlwave-class-found-in "idlwave")
264(declare-function idlwave-class-or-superclass-with-tag "idlwave")
265(declare-function idlwave-completing-read "idlwave")
266(declare-function idlwave-current-routine "idlwave")
267(declare-function idlwave-downcase-safe "idlwave")
268(declare-function idlwave-entry-find-keyword "idlwave")
269(declare-function idlwave-expand-keyword "idlwave")
270(declare-function idlwave-find-class-definition "idlwave")
271(declare-function idlwave-find-inherited-class "idlwave")
272(declare-function idlwave-find-struct-tag "idlwave")
273(declare-function idlwave-get-buffer-visiting "idlwave")
274(declare-function idlwave-in-quote "idlwave")
275(declare-function idlwave-make-full-name "idlwave")
276(declare-function idlwave-members-only "idlwave")
277(declare-function idlwave-popup-select "idlwave")
278(declare-function idlwave-routine-source-file "idlwave")
279(declare-function idlwave-routines "idlwave")
280(declare-function idlwave-sintern-class "idlwave")
281(declare-function idlwave-sintern-keyword "idlwave")
282(declare-function idlwave-sintern-method "idlwave")
283(declare-function idlwave-sintern-routine-or-method "idlwave")
284(declare-function idlwave-sintern-sysvar "idlwave" t t);idlwave-new-sintern-type
285(declare-function idlwave-sintern-sysvartag "idlwave" t t)
286(declare-function idlwave-substitute-link-target "idlwave")
287(declare-function idlwave-sys-dir "idlwave")
288(declare-function idlwave-this-word "idlwave")
289(declare-function idlwave-what-module-find-class "idlwave")
290(declare-function idlwave-where "idlwave")
261 291
262(defun idlwave-help-mode () 292(defun idlwave-help-mode ()
263 "Major mode for displaying IDL Help. 293 "Major mode for displaying IDL Help.
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index abe5cfe6489..9648494adc4 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -182,6 +182,13 @@
182 (defmacro defcustom (var value doc &rest args) 182 (defmacro defcustom (var value doc &rest args)
183 `(defvar ,var ,value ,doc)))) 183 `(defvar ,var ,value ,doc))))
184 184
185(declare-function idlwave-shell-get-path-info "idlw-shell")
186(declare-function idlwave-shell-temp-file "idlw-shell")
187(declare-function idlwave-shell-is-running "idlw-shell")
188(declare-function widget-value "wid-edit" (widget))
189(declare-function comint-dynamic-complete-filename "comint" ())
190(declare-function Info-goto-node "info" (nodename &optional fork))
191
185(defgroup idlwave nil 192(defgroup idlwave nil
186 "Major mode for editing IDL .pro files." 193 "Major mode for editing IDL .pro files."
187 :tag "IDLWAVE" 194 :tag "IDLWAVE"
@@ -7599,6 +7606,7 @@ property indicating the link is added."
7599(defvar idlwave-current-class-tags nil) 7606(defvar idlwave-current-class-tags nil)
7600(defvar idlwave-current-native-class-tags nil) 7607(defvar idlwave-current-native-class-tags nil)
7601(defvar idlwave-sint-class-tags nil) 7608(defvar idlwave-sint-class-tags nil)
7609(declare-function idlwave-sintern-class-tag "idlwave" t t)
7602(idlwave-new-sintern-type 'class-tag) 7610(idlwave-new-sintern-type 'class-tag)
7603(add-to-list 'idlwave-complete-special 'idlwave-complete-class-structure-tag) 7611(add-to-list 'idlwave-complete-special 'idlwave-complete-class-structure-tag)
7604(add-hook 'idlwave-update-rinfo-hook 'idlwave-class-tag-reset) 7612(add-hook 'idlwave-update-rinfo-hook 'idlwave-class-tag-reset)
@@ -7657,6 +7665,8 @@ property indicating the link is added."
7657 7665
7658(defvar idlwave-sint-sysvars nil) 7666(defvar idlwave-sint-sysvars nil)
7659(defvar idlwave-sint-sysvartags nil) 7667(defvar idlwave-sint-sysvartags nil)
7668(declare-function idlwave-sintern-sysvar "idlwave" t t)
7669(declare-function idlwave-sintern-sysvartag "idlwave" t t)
7660(idlwave-new-sintern-type 'sysvar) 7670(idlwave-new-sintern-type 'sysvar)
7661(idlwave-new-sintern-type 'sysvartag) 7671(idlwave-new-sintern-type 'sysvartag)
7662(add-to-list 'idlwave-complete-special 'idlwave-complete-sysvar-or-tag) 7672(add-to-list 'idlwave-complete-special 'idlwave-complete-sysvar-or-tag)
diff --git a/lisp/progmodes/octave-mod.el b/lisp/progmodes/octave-mod.el
index a0d33f56ee4..e8246ddb816 100644
--- a/lisp/progmodes/octave-mod.el
+++ b/lisp/progmodes/octave-mod.el
@@ -52,6 +52,8 @@
52(defvar inferior-octave-output-string nil) 52(defvar inferior-octave-output-string nil)
53(defvar inferior-octave-receive-in-progress nil) 53(defvar inferior-octave-receive-in-progress nil)
54 54
55(declare-function inferior-octave-send-list-and-digest "octave-inf" (list))
56
55(defconst octave-maintainer-address 57(defconst octave-maintainer-address
56 "Kurt Hornik <Kurt.Hornik@wu-wien.ac.at>, bug-gnu-emacs@gnu.org" 58 "Kurt Hornik <Kurt.Hornik@wu-wien.ac.at>, bug-gnu-emacs@gnu.org"
57 "Current maintainer of the Emacs Octave package.") 59 "Current maintainer of the Emacs Octave package.")
diff --git a/lisp/progmodes/perl-mode.el b/lisp/progmodes/perl-mode.el
index bb71491da2d..af456f98284 100644
--- a/lisp/progmodes/perl-mode.el
+++ b/lisp/progmodes/perl-mode.el
@@ -266,7 +266,9 @@ The expansion is entirely correct because it uses the C preprocessor."
266 ;; format statements 266 ;; format statements
267 ("^[ \t]*format.*=[ \t]*\\(\n\\)" (1 '(7))) 267 ("^[ \t]*format.*=[ \t]*\\(\n\\)" (1 '(7)))
268 ;; Funny things in sub arg specifications like `sub myfunc ($$)' 268 ;; Funny things in sub arg specifications like `sub myfunc ($$)'
269 ("\\<sub\\s-+\\S-+\\s-*(\\([^)]+\\))" 1 '(1)) 269 ;; Be careful not to match "sub { (...) ... }".
270 ("\\<sub[[:space:]]+[^{}[:punct:][:space:]]+[[:space:]]*(\\([^)]+\\))"
271 1 '(1))
270 ;; Regexp and funny quotes. 272 ;; Regexp and funny quotes.
271 ("\\(?:[?:.,;=!~({[]\\|\\(^\\)\\)[ \t\n]*\\(/\\)" 273 ("\\(?:[?:.,;=!~({[]\\|\\(^\\)\\)[ \t\n]*\\(/\\)"
272 (2 (if (and (match-end 1) 274 (2 (if (and (match-end 1)
diff --git a/lisp/progmodes/prolog.el b/lisp/progmodes/prolog.el
index 3583f546754..dd3503f16b0 100644
--- a/lisp/progmodes/prolog.el
+++ b/lisp/progmodes/prolog.el
@@ -240,6 +240,11 @@ rigidly along with this one (not yet)."
240(defvar inferior-prolog-mode-syntax-table prolog-mode-syntax-table) 240(defvar inferior-prolog-mode-syntax-table prolog-mode-syntax-table)
241(defvar inferior-prolog-mode-abbrev-table prolog-mode-abbrev-table) 241(defvar inferior-prolog-mode-abbrev-table prolog-mode-abbrev-table)
242 242
243(declare-function comint-mode "comint")
244(declare-function comint-send-string "comint" (process string))
245(declare-function comint-send-region "comint" (process start end))
246(declare-function comint-send-eof "comint" ())
247
243(define-derived-mode inferior-prolog-mode comint-mode "Inferior Prolog" 248(define-derived-mode inferior-prolog-mode comint-mode "Inferior Prolog"
244 "Major mode for interacting with an inferior Prolog process. 249 "Major mode for interacting with an inferior Prolog process.
245 250
diff --git a/lisp/progmodes/ps-mode.el b/lisp/progmodes/ps-mode.el
index c131575f57c..6327a68302b 100644
--- a/lisp/progmodes/ps-mode.el
+++ b/lisp/progmodes/ps-mode.el
@@ -480,6 +480,9 @@ If nil, the following are tried in turn, until success:
480 (setq i (1+ i))))) 480 (setq i (1+ i)))))
481 481
482 482
483
484(declare-function doc-view-minor-mode "doc-view")
485
483;; PostScript mode. 486;; PostScript mode.
484 487
485;;;###autoload 488;;;###autoload
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index f54b7c9f928..66779acb103 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -65,7 +65,6 @@
65;;; Code: 65;;; Code:
66 66
67(eval-when-compile 67(eval-when-compile
68 (require 'cl)
69 (require 'compile) 68 (require 'compile)
70 (require 'comint) 69 (require 'comint)
71 (require 'hippie-exp)) 70 (require 'hippie-exp))
@@ -1224,6 +1223,9 @@ local value.")
1224 ;; (modify-syntax-entry ?\" "." st) 1223 ;; (modify-syntax-entry ?\" "." st)
1225 st)) 1224 st))
1226 1225
1226;; Autoloaded.
1227(declare-function compilation-shell-minor-mode "compile" (&optional arg))
1228
1227;; Fixme: This should inherit some stuff from `python-mode', but I'm 1229;; Fixme: This should inherit some stuff from `python-mode', but I'm
1228;; not sure how much: at least some keybindings, like C-c C-f; 1230;; not sure how much: at least some keybindings, like C-c C-f;
1229;; syntax?; font-locking, e.g. for triple-quoted strings? 1231;; syntax?; font-locking, e.g. for triple-quoted strings?
@@ -1656,6 +1658,8 @@ instance. Assumes an inferior Python is running."
1656 1658
1657;;;; Info-look functionality. 1659;;;; Info-look functionality.
1658 1660
1661(declare-function info-lookup-maybe-add-help "info-look" (&rest arg))
1662
1659(defun python-after-info-look () 1663(defun python-after-info-look ()
1660 "Set up info-look for Python. 1664 "Set up info-look for Python.
1661Used with `eval-after-load'." 1665Used with `eval-after-load'."
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index e9d9247d7cb..cd08fea2910 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -1524,6 +1524,8 @@ with your script for an edit-interpret-debug cycle."
1524 skeleton-filter-function 'sh-feature 1524 skeleton-filter-function 'sh-feature
1525 skeleton-newline-indent-rigidly t 1525 skeleton-newline-indent-rigidly t
1526 sh-indent-supported-here nil) 1526 sh-indent-supported-here nil)
1527 (set (make-local-variable 'defun-prompt-regexp)
1528 (concat "^\\(function[ \t]\\|[[:alnum:]]+[ \t]+()[ \t]+\\)"))
1527 (set (make-local-variable 'parse-sexp-ignore-comments) t) 1529 (set (make-local-variable 'parse-sexp-ignore-comments) t)
1528 ;; Parse or insert magic number for exec, and set all variables depending 1530 ;; Parse or insert magic number for exec, and set all variables depending
1529 ;; on the shell thus determined. 1531 ;; on the shell thus determined.