commit 9f51da56feb0782a023e5af16336009257a45544 (HEAD, refs/remotes/origin/master) Author: Ury Marshak Date: Sun Jun 26 09:10:46 2016 +0100 Fix FRAME_INTERNAL_BORDER_WIDTH use (Bug#23841) * src/nsfns.m (x_set_internal_border_width): Replace assignments to FRAME_INTERNAL_BORDER_WIDTH. Copyright-paperwork-exempt: yes diff --git a/src/nsfns.m b/src/nsfns.m index 9bc6c1d..820254f 100644 --- a/src/nsfns.m +++ b/src/nsfns.m @@ -726,9 +726,9 @@ Turn the input menu (an NSMenu) into a lisp list for tracking on lisp side int old_width = FRAME_INTERNAL_BORDER_WIDTH (f); CHECK_TYPE_RANGED_INTEGER (int, arg); - FRAME_INTERNAL_BORDER_WIDTH (f) = XINT (arg); + f->internal_border_width = XINT (arg); if (FRAME_INTERNAL_BORDER_WIDTH (f) < 0) - FRAME_INTERNAL_BORDER_WIDTH (f) = 0; + f->internal_border_width = 0; if (FRAME_INTERNAL_BORDER_WIDTH (f) == old_width) return; commit 0214011cc2476bb056067f57d221ad313a910f22 Author: Leo Liu Date: Sun Jun 26 09:55:39 2016 +0800 Deprecations (bug#23850) * lisp/subr.el (string-to-unibyte, string-as-unibyte, string-to-multibyte, string-as-multibyte): Make obsolete. diff --git a/lisp/subr.el b/lisp/subr.el index 48ff501..27b1c8a 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -1300,6 +1300,12 @@ be a list of the form returned by `event-start' and `event-end'." (make-obsolete 'forward-point "use (+ (point) N) instead." "23.1") (make-obsolete 'buffer-has-markers-at nil "24.3") +;; bug#23850 +(make-obsolete 'string-to-unibyte "use `encode-coding-string'." "25.2") +(make-obsolete 'string-as-unibyte "use `encode-coding-string'." "25.2") +(make-obsolete 'string-to-multibyte "use `decode-coding-string'." "25.2") +(make-obsolete 'string-as-multibyte "use `decode-coding-string'." "25.2") + (defun insert-string (&rest args) "Mocklisp-compatibility insert function. Like the function `insert' except that any argument that is a number commit c87c2cad94ab0570846015dcef91a38e84317be9 Author: Tino Calancha Date: Sun Jun 26 10:54:29 2016 +0900 Do not prompt twice to save a buffer * lisp/hilit-chg.el (highlight-markup-buffers): (Bug#23824). diff --git a/lisp/hilit-chg.el b/lisp/hilit-chg.el index 6420b8c..1e4deb9 100644 --- a/lisp/hilit-chg.el +++ b/lisp/hilit-chg.el @@ -777,7 +777,7 @@ is non-nil." a-start a-end len-a b-start b-end len-b (bufa-modified (buffer-modified-p buf-a)) - (bufb-modified (buffer-modified-p buf-b)) + (bufb-modified (and (not (eq buf-a buf-b)) (buffer-modified-p buf-b))) (buf-a-read-only (with-current-buffer buf-a buffer-read-only)) (buf-b-read-only (with-current-buffer buf-b buffer-read-only)) temp-a temp-b) commit f7df85a8d103e49cdfe1e510a7ad9f03dc1f9ee5 Author: Alan Third Date: Sat Jun 18 00:02:32 2016 +0100 Move text line right when in box (bug#23755) * src/nsterm.m (ns_draw_glyph_string_foreground): Create to take CHAR_GLYPH specific code and move glyphs right if within a box. (ns_draw_glyph_string): Move CHAR_GLYPH specific code into above function. diff --git a/src/nsterm.m b/src/nsterm.m index f2b0d90..eba75f1 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -3640,6 +3640,32 @@ overwriting cursor (usually when cursor on a tab) */ static void +ns_draw_glyph_string_foreground (struct glyph_string *s) +{ + int x, flags; + struct font *font = s->font; + + /* If first glyph of S has a left box line, start drawing the text + of S to the right of that box line. */ + if (s->face && s->face->box != FACE_NO_BOX + && s->first_glyph->left_box_line_p) + x = s->x + eabs (s->face->box_line_width); + else + x = s->x; + + flags = s->hl == DRAW_CURSOR ? NS_DUMPGLYPH_CURSOR : + (s->hl == DRAW_MOUSE_FACE ? NS_DUMPGLYPH_MOUSEFACE : + (s->for_overlaps ? NS_DUMPGLYPH_FOREGROUND : + NS_DUMPGLYPH_NORMAL)); + + font->driver->draw + (s, s->cmp_from, s->nchars, x, s->ybase, + (flags == NS_DUMPGLYPH_NORMAL && !s->background_filled_p) + || flags == NS_DUMPGLYPH_MOUSEFACE); +} + + +static void ns_draw_composite_glyph_string_foreground (struct glyph_string *s) { int i, j, x; @@ -3737,7 +3763,7 @@ overwriting cursor (usually when cursor on a tab) */ { /* TODO (optimize): focus for box and contents draw */ NSRect r[2]; - int n, flags; + int n; char box_drawn_p = 0; struct font *font = s->face->font; if (! font) font = FRAME_FONT (s->f); @@ -3807,11 +3833,6 @@ overwriting cursor (usually when cursor on a tab) */ ns_maybe_dumpglyphs_background (s, s->first_glyph->type == COMPOSITE_GLYPH); - flags = s->hl == DRAW_CURSOR ? NS_DUMPGLYPH_CURSOR : - (s->hl == DRAW_MOUSE_FACE ? NS_DUMPGLYPH_MOUSEFACE : - (s->for_overlaps ? NS_DUMPGLYPH_FOREGROUND : - NS_DUMPGLYPH_NORMAL)); - if (s->hl == DRAW_CURSOR && s->w->phys_cursor_type == FILLED_BOX_CURSOR) { unsigned long tmp = NS_FACE_BACKGROUND (s->face); @@ -3825,10 +3846,7 @@ overwriting cursor (usually when cursor on a tab) */ if (isComposite) ns_draw_composite_glyph_string_foreground (s); else - font->driver->draw - (s, s->cmp_from, s->nchars, s->x, s->ybase, - (flags == NS_DUMPGLYPH_NORMAL && !s->background_filled_p) - || flags == NS_DUMPGLYPH_MOUSEFACE); + ns_draw_glyph_string_foreground (s); } { commit fdcf46d33eebc59e56a35fcea186c61aad3c81d0 Merge: d693035 0377fe2 Author: Paul Eggert Date: Sun Jun 26 00:16:25 2016 +0200 Merge from origin/emacs-25 0377fe2 ; Spelling fixes f253695 Update docs for `customize-mode' 4395aaa Fix documentation of 'assoc-string' and 'compare-strings' ab0ebb9 ; Only load .elc file in tests. a98aa02 Error on multibyte characters in HTTP request ea512a7 * lisp/gnus/mm-decode.el (mm-convert-shr-links): Mask keys th... 8297331 ; Revert "Ensure undo-boundary after insert-file-contents." dc5e65b Unset GIT_DIR when calling Git commands 6cdd8f7 Ensure undo-boundary after insert-file-contents. 4793f5f Clarify documentation of 'line-spacing' and 'line-height' 5f37572 Fix removal of variables from process-environment e5e886d * admin/authors.el (authors-ignored-files, authors-valid-file... db0777b * admin/authors.el (authors-aliases, authors-fixed-case): Add... # Conflicts: # doc/lispref/modes.texi # lisp/gnus/mm-decode.el commit 0377fe2b819bb93ac7dc314c8dbd99304d8b98d0 (refs/remotes/origin/emacs-25) Author: Paul Eggert Date: Sun Jun 26 00:06:27 2016 +0200 ; Spelling fixes diff --git a/etc/AUTHORS b/etc/AUTHORS index 9a4aaf6..dc5a28e 100644 --- a/etc/AUTHORS +++ b/etc/AUTHORS @@ -3682,7 +3682,7 @@ Prestoo Ten: changed screen.el Primoz Peterlin: changed TUTORIAL.sl -Przemyslaw Wojnowski: changed cl-lib-tests.el +Przemysław Wojnowski: changed cl-lib-tests.el Przemysław Wojnowski: wrote obarray-tests.el sgml-mode-tests.el and changed obarray.el sgml-mode.el diff --git a/test/ChangeLog.1 b/test/ChangeLog.1 index 3520f13..367ca74 100644 --- a/test/ChangeLog.1 +++ b/test/ChangeLog.1 @@ -79,7 +79,7 @@ * indent/js-indent-first-initialiser-dynamic.js: New tests for `js-indent-first-initialiser'. -2015-03-10 Przemyslaw Wojnowski +2015-03-10 Przemysław Wojnowski * automated/cl-lib-tests.el: Add tests for plusp, second, ... (cl-lib-test-plusp, cl-lib-test-minusp) commit f2536958ec711b50a0cf8714defb921193ea8ae4 Author: Noam Postavsky Date: Sat Jun 25 13:12:11 2016 -0400 Update docs for `customize-mode' * lisp/cus-edit.el (customize-mode): This function works with both major and minor modes, make docstring and prompt reflect that (Bug #23649). * doc/lispref/modes.texi (Derived Modes): Remove note about customize-mode being experimental; it has been around since Emacs 22 (Bug #11299). Co-authored-by: Drew Adams diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi index 4c96e63..32baa27 100644 --- a/doc/lispref/modes.texi +++ b/doc/lispref/modes.texi @@ -794,10 +794,9 @@ if @var{parent} is @code{nil}. (Again, a @code{nil} value is @item :group If this is specified, the value should be the customization group for -this mode. (Not all major modes have one.) Only the (still -experimental and unadvertised) command @code{customize-mode} currently -uses this. @code{define-derived-mode} does @emph{not} automatically -define the specified customization group. +this mode. (Not all major modes have one.) The command +@code{customize-mode} uses this. @code{define-derived-mode} does +@emph{not} automatically define the specified customization group. @end table Here is a hypothetical example: diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el index d7db353..7826506 100644 --- a/lisp/cus-edit.el +++ b/lisp/cus-edit.el @@ -1072,9 +1072,10 @@ are shown; the contents of those subgroups are initially hidden." ;;;###autoload (defun customize-mode (mode) - "Customize options related to the current major mode. -If a prefix \\[universal-argument] was given (or if the current major mode has no known group), -then prompt for the MODE to customize." + "Customize options related to a major or minor mode. +By default the current major mode is used. With a prefix +argument or if the current major mode has no known group, prompt +for the MODE to customize." (interactive (list (let ((completion-regexp-list '("-mode\\'")) @@ -1083,8 +1084,8 @@ then prompt for the MODE to customize." major-mode (intern (completing-read (if group - (format "Major mode (default %s): " major-mode) - "Major mode: ") + (format "Mode (default %s): " major-mode) + "Mode: ") obarray 'custom-group-of-mode t nil nil (if group (symbol-name major-mode)))))))) commit d6930356cabd3036e445cc6a2f668b1fd3e0cde4 Author: Mark Oteiza Date: Sat Jun 25 10:31:04 2016 -0400 Teach net-utils more iproute2 and nl80211 tools * lisp/net/net-utils.el (iwconfig-program): Add iw(8). (iwconfig-program-options): Add "dev" argument for iw. Another useful option is "phy"; beyond that one needs to know the interface name. (netstat-program): Add ss(8). (route-program): Add ip(8). (route-program-options): Add "route" argument for ip. diff --git a/lisp/net/net-utils.el b/lisp/net/net-utils.el index b13bece..1547f52 100644 --- a/lisp/net/net-utils.el +++ b/lisp/net/net-utils.el @@ -112,22 +112,31 @@ These options can be used to limit how many ICMP packets are emitted." :group 'net-utils :type '(repeat string)) -(defcustom iwconfig-program "iwconfig" +(defcustom iwconfig-program + (cond ((executable-find "iwconfig") "iwconfig") + ((net-utils--executable-find-sbin "iw") "iw") + (t "iw")) "Program to print wireless network configuration information." :group 'net-utils :type 'string - :version "23.1") + :version "25.2") -(defcustom iwconfig-program-options nil +(defcustom iwconfig-program-options + (cond ((string-match-p "iw\\'" iwconfig-program) (list "dev")) + (t nil)) "Options for the iwconfig program." :group 'net-utils :type '(repeat string) - :version "23.1") + :version "25.2") -(defcustom netstat-program "netstat" +(defcustom netstat-program + (cond ((executable-find "netstat") "netstat") + ((net-utils--executable-find-sbin "ss")) + (t "ss")) "Program to print network statistics." :group 'net-utils - :type 'string) + :type 'string + :version "25.2") (defcustom netstat-program-options (list "-a") @@ -147,20 +156,25 @@ These options can be used to limit how many ICMP packets are emitted." :type '(repeat string)) (defcustom route-program - (if (eq system-type 'windows-nt) - "route" - "netstat") + (cond ((eq system-type 'windows-nt) "route") + ((executable-find "netstat") "netstat") + ((net-utils--executable-find-sbin "netstat")) + ((executable-find "ip") "ip") + ((net-utils--executable-find-sbin "ip")) + (t "ip")) "Program to print routing tables." :group 'net-utils - :type 'string) + :type 'string + :version "25.2") (defcustom route-program-options - (if (eq system-type 'windows-nt) - (list "print") - (list "-r")) + (cond ((eq system-type 'windows-nt) (list "print")) + ((string-match-p "netstat\\'" route-program) (list "-r")) + (t (list "route"))) "Options for the route program." :group 'net-utils - :type '(repeat string)) + :type '(repeat string) + :version "25.2") (defcustom nslookup-program "nslookup" "Program to interactively query DNS information." commit 852507f147b4253a8ec265951b70229cfd7c5a64 Author: Leo Liu Date: Sat Jun 25 09:35:39 2016 +0800 Use use-region-p in prolog.el * lisp/progmodes/prolog.el (region-exists-p): Remove. * lisp/progmodes/prolog.el (prolog-edit-menu-runtime, prolog-edit-menu-insert-move): Use use-region-p. diff --git a/lisp/progmodes/prolog.el b/lisp/progmodes/prolog.el index 0bbf67f..2b23c51 100644 --- a/lisp/progmodes/prolog.el +++ b/lisp/progmodes/prolog.el @@ -271,6 +271,9 @@ (require 'easymenu) (require 'align) +(eval-when-compile + (or (fboundp 'use-region-p) + (defsubst use-region-p () (region-exists-p)))) (defgroup prolog nil "Editing and running Prolog and Mercury files." @@ -3329,12 +3332,6 @@ PREFIX is the prefix of the search regexp." ;; prolog buffer) ;;------------------------------------------------------------------- -(unless (fboundp 'region-exists-p) - (defun region-exists-p () - "Non-nil if the mark is set. Lobotomized version for Emacsen that do not provide their own." - (mark))) - - ;; GNU Emacs ignores `easy-menu-add' so the order in which the menus ;; are defined _is_ important! @@ -3368,7 +3365,7 @@ PREFIX is the prefix of the search regexp." :included (not (eq prolog-system 'mercury))] ["Consult buffer" prolog-consult-buffer :included (not (eq prolog-system 'mercury))] - ["Consult region" prolog-consult-region :active (region-exists-p) + ["Consult region" prolog-consult-region :active (use-region-p) :included (not (eq prolog-system 'mercury))] ["Consult predicate" prolog-consult-predicate :included (not (eq prolog-system 'mercury))] @@ -3380,7 +3377,7 @@ PREFIX is the prefix of the search regexp." :included (eq prolog-system 'sicstus)] ["Compile buffer" prolog-compile-buffer :included (eq prolog-system 'sicstus)] - ["Compile region" prolog-compile-region :active (region-exists-p) + ["Compile region" prolog-compile-region :active (use-region-p) :included (eq prolog-system 'sicstus)] ["Compile predicate" prolog-compile-predicate :included (eq prolog-system 'sicstus)] @@ -3418,11 +3415,11 @@ PREFIX is the prefix of the search regexp." prolog-edit-menu-insert-move prolog-mode-map "Commands for Prolog code manipulation." '("Prolog" - ["Comment region" comment-region (region-exists-p)] - ["Uncomment region" prolog-uncomment-region (region-exists-p)] + ["Comment region" comment-region (use-region-p)] + ["Uncomment region" prolog-uncomment-region (use-region-p)] ["Add comment/move to comment" indent-for-comment t] ["Convert variables in region to '_'" prolog-variables-to-anonymous - :active (region-exists-p) :included (not (eq prolog-system 'mercury))] + :active (use-region-p) :included (not (eq prolog-system 'mercury))] "---" ["Insert predicate template" prolog-insert-predicate-template t] ["Insert next clause head" prolog-insert-next-clause t] @@ -3435,10 +3432,10 @@ PREFIX is the prefix of the search regexp." ["End of predicate" prolog-end-of-predicate t] "---" ["Indent line" indent-according-to-mode t] - ["Indent region" indent-region (region-exists-p)] + ["Indent region" indent-region (use-region-p)] ["Indent predicate" prolog-indent-predicate t] ["Indent buffer" prolog-indent-buffer t] - ["Align region" align (region-exists-p)] + ["Align region" align (use-region-p)] "---" ["Mark clause" prolog-mark-clause t] ["Mark predicate" prolog-mark-predicate t] commit d590048bed8466e84c66d60f35df236d0ff8e81b Author: Leo Liu Date: Sat Jun 25 08:57:51 2016 +0800 Remove compatibility with Emacs 24.3 in octave-mode * lisp/progmodes/octave.el: Clean up and remove compatibility with Emacs 24.3. diff --git a/lisp/progmodes/octave.el b/lisp/progmodes/octave.el index f309565..4f223f2 100644 --- a/lisp/progmodes/octave.el +++ b/lisp/progmodes/octave.el @@ -34,31 +34,6 @@ ;;; Code: (require 'comint) -;;; For emacs < 24.3. -(require 'newcomment) -(eval-and-compile - (unless (fboundp 'user-error) - (defalias 'user-error 'error)) - (unless (fboundp 'delete-consecutive-dups) - (defalias 'delete-consecutive-dups 'delete-dups)) - (unless (fboundp 'completion-table-with-cache) - (defun completion-table-with-cache (fun &optional ignore-case) - ;; See eg bug#11906. - (let* (last-arg last-result - (new-fun - (lambda (arg) - (if (and last-arg (string-prefix-p last-arg arg ignore-case)) - last-result - (prog1 - (setq last-result (funcall fun arg)) - (setq last-arg arg)))))) - (completion-table-dynamic new-fun))))) -(eval-when-compile - (unless (fboundp 'setq-local) - (defmacro setq-local (var val) - "Set variable VAR to value VAL in current buffer." - (list 'set (list 'make-local-variable (list 'quote var)) val)))) - (defgroup octave nil "Editing Octave code." :link '(custom-manual "(octave-mode)Top") @@ -605,13 +580,8 @@ Key bindings: (setq-local fill-nobreak-predicate (lambda () (eq (octave-in-string-p) ?'))) - (with-no-warnings - (if (fboundp 'add-function) ; new in 24.4 - (add-function :around (local 'comment-line-break-function) - #'octave--indent-new-comment-line) - (setq-local comment-line-break-function - (apply-partially #'octave--indent-new-comment-line - #'comment-indent-new-line)))) + (add-function :around (local 'comment-line-break-function) + #'octave--indent-new-comment-line) (setq font-lock-defaults '(octave-font-lock-keywords)) @@ -908,9 +878,6 @@ startup file, `~/.emacs-octave'." (inferior-octave-completion-table) 'comint-completion-file-name-table)))))) -(define-obsolete-function-alias 'inferior-octave-complete - 'completion-at-point "24.1") - (defun inferior-octave-dynamic-list-input-ring () "List the buffer's input history in a help buffer." ;; We cannot use `comint-dynamic-list-input-ring', because it replaces @@ -1060,8 +1027,7 @@ directory and makes this the current buffer's default directory." (skip-syntax-backward "-(") (thing-at-point 'symbol))))) (completing-read - (format (if def "Function (default %s): " - "Function: ") def) + (format (if def "Function (default %s): " "Function: ") def) (inferior-octave-completion-table) nil nil nil nil def))) @@ -1448,9 +1414,6 @@ The block marked is the one that contains point or follows point." (inferior-octave-completion-table)) octave-reserved-words))))) -(define-obsolete-function-alias 'octave-complete-symbol - 'completion-at-point "24.1") - (defun octave-add-log-current-defun () "A function for `add-log-current-defun-function' (which see)." (save-excursion commit b120fbd6a40de657673bea7c3a630cf514b59310 Author: Alan Mackenzie Date: Fri Jun 24 16:03:29 2016 +0000 Ensure hack-local-variables is run in a fundamental mode buffer. This fixes bug #23827. * src/buffer.c (set-buffer-major-mode): Run `fundamental-mode' when the buffer gets set to that mode, so that `run-mode-hooks', and thus `hack-local-variables' get run. diff --git a/src/buffer.c b/src/buffer.c index b4b8304..8756cbb 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -1984,7 +1984,9 @@ the current buffer's major mode. */) function = BVAR (current_buffer, major_mode); } - if (NILP (function) || EQ (function, Qfundamental_mode)) + if (NILP (function)) /* If function is `fundamental-mode', allow it to run + so that `run-mode-hooks' and thus + `hack-local-variables' get run. */ return Qnil; count = SPECPDL_INDEX (); commit 974a53bfbe5a19326d2473012996ffd81ec91630 Author: Tino Calancha Date: Sat Jun 25 00:26:09 2016 +0900 Fix caller to ediff-setup * lisp/hilit-chg.el (hilit-chg-get-diff-info): #Bug23820. diff --git a/lisp/hilit-chg.el b/lisp/hilit-chg.el index 263b5ab..6420b8c 100644 --- a/lisp/hilit-chg.el +++ b/lisp/hilit-chg.el @@ -908,7 +908,7 @@ changes are made, so \\[highlight-changes-next-change] and (let (hilit-e hilit-x hilit-y) (ediff-setup buf-a file-a buf-b file-b nil nil ; buf-c file-C - 'hilit-chg-get-diff-list-hk + '(hilit-chg-get-diff-list-hk) (list (cons 'ediff-job-name 'something)) ) (ediff-with-current-buffer hilit-e (ediff-really-quit nil)) commit a4750b39560a8a182cf95dd4494f79ab6466e9b2 Author: Alan Mackenzie Date: Fri Jun 24 13:26:34 2016 +0000 Implement ' separators in C++ integer literals. * lisp/progmodes/cc-langs.el (c-get-state-before-change-functions): insert c-before-after-change-digit-quote into the C++ value. (c-before-font-lock-functions): Insert c-depropertize-new-text into the values for all languages. Insert c-before-after-change-digit-quote into the C++ value. * lisp/progmodes/cc-mode.el (c-depropertize-CPP): Wrap the function in c-save-buffer-state. (c-depropertize-new-text, c-before-after-change-digit-quote): New functions. diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el index ba05e81..4d36684 100644 --- a/lisp/progmodes/cc-langs.el +++ b/lisp/progmodes/cc-langs.el @@ -477,6 +477,7 @@ so that all identifiers are recognized as words.") c-before-change-check-raw-strings c-before-change-check-<>-operators c-depropertize-CPP + c-before-after-change-digit-quote c-invalidate-macro-cache) (c objc) '(c-extend-region-for-CPP c-depropertize-CPP @@ -508,18 +509,24 @@ parameters \(point-min) and \(point-max).") (c-lang-defconst c-before-font-lock-functions ;; For documentation see the following c-lang-defvar of the same name. ;; The value here may be a list of functions or a single function. - t 'c-change-expand-fl-region - (c objc) '(c-extend-font-lock-region-for-macros + t '(c-depropertize-new-text + c-change-expand-fl-region) + (c objc) '(c-depropertize-new-text + c-extend-font-lock-region-for-macros c-neutralize-syntax-in-and-mark-CPP c-change-expand-fl-region) - c++ '(c-extend-font-lock-region-for-macros + c++ '(c-depropertize-new-text + c-extend-font-lock-region-for-macros + c-before-after-change-digit-quote c-after-change-re-mark-raw-strings c-neutralize-syntax-in-and-mark-CPP c-restore-<>-properties c-change-expand-fl-region) - java '(c-restore-<>-properties + java '(c-depropertize-new-text + c-restore-<>-properties c-change-expand-fl-region) - awk 'c-awk-extend-and-syntax-tablify-region) + awk '(c-depropertize-new-text + c-awk-extend-and-syntax-tablify-region)) (c-lang-defvar c-before-font-lock-functions (let ((fs (c-lang-const c-before-font-lock-functions))) (if (listp fs) diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el index dd8d771..80ac08f 100644 --- a/lisp/progmodes/cc-mode.el +++ b/lisp/progmodes/cc-mode.el @@ -892,23 +892,24 @@ Note that the style variables are always made local to the buffer." ;; This function is in the C/C++/ObjC values of ;; `c-get-state-before-change-functions' and is called exclusively as a ;; before change function. - (goto-char c-new-BEG) - (while (and (< (point) beg) - (search-forward-regexp c-anchored-cpp-prefix beg t)) - (goto-char (match-beginning 1)) - (let ((m-beg (point))) - (c-end-of-macro) - (c-clear-char-property-with-value - m-beg (min (point) beg) 'syntax-table '(1)))) - - (goto-char end) - (while (and (< (point) c-new-END) - (search-forward-regexp c-anchored-cpp-prefix c-new-END t)) - (goto-char (match-beginning 1)) - (let ((m-beg (point))) - (c-end-of-macro) - (c-clear-char-property-with-value - m-beg (min (point) c-new-END) 'syntax-table '(1))))) + (c-save-buffer-state () + (goto-char c-new-BEG) + (while (and (< (point) beg) + (search-forward-regexp c-anchored-cpp-prefix beg t)) + (goto-char (match-beginning 1)) + (let ((m-beg (point))) + (c-end-of-macro) + (c-clear-char-property-with-value + m-beg (min (point) beg) 'syntax-table '(1)))) + + (goto-char end) + (while (and (< (point) c-new-END) + (search-forward-regexp c-anchored-cpp-prefix c-new-END t)) + (goto-char (match-beginning 1)) + (let ((m-beg (point))) + (c-end-of-macro) + (c-clear-char-property-with-value + m-beg (min (point) c-new-END) 'syntax-table '(1)))))) (defun c-extend-region-for-CPP (beg end) ;; Adjust `c-new-BEG', `c-new-END' respectively to the beginning and end of @@ -932,6 +933,25 @@ Note that the style variables are always made local to the buffer." ; with a c-cpp-delimiter category property (setq c-new-END (point))) +(defun c-depropertize-new-text (beg end old-len) + ;; Remove from the new text in (BEG END) any and all text properties which + ;; might interfere with CC Mode's proper working. + ;; + ;; This function is called exclusively as an after-change function. It + ;; appears in the value (for all languages) of + ;; `c-before-font-lock-functions'. The value of point is undefined both on + ;; entry and exit, and the return value has no significance. The parameters + ;; BEG, END, and OLD-LEN are the standard ones supplied to all after-change + ;; functions. + (c-save-buffer-state () + (when (> end beg) + (c-clear-char-properties beg end 'syntax-table) + (c-clear-char-properties beg end 'category) + (c-clear-char-properties beg end 'c-is-sws) + (c-clear-char-properties beg end 'c-in-sws) + (c-clear-char-properties beg end 'c-type) + (c-clear-char-properties beg end 'c-awk-NL-prop)))) + (defun c-extend-font-lock-region-for-macros (begg endd old-len) ;; Extend the region (c-new-BEG c-new-END) to cover all (possibly changed) ;; preprocessor macros; The return value has no significance. @@ -1042,6 +1062,70 @@ Note that the style variables are always made local to the buffer." (forward-line)) ; no infinite loop with, e.g., "#//" ))))) +(defun c-before-after-change-digit-quote (beg end &optional old-len) + ;; This function either removes or applies the punctuation value ('(1)) of + ;; the `syntax-table' text property on single quote marks which are + ;; separator characters in long integer literals, e.g. "4'294'967'295". It + ;; applies to both decimal/octal and hex literals. (FIXME (2016-06-10): it + ;; should also apply to binary literals.) + ;; + ;; In both uses of the function, the `syntax-table' properties are + ;; removed/applied only on quote marks which appear to be digit separators. + ;; + ;; Point is undefined on both entry and exit to this function, and the + ;; return value has no significance. The function is called solely as a + ;; before-change function (see `c-get-state-before-change-functions') and as + ;; an after change function (see `c-before-font-lock-functions', with the + ;; parameters BEG, END, and (optionally) OLD-LEN being given the standard + ;; values for before/after-change functions. + (c-save-buffer-state ((num-begin c-new-BEG) digit-re try-end) + (goto-char c-new-END) + (when (looking-at "\\(x\\)?[0-9a-fA-F']+") + (setq c-new-END (match-end 0))) + (goto-char c-new-BEG) + (when (looking-at "\\(x?\\)[0-9a-fA-F']") + (if (re-search-backward "\\(0x\\)?[0-9a-fA-F]*\\=" nil t) + (setq c-new-BEG (point)))) + + (while + (re-search-forward "[0-9a-fA-F]'[0-9a-fA-F]" c-new-END t) + (setq try-end (1- (point))) + (re-search-backward "[^0-9a-fA-F']" num-begin t) + (setq digit-re + (cond + ((and (not (bobp)) (eq (char-before) ?0) (memq (char-after) '(?x ?X))) + "[0-9a-fA-F]") + ((and (eq (char-after (1+ (point))) ?0) + (memq (char-after (+ 2 (point))) '(?b ?B))) + "[01]") + ((memq (char-after (1+ (point))) '(?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9)) + "[0-9]") + (t nil))) + (when digit-re + (cond ((eq (char-after) ?x) (forward-char)) + ((looking-at ".?0[Bb]") (goto-char (match-end 0))) + ((looking-at digit-re)) + (t (forward-char))) + (when (not (c-in-literal)) + (let ((num-end ; End of valid sequence of digits/quotes. + (save-excursion + (re-search-forward + (concat "\\=\\(" digit-re "+'\\)*" digit-re "+") nil t) + (point)))) + (setq try-end ; End of sequence of digits/quotes + (save-excursion + (re-search-forward + (concat "\\=\\(" digit-re "\\|'\\)+") nil t) + (point))) + (while (re-search-forward + (concat digit-re "\\('\\)" digit-re) num-end t) + (if old-len ; i.e. are we in an after-change function? + (c-put-char-property (match-beginning 1) 'syntax-table '(1)) + (c-clear-char-property (match-beginning 1) 'syntax-table)) + (backward-char))))) + (goto-char try-end) + (setq num-begin (point))))) + (defun c-before-change (beg end) ;; Function to be put on `before-change-functions'. Primarily, this calls ;; the language dependent `c-get-state-before-change-functions'. It is commit 63457dcfe0fe101d3db131c4b05823e8280b6bff Author: Paul Eggert Date: Fri Jun 24 13:49:32 2016 +0200 Update from gnulib This incorporates: 2016-06-24 intprops: port better to GCC 7 2016-06-13 xalloc-oversized: port to GCC 7; fewer warnings * doc/misc/texinfo.tex, lib/xalloc-oversized.h, lib/intprops.h: Copy from gnulib. diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex index e60dd17..daa7055 100644 --- a/doc/misc/texinfo.tex +++ b/doc/misc/texinfo.tex @@ -3,7 +3,7 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2016-06-07.21} +\def\texinfoversion{2016-06-18.21} % % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, @@ -5964,18 +5964,32 @@ \global\advance\dimen@ by 1pt \repeat }% - \multiply\dimen@ii by 4 - \divide\dimen@ii by 5 - \ifdim\ht3<\dimen@ii - % Column heights are too different, so don't make their bottoms - % flush with each other. The glue at the end of the second column - % allows a second column to stretch, reducing the difference in - % height between the two. - \setbox0=\vbox to\dimen@{\unvbox1\vfill}% - \setbox2=\vbox to\dimen@{\unvbox3\vskip 0pt plus 0.3\ht0}% + \ifdim2\ht1>\vsize + % The left column has come out longer than the page itself. (Note + % that we have doubled \vsize for the double columns, so + % the actual height of the page is 0.5\vsize). Just split the last + % of the double column material roughly in half. + \setbox2=\box0 + \setbox0 = \vsplit2 to \dimen@ii + \setbox0=\vbox to\dimen@ii{\unvbox0}% + \setbox2=\vbox to\dimen@ii{\unvbox2}% \else - \setbox0=\vbox to\dimen@{\unvbox1}% - \setbox2=\vbox to\dimen@{\unvbox3}% + \multiply\dimen@ii by 5 + \divide\dimen@ii by 4 + \global\setbox3 = \copy0 + \global\setbox1 = \vsplit3 to \dimen@ii + \global\setbox\balancedcolumns=\vbox{\pagesofar}% + \ifdim\ht3<\dimen@ii + % Column heights are too different, so don't make their bottoms + % flush with each other. The glue at the end of the second column + % allows a second column to stretch, reducing the difference in + % height between the two. + \setbox0=\vbox to\dimen@{\unvbox1\vfill}% + \setbox2=\vbox to\dimen@{\unvbox3\vskip 0pt plus 0.3\ht0}% + \else + \setbox0=\vbox to\dimen@{\unvbox1}% + \setbox2=\vbox to\dimen@{\unvbox3}% + \fi \fi \fi % diff --git a/lib/intprops.h b/lib/intprops.h index 3152139..e1fce5c 100644 --- a/lib/intprops.h +++ b/lib/intprops.h @@ -222,24 +222,35 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); ? (a) < (min) >> (b) \ : (max) >> (b) < (a)) +/* True if __builtin_add_overflow (A, B, P) works when P is null. */ +#define _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL (7 <= __GNUC__) /* The _GL*_OVERFLOW macros have the same restrictions as the *_RANGE_OVERFLOW macros, except that they do not assume that operands (e.g., A and B) have the same type as MIN and MAX. Instead, they assume that the result (e.g., A + B) has that type. */ -#define _GL_ADD_OVERFLOW(a, b, min, max) \ - ((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max) \ - : (a) < 0 ? (b) <= (a) + (b) \ - : (b) < 0 ? (a) <= (a) + (b) \ - : (a) + (b) < (b)) -#define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \ - ((min) < 0 ? INT_SUBTRACT_RANGE_OVERFLOW (a, b, min, max) \ - : (a) < 0 ? 1 \ - : (b) < 0 ? (a) - (b) <= (a) \ - : (a) < (b)) -#define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \ - (((min) == 0 && (((a) < 0 && 0 < (b)) || ((b) < 0 && 0 < (a)))) \ - || INT_MULTIPLY_RANGE_OVERFLOW (a, b, min, max)) +#if _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL +# define _GL_ADD_OVERFLOW(a, b, min, max) + __builtin_add_overflow (a, b, (__typeof__ ((a) + (b)) *) 0) +# define _GL_SUBTRACT_OVERFLOW(a, b, min, max) + __builtin_sub_overflow (a, b, (__typeof__ ((a) - (b)) *) 0) +# define _GL_MULTIPLY_OVERFLOW(a, b, min, max) + __builtin_mul_overflow (a, b, (__typeof__ ((a) * (b)) *) 0) +#else +# define _GL_ADD_OVERFLOW(a, b, min, max) \ + ((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max) \ + : (a) < 0 ? (b) <= (a) + (b) \ + : (b) < 0 ? (a) <= (a) + (b) \ + : (a) + (b) < (b)) +# define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \ + ((min) < 0 ? INT_SUBTRACT_RANGE_OVERFLOW (a, b, min, max) \ + : (a) < 0 ? 1 \ + : (b) < 0 ? (a) - (b) <= (a) \ + : (a) < (b)) +# define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \ + (((min) == 0 && (((a) < 0 && 0 < (b)) || ((b) < 0 && 0 < (a)))) \ + || INT_MULTIPLY_RANGE_OVERFLOW (a, b, min, max)) +#endif #define _GL_DIVIDE_OVERFLOW(a, b, min, max) \ ((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max) \ : (a) < 0 ? (b) <= (a) + (b) - 1 \ @@ -304,8 +315,12 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW) #define INT_SUBTRACT_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW) -#define INT_NEGATE_OVERFLOW(a) \ - INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a)) +#if _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL +# define INT_NEGATE_OVERFLOW(a) INT_SUBTRACT_OVERFLOW (0, a) +#else +# define INT_NEGATE_OVERFLOW(a) \ + INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a)) +#endif #define INT_MULTIPLY_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_MULTIPLY_OVERFLOW) #define INT_DIVIDE_OVERFLOW(a, b) \ @@ -325,7 +340,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); _GL_INT_MINIMUM (0 * (b) + (a)), \ _GL_INT_MAXIMUM (0 * (b) + (a))) -/* Compute A + B, A - B, A * B, respectively, storing the result into *R. +/* Store the low-order bits of A + B, A - B, A * B, respectively, into *R. Return 1 if the result overflows. See above for restrictions. */ #define INT_ADD_WRAPV(a, b, r) \ _GL_INT_OP_WRAPV (a, b, r, +, __builtin_add_overflow, INT_ADD_OVERFLOW) @@ -350,9 +365,10 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); # define _GL__GENERIC_BOGUS 0 #endif -/* Store A B into *R, where OP specifies the operation. - BUILTIN is the builtin operation, and OVERFLOW the overflow predicate. - See above for restrictions. */ +/* Store the low-order bits of A B into *R, where OP specifies + the operation. BUILTIN is the builtin operation, and OVERFLOW the + overflow predicate. Return 1 if the result overflows. See above + for restrictions. */ #if 5 <= __GNUC__ || __has_builtin (__builtin_add_overflow) # define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) builtin (a, b, r) #elif 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS @@ -403,7 +419,8 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); /* Store the low-order bits of A B into *R, where the operation is given by OP. Use the unsigned type UT for calculation to avoid overflow problems. *R's type is T, with extremal values TMIN and - TMAX. T must be a signed integer type. */ + TMAX. T must be a signed integer type. Return 1 if the result + overflows. */ #define _GL_INT_OP_CALC(a, b, r, op, overflow, ut, t, tmin, tmax) \ (sizeof ((a) op (b)) < sizeof (t) \ ? _GL_INT_OP_CALC1 ((t) (a), (t) (b), r, op, overflow, ut, t, tmin, tmax) \ diff --git a/lib/xalloc-oversized.h b/lib/xalloc-oversized.h index d81a847..44f1644 100644 --- a/lib/xalloc-oversized.h +++ b/lib/xalloc-oversized.h @@ -20,15 +20,13 @@ #include +/* Default for (non-Clang) compilers that lack __has_builtin. */ #ifndef __has_builtin # define __has_builtin(x) 0 #endif -/* Return 1 if an array of N objects, each of size S, cannot exist due - to size arithmetic overflow. S must be positive and N must be - nonnegative. This is a macro, not a function, so that it - works correctly even when SIZE_MAX < N. - +/* True if N * S would overflow in a size calculation. + This expands to a constant expression if N and S are both constants. By gnulib convention, SIZE_MAX represents overflow in size calculations, so the conservative dividend to use here is SIZE_MAX - 1, since SIZE_MAX might represent an overflowed value. @@ -36,12 +34,38 @@ sizeof (ptrdiff_t) <= sizeof (size_t), so do not bother to test for exactly-SIZE_MAX allocations on such hosts; this avoids a test and branch when S is known to be 1. */ -#if 5 <= __GNUC__ || __has_builtin (__builtin_mul_overflow) +#define __xalloc_oversized(n, s) \ + ((size_t) (sizeof (ptrdiff_t) <= sizeof (size_t) ? -1 : -2) / (s) < (n)) + + +/* Return 1 if an array of N objects, each of size S, cannot exist due + to size arithmetic overflow. S must be positive and N must be + nonnegative. This is a macro, not a function, so that it + works correctly even when SIZE_MAX < N. */ + +/* GCC 7 __builtin_mul_overflow should easily compute this. See: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68120 */ +#if 7 <= __GNUC__ +# define xalloc_oversized(n, s) __builtin_mul_overflow (n, s, (size_t *) NULL) + +/* GCC 5 and Clang __builtin_mul_overflow needs a temporary, and + should be used only for non-constant operands, so that + xalloc_oversized is a constant expression if both arguments are. + Do not use this if pedantic, since pedantic GCC issues a diagnostic + for ({ ... }). */ +#elif ((5 <= __GNUC__ \ + || (__has_builtin (__builtin_mul_overflow) \ + && __has_builtin (__builtin_constant_p))) \ + && !__STRICT_ANSI__) # define xalloc_oversized(n, s) \ - ({ size_t __xalloc_size; __builtin_mul_overflow (n, s, &__xalloc_size); }) + (__builtin_constant_p (n) && __builtin_constant_p (s) \ + ? __xalloc_oversized (n, s) \ + : ({ size_t __xalloc_size; __builtin_mul_overflow (n, s, &__xalloc_size); })) + +/* Other compilers use integer division; this may be slower but is + more portable. */ #else -# define xalloc_oversized(n, s) \ - ((size_t) (sizeof (ptrdiff_t) <= sizeof (size_t) ? -1 : -2) / (s) < (n)) +# define xalloc_oversized(n, s) __xalloc_oversized (n, s) #endif #endif /* !XALLOC_OVERSIZED_H_ */ commit dc49db725e2d1648cbf1f94cef6131d42b13237b Author: Martin Rudalics Date: Fri Jun 24 09:59:50 2016 +0200 Remove two uses of 'min' in Fwindow_text_pixel_size * src/xdisp.c (Fwindow_text_pixel_size): Don't use 'min' since it calls move_it_to twice. Suggested by Eli Zaretskii. diff --git a/src/xdisp.c b/src/xdisp.c index 9df73f2..1289515 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -9979,18 +9979,21 @@ include the height of both, if present, in the return value. */) it.last_visible_x = max_x; /* Actually, we never want move_it_to stop at to_x. But to make sure that move_it_in_display_line_to always moves far enough, - we set it to INT_MAX and specify MOVE_TO_X. Also bound width - value by X-LIMIT. */ - x = min (move_it_to (&it, end, INT_MAX, max_y, -1, - MOVE_TO_POS | MOVE_TO_X | MOVE_TO_Y), - max_x); + we set it to INT_MAX and specify MOVE_TO_X. */ + x = move_it_to (&it, end, INT_MAX, max_y, -1, + MOVE_TO_POS | MOVE_TO_X | MOVE_TO_Y); + /* Don't return more than X-LIMIT. */ + if (x > max_x) + x = max_x; } /* Subtract height of header-line which was counted automatically by start_display. */ - y = min (it.current_y + it.max_ascent + it.max_descent - - WINDOW_HEADER_LINE_HEIGHT (w), - max_y); + y = it.current_y + it.max_ascent + it.max_descent + - WINDOW_HEADER_LINE_HEIGHT (w); + /* Don't return more than Y-LIMIT. */ + if (y > max_y) + y = max_y; if (EQ (mode_and_header_line, Qheader_line) || EQ (mode_and_header_line, Qt)) commit 098347a9b4e16935fc2c9e08817896019e2f1879 Author: Paul Eggert Date: Fri Jun 24 02:19:13 2016 +0200 Clarify intent of FACE_FROM_ID and IMAGE_FROM_ID * src/dispextern.h (FACE_OPT_FROM_ID): Don’t use FACE_FROM_ID, since it is intended to be used only when it returns a non-null pointer, and here the pointer might be null. (IMAGE_OPT_FROM_ID): Don’t use IMAGE_FROM_ID, for similar reasons. diff --git a/src/dispextern.h b/src/dispextern.h index d0fc3b2..08dcd89 100644 --- a/src/dispextern.h +++ b/src/dispextern.h @@ -1812,7 +1812,7 @@ struct face_cache bool_bf menu_face_changed_p : 1; }; -/* Return a pointer to the cached face with ID on frame F. */ +/* Return a non-null pointer to the cached face with ID on frame F. */ #define FACE_FROM_ID(F, ID) \ (eassert (UNSIGNED_CMP (ID, <, FRAME_FACE_CACHE (F)->used)), \ @@ -1823,7 +1823,7 @@ struct face_cache #define FACE_OPT_FROM_ID(F, ID) \ (UNSIGNED_CMP (ID, <, FRAME_FACE_CACHE (F)->used) \ - ? FACE_FROM_ID (F, ID) \ + ? FRAME_FACE_CACHE (F)->faces_by_id[ID] \ : NULL) /* True if FACE is suitable for displaying ASCII characters. */ @@ -3093,7 +3093,7 @@ struct image_cache }; -/* A pointer to the image with id ID on frame F. */ +/* A non-null pointer to the image with id ID on frame F. */ #define IMAGE_FROM_ID(F, ID) \ (eassert (UNSIGNED_CMP (ID, <, FRAME_IMAGE_CACHE (F)->used)), \ @@ -3104,7 +3104,7 @@ struct image_cache #define IMAGE_OPT_FROM_ID(F, ID) \ (UNSIGNED_CMP (ID, <, FRAME_IMAGE_CACHE (F)->used) \ - ? IMAGE_FROM_ID (F, ID) \ + ? FRAME_IMAGE_CACHE (F)->images[ID] \ : NULL) /* Size of bucket vector of image caches. Should be prime. */ commit 90d0833f24be04e4b36aabda8cae1681ae768258 Author: Mark Oteiza Date: Thu Jun 23 18:48:12 2016 -0400 Remove some more face aliases obsoleted in 22.1 * lisp/eshell/em-ls.el (eshell-ls-directory-face, eshell-ls-symlink-face, eshell-ls-executable-face, eshell-ls-readonly-face, eshell-ls-unreadable-face, eshell-ls-special-face, eshell-ls-missing-face, eshell-ls-archive-face, eshell-ls-backup-face, eshell-ls-product-face, eshell-ls-clutter-face): Remove. * lisp/isearch.el (isearch-lazy-highlight-face, lazy-highlight-face): Remove. (isearch-lazy-highlight-update): Use face symbol. * lisp/net/sieve-mode.el (sieve-control-commands-face, sieve-action-commands-face, sieve-test-commands-face, sieve-tagged-arguments-face): Remove. (sieve-font-lock-keywords): Use non-obsolete faces. * lisp/progmodes/sh-script.el (sh-heredoc-face): Remove. (sh-get-indent-info, sh-prev-line): Use face symbol. * lisp/textmodes/tex-mode.el (tex-font-lock-keywords-1): Use non-obsolete face. (tex-math-face, tex-verbatim-face): Remove. (tex-font-lock-syntactic-face-function): Use face symbols. diff --git a/lisp/eshell/em-ls.el b/lisp/eshell/em-ls.el index cf6609f..8616dd2 100644 --- a/lisp/eshell/em-ls.el +++ b/lisp/eshell/em-ls.el @@ -101,46 +101,36 @@ faster and conserves more memory." (((class color) (background dark)) (:foreground "SkyBlue" :weight bold)) (t (:weight bold))) "The face used for highlighting directories.") -(define-obsolete-face-alias 'eshell-ls-directory-face - 'eshell-ls-directory "22.1") (defface eshell-ls-symlink '((((class color) (background light)) (:foreground "Dark Cyan" :weight bold)) (((class color) (background dark)) (:foreground "Cyan" :weight bold))) "The face used for highlighting symbolic links.") -(define-obsolete-face-alias 'eshell-ls-symlink-face 'eshell-ls-symlink "22.1") (defface eshell-ls-executable '((((class color) (background light)) (:foreground "ForestGreen" :weight bold)) (((class color) (background dark)) (:foreground "Green" :weight bold))) "The face used for highlighting executables (not directories, though).") -(define-obsolete-face-alias 'eshell-ls-executable-face - 'eshell-ls-executable "22.1") (defface eshell-ls-readonly '((((class color) (background light)) (:foreground "Brown")) (((class color) (background dark)) (:foreground "Pink"))) "The face used for highlighting read-only files.") -(define-obsolete-face-alias 'eshell-ls-readonly-face 'eshell-ls-readonly "22.1") (defface eshell-ls-unreadable '((((class color) (background light)) (:foreground "Grey30")) (((class color) (background dark)) (:foreground "DarkGrey"))) "The face used for highlighting unreadable files.") -(define-obsolete-face-alias 'eshell-ls-unreadable-face - 'eshell-ls-unreadable "22.1") (defface eshell-ls-special '((((class color) (background light)) (:foreground "Magenta" :weight bold)) (((class color) (background dark)) (:foreground "Magenta" :weight bold))) "The face used for highlighting non-regular files.") -(define-obsolete-face-alias 'eshell-ls-special-face 'eshell-ls-special "22.1") (defface eshell-ls-missing '((((class color) (background light)) (:foreground "Red" :weight bold)) (((class color) (background dark)) (:foreground "Red" :weight bold))) "The face used for highlighting non-existent file names.") -(define-obsolete-face-alias 'eshell-ls-missing-face 'eshell-ls-missing "22.1") (defcustom eshell-ls-archive-regexp (concat "\\.\\(t\\(a[rz]\\|gz\\)\\|arj\\|lzh\\|" @@ -155,7 +145,6 @@ files." '((((class color) (background light)) (:foreground "Orchid" :weight bold)) (((class color) (background dark)) (:foreground "Orchid" :weight bold))) "The face used for highlighting archived and compressed file names.") -(define-obsolete-face-alias 'eshell-ls-archive-face 'eshell-ls-archive "22.1") (defcustom eshell-ls-backup-regexp "\\(\\`\\.?#\\|\\(\\.bak\\|~\\)\\'\\)" @@ -166,7 +155,6 @@ files." '((((class color) (background light)) (:foreground "OrangeRed")) (((class color) (background dark)) (:foreground "LightSalmon"))) "The face used for highlighting backup file names.") -(define-obsolete-face-alias 'eshell-ls-backup-face 'eshell-ls-backup "22.1") (defcustom eshell-ls-product-regexp "\\.\\(elc\\|o\\(bj\\)?\\|a\\|lib\\|res\\)\\'" @@ -179,7 +167,6 @@ ought to be recreatable if they are deleted." '((((class color) (background light)) (:foreground "OrangeRed")) (((class color) (background dark)) (:foreground "LightSalmon"))) "The face used for highlighting files that are build products.") -(define-obsolete-face-alias 'eshell-ls-product-face 'eshell-ls-product "22.1") (defcustom eshell-ls-clutter-regexp "\\(^texput\\.log\\|^core\\)\\'" @@ -192,7 +179,6 @@ really need to stick around for very long." '((((class color) (background light)) (:foreground "OrangeRed" :weight bold)) (((class color) (background dark)) (:foreground "OrangeRed" :weight bold))) "The face used for highlighting junk file names.") -(define-obsolete-face-alias 'eshell-ls-clutter-face 'eshell-ls-clutter "22.1") (defsubst eshell-ls-filetype-p (attrs type) "Test whether ATTRS specifies a directory." diff --git a/lisp/isearch.el b/lisp/isearch.el index eabf05b..721f2fc 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -354,11 +354,7 @@ A value of nil means highlight all matches." "Face for lazy highlighting of matches other than the current one." :group 'lazy-highlight :group 'basic-faces) -(define-obsolete-face-alias 'isearch-lazy-highlight-face 'lazy-highlight "22.1") -(define-obsolete-variable-alias 'isearch-lazy-highlight-face - 'lazy-highlight-face - "22.1") -(defvar lazy-highlight-face 'lazy-highlight) + ;; Define isearch help map. @@ -3259,7 +3255,7 @@ Attempt to do the search exactly the way the pending Isearch would." ;; 1000 is higher than ediff's 100+, ;; but lower than isearch main overlay's 1001 (overlay-put ov 'priority 1000) - (overlay-put ov 'face lazy-highlight-face))) + (overlay-put ov 'face 'lazy-highlight))) ;(overlay-put ov 'window (selected-window)))) ;; Remember the current position of point for ;; the next call of `isearch-lazy-highlight-update' diff --git a/lisp/net/sieve-mode.el b/lisp/net/sieve-mode.el index 77ab44f..6aa1b20 100644 --- a/lisp/net/sieve-mode.el +++ b/lisp/net/sieve-mode.el @@ -61,9 +61,6 @@ ;; Font-lock -(defvar sieve-control-commands-face 'sieve-control-commands - "Face name used for Sieve Control Commands.") - (defface sieve-control-commands '((((type tty) (class color)) (:foreground "blue" :weight light)) (((class grayscale) (background light)) (:foreground "LightGray" :bold t)) @@ -72,12 +69,6 @@ (((class color) (background dark)) (:foreground "LightSteelBlue")) (t (:bold t))) "Face used for Sieve Control Commands.") -;; backward-compatibility alias -(put 'sieve-control-commands-face 'face-alias 'sieve-control-commands) -(put 'sieve-control-commands-face 'obsolete-face "22.1") - -(defvar sieve-action-commands-face 'sieve-action-commands - "Face name used for Sieve Action Commands.") (defface sieve-action-commands '((((type tty) (class color)) (:foreground "blue" :weight bold)) @@ -85,12 +76,6 @@ (((class color) (background dark)) (:foreground "LightSkyBlue")) (t (:inverse-video t :bold t))) "Face used for Sieve Action Commands.") -;; backward-compatibility alias -(put 'sieve-action-commands-face 'face-alias 'sieve-action-commands) -(put 'sieve-action-commands-face 'obsolete-face "22.1") - -(defvar sieve-test-commands-face 'sieve-test-commands - "Face name used for Sieve Test Commands.") (defface sieve-test-commands '((((type tty) (class color)) (:foreground "magenta")) @@ -102,12 +87,6 @@ (((class color) (background dark)) (:foreground "Aquamarine")) (t (:bold t :underline t))) "Face used for Sieve Test Commands.") -;; backward-compatibility alias -(put 'sieve-test-commands-face 'face-alias 'sieve-test-commands) -(put 'sieve-test-commands-face 'obsolete-face "22.1") - -(defvar sieve-tagged-arguments-face 'sieve-tagged-arguments - "Face name used for Sieve Tagged Arguments.") (defface sieve-tagged-arguments '((((type tty) (class color)) (:foreground "cyan" :weight bold)) @@ -117,9 +96,6 @@ (((class color) (background dark)) (:foreground "Cyan")) (t (:bold t))) "Face used for Sieve Tagged Arguments.") -;; backward-compatibility alias -(put 'sieve-tagged-arguments-face 'face-alias 'sieve-tagged-arguments) -(put 'sieve-tagged-arguments-face 'obsolete-face "22.1") (defconst sieve-font-lock-keywords @@ -128,19 +104,19 @@ ;; control commands (cons (regexp-opt '("require" "if" "else" "elsif" "stop") 'words) - 'sieve-control-commands-face) + 'sieve-control-commands) ;; action commands (cons (regexp-opt '("fileinto" "redirect" "reject" "keep" "discard") 'words) - 'sieve-action-commands-face) + 'sieve-action-commands) ;; test commands (cons (regexp-opt '("address" "allof" "anyof" "exists" "false" "true" "header" "not" "size" "envelope" "body") 'words) - 'sieve-test-commands-face) + 'sieve-test-commands) (cons "\\Sw+:\\sw+" - 'sieve-tagged-arguments-face)))) + 'sieve-tagged-arguments)))) ;; Syntax table diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el index 4fe47f0..10e56d0 100644 --- a/lisp/progmodes/sh-script.el +++ b/lisp/progmodes/sh-script.el @@ -925,8 +925,6 @@ See `sh-feature'.") (:weight bold))) "Face to show quoted execs like \\=`blabla\\=`." :group 'sh-indentation) -(define-obsolete-face-alias 'sh-heredoc-face 'sh-heredoc "22.1") -(defvar sh-heredoc-face 'sh-heredoc) (defface sh-escaped-newline '((t :inherit font-lock-string-face)) "Face used for (non-escaped) backslash at end of a line in Shell-script mode." @@ -1207,7 +1205,7 @@ subshells can nest." (if q (if (characterp q) (if (eq q ?\`) 'sh-quoted-exec font-lock-string-face) - sh-heredoc-face) + 'sh-heredoc) font-lock-comment-face))) (defgroup sh-indentation nil @@ -2902,7 +2900,7 @@ STRING This is ignored for the purposes of calculating ;;(This function never returns just t.) (cond ((or (nth 3 (syntax-ppss (point))) - (eq (get-text-property (point) 'face) sh-heredoc-face)) + (eq (get-text-property (point) 'face) 'sh-heredoc)) ;; String continuation -- don't indent (setq result t) (setq have-result t)) @@ -3108,8 +3106,7 @@ we go to the end of the previous line and do not check for continuations." (forward-comment (- (point-max))) (unless end (beginning-of-line)) (when (and (not (bobp)) - (equal (get-text-property (1- (point)) 'face) - sh-heredoc-face)) + (eq (get-text-property (1- (point)) 'face) 'sh-heredoc)) (let ((p1 (previous-single-property-change (1- (point)) 'face))) (when p1 (goto-char p1) diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el index b38b147..bc5e516 100644 --- a/lisp/textmodes/tex-mode.el +++ b/lisp/textmodes/tex-mode.el @@ -505,7 +505,7 @@ An alternative value is \" . \", if you use a font with a narrow period." (funcall inbraces-re (concat "{" (funcall inbraces-re "{[^}]*}") "*}")) "*}\\)+\\$?\\$") - (0 tex-math-face)) + (0 tex-math)) ;; Heading args. (,(concat slash headings "\\*?" opt arg) ;; If ARG ends up matching too much (if the {} don't match, e.g.) @@ -800,15 +800,11 @@ Not smaller than the value set by `tex-suscript-height-minimum'." '((t :inherit font-lock-string-face)) "Face used to highlight TeX math expressions." :group 'tex) -(define-obsolete-face-alias 'tex-math-face 'tex-math "22.1") -(defvar tex-math-face 'tex-math) (defface tex-verbatim '((t :inherit fixed-pitch-serif)) "Face used to highlight TeX verbatim environments." :group 'tex) -(define-obsolete-face-alias 'tex-verbatim-face 'tex-verbatim "22.1") -(defvar tex-verbatim-face 'tex-verbatim) (defun tex-font-lock-verb (start delim) "Place syntax table properties on the \\verb construct. @@ -836,10 +832,10 @@ START is the position of the \\ and DELIM is the delimiter char." (let ((char (nth 3 state))) (cond ((not char) - (if (eq 2 (nth 7 state)) tex-verbatim-face font-lock-comment-face)) - ((eq char ?$) tex-math-face) + (if (eq 2 (nth 7 state)) 'tex-verbatim font-lock-comment-face)) + ((eq char ?$) 'tex-math) ;; A \verb element. - (t tex-verbatim-face)))) + (t 'tex-verbatim)))) (defun tex-define-common-keys (keymap) commit c430f7e23fc2c22f251ace4254e37dea1452dfc3 Author: Mark Oteiza Date: Thu Jun 23 17:13:11 2016 -0400 Remove some face aliases obsoleted in 22.1 * lisp/faces.el (modeline-inactive, modeline-highlight, modeline-buffer-id): * lisp/hilit-chg.el (highlight-changes-face, highlight-changes-delete-face): * lisp/info.el (Info-title-1-face, Info-title-2-face, Info-title-3-face, Info-title-4-face, info-menu-5): * lisp/obsolete/old-whitespace.el (whitespace-highlight-face): * lisp/paren.el (show-paren-match-face, show-paren-mismatch-face): * lisp/progmodes/make-mode.el (makefile-space-face): * lisp/textmodes/texinfo.el (texinfo-heading-face): Remove. (texinfo-font-lock-keywords): Use texinfo-heading face. * lisp/vc/add-log.el (change-log-date-face, change-log-name-face, change-log-email-face, change-log-file-face, change-log-list-face, change-log-conditionals-face, change-log-function-face, change-log-acknowledgement-face): * lisp/vc/diff-mode.el (diff-header-face, diff-file-header-face, diff-index-face, diff-hunk-header-face, diff-removed-face, diff-added-face, diff-changed-face, diff-function-face, diff-context-face, diff-nonexistent-face): Remove. (diff-use-changed-face, diff-font-lock-keywords): Use non-obsolete face symbols. (diff-hunk-file-names): Fix comment. (diff-refine-change): Remove. (diff-refine-removed, diff-refine-added, diff-refine-hunk): Use non-obsolete face. * lisp/vc/log-view.el (log-view-file-face, log-view-message-face): Remove. (log-view-font-lock-keywords): Use non-obsolete face names. * lisp/vc/pcvs-info.el (cvs-header-face, cvs-filename-face, cvs-unknown-face, cvs-handled-face, cvs-need-action-face, cvs-marked-face, cvs-msg-face): * lisp/wid-edit.el (widget-documentation-face, widget-button-face, widget-field-face, widget-single-line-field-face, widget-inactive-face, widget-button-pressed-face): * lisp/woman.el (woman-italic-face, woman-bold-face, woman-unknown-face, woman-addition-face): Remove. diff --git a/lisp/faces.el b/lisp/faces.el index 4193c1e..d5fc3ce 100644 --- a/lisp/faces.el +++ b/lisp/faces.el @@ -2518,7 +2518,6 @@ If you set `term-file-prefix' to nil, this function does nothing." :version "22.1" :group 'mode-line-faces :group 'basic-faces) -(define-obsolete-face-alias 'modeline-inactive 'mode-line-inactive "22.1") (defface mode-line-highlight '((((class color) (min-colors 88)) @@ -2529,7 +2528,6 @@ If you set `term-file-prefix' to nil, this function does nothing." :version "22.1" :group 'mode-line-faces :group 'basic-faces) -(define-obsolete-face-alias 'modeline-highlight 'mode-line-highlight "22.1") (defface mode-line-emphasis '((t (:weight bold))) @@ -2545,7 +2543,6 @@ Use the face `mode-line-highlight' for features that can be selected." :version "22.1" :group 'mode-line-faces :group 'basic-faces) -(define-obsolete-face-alias 'modeline-buffer-id 'mode-line-buffer-id "22.1") (defface header-line '((default diff --git a/lisp/hilit-chg.el b/lisp/hilit-chg.el index 8f042b6..263b5ab 100644 --- a/lisp/hilit-chg.el +++ b/lisp/hilit-chg.el @@ -194,8 +194,6 @@ (t (:inverse-video t))) "Face used for highlighting changes." :group 'highlight-changes) -(define-obsolete-face-alias 'highlight-changes-face - 'highlight-changes "22.1") ;; This looks pretty ugly, actually. Maybe the underline should be removed. (defface highlight-changes-delete @@ -204,9 +202,6 @@ (t (:inverse-video t))) "Face used for highlighting deletions." :group 'highlight-changes) -(define-obsolete-face-alias 'highlight-changes-delete-face - 'highlight-changes-delete "22.1") - ;; A (not very good) default list of colors to rotate through. (define-obsolete-variable-alias 'highlight-changes-colours diff --git a/lisp/info.el b/lisp/info.el index 70d218f..bb259bd 100644 --- a/lisp/info.el +++ b/lisp/info.el @@ -81,28 +81,24 @@ The Lisp code is executed when the node is selected.") (t :height 1.2 :inherit info-title-2)) "Face for info titles at level 1." :group 'info) -(define-obsolete-face-alias 'Info-title-1-face 'info-title-1 "22.1") (defface info-title-2 '((((type tty pc) (class color)) :foreground "lightblue" :weight bold) (t :height 1.2 :inherit info-title-3)) "Face for info titles at level 2." :group 'info) -(define-obsolete-face-alias 'Info-title-2-face 'info-title-2 "22.1") (defface info-title-3 '((((type tty pc) (class color)) :weight bold) (t :height 1.2 :inherit info-title-4)) "Face for info titles at level 3." :group 'info) -(define-obsolete-face-alias 'Info-title-3-face 'info-title-3 "22.1") (defface info-title-4 '((((type tty pc) (class color)) :weight bold) (t :weight bold :inherit variable-pitch)) "Face for info titles at level 4." :group 'info) -(define-obsolete-face-alias 'Info-title-4-face 'info-title-4 "22.1") (defface info-menu-header '((((type tty pc)) @@ -119,7 +115,6 @@ The Lisp code is executed when the node is selected.") (t :underline t)) "Face for every third `*' in an Info menu." :group 'info) -(define-obsolete-face-alias 'info-menu-5 'info-menu-star "22.1") (defface info-xref '((t :inherit link)) diff --git a/lisp/obsolete/old-whitespace.el b/lisp/obsolete/old-whitespace.el index 63af369..5119fb0 100644 --- a/lisp/obsolete/old-whitespace.el +++ b/lisp/obsolete/old-whitespace.el @@ -300,8 +300,6 @@ To disable timer scans, set this to zero." (:background "white"))) "Face used for highlighting the bogus whitespaces that exist in the buffer." :group 'whitespace) -(define-obsolete-face-alias 'whitespace-highlight-face - 'whitespace-highlight "22.1") (if (not (assoc 'whitespace-mode minor-mode-alist)) (setq minor-mode-alist (cons '(whitespace-mode whitespace-mode-line) diff --git a/lisp/paren.el b/lisp/paren.el index 53eb500..e37cace 100644 --- a/lisp/paren.el +++ b/lisp/paren.el @@ -81,11 +81,6 @@ whitespace there." :type 'boolean :version "25.1") -(define-obsolete-face-alias 'show-paren-match-face 'show-paren-match "22.1") - -(define-obsolete-face-alias 'show-paren-mismatch-face - 'show-paren-mismatch "22.1") - (defcustom show-paren-highlight-openparen t "Non-nil turns on openparen highlighting when matching forward. When nil, and point stands just before an open paren, the paren diff --git a/lisp/progmodes/make-mode.el b/lisp/progmodes/make-mode.el index ee4b104..fb71420 100644 --- a/lisp/progmodes/make-mode.el +++ b/lisp/progmodes/make-mode.el @@ -103,7 +103,6 @@ (t (:reverse-video t))) "Face to use for highlighting leading spaces in Font-Lock mode." :group 'makefile) -(define-obsolete-face-alias 'makefile-space-face 'makefile-space "22.1") (defface makefile-targets ;; This needs to go along both with foreground and background colors (i.e. shell) diff --git a/lisp/textmodes/texinfo.el b/lisp/textmodes/texinfo.el index ed6022f..db9944d 100644 --- a/lisp/textmodes/texinfo.el +++ b/lisp/textmodes/texinfo.el @@ -351,8 +351,6 @@ Subexpression 1 is what goes into the corresponding `@end' statement.") '((t (:inherit font-lock-function-name-face))) "Face used for section headings in `texinfo-mode'." :group 'texinfo) -(define-obsolete-face-alias 'texinfo-heading-face 'texinfo-heading "22.1") -(defvar texinfo-heading-face 'texinfo-heading) (defvar texinfo-font-lock-keywords `(;; All but the first had an OVERRIDE of t. @@ -380,7 +378,8 @@ Subexpression 1 is what goes into the corresponding `@end' statement.") ;; (,texinfo-environment-regexp ;; 1 (texinfo-clone-environment (match-beginning 1) (match-end 1)) keep) (,(concat "^@" (regexp-opt (mapcar 'car texinfo-section-list) t) - ".*\n") 0 texinfo-heading-face t)) + ".*\n") + 0 texinfo-heading t)) "Additional expressions to highlight in Texinfo mode.") (defun texinfo-clone-environment (start end) diff --git a/lisp/vc/add-log.el b/lisp/vc/add-log.el index 9076d83..b516b67 100644 --- a/lisp/vc/add-log.el +++ b/lisp/vc/add-log.el @@ -184,51 +184,42 @@ a case simply use the directory containing the changed file." "Face used to highlight dates in date lines." :version "21.1" :group 'change-log) -(define-obsolete-face-alias 'change-log-date-face 'change-log-date "22.1") (defface change-log-name '((t (:inherit font-lock-constant-face))) "Face for highlighting author names." :version "21.1" :group 'change-log) -(define-obsolete-face-alias 'change-log-name-face 'change-log-name "22.1") (defface change-log-email '((t (:inherit font-lock-variable-name-face))) "Face for highlighting author email addresses." :version "21.1" :group 'change-log) -(define-obsolete-face-alias 'change-log-email-face 'change-log-email "22.1") (defface change-log-file '((t (:inherit font-lock-function-name-face))) "Face for highlighting file names." :version "21.1" :group 'change-log) -(define-obsolete-face-alias 'change-log-file-face 'change-log-file "22.1") (defface change-log-list '((t (:inherit font-lock-keyword-face))) "Face for highlighting parenthesized lists of functions or variables." :version "21.1" :group 'change-log) -(define-obsolete-face-alias 'change-log-list-face 'change-log-list "22.1") (defface change-log-conditionals '((t (:inherit font-lock-variable-name-face))) "Face for highlighting conditionals of the form `[...]'." :version "21.1" :group 'change-log) -(define-obsolete-face-alias 'change-log-conditionals-face - 'change-log-conditionals "22.1") (defface change-log-function '((t (:inherit font-lock-variable-name-face))) "Face for highlighting items of the form `<....>'." :version "21.1" :group 'change-log) -(define-obsolete-face-alias 'change-log-function-face - 'change-log-function "22.1") (defface change-log-acknowledgment '((t (:inherit font-lock-comment-face))) @@ -237,8 +228,6 @@ a case simply use the directory containing the changed file." :group 'change-log) (define-obsolete-face-alias 'change-log-acknowledgement 'change-log-acknowledgment "24.3") -(define-obsolete-face-alias 'change-log-acknowledgement-face - 'change-log-acknowledgment "22.1") (defconst change-log-file-names-re "^\\( +\\|\t\\)\\* \\([^ ,:([\n]+\\)") (defconst change-log-start-entry-re "^\\sw.........[0-9:+ ]*") diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el index bada492..43ff9e0 100644 --- a/lisp/vc/diff-mode.el +++ b/lisp/vc/diff-mode.el @@ -243,8 +243,6 @@ well." (t :weight bold)) "`diff-mode' face inherited by hunk and index header faces." :group 'diff-mode) -(define-obsolete-face-alias 'diff-header-face 'diff-header "22.1") -(defvar diff-header-face 'diff-header) (defface diff-file-header '((((class color) (min-colors 88) (background light)) @@ -256,22 +254,16 @@ well." (t :weight bold)) ; :height 1.3 "`diff-mode' face used to highlight file header lines." :group 'diff-mode) -(define-obsolete-face-alias 'diff-file-header-face 'diff-file-header "22.1") -(defvar diff-file-header-face 'diff-file-header) (defface diff-index '((t :inherit diff-file-header)) "`diff-mode' face used to highlight index header lines." :group 'diff-mode) -(define-obsolete-face-alias 'diff-index-face 'diff-index "22.1") -(defvar diff-index-face 'diff-index) (defface diff-hunk-header '((t :inherit diff-header)) "`diff-mode' face used to highlight hunk header lines." :group 'diff-mode) -(define-obsolete-face-alias 'diff-hunk-header-face 'diff-hunk-header "22.1") -(defvar diff-hunk-header-face 'diff-hunk-header) (defface diff-removed '((default @@ -284,8 +276,6 @@ well." :foreground "red")) "`diff-mode' face used to highlight removed lines." :group 'diff-mode) -(define-obsolete-face-alias 'diff-removed-face 'diff-removed "22.1") -(defvar diff-removed-face 'diff-removed) (defface diff-added '((default @@ -298,16 +288,12 @@ well." :foreground "green")) "`diff-mode' face used to highlight added lines." :group 'diff-mode) -(define-obsolete-face-alias 'diff-added-face 'diff-added "22.1") -(defvar diff-added-face 'diff-added) (defface diff-changed '((t nil)) "`diff-mode' face used to highlight changed lines." :version "25.1" :group 'diff-mode) -(define-obsolete-face-alias 'diff-changed-face 'diff-changed "22.1") -(defvar diff-changed-face 'diff-changed) (defface diff-indicator-removed '((t :inherit diff-removed)) @@ -334,8 +320,6 @@ well." '((t :inherit diff-header)) "`diff-mode' face used to highlight function names produced by \"diff -p\"." :group 'diff-mode) -(define-obsolete-face-alias 'diff-function-face 'diff-function "22.1") -(defvar diff-function-face 'diff-function) (defface diff-context '((((class color grayscale) (min-colors 88) (background light)) @@ -345,15 +329,11 @@ well." "`diff-mode' face used to highlight context and other side-information." :version "25.1" :group 'diff-mode) -(define-obsolete-face-alias 'diff-context-face 'diff-context "22.1") -(defvar diff-context-face 'diff-context) (defface diff-nonexistent '((t :inherit diff-file-header)) "`diff-mode' face used to highlight nonexistent files in recursive diffs." :group 'diff-mode) -(define-obsolete-face-alias 'diff-nonexistent-face 'diff-nonexistent "22.1") -(defvar diff-nonexistent-face 'diff-nonexistent) (defconst diff-yank-handler '(diff-yank-function)) (defun diff-yank-function (text) @@ -382,57 +362,57 @@ well." (defconst diff-context-mid-hunk-header-re "--- \\([0-9]+\\)\\(?:,\\([0-9]+\\)\\)? ----$") -(defvar diff-use-changed-face (and (face-differs-from-default-p diff-changed-face) - (not (face-equal diff-changed-face diff-added-face)) - (not (face-equal diff-changed-face diff-removed-face))) +(defvar diff-use-changed-face (and (face-differs-from-default-p 'diff-changed) + (not (face-equal 'diff-changed 'diff-added)) + (not (face-equal 'diff-changed 'diff-removed))) "If non-nil, use the face `diff-changed' for changed lines in context diffs. Otherwise, use the face `diff-removed' for removed lines, and the face `diff-added' for added lines.") (defvar diff-font-lock-keywords `((,(concat "\\(" diff-hunk-header-re-unified "\\)\\(.*\\)$") - (1 diff-hunk-header-face) (6 diff-function-face)) + (1 diff-hunk-header) (6 diff-function)) ("^\\(\\*\\{15\\}\\)\\(.*\\)$" ;context - (1 diff-hunk-header-face) (2 diff-function-face)) - ("^\\*\\*\\* .+ \\*\\*\\*\\*". diff-hunk-header-face) ;context - (,diff-context-mid-hunk-header-re . diff-hunk-header-face) ;context - ("^[0-9,]+[acd][0-9,]+$" . diff-hunk-header-face) ;normal - ("^---$" . diff-hunk-header-face) ;normal + (1 diff-hunk-header) (2 diff-function)) + ("^\\*\\*\\* .+ \\*\\*\\*\\*". diff-hunk-header) ;context + (,diff-context-mid-hunk-header-re . diff-hunk-header) ;context + ("^[0-9,]+[acd][0-9,]+$" . diff-hunk-header) ;normal + ("^---$" . diff-hunk-header) ;normal ;; For file headers, accept files with spaces, but be careful to rule ;; out false-positives when matching hunk headers. ("^\\(---\\|\\+\\+\\+\\|\\*\\*\\*\\) \\([^\t\n]+?\\)\\(?:\t.*\\| \\(\\*\\*\\*\\*\\|----\\)\\)?\n" - (0 diff-header-face) - (2 (if (not (match-end 3)) diff-file-header-face) prepend)) + (0 diff-header) + (2 (if (not (match-end 3)) diff-file-header) prepend)) ("^\\([-<]\\)\\(.*\n\\)" - (1 diff-indicator-removed-face) (2 diff-removed-face)) + (1 diff-indicator-removed-face) (2 diff-removed)) ("^\\([+>]\\)\\(.*\n\\)" - (1 diff-indicator-added-face) (2 diff-added-face)) + (1 diff-indicator-added-face) (2 diff-added)) ("^\\(!\\)\\(.*\n\\)" (1 (if diff-use-changed-face diff-indicator-changed-face ;; Otherwise, search for `diff-context-mid-hunk-header-re' and - ;; if the line of context diff is above, use `diff-removed-face'; - ;; if below, use `diff-added-face'. + ;; if the line of context diff is above, use `diff-removed'; + ;; if below, use `diff-added'. (save-match-data (let ((limit (save-excursion (diff-beginning-of-hunk)))) (if (save-excursion (re-search-backward diff-context-mid-hunk-header-re limit t)) diff-indicator-added-face diff-indicator-removed-face))))) (2 (if diff-use-changed-face - diff-changed-face + diff-changed ;; Otherwise, use the same method as above. (save-match-data (let ((limit (save-excursion (diff-beginning-of-hunk)))) (if (save-excursion (re-search-backward diff-context-mid-hunk-header-re limit t)) - diff-added-face - diff-removed-face)))))) + diff-added + diff-removed)))))) ("^\\(?:Index\\|revno\\): \\(.+\\).*\n" - (0 diff-header-face) (1 diff-index-face prepend)) - ("^Only in .*\n" . diff-nonexistent-face) + (0 diff-header) (1 diff-index prepend)) + ("^Only in .*\n" . diff-nonexistent) ("^\\(#\\)\\(.*\\)" (1 font-lock-comment-delimiter-face) (2 font-lock-comment-face)) - ("^[^-=+*!<>#].*\n" (0 diff-context-face)))) + ("^[^-=+*!<>#].*\n" (0 diff-context)))) (defconst diff-font-lock-defaults '(diff-font-lock-keywords t nil nil nil (font-lock-multiline . nil))) @@ -820,7 +800,7 @@ If the OLD prefix arg is passed, tell the file NAME of the old file." (error (point-min))))) (header-files ;; handle filenames with spaces; - ;; cf. diff-font-lock-keywords / diff-file-header-face + ;; cf. diff-font-lock-keywords / diff-file-header (if (looking-at "[-*][-*][-*] \\([^\t\n]+\\).*\n[-+][-+][-+] \\([^\t\n]+\\)") (list (if old (match-string 1) (match-string 2)) (if old (match-string 2) (match-string 1))) @@ -1936,11 +1916,10 @@ For use in `add-log-current-defun-function'." (t :inverse-video t)) "Face used for char-based changes shown by `diff-refine-hunk'." :group 'diff-mode) -(define-obsolete-face-alias 'diff-refine-change 'diff-refine-changed "24.5") (defface diff-refine-removed '((default - :inherit diff-refine-change) + :inherit diff-refine-changed) (((class color) (min-colors 88) (background light)) :background "#ffbbbb") (((class color) (min-colors 88) (background dark)) @@ -1951,7 +1930,7 @@ For use in `add-log-current-defun-function'." (defface diff-refine-added '((default - :inherit diff-refine-change) + :inherit diff-refine-changed) (((class color) (min-colors 88) (background light)) :background "#aaffaa") (((class color) (min-colors 88) (background dark)) @@ -1984,7 +1963,7 @@ For use in `add-log-current-defun-function'." (let* ((start (point)) (style (diff-hunk-style)) ;Skips the hunk header as well. (beg (point)) - (props-c '((diff-mode . fine) (face diff-refine-change))) + (props-c '((diff-mode . fine) (face diff-refine-changed))) (props-r '((diff-mode . fine) (face diff-refine-removed))) (props-a '((diff-mode . fine) (face diff-refine-added))) ;; Be careful to go back to `start' so diff-end-of-hunk gets diff --git a/lisp/vc/log-view.el b/lisp/vc/log-view.el index 63d5003..c77770b 100644 --- a/lisp/vc/log-view.el +++ b/lisp/vc/log-view.el @@ -200,8 +200,6 @@ If it is nil, `log-view-toggle-entry-display' does nothing.") (t (:weight bold))) "Face for the file header line in `log-view-mode'." :group 'log-view) -(define-obsolete-face-alias 'log-view-file-face 'log-view-file "22.1") -(defvar log-view-file-face 'log-view-file) (defface log-view-message '((((class color) (background light)) @@ -209,9 +207,6 @@ If it is nil, `log-view-toggle-entry-display' does nothing.") (t (:weight bold))) "Face for the message header line in `log-view-mode'." :group 'log-view) -;; backward-compatibility alias -(define-obsolete-face-alias 'log-view-message-face 'log-view-message "22.1") -(defvar log-view-message-face 'log-view-message) (defvar log-view-file-re (concat "^\\(?:Working file: \\(?1:.+\\)" ;RCS and CVS. @@ -246,8 +241,8 @@ The match group number 1 should match the revision number itself.") ;; and log-view-message-re, if applicable. '((eval . `(,log-view-file-re (1 (if (boundp 'cvs-filename-face) cvs-filename-face)) - (0 log-view-file-face append))) - (eval . `(,log-view-message-re . log-view-message-face)))) + (0 log-view-file append))) + (eval . `(,log-view-message-re . log-view-message)))) (defconst log-view-font-lock-defaults '(log-view-font-lock-keywords t nil nil nil)) diff --git a/lisp/vc/pcvs-info.el b/lisp/vc/pcvs-info.el index b9ecc89..6bb1370 100644 --- a/lisp/vc/pcvs-info.el +++ b/lisp/vc/pcvs-info.el @@ -69,7 +69,6 @@ to confuse some users sometimes." (t (:weight bold))) "PCL-CVS face used to highlight directory changes." :group 'pcl-cvs) -(define-obsolete-face-alias 'cvs-header-face 'cvs-header "22.1") (defface cvs-filename '((((class color) (background dark)) @@ -79,7 +78,6 @@ to confuse some users sometimes." (t ())) "PCL-CVS face used to highlight file names." :group 'pcl-cvs) -(define-obsolete-face-alias 'cvs-filename-face 'cvs-filename "22.1") (defface cvs-unknown '((((class color) (background dark)) @@ -89,7 +87,6 @@ to confuse some users sometimes." (t (:slant italic))) "PCL-CVS face used to highlight unknown file status." :group 'pcl-cvs) -(define-obsolete-face-alias 'cvs-unknown-face 'cvs-unknown "22.1") (defface cvs-handled '((((class color) (background dark)) @@ -99,7 +96,6 @@ to confuse some users sometimes." (t ())) "PCL-CVS face used to highlight handled file status." :group 'pcl-cvs) -(define-obsolete-face-alias 'cvs-handled-face 'cvs-handled "22.1") (defface cvs-need-action '((((class color) (background dark)) @@ -109,7 +105,6 @@ to confuse some users sometimes." (t (:slant italic))) "PCL-CVS face used to highlight status of files needing action." :group 'pcl-cvs) -(define-obsolete-face-alias 'cvs-need-action-face 'cvs-need-action "22.1") (defface cvs-marked '((((min-colors 88) (class color) (background dark)) @@ -121,13 +116,11 @@ to confuse some users sometimes." (t (:weight bold))) "PCL-CVS face used to highlight marked file indicator." :group 'pcl-cvs) -(define-obsolete-face-alias 'cvs-marked-face 'cvs-marked "22.1") (defface cvs-msg '((t :slant italic)) "PCL-CVS face used to highlight CVS messages." :group 'pcl-cvs) -(define-obsolete-face-alias 'cvs-msg-face 'cvs-msg "22.1") (defvar cvs-fi-up-to-date-face 'cvs-handled) (defvar cvs-fi-unknown-face 'cvs-unknown) diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el index 4ec14d6..10b1045 100644 --- a/lisp/wid-edit.el +++ b/lisp/wid-edit.el @@ -102,8 +102,6 @@ This exists as a variable so it can be set locally in certain buffers.") "Face used for documentation text." :group 'widget-documentation :group 'widget-faces) -(define-obsolete-face-alias 'widget-documentation-face - 'widget-documentation "22.1") (defvar widget-button-face 'widget-button "Face used for buttons in widgets. @@ -112,7 +110,6 @@ This exists as a variable so it can be set locally in certain buffers.") (defface widget-button '((t (:weight bold))) "Face used for widget buttons." :group 'widget-faces) -(define-obsolete-face-alias 'widget-button-face 'widget-button "22.1") (defcustom widget-mouse-face 'highlight "Face used for widget buttons when the mouse is above them." @@ -135,7 +132,6 @@ This exists as a variable so it can be set locally in certain buffers.") :slant italic)) "Face used for editable fields." :group 'widget-faces) -(define-obsolete-face-alias 'widget-field-face 'widget-field "22.1") (defface widget-single-line-field '((((type tty)) :background "green3" @@ -150,8 +146,6 @@ This exists as a variable so it can be set locally in certain buffers.") :slant italic)) "Face used for editable fields spanning only a single line." :group 'widget-faces) -(define-obsolete-face-alias 'widget-single-line-field-face - 'widget-single-line-field "22.1") ;;; This causes display-table to be loaded, and not usefully. ;;;(defvar widget-single-line-display-table @@ -427,8 +421,6 @@ the :notify function can't know the new value.") '((t :inherit shadow)) "Face used for inactive widgets." :group 'widget-faces) -(define-obsolete-face-alias 'widget-inactive-face - 'widget-inactive "22.1") (defun widget-specify-inactive (widget from to) "Make WIDGET inactive for user modifications." @@ -905,8 +897,6 @@ Note that such modes will need to require wid-edit.") (:weight bold :underline t))) "Face used for pressed buttons." :group 'widget-faces) -(define-obsolete-face-alias 'widget-button-pressed-face - 'widget-button-pressed "22.1") (defvar widget-button-click-moves-point nil "If non-nil, `widget-button-click' moves point to a button after invoking it. diff --git a/lisp/woman.el b/lisp/woman.el index a4a0da2..8189f08 100644 --- a/lisp/woman.el +++ b/lisp/woman.el @@ -926,25 +926,21 @@ or different fonts." '((t :inherit italic)) "Face for italic font in man pages." :group 'woman-faces) -(define-obsolete-face-alias 'woman-italic-face 'woman-italic "22.1") (defface woman-bold '((t :inherit bold)) "Face for bold font in man pages." :group 'woman-faces) -(define-obsolete-face-alias 'woman-bold-face 'woman-bold "22.1") (defface woman-unknown '((t :inherit font-lock-warning-face)) "Face for all unknown fonts in man pages." :group 'woman-faces) -(define-obsolete-face-alias 'woman-unknown-face 'woman-unknown "22.1") (defface woman-addition '((t :inherit font-lock-builtin-face)) "Face for all WoMan additions to man pages." :group 'woman-faces) -(define-obsolete-face-alias 'woman-addition-face 'woman-addition "22.1") (defun woman-default-faces () "Set foreground colors of italic and bold faces to their default values." commit 037f82a7e72fa7bdc7b1d507f9b760884aecf2f0 Author: Eli Zaretskii Date: Thu Jun 23 22:44:08 2016 +0300 * lisp/international/characters.el (standard-case-table): Improve last change. diff --git a/lisp/international/characters.el b/lisp/international/characters.el index ad9432c..1757d2b 100644 --- a/lisp/international/characters.el +++ b/lisp/international/characters.el @@ -623,21 +623,19 @@ with L, LRE, or LRO Unicode bidi character type.") (set-case-syntax-pair ?Ʊ ?ʊ tbl) (set-case-syntax-pair ?Ʋ ?ʋ tbl) (set-case-syntax-pair ?Ʒ ?ʒ tbl) - ;; The order of the next 6 lines is important, since we want - ;; upcase of dž return DŽ, not Dž, and the same for the rest. - (set-case-syntax-pair ?Dž ?dž tbl) + ;; We use set-downcase-syntax below, since we want upcase of dž + ;; return DŽ, not Dž, and the same for the rest. (set-case-syntax-pair ?DŽ ?dž tbl) - (set-case-syntax-pair ?Lj ?lj tbl) + (set-downcase-syntax ?Dž ?dž tbl) (set-case-syntax-pair ?LJ ?lj tbl) - (set-case-syntax-pair ?Nj ?nj tbl) + (set-downcase-syntax ?Lj ?lj tbl) (set-case-syntax-pair ?NJ ?nj tbl) + (set-downcase-syntax ?Nj ?nj tbl) ;; 01F0; F; 006A 030C; # LATIN SMALL LETTER J WITH CARON - ;; The order of the next two lines is important, since we want - ;; upcase of dz return DZ, not Dz. - (set-case-syntax-pair ?Dz ?dz tbl) (set-case-syntax-pair ?DZ ?dz tbl) + (set-downcase-syntax ?Dz ?dz tbl) (set-case-syntax-pair ?Ƕ ?ƕ tbl) (set-case-syntax-pair ?Ƿ ?ƿ tbl) (set-case-syntax-pair ?Ⱥ ?ⱥ tbl) commit 92289cec7c460a2e7042bf0a450b86bbaac601d5 Author: Eli Zaretskii Date: Thu Jun 23 22:22:39 2016 +0300 Improve results of 'upcase' for characters with title-case * lisp/international/characters.el (standard-case-table): Swap the order of some lines, to have 'upcase' return the upper-case variant, not the title-case, for some characters whose lower-case map to the same codepoints. (Bug#23833) diff --git a/lisp/international/characters.el b/lisp/international/characters.el index 371f698..ad9432c 100644 --- a/lisp/international/characters.el +++ b/lisp/international/characters.el @@ -623,16 +623,21 @@ with L, LRE, or LRO Unicode bidi character type.") (set-case-syntax-pair ?Ʊ ?ʊ tbl) (set-case-syntax-pair ?Ʋ ?ʋ tbl) (set-case-syntax-pair ?Ʒ ?ʒ tbl) - (set-case-syntax-pair ?DŽ ?dž tbl) + ;; The order of the next 6 lines is important, since we want + ;; upcase of dž return DŽ, not Dž, and the same for the rest. (set-case-syntax-pair ?Dž ?dž tbl) - (set-case-syntax-pair ?LJ ?lj tbl) + (set-case-syntax-pair ?DŽ ?dž tbl) (set-case-syntax-pair ?Lj ?lj tbl) - (set-case-syntax-pair ?NJ ?nj tbl) + (set-case-syntax-pair ?LJ ?lj tbl) (set-case-syntax-pair ?Nj ?nj tbl) + (set-case-syntax-pair ?NJ ?nj tbl) ;; 01F0; F; 006A 030C; # LATIN SMALL LETTER J WITH CARON - (set-case-syntax-pair ?DZ ?dz tbl) + + ;; The order of the next two lines is important, since we want + ;; upcase of dz return DZ, not Dz. (set-case-syntax-pair ?Dz ?dz tbl) + (set-case-syntax-pair ?DZ ?dz tbl) (set-case-syntax-pair ?Ƕ ?ƕ tbl) (set-case-syntax-pair ?Ƿ ?ƿ tbl) (set-case-syntax-pair ?Ⱥ ?ⱥ tbl) commit 7a20ebe5ca884954e34c5129f70c211fef266369 Author: Alan Mackenzie Date: Thu Jun 23 16:12:45 2016 +0000 Make typing into incomplete C++ raw strings work, and make it work fast enough * lisp/progmodes/cc-engine.el (c-beginning-of-macro, c-state-pp-to-literal): Put `save-match-data' around calls to `looking-at' to enable the use of the match data in higher level functions. * lisp/progmodes/cc-fonts.el (c-font-lock-declarations) (c-font-lock-cut-off-declarators): Use `limit' rather than `(point-max)' as a limit to speed up handling of C++ raw strings. diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index 595d577..5fa0403 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el @@ -305,7 +305,7 @@ comment at the start of cc-engine.el for more info." (forward-line -1)) (back-to-indentation) (if (and (<= (point) here) - (looking-at c-opt-cpp-start) + (save-match-data (looking-at c-opt-cpp-start)) (c-macro-is-genuine-p)) (progn (setq c-macro-cache (cons (point) nil) @@ -2304,32 +2304,33 @@ comment at the start of cc-engine.el for more info." ;; 7 (comment type) and 8 (start of comment/string) (and possibly 9) of ;; STATE are valid. (save-excursion - (let ((s (parse-partial-sexp from to)) - ty co-st) - (cond - ((or (nth 3 s) (nth 4 s)) ; in a string or comment - (setq ty (cond - ((nth 3 s) 'string) - ((nth 7 s) 'c++) - (t 'c))) - (parse-partial-sexp (point) (point-max) - nil ; TARGETDEPTH - nil ; STOPBEFORE - s ; OLDSTATE - 'syntax-table) ; stop at end of literal - `(,s ,ty (,(nth 8 s) . ,(point)))) - - ((and (not not-in-delimiter) ; inside a comment starter - (not (bobp)) - (progn (backward-char) - (and (not (looking-at "\\s!")) - (looking-at c-comment-start-regexp)))) - (setq ty (if (looking-at c-block-comment-start-regexp) 'c 'c++) - co-st (point)) - (forward-comment 1) - `(,s ,ty (,co-st . ,(point)))) - - (t `(,s)))))) + (save-match-data + (let ((s (parse-partial-sexp from to)) + ty co-st) + (cond + ((or (nth 3 s) (nth 4 s)) ; in a string or comment + (setq ty (cond + ((nth 3 s) 'string) + ((nth 7 s) 'c++) + (t 'c))) + (parse-partial-sexp (point) (point-max) + nil ; TARGETDEPTH + nil ; STOPBEFORE + s ; OLDSTATE + 'syntax-table) ; stop at end of literal + `(,s ,ty (,(nth 8 s) . ,(point)))) + + ((and (not not-in-delimiter) ; inside a comment starter + (not (bobp)) + (progn (backward-char) + (and (not (looking-at "\\s!")) + (looking-at c-comment-start-regexp)))) + (setq ty (if (looking-at c-block-comment-start-regexp) 'c 'c++) + co-st (point)) + (forward-comment 1) + `(,s ,ty (,co-st . ,(point)))) + + (t `(,s))))))) (defun c-state-safe-place (here) ;; Return a buffer position before HERE which is "safe", i.e. outside any diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el index 65ec5c3..3a8c9ec 100644 --- a/lisp/progmodes/cc-fonts.el +++ b/lisp/progmodes/cc-fonts.el @@ -1396,7 +1396,7 @@ casts and declarations are fontified. Used on level 2 and higher." 'c-decl-id-start))))) (c-font-lock-declarators - (point-max) decl-list (cadr decl-or-cast))) + (min limit (point-max)) decl-list (cadr decl-or-cast))) ;; A declaration has been successfully identified, so do all the ;; fontification of types and refs that've been recorded. @@ -1542,7 +1542,7 @@ casts and declarations are fontified. Used on level 2 and higher." (c-forward-syntactic-ws)) ;; At a real declaration? (if (memq (c-forward-type t) '(t known found decltype)) - (c-font-lock-declarators (point-max) t is-typedef))) + (c-font-lock-declarators limit t is-typedef))) nil))))) (defun c-font-lock-enclosing-decls (limit) commit 4395aaacd4195d3a5cca9df66cfea13380414a37 Author: Eli Zaretskii Date: Thu Jun 23 18:09:14 2016 +0300 Fix documentation of 'assoc-string' and 'compare-strings' * src/minibuf.c (Fassoc_string): Clarify how CASE-FOLD affects the string comparison. (Bug#23833) * src/fns.c (Fcompare_strings): Fix the description of how IGNORE-CASE affects the comparison. * doc/lispref/strings.texi (Text Comparison): Clarify how CASE-FOLD affects the string comparison in 'assoc-string'. Fix the description of how IGNORE-CASE affects the comparison in 'compare-strings'. diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi index c6563f7..ca700a2 100644 --- a/doc/lispref/strings.texi +++ b/doc/lispref/strings.texi @@ -660,7 +660,7 @@ The strings are compared by the numeric values of their characters. For instance, @var{str1} is considered less than @var{str2} if its first differing character has a smaller numeric value. If @var{ignore-case} is non-@code{nil}, characters are converted to -lower-case before comparing them. Unibyte strings are converted to +upper-case before comparing them. Unibyte strings are converted to multibyte for comparison (@pxref{Text Representations}), so that a unibyte string and its conversion to multibyte are always regarded as equal. @@ -677,7 +677,8 @@ specified portion) is less. This function works like @code{assoc}, except that @var{key} must be a string or symbol, and comparison is done using @code{compare-strings}. Symbols are converted to strings before testing. -If @var{case-fold} is non-@code{nil}, it ignores case differences. +If @var{case-fold} is non-@code{nil}, @var{key} and the elements of +@var{alist} are converted to upper-case before comparison. Unlike @code{assoc}, this function can also match elements of the alist that are strings or symbols rather than conses. In particular, @var{alist} can be a list of strings or symbols rather than an actual alist. diff --git a/src/fns.c b/src/fns.c index ef6055c..1f16193 100644 --- a/src/fns.c +++ b/src/fns.c @@ -224,7 +224,7 @@ Like in `substring', negative values are counted from the end. The strings are compared by the numeric values of their characters. For instance, STR1 is "less than" STR2 if its first differing character has a smaller numeric value. If IGNORE-CASE is non-nil, -characters are converted to lower-case before comparing them. Unibyte +characters are converted to upper-case before comparing them. Unibyte strings are converted to multibyte for comparison. The value is t if the strings (or specified portions) match. diff --git a/src/minibuf.c b/src/minibuf.c index d85a7a9..3d34635 100644 --- a/src/minibuf.c +++ b/src/minibuf.c @@ -1817,8 +1817,8 @@ DEFUN ("assoc-string", Fassoc_string, Sassoc_string, 2, 3, 0, This returns the first element of LIST whose car matches the string or symbol KEY, or nil if no match exists. When performing the comparison, symbols are first converted to strings, and unibyte -strings to multibyte. If the optional arg CASE-FOLD is non-nil, case -is ignored. +strings to multibyte. If the optional arg CASE-FOLD is non-nil, both +KEY and the elements of LIST are upcased for comparison. Unlike `assoc', KEY can also match an entry in LIST consisting of a single string, rather than a cons cell whose car is a string. */) commit 11a17619737b16d10bfad03b52097943eebc517f Author: Eli Zaretskii Date: Thu Jun 23 17:32:01 2016 +0300 Fix handling of LWINDOW key on MS-Windows * src/w32fns.c (funhook): Correct a typo which broke handling of the LWINDOW key. (Bug#23830) diff --git a/src/w32fns.c b/src/w32fns.c index 5ad2ca8..20e09d8 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -2178,7 +2178,7 @@ funhook (int code, WPARAM w, LPARAM l) can prevent this by setting the w32-pass-[lr]window-to-system variable to NIL. */ - if (hs->vkCode == (VK_LWIN && !NILP (Vw32_pass_lwindow_to_system)) || + if ((hs->vkCode == VK_LWIN && !NILP (Vw32_pass_lwindow_to_system)) || (hs->vkCode == VK_RWIN && !NILP (Vw32_pass_rwindow_to_system))) { /* Not prevented - Simulate the keypress to the system. */ commit ab0ebb93a9c69f4a0cc475ed899f8cabb64852c0 Author: Phillip Lord Date: Wed Jun 22 21:59:51 2016 +0100 ; Only load .elc file in tests. * test/automated/viper-tests.el (viper-test-undo-kmacro): Ensure that empty load file ends with .elc extension. diff --git a/test/automated/viper-tests.el b/test/automated/viper-tests.el index 074dd63..0d6095b 100644 --- a/test/automated/viper-tests.el +++ b/test/automated/viper-tests.el @@ -38,7 +38,7 @@ after itself, although it will leave a buffer called ;; Select an expert-level for the same reason. (viper-expert-level 5) ;; viper loads this even with -q so make sure it's empty! - (viper-custom-file-name (make-temp-file "viper-tests")) + (viper-custom-file-name (make-temp-file "viper-tests" nil ".elc")) (before-buffer (current-buffer))) (unwind-protect (progn commit a98aa02a5dbf079f7b4f3be5487a2f2b741d103d Author: Dmitry Gutov Date: Wed Jun 22 21:20:06 2016 +0300 Error on multibyte characters in HTTP request * lisp/url/url-http.el (url-http-create-request): Check the constructed request in the end to verify that it does not contain multibyte characters (bug#23750). diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el index 5832e92..7156e6f 100644 --- a/lisp/url/url-http.el +++ b/lisp/url/url-http.el @@ -275,19 +275,7 @@ request.") ;; allows us to elide null lines directly, at the cost of making ;; the layout less clear. (setq request - ;; We used to concat directly, but if one of the strings happens - ;; to being multibyte (even if it only contains pure ASCII) then - ;; every string gets converted with `string-MAKE-multibyte' which - ;; turns the 127-255 codes into things like latin-1 accented chars - ;; (it would work right if it used `string-TO-multibyte' instead). - ;; So to avoid the problem we force every string to be unibyte. - (mapconcat - ;; FIXME: Instead of `string-AS-unibyte' we'd want - ;; `string-to-unibyte', so as to properly signal an error if one - ;; of the strings contains a multibyte char. - 'string-as-unibyte - (delq nil - (list + (concat ;; The request (or url-http-method "GET") " " (if using-proxy (url-recreate-url url-http-target-url) real-fname) @@ -365,7 +353,10 @@ request.") "\r\n" ;; Any data url-http-data)) - "")) + ;; Bug#23750 + (unless (= (string-bytes request) + (length request)) + (error "Multibyte text in HTTP request: %s" request)) (url-http-debug "Request is: \n%s" request) request)) commit 07a986ea7e0f6310e4452aaaeb8c80a02cc6a82d Author: Dmitry Gutov Date: Wed Jun 22 21:10:11 2016 +0300 ; Revert "Prohibit multibyte characters in url-http-data" This reverts commit 2ede29575fa22eb7c265117d7511cff9fe02c606. In favor of a better solution to be pushed to emacs-25. diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el index 0e6f5d3..306b36a 100644 --- a/lisp/url/url-http.el +++ b/lisp/url/url-http.el @@ -310,10 +310,14 @@ The string is based on `url-privacy-level' and `url-user-agent'." ;; We used to concat directly, but if one of the strings happens ;; to being multibyte (even if it only contains pure ASCII) then ;; every string gets converted with `string-MAKE-multibyte' which - ;; turns the 127-255 codes into things like latin-1 accented chars. + ;; turns the 127-255 codes into things like latin-1 accented chars + ;; (it would work right if it used `string-TO-multibyte' instead). ;; So to avoid the problem we force every string to be unibyte. (mapconcat - 'string-to-unibyte + ;; FIXME: Instead of `string-AS-unibyte' we'd want + ;; `string-to-unibyte', so as to properly signal an error if one + ;; of the strings contains a multibyte char. + 'string-as-unibyte (delq nil (list ;; The request commit a74683f11603e52350ce49d1d3fe79971357713b Author: Eli Zaretskii Date: Wed Jun 22 19:52:49 2016 +0300 Update Unicode data files from Unicode 9.0.0 * admin/unidata/copyright.html: * admin/unidata/BidiBrackets.txt: * admin/unidata/UnicodeData.txt: Update from Unicode 9.0.0, just released. diff --git a/admin/unidata/BidiBrackets.txt b/admin/unidata/BidiBrackets.txt index a3a4941..eb02a24 100644 --- a/admin/unidata/BidiBrackets.txt +++ b/admin/unidata/BidiBrackets.txt @@ -1,6 +1,7 @@ # BidiBrackets-9.0.0.txt -# Date: 2016-01-21, 22:00:00 GMT [AG, LI, KW] +# Date: 2016-06-07, 22:30:00 GMT [AG, LI, KW] # © 2016 Unicode®, Inc. +# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. # For terms of use, see http://www.unicode.org/terms_of_use.html # # Unicode Character Database @@ -28,6 +29,12 @@ # vice versa, and their Bidi_Paired_Bracket_Type (bpt) property values are # Open (o) and Close (c), respectively. # +# The brackets with ticks U+298D LEFT SQUARE BRACKET WITH TICK IN TOP CORNER +# through U+2990 RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER are paired the +# same way their glyphs form mirror pairs, according to their bmg property +# values. They are not paired on the basis of a diagonal or antidiagonal +# matching of the corner ticks inferred from code point order. +# # For legacy reasons, the characters U+FD3E ORNATE LEFT PARENTHESIS and # U+FD3F ORNATE RIGHT PARENTHESIS do not mirror in bidirectional display # and therefore do not form a bracket pair. diff --git a/admin/unidata/UnicodeData.txt b/admin/unidata/UnicodeData.txt index caf087b..a756976 100644 --- a/admin/unidata/UnicodeData.txt +++ b/admin/unidata/UnicodeData.txt @@ -20179,10 +20179,10 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 11C34;BHAIKSUKI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; 11C35;BHAIKSUKI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; 11C36;BHAIKSUKI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -11C38;BHAIKSUKI VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -11C39;BHAIKSUKI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -11C3A;BHAIKSUKI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -11C3B;BHAIKSUKI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; +11C38;BHAIKSUKI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; +11C39;BHAIKSUKI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; +11C3A;BHAIKSUKI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; +11C3B;BHAIKSUKI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; 11C3C;BHAIKSUKI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; 11C3D;BHAIKSUKI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; 11C3E;BHAIKSUKI SIGN VISARGA;Mc;0;L;;;;;N;;;;; diff --git a/admin/unidata/copyright.html b/admin/unidata/copyright.html index 966ad1e..85bbf50 100644 --- a/admin/unidata/copyright.html +++ b/admin/unidata/copyright.html @@ -76,7 +76,7 @@ Miscellaneous - Data Files and + Data Files and Software License Agreement (Exhibit 1) @@ -108,7 +108,7 @@
-

Unicode Terms of Use

+

Unicode® Terms of Use

For the general privacy policy governing access to this site, see the  @@ -131,7 +131,7 @@

  1. Unicode Copyright.
      -
    1. Copyright © 1991-2014 Unicode, Inc. All rights reserved.
    2. +
    3. Copyright © 1991-2016 Unicode, Inc. All rights reserved.
    4. Certain documents and files on this website contain a legend indicating that "Modification is permitted." Any person is hereby authorized, without fee, to modify such documents and @@ -139,13 +139,13 @@ Standard, subject to Terms and Conditions herein.
    5. Any person is hereby authorized, without fee, to view, use, reproduce, and distribute all documents and files solely for - informational purposes in the creation of products supporting + informational purposes and in the creation of products supporting the Unicode Standard, subject to the Terms and Conditions herein.
    6. Further specifications of rights and restrictions pertaining to the use of the particular set of data files known as the - "Unicode Character Database" can be found in - Exhibit 1.
    7. + "Unicode Character Database" can be found in the + License.
    8. Each version of the Unicode Standard has further specifications of rights and restrictions of use. For the book editions (Unicode 5.0 and earlier), these are found on the back @@ -247,35 +247,35 @@

      EXHIBIT 1
      -UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE

      +UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE +
      +Unicode Data Files include all data files under the directories
      +http://www.unicode.org/Public/, http://www.unicode.org/reports/,
      +http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and
      +http://www.unicode.org/utility/trac/browser/.
       
      -

      Unicode Data Files include all data files under the directories -http://www.unicode.org/Public/, http://www.unicode.org/reports/, and -http://www.unicode.org/cldr/data/. Unicode Data Files do not include PDF online code charts under the -directory http://www.unicode.org/Public/. +directory http://www.unicode.org/Public/. + Software includes any source code published in the Unicode Standard -or under the directories http://www.unicode.org/Public/, -http://www.unicode.org/reports/, and -http://www.unicode.org/cldr/data/.

      +or under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, +http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and +http://www.unicode.org/utility/trac/browser/. -

      NOTICE TO USER: Carefully read the following legal agreement. +NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE -THE DATA FILES OR SOFTWARE.

      - -
      +THE DATA FILES OR SOFTWARE. -
      -
      COPYRIGHT AND PERMISSION NOTICE
      +COPYRIGHT AND PERMISSION NOTICE
       
      -Copyright © 1991-2014 Unicode, Inc. All rights reserved.
      -Distributed under the Terms of Use in 
      -http://www.unicode.org/copyright.html.
      +Copyright © 1991-2016 Unicode, Inc. All rights reserved.
      +Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
       
       Permission is hereby granted, free of charge, to any person obtaining
       a copy of the Unicode data files and any associated documentation
      @@ -284,14 +284,11 @@ 

      EXHIBIT 1
      without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files -or Software are furnished to do so, provided that -(a) this copyright and permission notice appear with all copies -of the Data Files or Software, -(b) this copyright and permission notice appear in associated -documentation, and -(c) there is clear notice in each modified Data File or in the Software -as well as in the documentation associated with the Data File(s) or -Software that the data or software has been modified. +or Software are furnished to do so, provided that either +(a) this copyright and permission notice appear with all copies +of the Data Files or Software, or +(b) this copyright and permission notice appear in associated +Documentation. THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE @@ -307,10 +304,8 @@

      EXHIBIT 1
      Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior -written authorization of the copyright holder.

      -
      -
      - +written authorization of the copyright holder. +
      commit cc113e557d56d849e9699ceb3bc4a735c628b46e Author: Eli Zaretskii Date: Wed Jun 22 18:55:14 2016 +0300 Fix test for whether the '.el' file is newer than '.elc' * src/lread.c (Fload): Don't overwrite the last character of the file name in FOUND with 'c', unless the file name ended in ".elc" to begin with. Don't treat empty files as byte-compiled. See http://lists.gnu.org/archive/html/emacs-devel/2016-06/msg00463.html for more details of the problem this caused. diff --git a/src/lread.c b/src/lread.c index 9f804ac..5c47f78 100644 --- a/src/lread.c +++ b/src/lread.c @@ -1204,7 +1204,11 @@ Return t if the file exists and loads successfully. */) specbind (Qold_style_backquotes, Qnil); record_unwind_protect (load_warn_old_style_backquotes, file); - if (suffix_p (found, ".elc") || (fd >= 0 && (version = safe_to_load_version (fd)) > 0)) + int is_elc; + if ((is_elc = suffix_p (found, ".elc")) != 0 + /* version = 1 means the file is empty, in which case we can + treat it as not byte-compiled. */ + || (fd >= 0 && (version = safe_to_load_version (fd)) > 1)) /* Load .elc files directly, but not when they are remote and have no handler! */ { @@ -1231,7 +1235,7 @@ Return t if the file exists and loads successfully. */) /* openp already checked for newness, no point doing it again. FIXME would be nice to get a message when openp ignores suffix order due to load_prefer_newer. */ - if (!load_prefer_newer) + if (!load_prefer_newer && is_elc) { result = stat (SSDATA (efound), &s1); if (result == 0) commit 791193d309a0e8f60c3cdae2941c718d07411159 Author: Eli Zaretskii Date: Wed Jun 22 18:41:13 2016 +0300 Fix 'insert-file-contents' when REPLACE is non-nil * src/fileio.c (maybe_move_gap): New function to move the gap to the end of a buffer, if it isn't there already. (Finsert_file_contents): Call 'maybe_move_gap' before using conversion_buffer's text as a C 'char' array. (Bug#23659) * src/coding.c (decode_eol): Compute the byte increment before calling del_range_2, because the latter can invalidate the pointer to buffer text. diff --git a/src/coding.c b/src/coding.c index 804b628..29c90f0 100644 --- a/src/coding.c +++ b/src/coding.c @@ -6826,7 +6826,14 @@ decode_eol (struct coding_system *coding) while (pos_byte < pos_end) { + int incr; + p = BYTE_POS_ADDR (pos_byte); + if (coding->dst_multibyte) + incr = BYTES_BY_CHAR_HEAD (*p); + else + incr = 1; + if (*p == '\r' && p[1] == '\n') { del_range_2 (pos, pos_byte, pos + 1, pos_byte + 1, 0); @@ -6834,10 +6841,7 @@ decode_eol (struct coding_system *coding) pos_end--; } pos++; - if (coding->dst_multibyte) - pos_byte += BYTES_BY_CHAR_HEAD (*p); - else - pos_byte++; + pos_byte += incr; } coding->produced -= n; coding->produced_char -= n; diff --git a/src/fileio.c b/src/fileio.c index facc4be..b1f9d3c 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -3359,6 +3359,21 @@ restore_window_points (Lisp_Object window_markers, ptrdiff_t inserted, } } +/* Make sure the gap is at Z_BYTE. This is required to treat buffer + text as a linear C char array. */ +static void +maybe_move_gap (struct buffer *b) +{ + if (BUF_GPT_BYTE (b) != BUF_Z_BYTE (b)) + { + struct buffer *cb = current_buffer; + + set_buffer_internal (b); + move_gap_both (Z, Z_BYTE); + set_buffer_internal (cb); + } +} + /* FIXME: insert-file-contents should be split with the top-level moved to Elisp and only the core kept in C. */ @@ -3942,6 +3957,7 @@ by calling `format-decode', which see. */) coding_system = CODING_ID_NAME (coding.id); set_coding_system = true; + maybe_move_gap (XBUFFER (conversion_buffer)); decoded = BUF_BEG_ADDR (XBUFFER (conversion_buffer)); inserted = (BUF_Z_BYTE (XBUFFER (conversion_buffer)) - BUF_BEG_BYTE (XBUFFER (conversion_buffer))); commit bbc58feac57d070a3b645b7a132ee3f3624b6ddd Author: Ken Brown Date: Wed Jun 22 10:04:44 2016 -0400 Avoid compiler warning * src/w32fns.c (Fx_show_tip): Don’t jump over auto initialization. diff --git a/src/w32fns.c b/src/w32fns.c index 02bd4d5..5ad2ca8 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -6898,6 +6898,7 @@ Text larger than the specified size is clipped. */) ptrdiff_t count = SPECPDL_INDEX (); ptrdiff_t count_1; Lisp_Object window, size; + AUTO_STRING (tip, " *tip*"); specbind (Qinhibit_redisplay, Qt); @@ -7054,7 +7055,6 @@ Text larger than the specified size is clipped. */) tip_f = XFRAME (tip_frame); window = FRAME_ROOT_WINDOW (tip_f); - AUTO_STRING (tip, " *tip*"); set_window_buffer (window, Fget_buffer_create (tip), false, false); w = XWINDOW (window); w->pseudo_window_p = true; commit 8270a64d530212002dfdb39f4504c07100425bfb Author: Stefan Monnier Date: Wed Jun 22 09:44:24 2016 -0400 * lisp/emacs-lisp/syntax.el (syntax-propertize): Flush extended region. diff --git a/lisp/emacs-lisp/syntax.el b/lisp/emacs-lisp/syntax.el index 31fc67e..ac509b3 100644 --- a/lisp/emacs-lisp/syntax.el +++ b/lisp/emacs-lisp/syntax.el @@ -316,6 +316,9 @@ END) suitable for `syntax-propertize-function'." (unless (eq funs (cdr syntax-propertize-extend-region-functions)) (setq funs syntax-propertize-extend-region-functions))))) + ;; Flush ppss cache between the original value of `start' and that + ;; set above by syntax-propertize-extend-region-functions. + (syntax-ppss-flush-cache start) ;; Move the limit before calling the function, so the function ;; can use syntax-ppss. (setq syntax-propertize--done end) commit 81fc9a7c28f5f120fc0e4a121902475bd5c2bfeb Author: Ken Brown Date: Wed Jun 22 09:31:31 2016 -0400 Fix last change to FRAME_INTERNAL_BORDER_WIDTH * src/w32fns.c (x_set_internal_border_width): Don’t use FRAME_INTERNAL_BORDER_WIDTH(), which is now a function call, as an lvalue. diff --git a/src/w32fns.c b/src/w32fns.c index bc9c747..02bd4d5 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -1658,7 +1658,7 @@ x_set_internal_border_width (struct frame *f, Lisp_Object arg, Lisp_Object oldva if (border != FRAME_INTERNAL_BORDER_WIDTH (f)) { - FRAME_INTERNAL_BORDER_WIDTH (f) = border; + f->internal_border_width = border; if (FRAME_X_WINDOW (f) != 0) { commit ea512a7c2cd30206dd509b193c9faaba25640180 Author: Katsumi Yamaoka Date: Wed Jun 22 10:32:56 2016 +0000 * lisp/gnus/mm-decode.el (mm-convert-shr-links): Mask keys that launch `widget-button-click' (bug#22157). diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el index 3ea63c7..bb8e203 100644 --- a/lisp/gnus/mm-decode.el +++ b/lisp/gnus/mm-decode.el @@ -1896,10 +1896,11 @@ If RECURSIVE, search recursively." (defvar shr-map) (autoload 'widget-convert-button "wid-edit") +(defvar widget-keymap) (defun mm-convert-shr-links () (let ((start (point-min)) - end) + end keymap) (while (and start (< start (point-max))) (when (setq start (text-property-not-all start (point-max) 'shr-url nil)) @@ -1907,9 +1908,16 @@ If RECURSIVE, search recursively." (widget-convert-button 'url-link start end :help-echo (get-text-property start 'help-echo) - :keymap shr-map + :keymap (setq keymap (copy-keymap shr-map)) (get-text-property start 'shr-url)) - (put-text-property start end 'local-map nil) + ;; Remove keymap that `shr-urlify' adds. + (put-text-property start end 'keymap nil) + ;; Mask keys that launch `widget-button-click'. + ;; Those bindings are provided by `widget-keymap' + ;; that is a parent of `gnus-article-mode-map'. + (dolist (key (where-is-internal #'widget-button-click widget-keymap)) + (unless (lookup-key keymap key) + (define-key keymap key #'ignore))) (dolist (overlay (overlays-at start)) (overlay-put overlay 'face nil)) (setq start end))))) commit 829733104db073f8abd67765eae162e7360281fa Author: Phillip Lord Date: Wed Jun 22 09:42:49 2016 +0100 ; Revert "Ensure undo-boundary after insert-file-contents." This reverts commit 6cdd8f7153b553c6dc02be47e04a2e75117b6fe4. The original commit did not address the problem it was claiming to. diff --git a/src/fileio.c b/src/fileio.c index 746aac4..b11f923 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -4047,14 +4047,8 @@ by calling `format-decode', which see. */) being called in insert_from_buffer (via in prepare_to_modify_buffer). */ specbind (intern ("buffer-file-name"), Qnil); - - /* Temporarily enable the undo-buffer to ensure that the change - is marked as an undoable one. Bug #23785. */ - bset_undo_list(current_buffer,Qnil); insert_from_buffer (XBUFFER (conversion_buffer), same_at_start_charpos, inserted_chars, 0); - bset_undo_list(current_buffer,Qt); - /* Set `inserted' to the number of inserted characters. */ inserted = PT - temp; /* Set point before the inserted characters. */ commit 1c0199050bfa594287f3975aca56fc2a57ba0f66 Author: Paul Eggert Date: Wed Jun 22 03:04:16 2016 +0200 Improve --without-x GCC pacification * src/composite.c (autocmp_chars): * src/conf_post.h (DebPrint) [HAVE_NTGUI && !DebPrint && !EMACSDEBUG]: Use simpler ((void) 0) for no-op expression returning void. * src/dispextern.h [HAVE_WINDOW_SYSTEM]: Include fontset.h, for face_for_char. (FACE_SUITABLE_FOR_ASCII_CHAR_P, FACE_FOR_CHAR): Now inline functions instead of macros. This avoids the need for all those casts to void. (FACE_SUITABLE_FOR_ASCII_CHAR_P): Omit 2nd (unused) arg. All uses changed. * src/frame.c (Ficonify_frame, Fset_frame_position): * src/xdisp.c (Fmove_point_visually, show_mouse_face): * src/xdisp.c (note_mode_line_or_margin_highlight) (note_mouse_highlight): Assume HAVE_WINDOW_SYSTEM for simplicity, since the code should now work either way without generating warnings. * src/frame.c (display_available) [HAVE_WINDOW_SYSTEM]: New function. (window_system_available) [HAVE_WINDOW_SYSTEM]: Move to frame.h. (decode_window_system_frame): Use check_window_system instead of rolling the code ourself. Return needed only if HAVE_WINDOW_SYSTEM. (decode_window_system_frame, check_window_system): Merge the HAVE_WINDOW_SYSTEM and !HAVE_WINDOW_SYSTEM versions into one. * src/frame.c (Ficonify_frame, Fset_frame_position): * src/xdisp.c (show_mouse_face, define_frame_cursor1) (note_mouse_highlight): Narrow the scope of the HAVE_WINDOW_SYSTEM #ifdef; this is a better way to pacify GCC. * src/xdisp.c (x_set_left_fringe, x_set_right_fringe) (x_set_right_divider_width, x_set_bottom_divider_width): * src/xfns.c (x_set_internal_border_width): Don’t use what are now function calls as lvalues. * src/frame.h (WINDOW_SYSTEM_RETURN): New macro. (decode_window_system_frame, check_window_system): Use it, to avoid the need for duplicate declarations. (window_system_available): Now an inline function. (display_available): New decl. (frame_dimension): New inline function. (FRAME_FRINGE_COLS, FRAME_LEFT_FRINGE_WIDTH) (FRAME_RIGHT_FRINGE_WIDTH, FRAME_TOTAL_FRINGE_WIDTH) (FRAME_INTERNAL_BORDER_WIDTH, FRAME_RIGHT_DIVIDER_WIDTH) (FRAME_BOTTOM_DIVIDER_WIDTH): Use it, to avoid the need for duplicate definitions. Now inline functions instead of macros. * src/gnutls.c (gnutls_log_function2i): Remove. * src/gnutls.h (GNUTLS_LOG2i): Use ‘message’ directly. This avoids complaints about gnutls_log_function2i being defined and not used on older platforms that do not need to call GNUTLS_LOG2i. * src/image.c (DefaultDepthOfScreen) [0]: Remove unused macro. * src/lisp.h (AUTO_STRING_WITH_LEN): Revert change from ‘type id = expr’ to ‘type id; id = expr’, as this would suppress valid jump-misses-init diagnostics. Let’s find a better way to address the problem. * src/vm-limit.c (__MALLOC_HOOK_VOLATILE): Define only if needed. * src/xdisp.c (handle_single_display_spec): Simplify fringe_bitmap computation. (define_frame_cursor1): Do nothing unless in a window system. All callers changed and simplified. * src/xfaces.c (realize_default_face): Use a simpler way to pacify GCC when a return value is not used on some platforms. diff --git a/src/composite.c b/src/composite.c index 5696e3e..8aa6974 100644 --- a/src/composite.c +++ b/src/composite.c @@ -867,11 +867,7 @@ autocmp_chars (Lisp_Object rule, ptrdiff_t charpos, ptrdiff_t bytepos, Lisp_Object string) { ptrdiff_t count = SPECPDL_INDEX (); -#ifdef HAVE_WINDOW_SYSTEM struct frame *f = XFRAME (win->frame); -#else - (void) XFRAME (win->frame); -#endif Lisp_Object pos = make_number (charpos); ptrdiff_t to; ptrdiff_t pt = PT, pt_byte = PT_BYTE; @@ -895,7 +891,6 @@ autocmp_chars (Lisp_Object rule, ptrdiff_t charpos, ptrdiff_t bytepos, if (len <= 0) return unbind_to (count, Qnil); to = limit = charpos + len; -#ifdef HAVE_WINDOW_SYSTEM if (FRAME_WINDOW_P (f)) { font_object = font_range (charpos, bytepos, &to, win, face, string); @@ -906,7 +901,6 @@ autocmp_chars (Lisp_Object rule, ptrdiff_t charpos, ptrdiff_t bytepos, return unbind_to (count, Qnil); } else -#endif /* not HAVE_WINDOW_SYSTEM */ font_object = win->frame; lgstring = Fcomposition_get_gstring (pos, make_number (to), font_object, string); diff --git a/src/conf_post.h b/src/conf_post.h index 431b7a9..7aa5bae 100644 --- a/src/conf_post.h +++ b/src/conf_post.h @@ -211,8 +211,7 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */ extern void _DebPrint (const char *fmt, ...); # define DebPrint(stuff) _DebPrint stuff # else -/* Avoid compiler warnings about empty body of 'if' statement. */ -# define DebPrint(stuff) do {} while (false) +# define DebPrint(stuff) ((void) 0) # endif #endif diff --git a/src/dispextern.h b/src/dispextern.h index 987d7f8..d0fc3b2 100644 --- a/src/dispextern.h +++ b/src/dispextern.h @@ -82,6 +82,7 @@ typedef XImagePtr XImagePtr_or_DC; #ifdef HAVE_WINDOW_SYSTEM # include +# include "fontset.h" #endif #ifndef HAVE_WINDOW_SYSTEM @@ -1825,31 +1826,32 @@ struct face_cache ? FACE_FROM_ID (F, ID) \ : NULL) +/* True if FACE is suitable for displaying ASCII characters. */ +INLINE bool +FACE_SUITABLE_FOR_ASCII_CHAR_P (struct face *face) +{ #ifdef HAVE_WINDOW_SYSTEM - -/* Non-zero if FACE is suitable for displaying character CHAR. */ - -#define FACE_SUITABLE_FOR_ASCII_CHAR_P(FACE, CHAR) \ - ((FACE) == (FACE)->ascii_face) + return face == face->ascii_face; +#else + return true; +#endif +} /* Return the id of the realized face on frame F that is like the face - FACE, but is suitable for displaying character CHAR at buffer or + FACE, but is suitable for displaying character CHARACTER at buffer or string position POS. OBJECT is the string object, or nil for buffer. This macro is only meaningful for multibyte character CHAR. */ - -#define FACE_FOR_CHAR(F, FACE, CHAR, POS, OBJECT) \ - face_for_char ((F), (FACE), (CHAR), (POS), (OBJECT)) - -#else /* not HAVE_WINDOW_SYSTEM */ - -#define FACE_SUITABLE_FOR_ASCII_CHAR_P(FACE, CHAR) \ - ((void) (FACE), (void) (CHAR), true) -#define FACE_FOR_CHAR(F, FACE, CHAR, POS, OBJECT) \ - ((void) (F), (void) (FACE), (void) (CHAR), (void) (POS), \ - (void) (OBJECT), (FACE)->id) - -#endif /* not HAVE_WINDOW_SYSTEM */ +INLINE int +FACE_FOR_CHAR (struct frame *f, struct face *face, int character, + ptrdiff_t pos, Lisp_Object object) +{ +#ifdef HAVE_WINDOW_SYSTEM + return face_for_char (f, face, character, pos, object); +#else + return face->id; +#endif +} /* Return true if G contains a valid character code. */ INLINE bool diff --git a/src/frame.c b/src/frame.c index 9048452..aa06a38 100644 --- a/src/frame.c +++ b/src/frame.c @@ -106,39 +106,32 @@ decode_any_frame (register Lisp_Object frame) } #ifdef HAVE_WINDOW_SYSTEM - bool -window_system_available (struct frame *f) +display_available (void) { - return f ? FRAME_WINDOW_P (f) || FRAME_MSDOS_P (f) : x_display_list != NULL; + return x_display_list != NULL; } +#endif struct frame * decode_window_system_frame (Lisp_Object frame) { struct frame *f = decode_live_frame (frame); - - if (!window_system_available (f)) - error ("Window system frame should be used"); + check_window_system (f); +#ifdef HAVE_WINDOW_SYSTEM return f; +#endif } -#else /* not HAVE_WINDOW_SYSTEM */ - -_Noreturn void -decode_window_system_frame (Lisp_Object frame) -{ - error ("Window system is not in use"); -} - -_Noreturn -#endif /* not HAVE_WINDOW_SYSTEM */ void check_window_system (struct frame *f) { - if (!window_system_available (f)) - error (f ? "Window system frame should be used" - : "Window system is not in use or not initialized"); +#ifdef HAVE_WINDOW_SYSTEM + if (window_system_available (f)) + return; +#endif + error (f ? "Window system frame should be used" + : "Window system is not in use or not initialized"); } /* Return the value of frame parameter PROP in frame FRAME. */ @@ -2137,20 +2130,18 @@ DEFUN ("iconify-frame", Ficonify_frame, Siconify_frame, If omitted, FRAME defaults to the currently selected frame. */) (Lisp_Object frame) { -#ifdef HAVE_WINDOW_SYSTEM struct frame *f = decode_live_frame (frame); -#else - (void) decode_live_frame (frame); -#endif /* Don't allow minibuf_window to remain on an iconified frame. */ check_minibuf_window (frame, EQ (minibuf_window, selected_window)); /* I think this should be done with a hook. */ -#ifdef HAVE_WINDOW_SYSTEM if (FRAME_WINDOW_P (f)) + { +#ifdef HAVE_WINDOW_SYSTEM x_iconify_frame (f); #endif + } /* Make menu bar update for the Buffers and Frames menus. */ windows_or_buffers_changed = 17; @@ -3013,20 +3004,18 @@ or bottom edge of the outer frame of FRAME relative to the right or bottom edge of FRAME's display. */) (Lisp_Object frame, Lisp_Object x, Lisp_Object y) { -#ifdef HAVE_WINDOW_SYSTEM - register struct frame *f = decode_live_frame (frame); -#else - (void) decode_live_frame (frame); -#endif + struct frame *f = decode_live_frame (frame); CHECK_TYPE_RANGED_INTEGER (int, x); CHECK_TYPE_RANGED_INTEGER (int, y); /* I think this should be done with a hook. */ -#ifdef HAVE_WINDOW_SYSTEM if (FRAME_WINDOW_P (f)) - x_set_offset (f, XINT (x), XINT (y), 1); + { +#ifdef HAVE_WINDOW_SYSTEM + x_set_offset (f, XINT (x), XINT (y), 1); #endif + } return Qt; } @@ -3755,8 +3744,8 @@ x_set_left_fringe (struct frame *f, Lisp_Object new_value, Lisp_Object old_value if (new_width != old_width) { - FRAME_LEFT_FRINGE_WIDTH (f) = new_width; - FRAME_FRINGE_COLS (f) /* Round up. */ + f->left_fringe_width = new_width; + f->fringe_cols /* Round up. */ = (new_width + FRAME_RIGHT_FRINGE_WIDTH (f) + unit - 1) / unit; if (FRAME_X_WINDOW (f) != 0) @@ -3779,8 +3768,8 @@ x_set_right_fringe (struct frame *f, Lisp_Object new_value, Lisp_Object old_valu if (new_width != old_width) { - FRAME_RIGHT_FRINGE_WIDTH (f) = new_width; - FRAME_FRINGE_COLS (f) /* Round up. */ + f->right_fringe_width = new_width; + f->fringe_cols /* Round up. */ = (new_width + FRAME_LEFT_FRINGE_WIDTH (f) + unit - 1) / unit; if (FRAME_X_WINDOW (f) != 0) @@ -3809,13 +3798,11 @@ void x_set_right_divider_width (struct frame *f, Lisp_Object arg, Lisp_Object oldval) { int old = FRAME_RIGHT_DIVIDER_WIDTH (f); - CHECK_TYPE_RANGED_INTEGER (int, arg); - FRAME_RIGHT_DIVIDER_WIDTH (f) = XINT (arg); - if (FRAME_RIGHT_DIVIDER_WIDTH (f) < 0) - FRAME_RIGHT_DIVIDER_WIDTH (f) = 0; - if (FRAME_RIGHT_DIVIDER_WIDTH (f) != old) + int new = max (0, XINT (arg)); + if (new != old) { + f->right_divider_width = new; adjust_frame_size (f, -1, -1, 4, 0, Qright_divider_width); adjust_frame_glyphs (f); SET_FRAME_GARBAGED (f); @@ -3827,13 +3814,11 @@ void x_set_bottom_divider_width (struct frame *f, Lisp_Object arg, Lisp_Object oldval) { int old = FRAME_BOTTOM_DIVIDER_WIDTH (f); - CHECK_TYPE_RANGED_INTEGER (int, arg); - FRAME_BOTTOM_DIVIDER_WIDTH (f) = XINT (arg); - if (FRAME_BOTTOM_DIVIDER_WIDTH (f) < 0) - FRAME_BOTTOM_DIVIDER_WIDTH (f) = 0; - if (FRAME_BOTTOM_DIVIDER_WIDTH (f) != old) + int new = max (0, XINT (arg)); + if (new != old) { + f->bottom_divider_width = new; adjust_frame_size (f, -1, -1, 4, 0, Qbottom_divider_width); adjust_frame_glyphs (f); SET_FRAME_GARBAGED (f); diff --git a/src/frame.h b/src/frame.h index 4ee0a74..5e3ee68 100644 --- a/src/frame.h +++ b/src/frame.h @@ -1102,23 +1102,37 @@ extern Lisp_Object selected_frame; extern int frame_default_tool_bar_height; #endif +#ifdef HAVE_WINDOW_SYSTEM +# define WINDOW_SYSTEM_RETURN +#else +# define WINDOW_SYSTEM_RETURN _Noreturn +#endif + +extern WINDOW_SYSTEM_RETURN struct frame * + decode_window_system_frame (Lisp_Object); extern struct frame *decode_live_frame (Lisp_Object); extern struct frame *decode_any_frame (Lisp_Object); extern struct frame *make_initial_frame (void); extern struct frame *make_frame (bool); #ifdef HAVE_WINDOW_SYSTEM -extern void check_window_system (struct frame *); -extern struct frame *decode_window_system_frame (Lisp_Object); extern struct frame *make_minibuffer_frame (void); extern struct frame *make_frame_without_minibuffer (Lisp_Object, struct kboard *, Lisp_Object); -extern bool window_system_available (struct frame *); -#else /* not HAVE_WINDOW_SYSTEM */ -extern _Noreturn void check_window_system (struct frame *); -extern _Noreturn void decode_window_system_frame (Lisp_Object); -#define window_system_available(f) ((void) (f), false) -#endif /* HAVE_WINDOW_SYSTEM */ +extern bool display_available (void); +#endif + +INLINE bool +window_system_available (struct frame *f) +{ +#ifdef HAVE_WINDOW_SYSTEM + return f ? FRAME_WINDOW_P (f) || FRAME_MSDOS_P (f) : display_available (); +#else + return false; +#endif +} + +extern WINDOW_SYSTEM_RETURN void check_window_system (struct frame *); extern void frame_make_pointer_invisible (struct frame *); extern void frame_make_pointer_visible (struct frame *); extern Lisp_Object delete_frame (Lisp_Object, Lisp_Object); @@ -1152,46 +1166,68 @@ extern Lisp_Object Vframe_list; This value currently equals the average width of the default font of F. */ #define FRAME_COLUMN_WIDTH(F) ((F)->column_width) -/* Pixel width of areas used to display truncation marks, continuation - marks, overlay arrows. This is 0 for terminal frames. */ +/* Get a frame's window system dimension. If no window system, this is 0. */ +INLINE int +frame_dimension (int x) +{ #ifdef HAVE_WINDOW_SYSTEM + return x; +#else + return 0; +#endif +} /* Total width of fringes reserved for drawing truncation bitmaps, continuation bitmaps and alike. The width is in canonical char units of the frame. This must currently be the case because window sizes aren't pixel values. If it weren't the case, we wouldn't be able to split windows horizontally nicely. */ -#define FRAME_FRINGE_COLS(F) ((F)->fringe_cols) +INLINE int +FRAME_FRINGE_COLS (struct frame *f) +{ + return frame_dimension (f->fringe_cols); +} /* Pixel-width of the left and right fringe. */ -#define FRAME_LEFT_FRINGE_WIDTH(F) ((F)->left_fringe_width) -#define FRAME_RIGHT_FRINGE_WIDTH(F) ((F)->right_fringe_width) +INLINE int +FRAME_LEFT_FRINGE_WIDTH (struct frame *f) +{ + return frame_dimension (f->left_fringe_width); +} +INLINE int +FRAME_RIGHT_FRINGE_WIDTH (struct frame *f) +{ + return frame_dimension (f->right_fringe_width); +} /* Total width of fringes in pixels. */ -#define FRAME_TOTAL_FRINGE_WIDTH(F) \ - (FRAME_LEFT_FRINGE_WIDTH (F) + FRAME_RIGHT_FRINGE_WIDTH (F)) +INLINE int +FRAME_TOTAL_FRINGE_WIDTH (struct frame *f) +{ + return FRAME_LEFT_FRINGE_WIDTH (f) + FRAME_RIGHT_FRINGE_WIDTH (f); +} /* Pixel-width of internal border lines */ -#define FRAME_INTERNAL_BORDER_WIDTH(F) ((F)->internal_border_width) +INLINE int +FRAME_INTERNAL_BORDER_WIDTH (struct frame *f) +{ + return frame_dimension (f->internal_border_width); +} /* Pixel-size of window border lines */ -#define FRAME_RIGHT_DIVIDER_WIDTH(F) ((F)->right_divider_width) -#define FRAME_BOTTOM_DIVIDER_WIDTH(F) ((F)->bottom_divider_width) - -#else /* not HAVE_WINDOW_SYSTEM */ - -#define FRAME_FRINGE_COLS(F) ((void) (F), 0) -#define FRAME_TOTAL_FRINGE_WIDTH(F) ((void) (F), 0) -#define FRAME_LEFT_FRINGE_WIDTH(F) ((void) (F), 0) -#define FRAME_RIGHT_FRINGE_WIDTH(F) ((void) (F), 0) -#define FRAME_INTERNAL_BORDER_WIDTH(F) ((void) (F), 0) -#define FRAME_RIGHT_DIVIDER_WIDTH(F) ((void) (F), 0) -#define FRAME_BOTTOM_DIVIDER_WIDTH(F) ((void) (F), 0) - -#endif /* not HAVE_WINDOW_SYSTEM */ +INLINE int +FRAME_RIGHT_DIVIDER_WIDTH (struct frame *f) +{ + return frame_dimension (f->right_divider_width); +} +INLINE int +FRAME_BOTTOM_DIVIDER_WIDTH (struct frame *f) +{ + return frame_dimension (f->bottom_divider_width); +} /*********************************************************************** Conversion between canonical units and pixels diff --git a/src/gnutls.c b/src/gnutls.c index 8ee066f..7f05ac4 100644 --- a/src/gnutls.c +++ b/src/gnutls.c @@ -383,13 +383,6 @@ gnutls_log_function2 (int level, const char *string, const char *extra) message ("gnutls.c: [%d] %s %s", level, string, extra); } -/* Log a message and an integer. */ -static void -gnutls_log_function2i (int level, const char *string, int extra) -{ - message ("gnutls.c: [%d] %s %d", level, string, extra); -} - int gnutls_try_handshake (struct Lisp_Process *proc) { diff --git a/src/gnutls.h b/src/gnutls.h index 47e11f2..41769a4 100644 --- a/src/gnutls.h +++ b/src/gnutls.h @@ -71,7 +71,7 @@ typedef enum #define GNUTLS_LOG2i(level, max, string, extra) \ do { \ if ((level) <= (max)) \ - gnutls_log_function2i (level, "(Emacs) " string, extra); \ + message ("gnutls.c: [%d] %s %d", level, string, extra); \ } while (false) extern ptrdiff_t diff --git a/src/image.c b/src/image.c index 0df415c..572557d 100644 --- a/src/image.c +++ b/src/image.c @@ -80,9 +80,6 @@ typedef struct w32_bitmap_record Bitmap_Record; #define PIX_MASK_DRAW 1 #define x_defined_color w32_defined_color -#if 0 /* unused */ -#define DefaultDepthOfScreen(screen) (one_w32_display_info.n_cbits) -#endif #endif /* HAVE_NTGUI */ diff --git a/src/lisp.h b/src/lisp.h index 6a8f829..e0eb52a 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -4634,10 +4634,8 @@ enum STR's value is not necessarily copied. The resulting Lisp string should not be modified or made visible to user code. */ -/* Avoid initializing NAME to prevent "jump-misses-init" compiler - warnings. */ #define AUTO_STRING_WITH_LEN(name, str, len) \ - Lisp_Object name; name = \ + Lisp_Object name = \ (USE_STACK_STRING \ ? (make_lisp_ptr \ ((&(union Aligned_String) \ diff --git a/src/vm-limit.c b/src/vm-limit.c index 7eeca3c..58e7729 100644 --- a/src/vm-limit.c +++ b/src/vm-limit.c @@ -54,10 +54,10 @@ char data_start[1] = { 1 }; #ifdef HAVE_MALLOC_H # include #endif -#ifndef __MALLOC_HOOK_VOLATILE -# define __MALLOC_HOOK_VOLATILE volatile -#endif #ifndef HAVE_MALLOC_H +# ifndef __MALLOC_HOOK_VOLATILE +# define __MALLOC_HOOK_VOLATILE volatile +# endif extern void *(*__morecore) (ptrdiff_t); extern void (*__MALLOC_HOOK_VOLATILE __after_morecore_hook) (void); #endif diff --git a/src/xdisp.c b/src/xdisp.c index da0e84f..9df73f2 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -5040,11 +5040,9 @@ handle_single_display_spec (struct it *it, Lisp_Object spec, Lisp_Object object, return 1; #ifdef HAVE_WINDOW_SYSTEM - int fringe_bitmap; - value = XCAR (XCDR (spec)); - if (!SYMBOLP (value) - || !(fringe_bitmap = lookup_fringe_bitmap (value))) + int fringe_bitmap = SYMBOLP (value) ? lookup_fringe_bitmap (value) : 0; + if (! fringe_bitmap) /* If we return here, POSITION has been advanced across the text with this property. */ { @@ -21691,9 +21689,7 @@ Value is the new character position of point. */) int pt_x, target_x, pixel_width, pt_vpos; bool at_eol_p; bool overshoot_expected = false; -#ifdef HAVE_WINDOW_SYSTEM bool target_is_eol_p = false; -#endif /* Setup the arena. */ SET_TEXT_POS (pt, PT, PT_BYTE); @@ -21808,9 +21804,7 @@ Value is the new character position of point. */) { move_it_by_lines (&it, -1); target_x = it.last_visible_x - !FRAME_WINDOW_P (it.f); -#ifdef HAVE_WINDOW_SYSTEM target_is_eol_p = true; -#endif /* Under word-wrap, we don't know the x coordinate of the last character displayed on the previous line, which immediately precedes the wrap point. To find @@ -21851,7 +21845,6 @@ Value is the new character position of point. */) } /* Move to the target X coordinate. */ -#ifdef HAVE_WINDOW_SYSTEM /* On GUI frames, as we don't know the X coordinate of the character to the left of point, moving point to the left requires walking, one grapheme cluster at a time, until we @@ -21908,9 +21901,7 @@ Value is the new character position of point. */) new_pos.bytepos = CHAR_TO_BYTE (new_pos.charpos); it.current.pos = new_pos; } - else -#endif - if (it.current_x != target_x) + else if (it.current_x != target_x) move_it_in_display_line_to (&it, ZV, target_x, MOVE_TO_POS | MOVE_TO_X); /* If we ended up in a display string that covers point, move to @@ -28602,11 +28593,7 @@ static void show_mouse_face (Mouse_HLInfo *hlinfo, enum draw_glyphs_face draw) { struct window *w = XWINDOW (hlinfo->mouse_face_window); -#ifdef HAVE_WINDOW_SYSTEM struct frame *f = XFRAME (WINDOW_FRAME (w)); -#else - (void) XFRAME (WINDOW_FRAME (w)); -#endif if (/* If window is in the process of being destroyed, don't bother to do anything. */ @@ -28617,9 +28604,7 @@ show_mouse_face (Mouse_HLInfo *hlinfo, enum draw_glyphs_face draw) anymore. This can happen when a window is split. */ && hlinfo->mouse_face_end_row < w->current_matrix->nrows) { -#ifdef HAVE_WINDOW_SYSTEM bool phys_cursor_on_p = w->phys_cursor_on_p; -#endif struct glyph_row *row, *first, *last; first = MATRIX_ROW (w->current_matrix, hlinfo->mouse_face_beg_row); @@ -28695,12 +28680,12 @@ show_mouse_face (Mouse_HLInfo *hlinfo, enum draw_glyphs_face draw) } } -#ifdef HAVE_WINDOW_SYSTEM /* When we've written over the cursor, arrange for it to be displayed again. */ if (FRAME_WINDOW_P (f) && phys_cursor_on_p && !w->phys_cursor_on_p) { +#ifdef HAVE_WINDOW_SYSTEM int hpos = w->phys_cursor.hpos; /* When the window is hscrolled, cursor hpos can legitimately be @@ -28715,8 +28700,8 @@ show_mouse_face (Mouse_HLInfo *hlinfo, enum draw_glyphs_face draw) display_and_set_cursor (w, true, hpos, w->phys_cursor.vpos, w->phys_cursor.x, w->phys_cursor.y); unblock_input (); - } #endif /* HAVE_WINDOW_SYSTEM */ + } } #ifdef HAVE_WINDOW_SYSTEM @@ -29656,12 +29641,17 @@ Returns the alist element for the first matching AREA in MAP. */) clip_to_bounds (INT_MIN, XINT (x), INT_MAX), clip_to_bounds (INT_MIN, XINT (y), INT_MAX)); } +#endif /* HAVE_WINDOW_SYSTEM */ /* Display frame CURSOR, optionally using shape defined by POINTER. */ static void define_frame_cursor1 (struct frame *f, Cursor cursor, Lisp_Object pointer) { +#ifdef HAVE_WINDOW_SYSTEM + if (!FRAME_WINDOW_P (f)) + return; + /* Do not change cursor shape while dragging mouse. */ if (EQ (do_mouse_tracking, Qdragging)) return; @@ -29678,10 +29668,10 @@ define_frame_cursor1 (struct frame *f, Cursor cursor, Lisp_Object pointer) cursor = FRAME_X_OUTPUT (f)->horizontal_drag_cursor; else if (EQ (pointer, intern ("nhdrag"))) cursor = FRAME_X_OUTPUT (f)->vertical_drag_cursor; -#ifdef HAVE_X_WINDOWS +# ifdef HAVE_X_WINDOWS else if (EQ (pointer, intern ("vdrag"))) cursor = FRAME_DISPLAY_INFO (f)->vertical_scroll_bar_cursor; -#endif +# endif else if (EQ (pointer, intern ("hourglass"))) cursor = FRAME_X_OUTPUT (f)->hourglass_cursor; else if (EQ (pointer, Qmodeline)) @@ -29692,10 +29682,9 @@ define_frame_cursor1 (struct frame *f, Cursor cursor, Lisp_Object pointer) if (cursor != No_Cursor) FRAME_RIF (f)->define_frame_cursor (f, cursor); +#endif } -#endif /* HAVE_WINDOW_SYSTEM */ - /* Take proper action when mouse has moved to the mode or header line or marginal area AREA of window W, x-position X and y-position Y. X is relative to the start of the text display area of W, so the @@ -29711,9 +29700,9 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y, Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (f); #ifdef HAVE_WINDOW_SYSTEM Display_Info *dpyinfo; +#endif Cursor cursor = No_Cursor; Lisp_Object pointer = Qnil; -#endif int dx, dy, width, height; ptrdiff_t charpos; Lisp_Object string, object = Qnil; @@ -29964,12 +29953,8 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y, && hlinfo->mouse_face_beg_row == vpos ) return; -#ifdef HAVE_WINDOW_SYSTEM if (clear_mouse_face (hlinfo)) cursor = No_Cursor; -#else - (void) clear_mouse_face (hlinfo); -#endif if (!row->reversed_p) { @@ -30003,10 +29988,8 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y, show_mouse_face (hlinfo, DRAW_MOUSE_FACE); mouse_face_shown = true; -#ifdef HAVE_WINDOW_SYSTEM if (NILP (pointer)) pointer = Qhand; -#endif } } @@ -30015,10 +29998,7 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y, if ((area == ON_MODE_LINE || area == ON_HEADER_LINE) && !mouse_face_shown) clear_mouse_face (hlinfo); -#ifdef HAVE_WINDOW_SYSTEM - if (FRAME_WINDOW_P (f)) - define_frame_cursor1 (f, cursor, pointer); -#endif + define_frame_cursor1 (f, cursor, pointer); } @@ -30037,10 +30017,8 @@ note_mouse_highlight (struct frame *f, int x, int y) enum window_part part = ON_NOTHING; Lisp_Object window; struct window *w; -#ifdef HAVE_WINDOW_SYSTEM Cursor cursor = No_Cursor; Lisp_Object pointer = Qnil; /* Takes precedence over cursor! */ -#endif struct buffer *b; /* When a menu is active, don't highlight because this looks odd. */ @@ -30223,19 +30201,17 @@ note_mouse_highlight (struct frame *f, int x, int y) && glyph->type == STRETCH_GLYPH && glyph->avoid_cursor_p)) { -#ifndef HAVE_WINDOW_SYSTEM - (void) clear_mouse_face (hlinfo); -#else /* HAVE_WINDOW_SYSTEM */ if (clear_mouse_face (hlinfo)) cursor = No_Cursor; if (FRAME_WINDOW_P (f) && NILP (pointer)) { +#ifdef HAVE_WINDOW_SYSTEM if (area != TEXT_AREA) cursor = FRAME_X_OUTPUT (f)->nontext_cursor; else pointer = Vvoid_text_area_pointer; +#endif } -#endif /* HAVE_WINDOW_SYSTEM */ goto set_cursor; } @@ -30280,10 +30256,8 @@ note_mouse_highlight (struct frame *f, int x, int y) same_region = coords_in_mouse_face_p (w, hpos, vpos); -#ifdef HAVE_WINDOW_SYSTEM if (same_region) cursor = No_Cursor; -#endif /* Check mouse-face highlighting. */ if (! same_region @@ -30310,12 +30284,8 @@ note_mouse_highlight (struct frame *f, int x, int y) hlinfo->mouse_face_overlay = overlay; /* Clear the display of the old active region, if any. */ -#ifdef HAVE_WINDOW_SYSTEM if (clear_mouse_face (hlinfo)) cursor = No_Cursor; -#else - (void) clear_mouse_face (hlinfo); -#endif /* If no overlay applies, get a text property. */ if (NILP (overlay)) @@ -30346,9 +30316,7 @@ note_mouse_highlight (struct frame *f, int x, int y) = face_at_string_position (w, object, pos, 0, &ignore, glyph->face_id, true); show_mouse_face (hlinfo, DRAW_MOUSE_FACE); -#ifdef HAVE_WINDOW_SYSTEM cursor = No_Cursor; -#endif } else { @@ -30432,9 +30400,7 @@ note_mouse_highlight (struct frame *f, int x, int y) : XFASTINT (after), before_string, after_string, disp_string); -#ifdef HAVE_WINDOW_SYSTEM cursor = No_Cursor; -#endif } } } @@ -30557,15 +30523,7 @@ note_mouse_highlight (struct frame *f, int x, int y) } set_cursor: - -#ifdef HAVE_WINDOW_SYSTEM - if (FRAME_WINDOW_P (f)) - define_frame_cursor1 (f, cursor, pointer); -#else - /* This is here to prevent a compiler error, about "label at end of - compound statement". */ - return; -#endif + define_frame_cursor1 (f, cursor, pointer); } diff --git a/src/xfaces.c b/src/xfaces.c index faf28fc..97a5ae0 100644 --- a/src/xfaces.c +++ b/src/xfaces.c @@ -5287,11 +5287,11 @@ realize_default_face (struct frame *f) eassert (lface_fully_specified_p (XVECTOR (lface)->contents)); check_lface (lface); memcpy (attrs, XVECTOR (lface)->contents, sizeof attrs); - -#ifndef HAVE_X_WINDOWS - (void) realize_face (c, attrs, DEFAULT_FACE_ID); -#else /* HAVE_X_WINDOWS */ struct face *face = realize_face (c, attrs, DEFAULT_FACE_ID); + +#ifndef HAVE_WINDOW_SYSTEM + (void) face; +#else if (FRAME_X_P (f) && face->font != FRAME_FONT (f)) { /* This can happen when making a frame on a display that does @@ -5305,7 +5305,7 @@ realize_default_face (struct frame *f) font. */ x_set_font (f, LFACE_FONT (lface), Qnil); } -#endif /* HAVE_X_WINDOWS */ +#endif return true; } @@ -6093,7 +6093,7 @@ face_at_string_position (struct window *w, Lisp_Object string, if we don't have fonts, so we can stop here if not working on a window-system frame. */ || !FRAME_WINDOW_P (f) - || FACE_SUITABLE_FOR_ASCII_CHAR_P (base_face, 0))) + || FACE_SUITABLE_FOR_ASCII_CHAR_P (base_face))) return base_face->id; /* Begin with attributes from the base face. */ diff --git a/src/xfns.c b/src/xfns.c index 35e2a23..1120c33 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -1434,7 +1434,7 @@ x_set_internal_border_width (struct frame *f, Lisp_Object arg, Lisp_Object oldva if (border != FRAME_INTERNAL_BORDER_WIDTH (f)) { - FRAME_INTERNAL_BORDER_WIDTH (f) = border; + f->internal_border_width = border; #ifdef USE_X_TOOLKIT if (FRAME_X_OUTPUT (f)->edit_widget) commit dc5e65b5deb2f5b67f6c3a06ae81c6b074bd4b56 Author: Dmitry Gutov Date: Wed Jun 22 02:04:33 2016 +0300 Unset GIT_DIR when calling Git commands * lisp/vc/vc-git.el (vc-git--call, vc-git-command): Unset GIT_DIR (bug#23769). diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el index f35c84d..9eac5b2 100644 --- a/lisp/vc/vc-git.el +++ b/lisp/vc/vc-git.el @@ -1423,7 +1423,8 @@ The difference to vc-do-command is that this function always invokes (let ((coding-system-for-read (or coding-system-for-read vc-git-log-output-coding-system)) (coding-system-for-write - (or coding-system-for-write vc-git-commits-coding-system))) + (or coding-system-for-write vc-git-commits-coding-system)) + (process-environment (cons "GIT_DIR" process-environment))) (apply 'vc-do-command (or buffer "*vc*") okstatus vc-git-program ;; http://debbugs.gnu.org/16897 (unless (and (not (cdr-safe file-or-list)) @@ -1451,6 +1452,7 @@ The difference to vc-do-command is that this function always invokes (coding-system-for-write (or coding-system-for-write vc-git-commits-coding-system)) (process-environment (cons "PAGER=" process-environment))) + (push "GIT_DIR" process-environment) (apply 'process-file vc-git-program nil buffer nil command args))) (defun vc-git--out-ok (command &rest args) commit c98bc9821f4a402d5fda67fe141ed34622c50e4f Author: Phillip Lord Date: Fri Jun 17 22:34:50 2016 +0100 Ensure undo-boundary after all commands * lisp/simple.el (undo-auto--boundaries): Ensure an undo-boundary after every command whether it (apparently) changes the buffer or not. See Bug#23785 for discussion. diff --git a/lisp/simple.el b/lisp/simple.el index a502448..bc3e7b8 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -2884,6 +2884,10 @@ REASON describes the reason that the boundary is being added; see "Check recently changed buffers and add a boundary if necessary. REASON describes the reason that the boundary is being added; see `undo-last-boundary' for more information." + ;; (Bug #23785) All commands should ensure that there is an undo + ;; boundary whether they have changed the current buffer or not. + (when (eq cause 'command) + (add-to-list 'undo-auto--undoably-changed-buffers (current-buffer))) (dolist (b undo-auto--undoably-changed-buffers) (when (buffer-live-p b) (with-current-buffer b commit 6cdd8f7153b553c6dc02be47e04a2e75117b6fe4 Author: Phillip Lord Date: Mon Jun 20 14:26:02 2016 +0100 Ensure undo-boundary after insert-file-contents. * src/fileio.c: Record undoable change during insert-file-contents. Addresses Bug #23785. diff --git a/src/fileio.c b/src/fileio.c index b11f923..746aac4 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -4047,8 +4047,14 @@ by calling `format-decode', which see. */) being called in insert_from_buffer (via in prepare_to_modify_buffer). */ specbind (intern ("buffer-file-name"), Qnil); + + /* Temporarily enable the undo-buffer to ensure that the change + is marked as an undoable one. Bug #23785. */ + bset_undo_list(current_buffer,Qnil); insert_from_buffer (XBUFFER (conversion_buffer), same_at_start_charpos, inserted_chars, 0); + bset_undo_list(current_buffer,Qt); + /* Set `inserted' to the number of inserted characters. */ inserted = PT - temp; /* Set point before the inserted characters. */ commit 4793f5fc417ae687e609ba5591353a3a9185d635 Author: Eli Zaretskii Date: Tue Jun 21 17:20:09 2016 +0300 Clarify documentation of 'line-spacing' and 'line-height' * doc/lispref/display.texi (Line Height): Clarify how the line height is determined via variables and text properties. (Bug#23806) diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index 181bff0..0d0ec67 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -1996,15 +1996,17 @@ newline. If the property value is @code{t}, the newline character has no effect on the displayed height of the line---the visible contents -alone determine the height. This is useful for tiling small images -(or image slices) without adding blank areas between the images. +alone determine the height. The @code{line-spacing} property, +described below, is also ignored in this case. This is useful for +tiling small images (or image slices) without adding blank areas +between the images. If the property value is a list of the form @code{(@var{height} @var{total})}, that adds extra space @emph{below} the display line. First Emacs uses @var{height} as a height spec to control extra space @emph{above} the line; then it adds enough space @emph{below} the line -to bring the total line height up to @var{total}. In this case, the -other ways to specify the line spacing are ignored. +to bring the total line height up to @var{total}. In this case, any +value of @code{line-spacing} property for the newline is ignored. @cindex height spec Any other kind of property value is a height spec, which translates @@ -2054,9 +2056,10 @@ overrides line spacings specified for the frame. @kindex line-spacing @r{(text property)} Finally, a newline can have a @code{line-spacing} text or overlay -property that overrides the default frame line spacing and the buffer -local @code{line-spacing} variable, for the display line ending in -that newline. +property that can enlarge the default frame line spacing and the +buffer local @code{line-spacing} variable: if its value is larger than +the buffer or frame defaults, that larger value is used instead, for +the display line ending in that newline. One way or another, these mechanisms specify a Lisp value for the spacing of each line. The value is a height spec, and it translates commit 6cf8f0b74e45cec12756e99d3735e3906c515c5c Author: Eli Zaretskii Date: Tue Jun 21 16:14:10 2016 +0300 Fix vertical layout calculations when newline has line-height property * src/xdisp.c (move_it_in_display_line_to): Reset the iterator's 'constrain_row_ascent_descent_p' flag after processing the newline, similar to what 'display_line' does. Without this, the flag remains set once set by x_produce_glyphs, and causes the vertical layout calculations to go awry, because Emacs thinks the screen lines have zero height. (Bug#23850) diff --git a/src/xdisp.c b/src/xdisp.c index bcb283f..da0e84f 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -9038,6 +9038,11 @@ move_it_in_display_line_to (struct it *it, } else result = MOVE_NEWLINE_OR_CR; + /* If we've processed the newline, make sure this flag is + reset, as it must only be set when the newline itself is + processed. */ + if (result == MOVE_NEWLINE_OR_CR) + it->constrain_row_ascent_descent_p = false; break; } commit 5f375723216bdf0519316db1d2acf464b80a708f Author: Eli Zaretskii Date: Mon Jun 20 17:19:25 2016 +0300 Fix removal of variables from process-environment * src/callproc.c (add_env): Fix comparison of a variable with a value against the same variable without a value. (Bug#23779) diff --git a/src/callproc.c b/src/callproc.c index db602f5..2fb5b1d 100644 --- a/src/callproc.c +++ b/src/callproc.c @@ -1099,7 +1099,7 @@ add_env (char **env, char **new_env, char *string) char *p = *ep, *q = string; while (ok) { - if (*q != *p) + if (*p && *q != *p) break; if (*q == 0) /* The string is a lone variable name; keep it for now, we commit e5e886d12f3eff3102916c82a5aa82e0db714579 Author: Glenn Morris Date: Sun Jun 19 18:25:19 2016 -0700 * admin/authors.el (authors-ignored-files, authors-valid-file-names) (authors-renamed-files-alist): Additions. diff --git a/admin/authors.el b/admin/authors.el index 0fdfe72..0738e2a 100644 --- a/admin/authors.el +++ b/admin/authors.el @@ -292,6 +292,7 @@ Changes to files matching one of the regexps in this list are not listed.") "gfdl.1" "texi/Makefile.in" "autodeps.mk" + "lwlib/autodeps.mk" "oldXMenu/autodeps.mk" "src/autodeps.mk" "Imakefile" "icons/sink.ico" "aixcc.lex" @@ -383,9 +384,11 @@ Changes to files matching one of the regexps in this list are not listed.") "lib/qset-acl.c" "lib/qcopy-acl.c" "lib/file-has-acl.c" ;; files from old MS Windows build procedures "makefile.w32-in" + "admin/unidata/makefile.w32-in" "unidata/makefile.w32-in" "lib/makefile.w32-in" "leim/makefile.w32-in" + "lisp/makefile.w32-in" "src/makefile.w32-in" "nt/emacs-src.tags" "doc/emacs/makefile.w32-in" @@ -704,8 +707,9 @@ Changes to files in this list are not listed.") "net/zone-mode.el" "xesam.el" "term/mac-win.el" "sup-mouse.el" "term/apollo.el" - "term/vt102.el" "term/vt125.el" "term/vt201.el" "term/vt220.el" "term/vt300.el" - "term/vt320.el" "term/vt400.el" "term/vt420.el" + "term/vt102.el" "term/vt125.el" "term/vt201.el" "term/vt220.el" + "term/vt240.el" "term/vt300.el" "term/vt320.el" "term/vt400.el" + "term/vt420.el" "url-https.el" "org-mac-message.el" "org-mew.el" "org-w3m.el" "org-vm.el" "org-wl.el" "org-mks.el" "org-remember.el" "org-xoxo.el" "org-docbook.el" @@ -750,6 +754,7 @@ Changes to files in this list are not listed.") "emacsclient.c" "etags.c" "hexl.c" "make-docfile.c" "movemail.c" "test-distrib.c" "testfile" "tpu-edt.doc" ; see below + "lisp/obsolete/vc-mcvs.el" ) "File names which are valid, but no longer exist (or cannot be found) in the repository.") @@ -841,11 +846,14 @@ in the repository.") ("emulation/crisp.el" . "crisp.el") ("emulation/tpu-edt.el" . "tpu-edt.el") ("emulation/tpu-extras.el" . "tpu-extras.el") + ("emulation/tpu-mapper.el" . "tpu-mapper.el") ("emulation/vi.el" . "vi.el") ("emulation/vip.el" . "vip.el") ("emulation/ws-mode.el" . "ws-mode.el") ("mail/mailpost.el" . "mailpost.el") + ("net/eudcb-ph.el" . "eudcb-ph.el") ("play/bruce.el" . "bruce.el") + ("lisp/play/landmark.el" . "landmark.el") ("play/yow.el" . "yow.el") ("patcomp.el" . "patcomp.el") ("emulation/ws-mode.el" . "ws-mode.el") @@ -926,6 +934,7 @@ in the repository.") ("grammars" . "grammars") ;; Moved from lisp/emacs-lisp/ to admin/. ("emacs-lisp/authors.el" . "authors.el") + ("emacs-lisp/find-gc.el" . "admin/find-gc.el") ;; From etc to lisp/cedet/semantic/. ("grammars/bovine-grammar.el" . "bovine/grammar.el") ("grammars/wisent-grammar.el" . "wisent/grammar.el") commit db0777b7bd146e207b69e2236d8c19833f2c43fb Author: Glenn Morris Date: Sun Jun 19 18:05:55 2016 -0700 * admin/authors.el (authors-aliases, authors-fixed-case): Additions. diff --git a/admin/authors.el b/admin/authors.el index 1447bd4..0fdfe72 100644 --- a/admin/authors.el +++ b/admin/authors.el @@ -45,7 +45,9 @@ files.") '( (nil "A\\. N\\. Other") ; unknown author 2014-12-03, later removed ("Aaron S. Hawley" "Aaron Hawley") + ("Alan Third" "Alan J Third") ("Alexandru Harsanyi" "Alex Harsanyi") + ("Álvar Jesús Ibeas Martín" "Álvar Ibeas") ("Andrew Csillag" "Drew Csillag") ("Anna M. Bigatti" "Anna Bigatti") ("Barry A. Warsaw" "Barry A. Warsaw, Century Computing, Inc." @@ -61,6 +63,7 @@ files.") ("David J. Biesack" "David Biesack") ("David De La Harpe Golden" "David Golden") ("David Gillespie" "Dave Gillespie") + ("David S. Goldberg" "Dave Goldberg") ("David Kågedal" "David K..edal") ("David M. Koppelman" "David Koppelman") ("David M. Smith" "David Smith" "David M Smith") @@ -72,6 +75,7 @@ files.") ("Eric M. Ludlam" "Eric Ludlam") ("Eric S. Raymond" "Eric Raymond") ("Fabián Ezequiel Gallina" "Fabian Ezequiel Gallina" "Fabi.n E\\. Gallina") + ("Francis Litterio" "Fran Litterio") ("Francis J. Wright" "Dr Francis J. Wright" "Francis Wright") ("François Pinard" "Francois Pinard") ("Francesco Potortì" "Francesco Potorti" "Francesco Potorti`") @@ -122,11 +126,12 @@ files.") ("Michaël Cadilhac" "Michael Cadilhac") ("Michael I. Bushnell" "Michael I Bushnell" "Michael I. Bushnell, p/BSG") ("Michael R. Cook" "Michael Cook") - ("Michael Sperber" "Michael Sperber \\[Mr. Preprocessor\\]") + ("Michael Sperber" "Mike Sperber" "Michael Sperber \\[Mr. Preprocessor\\]") ("Mikio Nakajima" "Nakajima Mikio") ("Nelson Jose dos Santos Ferreira" "Nelson Ferreira") ("Noorul Islam" "Noorul Islam K M") ;;; ("Tetsurou Okazaki" "OKAZAKI Tetsurou") ; FIXME? + ("Óscar Fuentes" "Oscar Fuentes") ("Paul Eggert" "Paul R\\. Eggert") ("Pavel Janík" "Pavel Janík Ml." "Pavel Janik Ml." "Pavel Janik") ("Pavel Kobiakov" "Pavel Kobyakov") @@ -136,6 +141,7 @@ files.") ("Peter S. Galbraith" "Peter S Galbraith" "Peter Galbraith") ("Peter Runestig" "Peter 'luna' Runestig") ("Piotr Zieliński" "Piotr Zielinski") + ("Przemysław Wojnowski" "Przemyslaw Wojnowski") ("Rainer Schöpf" "Rainer Schoepf") ("Raja R. Harinath" "Raja R Harinath") ("Richard G. Bielawski" "Richard G Bielawski" "Richard Bielawski") @@ -143,13 +149,16 @@ files.") ("Richard M. Stallman" "Richard Stallman" "rms@gnu.org") ("Robert J. Chassell" "Bob Chassell") ("Roberto Huelga Díaz" "Roberto Huelga") + ("Rodney J. Whitby" "Rod Whitby") ("Roland B. Roberts" "Roland B Roberts" "Roland Roberts") + ("Ron Schnell" "Ronnie Schnell") ("Rui-Tao Dong" "Rui-Tao Dong ~{6-HpLN~}") ("Sacha Chua" "Sandra Jean Chua") ("Sam Steingold" "Sam Shteingold") ("Satyaki Das" "Indexed search by Satyaki Das") ("Sébastien Vauban" "Sebastien Vauban") ("Sergey Litvinov" "Litvinov Sergey") + ("Shun-ichi Goto" "Shun-ichi GOTO") ;; There are other Stefans. ;;; ("Stefan Monnier" "Stefan") ("Steven L. Baur" "SL Baur" "Steven L Baur") @@ -186,12 +195,14 @@ If REALNAME is nil, ignore that author.") ;; FIXME seems it would be less fragile to check for O', Mc, etc. (defconst authors-fixed-case '("Barry O'Reilly" + "Brian McKenna" "Brian van den Broek" "Bryan O'Sullivan" "Christian von Roques" "Christophe de Dinechin" "Craig McDaniel" "Daniel LaLiberte" + "Daniel McClanahan" "David J. MacKenzie" "David McCabe" "David O'Toole" @@ -222,6 +233,7 @@ If REALNAME is nil, ignore that author.") "Shun-ichi Goto" "Thomas DeWeese" "Tijs van Bakel" + "Titus von der Malsburg" "Yu-ji Hosokawa") "List of authors whose names cannot be simply capitalized.")