diff options
| author | Paul Eggert | 2016-03-22 11:04:36 -0700 |
|---|---|---|
| committer | Paul Eggert | 2016-03-22 11:04:36 -0700 |
| commit | f95bbe5a67e03fe6d05cbfb4d0c9151a754d6ccd (patch) | |
| tree | 770fbf699587d51ed3a374c6f01bdd655394c66c | |
| parent | 4869e0d85a215e7fb0262430a48aa4d5804bf0a4 (diff) | |
| parent | b8ea08b037fb16395b90481162587706e71b487c (diff) | |
| download | emacs-f95bbe5a67e03fe6d05cbfb4d0c9151a754d6ccd.tar.gz emacs-f95bbe5a67e03fe6d05cbfb4d0c9151a754d6ccd.zip | |
-
| -rw-r--r-- | admin/release-process | 4 | ||||
| -rw-r--r-- | doc/emacs/abbrevs.texi | 9 | ||||
| -rw-r--r-- | doc/lispref/abbrevs.texi | 9 | ||||
| -rw-r--r-- | doc/misc/eshell.texi | 4 | ||||
| -rw-r--r-- | etc/themes/tsdh-light-theme.el | 7 | ||||
| -rw-r--r-- | lisp/doc-view.el | 2 | ||||
| -rw-r--r-- | lisp/forms.el | 2 | ||||
| -rw-r--r-- | lisp/mail/rmail.el | 2 | ||||
| -rw-r--r-- | lisp/progmodes/cc-defs.el | 2 | ||||
| -rw-r--r-- | lisp/progmodes/ruby-mode.el | 4 | ||||
| -rw-r--r-- | lisp/progmodes/xref.el | 11 | ||||
| -rw-r--r-- | lisp/simple.el | 36 | ||||
| -rw-r--r-- | src/bidi.c | 2 | ||||
| -rw-r--r-- | src/emacsgtkfixed.c | 3 | ||||
| -rw-r--r-- | src/emacsgtkfixed.h | 1 | ||||
| -rw-r--r-- | src/floatfns.c | 3 | ||||
| -rw-r--r-- | src/gtkutil.c | 12 | ||||
| -rw-r--r-- | src/lisp.h | 3 | ||||
| -rw-r--r-- | src/nsterm.m | 30 | ||||
| -rw-r--r-- | test/lisp/net/tramp-tests.el | 13 |
20 files changed, 102 insertions, 57 deletions
diff --git a/admin/release-process b/admin/release-process index f378662adc0..2668ea3b445 100644 --- a/admin/release-process +++ b/admin/release-process | |||
| @@ -238,7 +238,7 @@ TUTORIAL.zh | |||
| 238 | 238 | ||
| 239 | ** Check the manual. | 239 | ** Check the manual. |
| 240 | 240 | ||
| 241 | abbrevs.texi | 241 | abbrevs.texi Steve Byrne |
| 242 | ack.texi | 242 | ack.texi |
| 243 | anti.texi | 243 | anti.texi |
| 244 | arevert-xtra.texi | 244 | arevert-xtra.texi |
| @@ -293,7 +293,7 @@ xresources.texi | |||
| 293 | 293 | ||
| 294 | ** Check the Lisp manual. | 294 | ** Check the Lisp manual. |
| 295 | 295 | ||
| 296 | abbrevs.texi | 296 | abbrevs.texi Steve Byrne |
| 297 | anti.texi | 297 | anti.texi |
| 298 | back.texi | 298 | back.texi |
| 299 | backups.texi | 299 | backups.texi |
diff --git a/doc/emacs/abbrevs.texi b/doc/emacs/abbrevs.texi index e0441a1984d..a1db34cf0ee 100644 --- a/doc/emacs/abbrevs.texi +++ b/doc/emacs/abbrevs.texi | |||
| @@ -435,9 +435,9 @@ copies the expansion verbatim including its case pattern. | |||
| 435 | controls which characters are considered part of a word, for dynamic expansion | 435 | controls which characters are considered part of a word, for dynamic expansion |
| 436 | purposes. The regular expression must match just one character, never | 436 | purposes. The regular expression must match just one character, never |
| 437 | two or more. The same regular expression also determines which | 437 | two or more. The same regular expression also determines which |
| 438 | characters are part of an expansion. The value @code{nil} has a special | 438 | characters are part of an expansion. The (default) value @code{nil} |
| 439 | meaning: dynamic abbrevs are made of word characters, but expansions are | 439 | has a special meaning: dynamic abbrevs are made of word characters, |
| 440 | made of word and symbol characters. | 440 | but expansions are made of word and symbol characters. |
| 441 | 441 | ||
| 442 | @vindex dabbrev-abbrev-skip-leading-regexp | 442 | @vindex dabbrev-abbrev-skip-leading-regexp |
| 443 | In shell scripts and makefiles, a variable name is sometimes prefixed | 443 | In shell scripts and makefiles, a variable name is sometimes prefixed |
| @@ -445,4 +445,5 @@ with @samp{$} and sometimes not. Major modes for this kind of text can | |||
| 445 | customize dynamic abbrev expansion to handle optional prefixes by setting | 445 | customize dynamic abbrev expansion to handle optional prefixes by setting |
| 446 | the variable @code{dabbrev-abbrev-skip-leading-regexp}. Its value | 446 | the variable @code{dabbrev-abbrev-skip-leading-regexp}. Its value |
| 447 | should be a regular expression that matches the optional prefix that | 447 | should be a regular expression that matches the optional prefix that |
| 448 | dynamic abbrev expression should ignore. | 448 | dynamic abbrev expression should ignore. The default is @code{nil}, |
| 449 | which means no characters should be skipped. | ||
diff --git a/doc/lispref/abbrevs.texi b/doc/lispref/abbrevs.texi index 5f5a395c97a..cdea2a8b3c8 100644 --- a/doc/lispref/abbrevs.texi +++ b/doc/lispref/abbrevs.texi | |||
| @@ -198,7 +198,10 @@ abbrevs in a file automatically, under the control of variables | |||
| 198 | described here. | 198 | described here. |
| 199 | 199 | ||
| 200 | @defopt abbrev-file-name | 200 | @defopt abbrev-file-name |
| 201 | This is the default file name for reading and saving abbrevs. | 201 | This is the default file name for reading and saving abbrevs. By |
| 202 | default, Emacs will look for @file{~/.emacs.d/abbrev_defs}, and, if | ||
| 203 | not found, for @file{~/.abbrev_defs}; if neither file exists, Emacs | ||
| 204 | will create @file{~/.emacs.d/abbrev_defs}. | ||
| 202 | @end defopt | 205 | @end defopt |
| 203 | 206 | ||
| 204 | @defun quietly-read-abbrev-file &optional filename | 207 | @defun quietly-read-abbrev-file &optional filename |
| @@ -216,7 +219,7 @@ A non-@code{nil} value for @code{save-abbrevs} means that Emacs should | |||
| 216 | offer to save abbrevs (if any have changed) when files are saved. If | 219 | offer to save abbrevs (if any have changed) when files are saved. If |
| 217 | the value is @code{silently}, Emacs saves the abbrevs without asking | 220 | the value is @code{silently}, Emacs saves the abbrevs without asking |
| 218 | the user. @code{abbrev-file-name} specifies the file to save the | 221 | the user. @code{abbrev-file-name} specifies the file to save the |
| 219 | abbrevs in. | 222 | abbrevs in. The default value is @code{t}. |
| 220 | @end defopt | 223 | @end defopt |
| 221 | 224 | ||
| 222 | @defvar abbrevs-changed | 225 | @defvar abbrevs-changed |
| @@ -282,7 +285,7 @@ omitted, it defaults to point. @code{name}, if non-@code{nil}, should | |||
| 282 | be the name by which this abbrev was found (a string); it is used to | 285 | be the name by which this abbrev was found (a string); it is used to |
| 283 | figure out whether to adjust the capitalization of the expansion. The | 286 | figure out whether to adjust the capitalization of the expansion. The |
| 284 | function returns @code{abbrev} if the abbrev was successfully | 287 | function returns @code{abbrev} if the abbrev was successfully |
| 285 | inserted. | 288 | inserted, otherwise it returns @code{nil}. |
| 286 | @end defun | 289 | @end defun |
| 287 | 290 | ||
| 288 | @deffn Command abbrev-prefix-mark &optional arg | 291 | @deffn Command abbrev-prefix-mark &optional arg |
diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi index f90c7d3e8fb..a7a3840aa5f 100644 --- a/doc/misc/eshell.texi +++ b/doc/misc/eshell.texi | |||
| @@ -252,7 +252,9 @@ need to use a function that takes some other data type, you will need to | |||
| 252 | call it in an Elisp expression (which can also be used with | 252 | call it in an Elisp expression (which can also be used with |
| 253 | @ref{Expansion, expansions}). As with other shells, you can | 253 | @ref{Expansion, expansions}). As with other shells, you can |
| 254 | escape special characters and spaces with the backslash (@code{\}) and | 254 | escape special characters and spaces with the backslash (@code{\}) and |
| 255 | apostrophes (@code{''}) and double quotes (@code{""}). | 255 | apostrophes (@code{''}) and double quotes (@code{""}). This is needed |
| 256 | especially for file names with special characters like pipe | ||
| 257 | (@code{|}), which could be part of remote file names. | ||
| 256 | 258 | ||
| 257 | @node Built-ins | 259 | @node Built-ins |
| 258 | 260 | ||
diff --git a/etc/themes/tsdh-light-theme.el b/etc/themes/tsdh-light-theme.el index 422b26c8ebf..9d618c5e501 100644 --- a/etc/themes/tsdh-light-theme.el +++ b/etc/themes/tsdh-light-theme.el | |||
| @@ -25,9 +25,8 @@ Used and created by Tassilo Horn.") | |||
| 25 | 25 | ||
| 26 | (custom-theme-set-faces | 26 | (custom-theme-set-faces |
| 27 | 'tsdh-light | 27 | 'tsdh-light |
| 28 | '(Info-quoted ((t (:weight bold)))) | 28 | '(Info-quoted ((t (:underline "gray40" :weight bold)))) |
| 29 | '(ace-jump-face-foreground ((t (:foreground "DeepPink" :box nil :weight bold)))) | 29 | '(aw-leading-char-face ((t (:background "red" :foreground "white" :weight bold)))) |
| 30 | '(aw-leading-char-face ((t (:inherit ace-jump-face-foreground)))) | ||
| 31 | '(default ((t (:background "white" :foreground "black")))) | 30 | '(default ((t (:background "white" :foreground "black")))) |
| 32 | '(diff-added ((t (:inherit diff-changed :background "light green")))) | 31 | '(diff-added ((t (:inherit diff-changed :background "light green")))) |
| 33 | '(diff-changed ((t (:background "light steel blue")))) | 32 | '(diff-changed ((t (:background "light steel blue")))) |
| @@ -36,6 +35,8 @@ Used and created by Tassilo Horn.") | |||
| 36 | '(diff-indicator-removed ((t (:inherit diff-indicator-changed)))) | 35 | '(diff-indicator-removed ((t (:inherit diff-indicator-changed)))) |
| 37 | '(diff-removed ((t (:inherit diff-changed :background "sandy brown")))) | 36 | '(diff-removed ((t (:inherit diff-changed :background "sandy brown")))) |
| 38 | '(dired-directory ((t (:inherit font-lock-function-name-face :weight bold)))) | 37 | '(dired-directory ((t (:inherit font-lock-function-name-face :weight bold)))) |
| 38 | '(font-lock-regexp-grouping-backslash ((t (:inherit bold :foreground "black")))) | ||
| 39 | '(font-lock-regexp-grouping-construct ((t (:inherit bold :foreground "black")))) | ||
| 39 | '(gnus-button ((t (:inherit button)))) | 40 | '(gnus-button ((t (:inherit button)))) |
| 40 | '(gnus-header-name ((t (:box (:line-width 1 :style released-button) :weight bold)))) | 41 | '(gnus-header-name ((t (:box (:line-width 1 :style released-button) :weight bold)))) |
| 41 | '(gnus-group-mail-1 ((t (:inherit gnus-group-mail-1-empty :weight bold)))) | 42 | '(gnus-group-mail-1 ((t (:inherit gnus-group-mail-1-empty :weight bold)))) |
diff --git a/lisp/doc-view.el b/lisp/doc-view.el index 9d912c3f6d9..223565cedb6 100644 --- a/lisp/doc-view.el +++ b/lisp/doc-view.el | |||
| @@ -626,7 +626,7 @@ at the bottom edge of the page moves to the next page." | |||
| 626 | (image-bob) | 626 | (image-bob) |
| 627 | (image-bol 1)) | 627 | (image-bol 1)) |
| 628 | (set-window-hscroll (selected-window) hscroll))) | 628 | (set-window-hscroll (selected-window) hscroll))) |
| 629 | (image-next-line 1))) | 629 | (image-next-line arg))) |
| 630 | 630 | ||
| 631 | (defun doc-view-previous-line-or-previous-page (&optional arg) | 631 | (defun doc-view-previous-line-or-previous-page (&optional arg) |
| 632 | "Scroll downward by ARG lines if possible, else goto previous page. | 632 | "Scroll downward by ARG lines if possible, else goto previous page. |
diff --git a/lisp/forms.el b/lisp/forms.el index c0b48fd3b63..b068352e6eb 100644 --- a/lisp/forms.el +++ b/lisp/forms.el | |||
| @@ -593,7 +593,7 @@ Commands: Equivalent keys in read-only mode: | |||
| 593 | ;; set-visited-file-name from calling set-auto-mode, which | 593 | ;; set-visited-file-name from calling set-auto-mode, which |
| 594 | ;; might kill all local variables and set forms-file nil, | 594 | ;; might kill all local variables and set forms-file nil, |
| 595 | ;; which will then barf in find-file-noselect below. This can | 595 | ;; which will then barf in find-file-noselect below. This can |
| 596 | ;; hapen when the user sets the default major mode that is | 596 | ;; happen when the user sets the default major mode that is |
| 597 | ;; different from the Fundamental mode. | 597 | ;; different from the Fundamental mode. |
| 598 | (let (change-major-mode-with-file-name) | 598 | (let (change-major-mode-with-file-name) |
| 599 | (set-visited-file-name nil)) | 599 | (set-visited-file-name nil)) |
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index 5c2331aea48..734155e217d 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el | |||
| @@ -4585,6 +4585,8 @@ Argument MIME is non-nil if this is a mime message." | |||
| 4585 | (list armor-start (- (point-max) after-end) mime | 4585 | (list armor-start (- (point-max) after-end) mime |
| 4586 | armor-end-regexp))) | 4586 | armor-end-regexp))) |
| 4587 | 4587 | ||
| 4588 | (declare-function rmail-mime-entity-truncated "rmailmm" (entity)) | ||
| 4589 | |||
| 4588 | ;; Should this have a key-binding, or be in a menu? | 4590 | ;; Should this have a key-binding, or be in a menu? |
| 4589 | ;; There doesn't really seem to be an appropriate menu. | 4591 | ;; There doesn't really seem to be an appropriate menu. |
| 4590 | ;; Eg the edit command is not in a menu either. | 4592 | ;; Eg the edit command is not in a menu either. |
diff --git a/lisp/progmodes/cc-defs.el b/lisp/progmodes/cc-defs.el index 7365f695f3b..ba15d7f13e0 100644 --- a/lisp/progmodes/cc-defs.el +++ b/lisp/progmodes/cc-defs.el | |||
| @@ -1409,7 +1409,7 @@ been put there by c-put-char-property. POINT remains unchanged." | |||
| 1409 | (c-state-cache-good-pos c-state-cache-good-pos) | 1409 | (c-state-cache-good-pos c-state-cache-good-pos) |
| 1410 | ;(c-state-nonlit-pos-cache (copy-tree c-state-nonlit-pos-cache)) | 1410 | ;(c-state-nonlit-pos-cache (copy-tree c-state-nonlit-pos-cache)) |
| 1411 | ;(c-state-nonlit-pos-cache-limit c-state-nonlit-pos-cache-limit) | 1411 | ;(c-state-nonlit-pos-cache-limit c-state-nonlit-pos-cache-limit) |
| 1412 | ;(c-state-semi-nonlit-pos-cache (copy-treec c-state-semi-nonlit-pos-cache)) | 1412 | ;(c-state-semi-nonlit-pos-cache (copy-tree c-state-semi-nonlit-pos-cache)) |
| 1413 | ;(c-state-semi-nonlit-pos-cache-limit c-state-semi-nonlit-pos-cache) | 1413 | ;(c-state-semi-nonlit-pos-cache-limit c-state-semi-nonlit-pos-cache) |
| 1414 | (c-state-brace-pair-desert (copy-tree c-state-brace-pair-desert)) | 1414 | (c-state-brace-pair-desert (copy-tree c-state-brace-pair-desert)) |
| 1415 | (c-state-point-min c-state-point-min) | 1415 | (c-state-point-min c-state-point-min) |
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el index 2389f742937..972bf99145e 100644 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el | |||
| @@ -2173,7 +2173,7 @@ See `font-lock-syntax-table'.") | |||
| 2173 | 'font-lock-string-face))) | 2173 | 'font-lock-string-face))) |
| 2174 | ;; Perl-ish keywords. | 2174 | ;; Perl-ish keywords. |
| 2175 | "\\_<\\(?:BEGIN\\|END\\)\\_>\\|^__END__$" | 2175 | "\\_<\\(?:BEGIN\\|END\\)\\_>\\|^__END__$" |
| 2176 | ;; Variables. | 2176 | ;; Singleton objects. |
| 2177 | (,(concat ruby-font-lock-keyword-beg-re | 2177 | (,(concat ruby-font-lock-keyword-beg-re |
| 2178 | "\\_<\\(nil\\|true\\|false\\)\\_>") | 2178 | "\\_<\\(nil\\|true\\|false\\)\\_>") |
| 2179 | 1 font-lock-constant-face) | 2179 | 1 font-lock-constant-face) |
| @@ -2181,7 +2181,7 @@ See `font-lock-syntax-table'.") | |||
| 2181 | ("\\_<__\\(?:LINE\\|ENCODING\\|FILE\\)__\\_>" | 2181 | ("\\_<__\\(?:LINE\\|ENCODING\\|FILE\\)__\\_>" |
| 2182 | (0 font-lock-builtin-face)) | 2182 | (0 font-lock-builtin-face)) |
| 2183 | ;; Symbols. | 2183 | ;; Symbols. |
| 2184 | ("\\(^\\|[^:]\\)\\(:@?\\(?:\\w\\|_\\)+\\)\\([!?=]\\)?" | 2184 | ("\\(^\\|[^:]\\)\\(:@\\{0,2\\}\\(?:\\sw\\|\\s_\\)+\\)" |
| 2185 | (2 font-lock-constant-face) | 2185 | (2 font-lock-constant-face) |
| 2186 | (3 (unless (and (eq (char-before (match-end 3)) ?=) | 2186 | (3 (unless (and (eq (char-before (match-end 3)) ?=) |
| 2187 | (eq (char-after (match-end 3)) ?>)) | 2187 | (eq (char-after (match-end 3)) ?>)) |
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el index 69e6a154ae5..feed0fb36d9 100644 --- a/lisp/progmodes/xref.el +++ b/lisp/progmodes/xref.el | |||
| @@ -436,6 +436,8 @@ If SELECT is non-nil, select the target window." | |||
| 436 | ;;; XREF buffer (part of the UI) | 436 | ;;; XREF buffer (part of the UI) |
| 437 | 437 | ||
| 438 | ;; The xref buffer is used to display a set of xrefs. | 438 | ;; The xref buffer is used to display a set of xrefs. |
| 439 | (defconst xref-buffer-name "*xref*" | ||
| 440 | "The name of the buffer to show xrefs.") | ||
| 439 | 441 | ||
| 440 | (defmacro xref--with-dedicated-window (&rest body) | 442 | (defmacro xref--with-dedicated-window (&rest body) |
| 441 | `(let* ((xref-w (get-buffer-window xref-buffer-name)) | 443 | `(let* ((xref-w (get-buffer-window xref-buffer-name)) |
| @@ -470,6 +472,9 @@ If SELECT is non-nil, select the target window." | |||
| 470 | (xref--show-pos-in-buf marker buf select)) | 472 | (xref--show-pos-in-buf marker buf select)) |
| 471 | (user-error (message (error-message-string err))))) | 473 | (user-error (message (error-message-string err))))) |
| 472 | 474 | ||
| 475 | (defvar-local xref--window nil | ||
| 476 | "The original window this xref buffer was created from.") | ||
| 477 | |||
| 473 | (defun xref-show-location-at-point () | 478 | (defun xref-show-location-at-point () |
| 474 | "Display the source of xref at point in the appropriate window, if any." | 479 | "Display the source of xref at point in the appropriate window, if any." |
| 475 | (interactive) | 480 | (interactive) |
| @@ -500,9 +505,6 @@ If SELECT is non-nil, select the target window." | |||
| 500 | (back-to-indentation) | 505 | (back-to-indentation) |
| 501 | (get-text-property (point) 'xref-item))) | 506 | (get-text-property (point) 'xref-item))) |
| 502 | 507 | ||
| 503 | (defvar-local xref--window nil | ||
| 504 | "The original window this xref buffer was created from.") | ||
| 505 | |||
| 506 | (defun xref-goto-xref () | 508 | (defun xref-goto-xref () |
| 507 | "Jump to the xref on the current line and select its window." | 509 | "Jump to the xref on the current line and select its window." |
| 508 | (interactive) | 510 | (interactive) |
| @@ -624,9 +626,6 @@ references displayed in the current *xref* buffer." | |||
| 624 | (t | 626 | (t |
| 625 | (error "No %s xref" (if backward "previous" "next")))))) | 627 | (error "No %s xref" (if backward "previous" "next")))))) |
| 626 | 628 | ||
| 627 | (defconst xref-buffer-name "*xref*" | ||
| 628 | "The name of the buffer to show xrefs.") | ||
| 629 | |||
| 630 | (defvar xref--button-map | 629 | (defvar xref--button-map |
| 631 | (let ((map (make-sparse-keymap))) | 630 | (let ((map (make-sparse-keymap))) |
| 632 | (define-key map [(control ?m)] #'xref-goto-xref) | 631 | (define-key map [(control ?m)] #'xref-goto-xref) |
diff --git a/lisp/simple.el b/lisp/simple.el index 1701eb0e0f3..971f6006732 100644 --- a/lisp/simple.el +++ b/lisp/simple.el | |||
| @@ -408,15 +408,19 @@ A non-nil INTERACTIVE argument means to run the `post-self-insert-hook'." | |||
| 408 | (last-command-event ?\n) | 408 | (last-command-event ?\n) |
| 409 | ;; Don't auto-fill if we have a numeric argument. | 409 | ;; Don't auto-fill if we have a numeric argument. |
| 410 | (auto-fill-function (if arg nil auto-fill-function)) | 410 | (auto-fill-function (if arg nil auto-fill-function)) |
| 411 | (arg (prefix-numeric-value arg)) | ||
| 411 | (postproc | 412 | (postproc |
| 412 | ;; Do the rest in post-self-insert-hook, because we want to do it | 413 | ;; Do the rest in post-self-insert-hook, because we want to do it |
| 413 | ;; *before* other functions on that hook. | 414 | ;; *before* other functions on that hook. |
| 414 | (lambda () | 415 | (lambda () |
| 415 | (cl-assert (eq ?\n (char-before))) | 416 | ;; We are not going to insert any newlines if arg is |
| 417 | ;; non-positive. | ||
| 418 | (or (and (numberp arg) (<= arg 0)) | ||
| 419 | (cl-assert (eq ?\n (char-before)))) | ||
| 416 | ;; Mark the newline(s) `hard'. | 420 | ;; Mark the newline(s) `hard'. |
| 417 | (if use-hard-newlines | 421 | (if use-hard-newlines |
| 418 | (set-hard-newline-properties | 422 | (set-hard-newline-properties |
| 419 | (- (point) (prefix-numeric-value arg)) (point))) | 423 | (- (point) arg) (point))) |
| 420 | ;; If the newline leaves the previous line blank, and we | 424 | ;; If the newline leaves the previous line blank, and we |
| 421 | ;; have a left margin, delete that from the blank line. | 425 | ;; have a left margin, delete that from the blank line. |
| 422 | (save-excursion | 426 | (save-excursion |
| @@ -433,19 +437,21 @@ A non-nil INTERACTIVE argument means to run the `post-self-insert-hook'." | |||
| 433 | (move-to-left-margin nil t))))) | 437 | (move-to-left-margin nil t))))) |
| 434 | (unwind-protect | 438 | (unwind-protect |
| 435 | (if (not interactive) | 439 | (if (not interactive) |
| 436 | ;; FIXME: For non-interactive uses, many calls actually just want | 440 | ;; FIXME: For non-interactive uses, many calls actually |
| 437 | ;; (insert "\n"), so maybe we should do just that, so as to avoid | 441 | ;; just want (insert "\n"), so maybe we should do just |
| 438 | ;; the risk of filling or running abbrevs unexpectedly. | 442 | ;; that, so as to avoid the risk of filling or running |
| 439 | (let ((post-self-insert-hook (list postproc))) | 443 | ;; abbrevs unexpectedly. |
| 440 | (self-insert-command (prefix-numeric-value arg))) | 444 | (let ((post-self-insert-hook (list postproc))) |
| 441 | (unwind-protect | 445 | (self-insert-command arg)) |
| 442 | (progn | 446 | (unwind-protect |
| 443 | (add-hook 'post-self-insert-hook postproc nil t) | 447 | (progn |
| 444 | (self-insert-command (prefix-numeric-value arg))) | 448 | (add-hook 'post-self-insert-hook postproc nil t) |
| 445 | ;; We first used let-binding to protect the hook, but that was naive | 449 | (self-insert-command arg)) |
| 446 | ;; since add-hook affects the symbol-default value of the variable, | 450 | ;; We first used let-binding to protect the hook, but that |
| 447 | ;; whereas the let-binding might only protect the buffer-local value. | 451 | ;; was naive since add-hook affects the symbol-default |
| 448 | (remove-hook 'post-self-insert-hook postproc t))) | 452 | ;; value of the variable, whereas the let-binding might |
| 453 | ;; only protect the buffer-local value. | ||
| 454 | (remove-hook 'post-self-insert-hook postproc t))) | ||
| 449 | (cl-assert (not (member postproc post-self-insert-hook))) | 455 | (cl-assert (not (member postproc post-self-insert-hook))) |
| 450 | (cl-assert (not (member postproc (default-value 'post-self-insert-hook)))))) | 456 | (cl-assert (not (member postproc (default-value 'post-self-insert-hook)))))) |
| 451 | nil) | 457 | nil) |
diff --git a/src/bidi.c b/src/bidi.c index a68ffdb7e6d..c23ff954356 100644 --- a/src/bidi.c +++ b/src/bidi.c | |||
| @@ -532,7 +532,7 @@ bidi_copy_it (struct bidi_it *to, struct bidi_it *from) | |||
| 532 | /* Copy everything from the start through the active part of | 532 | /* Copy everything from the start through the active part of |
| 533 | the level stack. */ | 533 | the level stack. */ |
| 534 | memcpy (to, from, | 534 | memcpy (to, from, |
| 535 | (offsetof (struct bidi_it, level_stack[1]) | 535 | (offsetof (struct bidi_it, level_stack) + sizeof from->level_stack[0] |
| 536 | + from->stack_idx * sizeof from->level_stack[0])); | 536 | + from->stack_idx * sizeof from->level_stack[0])); |
| 537 | } | 537 | } |
| 538 | 538 | ||
diff --git a/src/emacsgtkfixed.c b/src/emacsgtkfixed.c index cebd7b613c7..ca0bbfbb866 100644 --- a/src/emacsgtkfixed.c +++ b/src/emacsgtkfixed.c | |||
| @@ -27,13 +27,12 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 27 | #include "emacsgtkfixed.h" | 27 | #include "emacsgtkfixed.h" |
| 28 | 28 | ||
| 29 | /* Silence a bogus diagnostic; see GNOME bug 683906. */ | 29 | /* Silence a bogus diagnostic; see GNOME bug 683906. */ |
| 30 | #if 4 < __GNUC__ + (7 <= __GNUC_MINOR__) | 30 | #if 4 < __GNUC__ + (7 <= __GNUC_MINOR__) && ! GLIB_CHECK_VERSION (2, 35, 7) |
| 31 | # pragma GCC diagnostic push | 31 | # pragma GCC diagnostic push |
| 32 | # pragma GCC diagnostic ignored "-Wunused-local-typedefs" | 32 | # pragma GCC diagnostic ignored "-Wunused-local-typedefs" |
| 33 | #endif | 33 | #endif |
| 34 | 34 | ||
| 35 | typedef struct _EmacsFixed EmacsFixed; | 35 | typedef struct _EmacsFixed EmacsFixed; |
| 36 | typedef struct _EmacsFixedPrivate EmacsFixedPrivate; | ||
| 37 | typedef struct _EmacsFixedClass EmacsFixedClass; | 36 | typedef struct _EmacsFixedClass EmacsFixedClass; |
| 38 | 37 | ||
| 39 | struct _EmacsFixedPrivate | 38 | struct _EmacsFixedPrivate |
diff --git a/src/emacsgtkfixed.h b/src/emacsgtkfixed.h index 3d6a76ab570..0d09525e02a 100644 --- a/src/emacsgtkfixed.h +++ b/src/emacsgtkfixed.h | |||
| @@ -30,7 +30,6 @@ G_BEGIN_DECLS | |||
| 30 | struct frame; | 30 | struct frame; |
| 31 | 31 | ||
| 32 | typedef struct _EmacsFixedPrivate EmacsFixedPrivate; | 32 | typedef struct _EmacsFixedPrivate EmacsFixedPrivate; |
| 33 | typedef struct _EmacsFixedClass EmacsFixedClass; | ||
| 34 | 33 | ||
| 35 | struct _EmacsFixed | 34 | struct _EmacsFixed |
| 36 | { | 35 | { |
diff --git a/src/floatfns.c b/src/floatfns.c index b9af03b3431..c1bd25877e3 100644 --- a/src/floatfns.c +++ b/src/floatfns.c | |||
| @@ -3,8 +3,7 @@ | |||
| 3 | Copyright (C) 1988, 1993-1994, 1999, 2001-2016 Free Software Foundation, | 3 | Copyright (C) 1988, 1993-1994, 1999, 2001-2016 Free Software Foundation, |
| 4 | Inc. | 4 | Inc. |
| 5 | 5 | ||
| 6 | Author: Wolfgang Rupprecht (ac | 6 | Author: Wolfgang Rupprecht (according to ack.texi) |
| 7 | ording to ack.texi) | ||
| 8 | 7 | ||
| 9 | This file is part of GNU Emacs. | 8 | This file is part of GNU Emacs. |
| 10 | 9 | ||
diff --git a/src/gtkutil.c b/src/gtkutil.c index 7dca5851f29..ba059b73a70 100644 --- a/src/gtkutil.c +++ b/src/gtkutil.c | |||
| @@ -1300,7 +1300,7 @@ xg_create_frame_widgets (struct frame *f) | |||
| 1300 | if (! g_signal_handler_find (G_OBJECT (gs), | 1300 | if (! g_signal_handler_find (G_OBJECT (gs), |
| 1301 | G_SIGNAL_MATCH_FUNC, | 1301 | G_SIGNAL_MATCH_FUNC, |
| 1302 | 0, 0, 0, | 1302 | 0, 0, 0, |
| 1303 | G_CALLBACK (style_changed_cb), | 1303 | (gpointer) G_CALLBACK (style_changed_cb), |
| 1304 | 0)) | 1304 | 0)) |
| 1305 | { | 1305 | { |
| 1306 | g_signal_connect (G_OBJECT (gs), "notify::gtk-theme-name", | 1306 | g_signal_connect (G_OBJECT (gs), "notify::gtk-theme-name", |
| @@ -1832,14 +1832,10 @@ xg_toggle_notify_cb (GObject *gobject, GParamSpec *arg1, gpointer user_data) | |||
| 1832 | 1832 | ||
| 1833 | if (!!visible != !!toggle_on) | 1833 | if (!!visible != !!toggle_on) |
| 1834 | { | 1834 | { |
| 1835 | g_signal_handlers_block_by_func (G_OBJECT (wtoggle), | 1835 | gpointer cb = (gpointer) G_CALLBACK (xg_toggle_visibility_cb); |
| 1836 | G_CALLBACK (xg_toggle_visibility_cb), | 1836 | g_signal_handlers_block_by_func (G_OBJECT (wtoggle), cb, gobject); |
| 1837 | gobject); | ||
| 1838 | gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wtoggle), visible); | 1837 | gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wtoggle), visible); |
| 1839 | g_signal_handlers_unblock_by_func | 1838 | g_signal_handlers_unblock_by_func (G_OBJECT (wtoggle), cb, gobject); |
| 1840 | (G_OBJECT (wtoggle), | ||
| 1841 | G_CALLBACK (xg_toggle_visibility_cb), | ||
| 1842 | gobject); | ||
| 1843 | } | 1839 | } |
| 1844 | x_gtk_show_hidden_files = visible; | 1840 | x_gtk_show_hidden_files = visible; |
| 1845 | } | 1841 | } |
diff --git a/src/lisp.h b/src/lisp.h index d0abb24b685..e606ffa0259 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -1768,7 +1768,8 @@ CHAR_TABLE_EXTRA_SLOTS (struct Lisp_Char_Table *ct) | |||
| 1768 | 1768 | ||
| 1769 | /* Make sure that sub char-table contents slot is where we think it is. */ | 1769 | /* Make sure that sub char-table contents slot is where we think it is. */ |
| 1770 | verify (offsetof (struct Lisp_Sub_Char_Table, contents) | 1770 | verify (offsetof (struct Lisp_Sub_Char_Table, contents) |
| 1771 | == offsetof (struct Lisp_Vector, contents[SUB_CHAR_TABLE_OFFSET])); | 1771 | == (offsetof (struct Lisp_Vector, contents) |
| 1772 | + SUB_CHAR_TABLE_OFFSET * sizeof (Lisp_Object))); | ||
| 1772 | 1773 | ||
| 1773 | /*********************************************************************** | 1774 | /*********************************************************************** |
| 1774 | Symbols | 1775 | Symbols |
diff --git a/src/nsterm.m b/src/nsterm.m index 38aa4a3a413..b796193af77 100644 --- a/src/nsterm.m +++ b/src/nsterm.m | |||
| @@ -1172,10 +1172,31 @@ ns_clip_to_row (struct window *w, struct glyph_row *row, | |||
| 1172 | ========================================================================== */ | 1172 | ========================================================================== */ |
| 1173 | 1173 | ||
| 1174 | 1174 | ||
| 1175 | // This bell implementation shows the visual bell image asynchronously | ||
| 1176 | // from the rest of Emacs. This is done by adding a NSView to the | ||
| 1177 | // superview of the Emacs window and removing it using a timer. | ||
| 1178 | // | ||
| 1179 | // Unfortunately, some Emacs operations, like scrolling, is done using | ||
| 1180 | // low-level primitives that copy the content of the window, including | ||
| 1181 | // the bell image. To some extent, this is handled by removing the | ||
| 1182 | // image prior to scrolling and marking that the window is in need for | ||
| 1183 | // redisplay. | ||
| 1184 | // | ||
| 1185 | // To test this code, make sure that there is no artifacts of the bell | ||
| 1186 | // image in the following situations. Use a non-empty buffer (like the | ||
| 1187 | // tutorial) to ensure that a scroll is performed: | ||
| 1188 | // | ||
| 1189 | // * Single-window: C-g C-v | ||
| 1190 | // | ||
| 1191 | // * Side-by-windows: C-x 3 C-g C-v | ||
| 1192 | // | ||
| 1193 | // * Windows above each other: C-x 2 C-g C-v | ||
| 1194 | |||
| 1175 | @interface EmacsBell : NSImageView | 1195 | @interface EmacsBell : NSImageView |
| 1176 | { | 1196 | { |
| 1177 | // Number of currently active bell:s. | 1197 | // Number of currently active bell:s. |
| 1178 | unsigned int nestCount; | 1198 | unsigned int nestCount; |
| 1199 | NSView * mView; | ||
| 1179 | bool isAttached; | 1200 | bool isAttached; |
| 1180 | } | 1201 | } |
| 1181 | - (void)show:(NSView *)view; | 1202 | - (void)show:(NSView *)view; |
| @@ -1204,7 +1225,6 @@ ns_clip_to_row (struct window *w, struct glyph_row *row, | |||
| 1204 | [self.image unlockFocus]; | 1225 | [self.image unlockFocus]; |
| 1205 | #else | 1226 | #else |
| 1206 | self.image = [NSImage imageNamed:NSImageNameCaution]; | 1227 | self.image = [NSImage imageNamed:NSImageNameCaution]; |
| 1207 | [self.image setScalesWhenResized:YES]; | ||
| 1208 | [self.image setSize:NSMakeSize(self.image.size.width * 5, | 1228 | [self.image setSize:NSMakeSize(self.image.size.width * 5, |
| 1209 | self.image.size.height * 5)]; | 1229 | self.image.size.height * 5)]; |
| 1210 | #endif | 1230 | #endif |
| @@ -1229,6 +1249,7 @@ ns_clip_to_row (struct window *w, struct glyph_row *row, | |||
| 1229 | [self setFrameSize:self.image.size]; | 1249 | [self setFrameSize:self.image.size]; |
| 1230 | 1250 | ||
| 1231 | isAttached = true; | 1251 | isAttached = true; |
| 1252 | mView = view; | ||
| 1232 | [[[view window] contentView] addSubview:self | 1253 | [[[view window] contentView] addSubview:self |
| 1233 | positioned:NSWindowAbove | 1254 | positioned:NSWindowAbove |
| 1234 | relativeTo:nil]; | 1255 | relativeTo:nil]; |
| @@ -1258,9 +1279,12 @@ ns_clip_to_row (struct window *w, struct glyph_row *row, | |||
| 1258 | 1279 | ||
| 1259 | -(void)remove | 1280 | -(void)remove |
| 1260 | { | 1281 | { |
| 1282 | NSTRACE ("[EmacsBell remove]"); | ||
| 1261 | if (isAttached) | 1283 | if (isAttached) |
| 1262 | { | 1284 | { |
| 1285 | NSTRACE_MSG ("removeFromSuperview"); | ||
| 1263 | [self removeFromSuperview]; | 1286 | [self removeFromSuperview]; |
| 1287 | mView.needsDisplay = YES; | ||
| 1264 | isAttached = false; | 1288 | isAttached = false; |
| 1265 | } | 1289 | } |
| 1266 | } | 1290 | } |
| @@ -1310,6 +1334,8 @@ static void hide_bell () | |||
| 1310 | Ensure the bell is hidden. | 1334 | Ensure the bell is hidden. |
| 1311 | -------------------------------------------------------------------------- */ | 1335 | -------------------------------------------------------------------------- */ |
| 1312 | { | 1336 | { |
| 1337 | NSTRACE ("hide_bell"); | ||
| 1338 | |||
| 1313 | if (bell_view != nil) | 1339 | if (bell_view != nil) |
| 1314 | { | 1340 | { |
| 1315 | [bell_view remove]; | 1341 | [bell_view remove]; |
| @@ -2392,6 +2418,8 @@ ns_clear_frame_area (struct frame *f, int x, int y, int width, int height) | |||
| 2392 | static void | 2418 | static void |
| 2393 | ns_copy_bits (struct frame *f, NSRect src, NSRect dest) | 2419 | ns_copy_bits (struct frame *f, NSRect src, NSRect dest) |
| 2394 | { | 2420 | { |
| 2421 | NSTRACE ("ns_copy_bits"); | ||
| 2422 | |||
| 2395 | if (FRAME_NS_VIEW (f)) | 2423 | if (FRAME_NS_VIEW (f)) |
| 2396 | { | 2424 | { |
| 2397 | hide_bell(); // Ensure the bell image isn't scrolled. | 2425 | hide_bell(); // Ensure the bell image isn't scrolled. |
diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el index a29e42e7343..d9563ec9174 100644 --- a/test/lisp/net/tramp-tests.el +++ b/test/lisp/net/tramp-tests.el | |||
| @@ -1785,6 +1785,14 @@ Several special characters do not work properly there." | |||
| 1785 | (file-truename tramp-test-temporary-file-directory) nil | 1785 | (file-truename tramp-test-temporary-file-directory) nil |
| 1786 | (string-match "^HP-UX" (tramp-get-connection-property v "uname" "")))) | 1786 | (string-match "^HP-UX" (tramp-get-connection-property v "uname" "")))) |
| 1787 | 1787 | ||
| 1788 | (defun tramp--test-darwin-p () | ||
| 1789 | "Check, whether the remote host runs Mac OS X. | ||
| 1790 | Several special characters do not work properly there." | ||
| 1791 | ;; We must refill the cache. `file-truename' does it. | ||
| 1792 | (with-parsed-tramp-file-name | ||
| 1793 | (file-truename tramp-test-temporary-file-directory) nil | ||
| 1794 | (string-match "^Darwin" (tramp-get-connection-property v "uname" "")))) | ||
| 1795 | |||
| 1788 | (defun tramp--test-check-files (&rest files) | 1796 | (defun tramp--test-check-files (&rest files) |
| 1789 | "Run a simple but comprehensive test over every file in FILES." | 1797 | "Run a simple but comprehensive test over every file in FILES." |
| 1790 | ;; We must use `file-truename' for the temporary directory, because | 1798 | ;; We must use `file-truename' for the temporary directory, because |
| @@ -2038,9 +2046,10 @@ Use the `ls' command." | |||
| 2038 | (file-name-coding-system 'utf-8)) | 2046 | (file-name-coding-system 'utf-8)) |
| 2039 | (tramp--test-check-files | 2047 | (tramp--test-check-files |
| 2040 | (unless (tramp--test-hpux-p) "Γυρίστε το Γαλαξία με Ώτο Στοπ") | 2048 | (unless (tramp--test-hpux-p) "Γυρίστε το Γαλαξία με Ώτο Στοπ") |
| 2041 | (unless (tramp--test-hpux-p) | 2049 | (unless (or (tramp--test-hpux-p) (tramp--test-darwin-p)) |
| 2042 | "أصبح بوسعك الآن تنزيل نسخة كاملة من موسوعة ويكيبيديا العربية لتصفحها بلا اتصال بالإنترنت") | 2050 | "أصبح بوسعك الآن تنزيل نسخة كاملة من موسوعة ويكيبيديا العربية لتصفحها بلا اتصال بالإنترنت") |
| 2043 | "银河系漫游指南系列" | 2051 | (unless (tramp--test-darwin-p) |
| 2052 | "银河系漫游指南系列") | ||
| 2044 | "Автостопом по гала́ктике"))) | 2053 | "Автостопом по гала́ктике"))) |
| 2045 | 2054 | ||
| 2046 | (ert-deftest tramp-test32-utf8 () | 2055 | (ert-deftest tramp-test32-utf8 () |