From f655987d63e181deb5e6fef1f93b409d96184fae Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 27 May 2015 22:42:33 -0400 Subject: [PATCH] Un-revert changes mistakenly dropped by f9fabb2b --- etc/NEWS | 18 ++++++++++++++++++ lisp/arc-mode.el | 31 +++++++++++++++++++++++++++++-- lisp/isearch.el | 23 ++++++++++++++++------- lisp/net/tramp.el | 4 ++-- src/textprop.c | 12 ++++++++++-- 5 files changed, 75 insertions(+), 13 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 24f6d582dcc..a220330ebbf 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -756,6 +756,8 @@ a typographically-correct documents. * Incompatible Lisp Changes in Emacs 25.1 +** `inhibit-point-motion-hooks' now defaults to t and is obsolete. + ** The optional `predicate' argument of `lisp-complete-symbol' no longer has any effect. (This change was made in Emacs 24.4 but was not advertised at the time.) @@ -987,6 +989,22 @@ is strongly dedicated to its buffer. ** Tearoff menus and detachable toolbars for Gtk+ has been removed. Those features have been deprecated in Gtk+ for a long time. +** Miscellaneous + +*** etags no longer qualifies class members by default. +By default, `etags' will not qualify class members for C-like +object-oriented languages with their class names and namespaces, and +will remove qualifications used explicitly in the code from the tag +names it puts in TAGS files. This is so the etags.el back-end for +`xref-find-definitions' is more accurate and produces less false +positives. + +Use --class-qualify (-Q) if you want the old default behavior of +qualifying class members in C++, Java, and Objective C. Note that +using -Q might make some class members become "unknown" to `M-.' +(`xref-find-definitions'); if so, you can use `C-u M-.' to specify the +qualified names by hand. + * Changes in Emacs 25.1 on Non-Free Operating Systems diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el index 063e4ba9dcb..5f2fc8f3804 100644 --- a/lisp/arc-mode.el +++ b/lisp/arc-mode.el @@ -1811,11 +1811,38 @@ This doesn't recover lost files, it just undoes changes in the buffer itself." (defun archive-zip-summarize () (goto-char (- (point-max) (- 22 18))) (search-backward-regexp "[P]K\005\006") - (let ((p (+ (point-min) (archive-l-e (+ (point) 16) 4))) + (let ((p (archive-l-e (+ (point) 16) 4)) (maxlen 8) (totalsize 0) files - visual) + visual + emacs-int-has-32bits) + (when (= p -1) + ;; If the offset of end-of-central-directory is -1, this is a + ;; Zip64 extended ZIP file format, and we need to glean the info + ;; from Zip64 records instead. + ;; + ;; First, find the Zip64 end-of-central-directory locator. + (search-backward "PK\006\007") + ;; Pay attention: the offset of Zip64 end-of-central-directory + ;; is a 64-bit field, so it could overflow the Emacs integer + ;; even on a 64-bit host, let alone 32-bit one. But since we've + ;; already read the zip file into a buffer, and this is a byte + ;; offset into the file we've read, it must be short enough, so + ;; such an overflow can never happen, and we can safely read + ;; these 8 bytes into an Emacs integer. Moreover, on host with + ;; 32-bit Emacs integer we can only read 4 bytes, since they are + ;; stored in little-endian byte order. + (setq emacs-int-has-32bits (<= most-positive-fixnum #x1fffffff)) + (setq p (+ (point-min) + (archive-l-e (+ (point) 8) (if emacs-int-has-32bits 4 8)))) + (goto-char p) + ;; We should be at Zip64 end-of-central-directory record now. + (or (string= "PK\006\006" (buffer-substring p (+ p 4))) + (error "Unrecognized ZIP file format")) + ;; Offset to central directory: + (setq p (+ (point-min) + (archive-l-e (+ p 48) (if emacs-int-has-32bits 4 8))))) (while (string= "PK\001\002" (buffer-substring p (+ p 4))) (let* ((creator (byte-after (+ p 5))) ;; (method (archive-l-e (+ p 10) 2)) diff --git a/lisp/isearch.el b/lisp/isearch.el index dc10502309f..5599ea55632 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -932,12 +932,6 @@ convert the search string to a regexp used by regexp search functions." (add-hook 'post-command-hook 'isearch-post-command-hook) (add-hook 'mouse-leave-buffer-hook 'isearch-done) (add-hook 'kbd-macro-termination-hook 'isearch-done) - (make-local-variable 'cursor-sensor-inhibit) - (unless (boundp 'cursor-sensor-inhibit) - (setq cursor-sensor-inhibit nil)) - ;; Suspend things like cursor-intangible during Isearch so we can search even - ;; within intangible text. - (push 'isearch cursor-sensor-inhibit) ;; isearch-mode can be made modal (in the sense of not returning to ;; the calling function until searching is completed) by entering @@ -949,10 +943,23 @@ convert the search string to a regexp used by regexp search functions." ;; Some high level utilities. Others below. +(defvar isearch--current-buffer) (defun isearch-update () "This is called after every isearch command to update the display. The last thing it does is to run `isearch-update-post-hook'." + (unless (eq (current-buffer) isearch--current-buffer) + (when isearch--current-buffer + (with-current-buffer isearch--current-buffer + (setq cursor-sensor-inhibit (delq 'isearch cursor-sensor-inhibit)))) + (setq isearch--current-buffer (current-buffer)) + (make-local-variable 'cursor-sensor-inhibit) + (unless (boundp 'cursor-sensor-inhibit) + (setq cursor-sensor-inhibit nil)) + ;; Suspend things like cursor-intangible during Isearch so we can search + ;; even within intangible text. + (push 'isearch cursor-sensor-inhibit)) + (if (and (null unread-command-events) (null executing-kbd-macro)) (progn @@ -1026,7 +1033,9 @@ NOPUSH is t and EDIT is t." (remove-hook 'mouse-leave-buffer-hook 'isearch-done) (remove-hook 'kbd-macro-termination-hook 'isearch-done) (setq isearch-lazy-highlight-start nil) - (setq cursor-sensor-inhibit (delq 'isearch cursor-sensor-inhibit)) + (with-current-buffer isearch--current-buffer + (setq isearch--current-buffer nil) + (setq cursor-sensor-inhibit (delq 'isearch cursor-sensor-inhibit))) ;; Called by all commands that terminate isearch-mode. ;; If NOPUSH is non-nil, we don't push the string on the search ring. diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 1614425c884..f0e3cb632bb 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -4038,8 +4038,8 @@ this file, if that variable is non-nil." ;; else (ad-deactivate 'make-auto-save-file-name) (prog1 - (tramp-run-real-handler 'make-auto-save-file-name nil) - (ad-activate 'make-auto-save-file-name))))) + (tramp-run-real-handler 'make-auto-save-file-name nil) + (ad-activate 'make-auto-save-file-name))))) (unless (tramp-exists-file-name-handler 'make-auto-save-file-name) (defadvice make-auto-save-file-name diff --git a/src/textprop.c b/src/textprop.c index 0a591d0e05f..96d88edebd2 100644 --- a/src/textprop.c +++ b/src/textprop.c @@ -2344,8 +2344,16 @@ returned. */); DEFVAR_LISP ("inhibit-point-motion-hooks", Vinhibit_point_motion_hooks, doc: /* If non-nil, don't run `point-left' and `point-entered' text properties. -This also inhibits the use of the `intangible' text property. */); - Vinhibit_point_motion_hooks = Qnil; +This also inhibits the use of the `intangible' text property. + +This variable is obsolete since Emacs-25.1. Use `cursor-intangible-mode' +or `cursor-sensor-mode' instead. */); + /* FIXME: We should make-obsolete-variable, but that signals too many + warnings in code which does (let ((inhibit-point-motion-hooks t)) ...) + Ideally, make-obsolete-variable should let us specify that only the nil + value is obsolete, but that requires too many changes in bytecomp.el, + so for now we'll keep it "obsolete via the docstring". */ + Vinhibit_point_motion_hooks = Qt; DEFVAR_LISP ("text-property-default-nonsticky", Vtext_property_default_nonsticky, -- 2.39.5