diff options
author | Vibhav Pant <vibhavp@gmail.com> | 2020-08-21 14:04:35 +0530 |
---|---|---|
committer | Vibhav Pant <vibhavp@gmail.com> | 2020-08-21 14:04:35 +0530 |
commit | f0f8d7b82492e741950c363a03b886965c91b1b0 (patch) | |
tree | 19b716830b1ebabc0d7d75949c4e6800c0f104ad /lisp/progmodes | |
parent | 9e64a087c4d167e7ec1c4e22bea3e6af53b563de (diff) | |
parent | c818c29771d3cb51875643b2f6c894073e429dd2 (diff) | |
download | emacs-feature/native-comp-macos-fixes.tar.gz |
Merge branch 'feature/native-comp' into feature/native-comp-macos-fixesfeature/native-comp-macos-fixes
Diffstat (limited to 'lisp/progmodes')
-rw-r--r-- | lisp/progmodes/cc-engine.el | 2 | ||||
-rw-r--r-- | lisp/progmodes/compile.el | 9 | ||||
-rw-r--r-- | lisp/progmodes/cperl-mode.el | 3 | ||||
-rw-r--r-- | lisp/progmodes/ebnf2ps.el | 4 | ||||
-rw-r--r-- | lisp/progmodes/elisp-mode.el | 10 | ||||
-rw-r--r-- | lisp/progmodes/etags.el | 4 | ||||
-rw-r--r-- | lisp/progmodes/idlw-help.el | 3 | ||||
-rw-r--r-- | lisp/progmodes/idlw-shell.el | 7 | ||||
-rw-r--r-- | lisp/progmodes/idlwave.el | 193 | ||||
-rw-r--r-- | lisp/progmodes/perl-mode.el | 4 | ||||
-rw-r--r-- | lisp/progmodes/project.el | 22 | ||||
-rw-r--r-- | lisp/progmodes/python.el | 19 | ||||
-rw-r--r-- | lisp/progmodes/subword.el | 2 | ||||
-rw-r--r-- | lisp/progmodes/xref.el | 43 |
14 files changed, 97 insertions, 228 deletions
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index c3a98d9c5cf..7b8b174c430 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el @@ -384,7 +384,7 @@ comment at the start of cc-engine.el for more info." c-macro-cache-syntactic nil c-macro-cache-no-comment nil)) (save-match-data - (let ((safe-pos (point))) ; a point ouside any literal. + (let ((safe-pos (point))) ; a point outside any literal. ;; Move over stuff followed by a multiline block comment lacking ;; escaped newlines each time around this loop. (while diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el index 0b9f417845f..a043bbcfa3c 100644 --- a/lisp/progmodes/compile.el +++ b/lisp/progmodes/compile.el @@ -316,8 +316,8 @@ of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2 nil (1)) (gcc-include "^\\(?:In file included \\| \\|\t\\)from \ \\([0-9]*[^0-9\n]\\(?:[^\n :]\\| [^-/\n]\\|:[^ \n]\\)*?\\):\ -\\([0-9]+\\)\\(?::\\([0-9]+\\)\\)?\\(?:\\(:\\)\\|\\(,\\|$\\)\\)?" - 1 2 3 (4 . 5)) +\\([0-9]+\\)\\(?::\\([0-9]+\\)\\)?\\(?:\\([:,]\\|$\\)\\)?" + 1 2 3 (nil . 4)) (ruby-Test::Unit "^ [[ ]?\\([^ (].*\\):\\([1-9][0-9]*\\)\\(\\]\\)?:in " 1 2) @@ -2417,12 +2417,9 @@ and runs `compilation-filter-hook'." &optional object limit) (let (parsed res) (while (progn - ;; We parse the buffer here "on-demand" by chunks of 500 chars. - ;; But we could also just parse the whole buffer. (compilation--ensure-parse (setq parsed (max compilation--parsed - (min (+ position 500) - (or limit (point-max)))))) + (or limit (point-max))))) (and (or (not (setq res (next-single-property-change position prop object limit))) (eq res limit)) diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el index 6122caf5189..2d2713a36ab 100644 --- a/lisp/progmodes/cperl-mode.el +++ b/lisp/progmodes/cperl-mode.el @@ -3979,6 +3979,9 @@ the sections using `cperl-pod-head-face', `cperl-pod-face', (and (eq (preceding-char) ?.) (eq (char-after (- (point) 2)) ?.)) (bobp)) + ;; { $a++ / $b } doesn't start a regex, nor does $a-- + (not (and (memq (preceding-char) '(?+ ?-)) + (eq (preceding-char) (char-before (1- (point)))))) ;; m|blah| ? foo : bar; (not (and (eq c ?\?) diff --git a/lisp/progmodes/ebnf2ps.el b/lisp/progmodes/ebnf2ps.el index 08cf802bcbe..22c70bf734d 100644 --- a/lisp/progmodes/ebnf2ps.el +++ b/lisp/progmodes/ebnf2ps.el @@ -4527,7 +4527,7 @@ end (let* ((ebnf-tree tree) (ps-color-p (and ebnf-color-p (ps-color-device))) (ps-print-color-scale (if ps-color-p - (float (car (ps-color-values "white"))) + (float (car (color-values "white"))) 1.0)) (ebnf-total (length ebnf-tree)) (ebnf-nprod 0) @@ -4629,7 +4629,7 @@ end (let* ((ebnf-tree tree) (ps-color-p (and ebnf-color-p (ps-color-device))) (ps-print-color-scale (if ps-color-p - (float (car (ps-color-values "white"))) + (float (car (color-values "white"))) 1.0)) ps-zebra-stripes ps-line-number ps-razzle-dazzle ps-print-hook diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el index 2f44118edb5..21ba42a0fe1 100644 --- a/lisp/progmodes/elisp-mode.el +++ b/lisp/progmodes/elisp-mode.el @@ -1420,10 +1420,12 @@ Intended for `eldoc-documentation-functions' (which see)." (defun elisp-eldoc-var-docstring (callback &rest _ignored) "Document variable at point. Intended for `eldoc-documentation-functions' (which see)." - (let ((sym (elisp--current-symbol))) - (when sym (funcall callback (elisp-get-var-docstring sym) - :thing sym - :face 'font-lock-variable-name-face)))) + (let* ((sym (elisp--current-symbol)) + (docstring (and sym (elisp-get-var-docstring sym)))) + (when docstring + (funcall callback docstring + :thing sym + :face 'font-lock-variable-name-face)))) (defun elisp-get-fnsym-args-string (sym &optional index) "Return a string containing the parameter list of the function SYM. diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el index edadbbdafc1..2c5c36504a9 100644 --- a/lisp/progmodes/etags.el +++ b/lisp/progmodes/etags.el @@ -1424,6 +1424,10 @@ hits the start of file." (goto-func goto-tag-location-function) tag tag-info pt) (forward-line 1) + ;; Exuberant ctags add a line starting with the DEL character; + ;; skip past it. + (when (looking-at "\177") + (forward-line 1)) (while (not (or (eobp) (looking-at "\f"))) ;; We used to use explicit tags when available, but the current goto-func ;; can only handle implicit tags. diff --git a/lisp/progmodes/idlw-help.el b/lisp/progmodes/idlw-help.el index d3a2308e06b..ec4fd58886a 100644 --- a/lisp/progmodes/idlw-help.el +++ b/lisp/progmodes/idlw-help.el @@ -267,7 +267,6 @@ support." (declare-function idlwave-find-class-definition "idlwave") (declare-function idlwave-find-inherited-class "idlwave") (declare-function idlwave-find-struct-tag "idlwave") -(declare-function idlwave-get-buffer-visiting "idlwave") (declare-function idlwave-in-quote "idlwave") (declare-function idlwave-make-full-name "idlwave") (declare-function idlwave-members-only "idlwave") @@ -880,7 +879,7 @@ This function can be used as `idlwave-extra-help-function'." (setq in-buf ; structure-tag completion is always in current buffer (if struct-tag idlwave-current-tags-buffer - (idlwave-get-buffer-visiting file))) + (find-buffer-visiting file))) ;; see if file is in a visited buffer, insert those contents (if in-buf (progn diff --git a/lisp/progmodes/idlw-shell.el b/lisp/progmodes/idlw-shell.el index f875915ca8e..99ac0877c8b 100644 --- a/lisp/progmodes/idlw-shell.el +++ b/lisp/progmodes/idlw-shell.el @@ -2640,7 +2640,7 @@ Assumes that `idlwave-shell-sources-alist' contains an entry for that module." (if (or (not source-file) (not (file-regular-p source-file)) (not (setq buf - (or (idlwave-get-buffer-visiting source-file) + (or (find-buffer-visiting source-file) (find-file-noselect source-file))))) (progn (message "The source file for module %s is probably not compiled" @@ -3241,8 +3241,7 @@ Does not work for a region with multiline blocks - use "Delete the temporary files and kill associated buffers." (if (stringp idlwave-shell-temp-pro-file) (condition-case nil - (let ((buf (idlwave-get-buffer-visiting - idlwave-shell-temp-pro-file))) + (let ((buf (find-buffer-visiting idlwave-shell-temp-pro-file))) (if (buffer-live-p buf) (kill-buffer buf)) (delete-file idlwave-shell-temp-pro-file)) @@ -3788,7 +3787,7 @@ handled by this command." (save-buffer) (setq idlwave-shell-last-save-and-action-file (buffer-file-name))) (idlwave-shell-last-save-and-action-file - (if (setq buf (idlwave-get-buffer-visiting + (if (setq buf (find-buffer-visiting idlwave-shell-last-save-and-action-file)) (with-current-buffer buf (save-buffer)))) 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: MyMethod <Class1,Class2,Class3> The value of this variable may be nil to inhibit display, or an integer to -indicate the maximum number of classes to display. - -On XEmacs, a full list of classes will also be placed into a `help-echo' -property on the completion items, so that the list of classes for the current -item is displayed in the echo area. If the value of this variable is a -negative integer, the `help-echo' property will be suppressed." +indicate the maximum number of classes to display." :group 'idlwave-completion :type '(choice (const :tag "Don't show" nil) (integer :tag "Number of classes shown" 1))) @@ -1054,7 +1049,6 @@ goto Goto Statements common-blocks Common Blocks keyword-parameters Keyword Parameters in routine definitions and calls system-variables System Variables -fixme FIXME: Warning in comments (on XEmacs only v. 21.0 and up) class-arrows Object Arrows with class property" :group 'idlwave-misc :type '(set @@ -1069,7 +1063,6 @@ class-arrows Object Arrows with class property" (const :tag "Common Blocks" common-blocks) (const :tag "Keyword Parameters" keyword-parameters) (const :tag "System Variables" system-variables) - (const :tag "FIXME: Warning" fixme) (const :tag "Object Arrows with class property " class-arrows))) (defcustom idlwave-mode-hook nil @@ -1138,23 +1131,16 @@ As a user, you should not set this to t.") ;; Common blocks (common-blocks '("\\<\\(common\\)\\>[ \t]*\\(\\sw+\\)?[ \t]*,?" - (1 font-lock-keyword-face) ; "common" - (2 font-lock-constant-face nil t) ; block name + (1 font-lock-keyword-face) ; "common" + (2 font-lock-constant-face nil t) ; block name ("[ \t]*\\(\\sw+\\)[ ,]*" ;; Start with point after block name and comma - (goto-char (match-end 0)) ; needed for XEmacs, could be nil - nil - (1 font-lock-variable-name-face) ; variable names - ))) + nil nil (1 font-lock-variable-name-face)))) ; variable names ;; Batch files (batch-files '("^[ \t]*\\(@[^ \t\n]+\\)" (1 font-lock-string-face))) - ;; FIXME warning. - (fixme - '("\\<FIXME:" (0 font-lock-warning-face t))) - ;; Labels (label '("^[ \t]*\\([a-zA-Z]\\sw*:\\)" (1 font-lock-constant-face))) @@ -1241,9 +1227,6 @@ As a user, you should not set this to t.") ((?$ . "w") (?_ . "w") (?. . "w") (?| . "w") (?& . "w")) beginning-of-line)) -(put 'idlwave-mode 'font-lock-defaults - idlwave-font-lock-defaults) ; XEmacs - (defconst idlwave-comment-line-start-skip "^[ \t]*;" "Regexp to match the start of a full-line comment. That is the _beginning_ of a line containing a comment delimiter `;' preceded @@ -1479,9 +1462,7 @@ Otherwise ARGS forms a list that is evaluated." (define-key map "\M-\C-i" 'idlwave-complete) (define-key map "\C-c\C-i" 'idlwave-update-routine-info) (define-key map "\C-c=" 'idlwave-resolve) - (define-key map - (if (featurep 'xemacs) [(shift button3)] [(shift mouse-3)]) - 'idlwave-mouse-context-help) + (define-key map [(shift mouse-3)] 'idlwave-mouse-context-help) map) "Keymap used in IDL mode.") @@ -1916,8 +1897,6 @@ The main features of this mode are (add-to-list 'tag-table-alist '("\\.pro$" . "IDLTAGS"))) ;; Font-lock additions - ;; Following line is for Emacs - XEmacs uses the corresponding property - ;; on the `idlwave-mode' symbol. (set (make-local-variable 'font-lock-defaults) idlwave-font-lock-defaults) (set (make-local-variable 'font-lock-mark-block-function) 'idlwave-mark-subprogram) @@ -3814,15 +3793,8 @@ If PATTERN is omitted, it defaults to \"[ \\f\\t\\n\\r\\v]+\"." (setq start (match-end 0))) (setq ret_string (concat ret_string (substring string start last))))) -(defun idlwave-get-buffer-visiting (file) - ;; Return the buffer currently visiting FILE - (cond - ((boundp 'find-file-compare-truenames) ; XEmacs - (let ((find-file-compare-truenames t)) - (get-file-buffer file))) - ((fboundp 'find-buffer-visiting) ; Emacs - (find-buffer-visiting file)) - (t (error "This should not happen (idlwave-get-buffer-visiting)")))) +(define-obsolete-function-alias 'idlwave-get-buffer-visiting + #'find-buffer-visiting "28.1") (defvar idlwave-outlawed-buffers nil "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'.") (defun idlwave-find-file-noselect (file &optional why) ;; Return a buffer visiting file. - (or (idlwave-get-buffer-visiting file) + (or (find-buffer-visiting file) (let ((buf (find-file-noselect file))) (if why (add-to-list 'idlwave-outlawed-buffers (cons buf why))) buf))) @@ -6618,7 +6590,6 @@ This function is not general, can only be used for completion stuff." "A form to evaluate after completion selection in *Completions* buffer.") (defconst idlwave-completion-mark (make-marker) "A mark pointing to the beginning of the completion string.") -(defvar completion-highlight-first-word-only) ;XEmacs. (defun idlwave-complete-in-buffer (type stype list selector prompt isa &optional prepare-display-function @@ -6697,12 +6668,7 @@ accumulate information on matching completions." list)) (let* ((list all-completions) ;; "complete" means, this is already a valid completion - (complete (memq spart all-completions)) - (completion-highlight-first-word-only t)) ; XEmacs - ;; (completion-fixup-function ; Emacs - ;; (lambda () (and (eq (preceding-char) ?>) - ;; (re-search-backward " <" beg t))))) - + (complete (memq spart all-completions))) (setq list (sort list (lambda (a b) (string< (downcase a) (downcase b))))) (if prepare-display-function @@ -6764,7 +6730,6 @@ accumulate information on matching completions." (let* ((do-prop (and (>= show-classes 0) (>= emacs-major-version 21))) (do-buf (not (= show-classes 0))) - ;; (do-dots (featurep 'xemacs)) (do-dots t) (inherit (if (and (not (eq type 'class-tag)) super-classes) (cons class-selector super-classes))) @@ -6830,10 +6795,6 @@ accumulate information on matching completions." ;;---------------------------------------------------------------------- ;;---------------------------------------------------------------------- ;;---------------------------------------------------------------------- -(when (featurep 'xemacs) - (defvar rtn) - (defun idlwave-pset (item) - (set 'rtn item))) (defun idlwave-popup-select (ev list title &optional sort) "Select an item in LIST with a popup menu. @@ -6844,17 +6805,6 @@ sort the list before displaying." (cond ((null list)) ((= 1 (length list)) (setq rtn (car list))) - ((featurep 'xemacs) - (if sort (setq list (sort list (lambda (a b) - (string< (upcase a) (upcase b)))))) - (setq menu - (append (list title) - (mapcar (lambda (x) (vector x (list 'idlwave-pset - x))) - list))) - (setq menu (idlwave-split-menu-xemacs menu maxpopup)) - (let ((resp (get-popup-menu-response menu))) - (funcall (event-function resp) (event-object resp)))) (t (if sort (setq list (sort list (lambda (a b) (string< (upcase a) (upcase b)))))) @@ -6862,36 +6812,14 @@ sort the list before displaying." (list (append (list "") (mapcar (lambda(x) (cons x x)) list))))) - (setq menu (idlwave-split-menu-emacs menu maxpopup)) + (setq menu (idlwave-split-menu menu maxpopup)) (setq rtn (x-popup-menu ev menu)))) rtn)) -(defun idlwave-split-menu-xemacs (menu N) - "Split the MENU into submenus of maximum length N." - (if (<= (length menu) (1+ N)) - ;; No splitting needed - menu - (let* ((title (car menu)) - (entries (cdr menu)) - (menu (list title)) - (cnt 0) - (nextmenu nil)) - (while entries - (while (and entries (< cnt N)) - (setq cnt (1+ cnt) - nextmenu (cons (car entries) nextmenu) - entries (cdr entries))) - (setq nextmenu (nreverse nextmenu)) - (setq nextmenu (cons (format "%s...%s" - (aref (car nextmenu) 0) - (aref (nth (1- cnt) nextmenu) 0)) - nextmenu)) - (setq menu (cons nextmenu menu) - nextmenu nil - cnt 0)) - (nreverse menu)))) +(define-obsolete-function-alias 'idlwave-split-menu-emacs + #'idlwave-split-menu "28.1") -(defun idlwave-split-menu-emacs (menu N) +(defun idlwave-split-menu (menu N) "Split the MENU into submenus of maximum length N." (if (<= (length (nth 1 menu)) (1+ N)) ;; No splitting needed @@ -6946,10 +6874,7 @@ sort the list before displaying." (move-marker idlwave-completion-mark beg) (setq idlwave-before-completion-wconf (current-window-configuration))) - (if (featurep 'xemacs) - (idlwave-display-completion-list-xemacs - list) - (idlwave-display-completion-list-emacs list)) + (idlwave-display-completion-list-1 list) ;; Store a special value in `this-command'. When `idlwave-complete' ;; 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. First, the strings are checked for preselected keys, like in \"[P]rint\". If these don't exist, a letter in the string is automatically selected." (let* ((alist (symbol-value sym)) - (temp-buffer-show-hook (if (fboundp 'fit-window-to-buffer) - '(fit-window-to-buffer))) + (temp-buffer-show-hook '(fit-window-to-buffer)) keys-alist char) ;; First check the cache (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." (and (local-variable-p var (current-buffer)) (symbol-value var)))) -;; In XEmacs, we can use :activate-callback directly to advice the -;; choose functions. We use the private keymap only for the online -;; help feature. - (defvar idlwave-completion-map nil "Keymap for `completion-list-mode' with `idlwave-complete'.") -(defun idlwave-display-completion-list-xemacs (list &rest cl-args) - (with-output-to-temp-buffer "*Completions*" - (apply 'display-completion-list list - ':activate-callback 'idlwave-default-choose-completion - cl-args)) - (with-current-buffer "*Completions*" - (use-local-map - (or idlwave-completion-map - (setq idlwave-completion-map - (idlwave-make-modified-completion-map-xemacs - (current-local-map))))))) - (defun idlwave-default-choose-completion (&rest args) "Execute `default-choose-completion' and then restore the win-conf." (apply 'idlwave-choose 'default-choose-completion args)) -(defun idlwave-make-modified-completion-map-xemacs (old-map) - "Replace `choose-completion' and `mouse-choose-completion' in OLD-MAP." - (let ((new-map (copy-keymap old-map))) - (define-key new-map [button3up] 'idlwave-mouse-completion-help) - (define-key new-map [button3] (lambda () - (interactive) - (setq this-command last-command))) - new-map)) - -;; In Emacs we also replace keybindings in the completion -;; map in order to install our wrappers. +(define-obsolete-function-alias 'idlwave-display-completion-list-emacs + #'idlwave-display-completion-list-1 "28.1") -(defun idlwave-display-completion-list-emacs (list) +(defun idlwave-display-completion-list-1 (list) "Display completion list and install the choose wrappers." (with-output-to-temp-buffer "*Completions*" (display-completion-list list)) @@ -7137,10 +7036,12 @@ If these don't exist, a letter in the string is automatically selected." (use-local-map (or idlwave-completion-map (setq idlwave-completion-map - (idlwave-make-modified-completion-map-emacs - (current-local-map))))))) + (idlwave-make-modified-completion-map (current-local-map))))))) -(defun idlwave-make-modified-completion-map-emacs (old-map) +(define-obsolete-function-alias 'idlwave-make-modified-completion-map-emacs + #'idlwave-make-modified-completion-map "28.1") + +(defun idlwave-make-modified-completion-map (old-map) "Replace `choose-completion' and `mouse-choose-completion' in OLD-MAP." (let ((new-map (copy-keymap old-map))) (substitute-key-definition @@ -7352,7 +7253,7 @@ class/struct definition." (file (idlwave-routine-source-file (nth 3 (idlwave-rinfo-assoc pro 'pro nil (idlwave-routines)))))) - (cons file (if file (idlwave-get-buffer-visiting file))))) + (cons file (if file (find-buffer-visiting file))))) (defun idlwave-scan-class-info (class) @@ -8223,15 +8124,9 @@ If we do not know about MODULE, just return KEYWORD literally." (defvar idlwave-rinfo-mouse-map (let ((map (make-sparse-keymap))) - (define-key map - (if (featurep 'xemacs) [button2] [mouse-2]) - 'idlwave-mouse-active-rinfo) - (define-key map - (if (featurep 'xemacs) [(shift button2)] [(shift mouse-2)]) - 'idlwave-mouse-active-rinfo-shift) - (define-key map - (if (featurep 'xemacs) [button3] [mouse-3]) - 'idlwave-mouse-active-rinfo-right) + (define-key map [mouse-2] 'idlwave-mouse-active-rinfo) + (define-key map [(shift mouse-2)] 'idlwave-mouse-active-rinfo-shift) + (define-key map [mouse-3] 'idlwave-mouse-active-rinfo-right) (define-key map " " 'idlwave-active-rinfo-space) (define-key map "q" 'idlwave-quit-help) map)) @@ -8283,7 +8178,6 @@ If we do not know about MODULE, just return KEYWORD literally." "Button2: Display info about same method in superclass") (col 0) (data (list name type class (current-buffer) nil initial-class)) - (km-prop (if (featurep 'xemacs) 'keymap 'local-map)) (face 'idlwave-help-link) beg props win cnt total) ;; 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." idlwave-current-obj_new-class) (when superclasses (setq props (list 'mouse-face 'highlight - km-prop idlwave-rinfo-mouse-map + 'local-map idlwave-rinfo-mouse-map 'help-echo help-echo-class 'data (cons 'class data))) (let ((classes (cons initial-class superclasses)) c) @@ -8324,7 +8218,7 @@ If we do not know about MODULE, just return KEYWORD literally." (add-text-properties beg (point) props)))) (insert "\n"))) (setq props (list 'mouse-face 'highlight - km-prop idlwave-rinfo-mouse-map + 'local-map idlwave-rinfo-mouse-map 'help-echo help-echo-use 'data (cons 'usage data))) (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." (setq beg (point) ;; Relevant keywords already have link property attached props (list 'mouse-face 'highlight - km-prop idlwave-rinfo-mouse-map + 'local-map idlwave-rinfo-mouse-map 'data (cons 'keyword data) 'help-echo help-echo-kwd 'keyword (car x))) @@ -8366,7 +8260,7 @@ If we do not know about MODULE, just return KEYWORD literally." ;; Here entry is (key file (list of type-conses)) (while (setq entry (pop all)) (setq props (list 'mouse-face 'highlight - km-prop idlwave-rinfo-mouse-map + 'local-map idlwave-rinfo-mouse-map 'help-echo help-echo-src 'source (list (car (car (nth 2 entry))) ;type (nth 1 entry) @@ -8471,8 +8365,7 @@ to it." (add-text-properties beg (point) (list 'face 'bold))) (when (and file (not (equal file ""))) (setq beg (point)) - (insert (apply 'abbreviate-file-name - (if (featurep 'xemacs) (list file t) (list file)))) + (insert (apply 'abbreviate-file-name (list file))) (if file-props (add-text-properties beg (point) file-props))))) @@ -8632,10 +8525,9 @@ can be used to detect possible name clashes during this process." idlwave-user-catalog-routines idlwave-buffer-routines nil)) - (km-prop (if (featurep 'xemacs) 'keymap 'local-map)) (keymap (make-sparse-keymap)) (props (list 'mouse-face 'highlight - km-prop keymap + 'local-map keymap 'help-echo "Mouse2: Find source")) (nroutines (length (or special-routines routines))) (step (/ nroutines 100)) @@ -8658,7 +8550,7 @@ can be used to detect possible name clashes during this process." (nth 2 b) (car b))))))) (message "Sorting routines...done") - (define-key keymap (if (featurep 'xemacs) [(button2)] [(mouse-2)]) + (define-key keymap [(mouse-2)] (lambda (ev) (interactive "e") (mouse-set-point ev) @@ -9020,23 +8912,6 @@ Assumes that point is at the beginning of the unit as found by 'imenu) (error nil))))) -;; Here we hack func-menu.el in order to support this new mode. -;; The latest versions of func-menu.el already have this stuff in, so -;; we hack only if it is not already there. -(when (featurep 'xemacs) - (eval-after-load "func-menu" - '(progn - (or (assq 'idlwave-mode fume-function-name-regexp-alist) - (not (boundp 'fume-function-name-regexp-idl)) ; avoid problems - (setq fume-function-name-regexp-alist - (cons '(idlwave-mode . fume-function-name-regexp-idl) - fume-function-name-regexp-alist))) - (or (assq 'idlwave-mode fume-find-function-name-method-alist) - (not (fboundp 'fume-find-next-idl-function-name)) ; avoid problems - (setq fume-find-function-name-method-alist - (cons '(idlwave-mode . fume-find-next-idl-function-name) - fume-find-function-name-method-alist)))))) - (defun idlwave-edit-in-idlde () "Edit the current file in IDL Development environment." (interactive) diff --git a/lisp/progmodes/perl-mode.el b/lisp/progmodes/perl-mode.el index ff0b6a331bc..127b24cb890 100644 --- a/lisp/progmodes/perl-mode.el +++ b/lisp/progmodes/perl-mode.el @@ -214,7 +214,9 @@ (defconst perl--syntax-exp-intro-regexp (concat "\\(?:\\(?:^\\|[^$@&%[:word:]]\\)" (regexp-opt perl--syntax-exp-intro-keywords) - "\\|[-?:.,;|&+*=!~({[]\\|\\(^\\)\\)[ \t\n]*"))) + "\\|[?:.,;|&*=!~({[]" + "\\|[^-+][-+]" ;Bug#42168: `+' is intro but `++' isn't! + "\\|\\(^\\)\\)[ \t\n]*"))) (defun perl-syntax-propertize-function (start end) (let ((case-fold-search nil)) diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index b6161351f0b..8afd5ce7959 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el @@ -1,8 +1,8 @@ ;;; project.el --- Operations on the current project -*- lexical-binding: t; -*- ;; Copyright (C) 2015-2020 Free Software Foundation, Inc. -;; Version: 0.5.0 -;; Package-Requires: ((emacs "26.3")) +;; Version: 0.5.1 +;; Package-Requires: ((emacs "26.3") (xref "1.0.2")) ;; This is a GNU ELPA :core package. Avoid using functionality that ;; not compatible with the version of Emacs recorded above. @@ -731,24 +731,6 @@ pattern to search for." (user-error "No matches for: %s" regexp)) xrefs)) -(defun project--process-file-region (start end program - &optional buffer display - &rest args) - ;; FIXME: This branching shouldn't be necessary, but - ;; call-process-region *is* measurably faster, even for a program - ;; doing some actual work (for a period of time). Even though - ;; call-process-region also creates a temp file internally - ;; (http://lists.gnu.org/archive/html/emacs-devel/2019-01/msg00211.html). - (if (not (file-remote-p default-directory)) - (apply #'call-process-region - start end program nil buffer display args) - (let ((infile (make-temp-file "ppfr"))) - (unwind-protect - (progn - (write-region start end infile nil 'silent) - (apply #'process-file program infile buffer display args)) - (delete-file infile))))) - (defun project--read-regexp () (let ((sym (thing-at-point 'symbol))) (read-regexp "Find regexp" (and sym (regexp-quote sym))))) diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 3af55be4a19..d83af83b32e 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -283,24 +283,6 @@ :link '(emacs-commentary-link "python")) -;;; 24.x Compat - - -(eval-and-compile - (unless (fboundp 'prog-first-column) - (defun prog-first-column () - 0)) - (unless (fboundp 'file-local-name) - (defun file-local-name (file) - "Return the local name component of FILE. -It returns a file name which can be used directly as argument of -`process-file', `start-file-process', or `shell-command'." - (or (file-remote-p file 'localname) file)))) - -;; In Emacs 24.3 and earlier, `define-derived-mode' does not define -;; the hook variable, it only puts documentation on the symbol. -(defvar inferior-python-mode-hook) - ;;; Bindings @@ -2809,6 +2791,7 @@ variable. python-shell-comint-watch-for-first-prompt-output-filter python-comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt)) + (setq-local comint-highlight-input nil) (set (make-local-variable 'compilation-error-regexp-alist) python-shell-compilation-regexp-alist) (add-hook 'completion-at-point-functions diff --git a/lisp/progmodes/subword.el b/lisp/progmodes/subword.el index f9b069fd4e5..0f2c9431f6e 100644 --- a/lisp/progmodes/subword.el +++ b/lisp/progmodes/subword.el @@ -115,6 +115,8 @@ treat nomenclature boundaries as word boundaries." (when subword-mode (superword-mode -1)) (subword-setup-buffer)) +;; This is defined also in cc-cmds.el, but as obsolete since 24.3. +;; Let's keep this until the other one can also be removed. (define-obsolete-function-alias 'c-subword-mode 'subword-mode "23.2") ;;;###autoload diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el index 3e3a37f6da5..bbf899e7017 100644 --- a/lisp/progmodes/xref.el +++ b/lisp/progmodes/xref.el @@ -1,8 +1,8 @@ ;;; xref.el --- Cross-referencing commands -*-lexical-binding:t-*- ;; Copyright (C) 2014-2020 Free Software Foundation, Inc. -;; Version: 1.0.1 -;; Package-Requires: ((emacs "26.3") (project "0.1.1")) +;; Version: 1.0.2 +;; Package-Requires: ((emacs "26.3")) ;; This is a GNU ELPA :core package. Avoid functionality that is not ;; compatible with the version of Emacs recorded above. @@ -263,13 +263,16 @@ be found, return nil. The default implementation uses `semantic-symref-tool-alist' to find a search tool; by default, this uses \"find | grep\" in the -`project-current' roots." +current project's main and external roots." (mapcan (lambda (dir) (xref-references-in-directory identifier dir)) (let ((pr (project-current t))) (cons - (project-root pr) + (if (fboundp 'project-root) + (project-root pr) + (with-no-warnings + (project-roots pr))) (project-external-roots pr))))) (cl-defgeneric xref-backend-apropos (backend pattern) @@ -1281,13 +1284,13 @@ FILES must be a list of absolute file names." (insert (mapconcat #'identity files "\0")) (setq default-directory dir) (setq status - (project--process-file-region (point-min) - (point-max) - shell-file-name - output - nil - shell-command-switch - command))) + (xref--process-file-region (point-min) + (point-max) + shell-file-name + output + nil + shell-command-switch + command))) (goto-char (point-min)) (when (and (/= (point-min) (point-max)) (not (looking-at grep-re)) @@ -1302,6 +1305,24 @@ FILES must be a list of absolute file names." hits))) (xref--convert-hits (nreverse hits) regexp))) +(defun xref--process-file-region ( start end program + &optional buffer display + &rest args) + ;; FIXME: This branching shouldn't be necessary, but + ;; call-process-region *is* measurably faster, even for a program + ;; doing some actual work (for a period of time). Even though + ;; call-process-region also creates a temp file internally + ;; (http://lists.gnu.org/archive/html/emacs-devel/2019-01/msg00211.html). + (if (not (file-remote-p default-directory)) + (apply #'call-process-region + start end program nil buffer display args) + (let ((infile (make-temp-file "ppfr"))) + (unwind-protect + (progn + (write-region start end infile nil 'silent) + (apply #'process-file program infile buffer display args)) + (delete-file infile))))) + (defun xref--rgrep-command (regexp files dir ignores) (require 'find-dired) ; for `find-name-arg' (defvar grep-find-template) |