diff --git a/lisp/international/emoji.el b/lisp/international/emoji.el index cbf7c547f4c..e8cd869a571 100644 --- a/lisp/international/emoji.el +++ b/lisp/international/emoji.el @@ -164,12 +164,12 @@ when the command was invoked." (let ((buf (current-buffer))) (emoji--init) (switch-to-buffer (get-buffer-create "*Emoji*")) + (setq-local emoji--insert-buffer buf) ;; Don't regenerate the buffer if it already exists -- this will ;; leave point where it was the last time it was used. (when (zerop (buffer-size)) (let ((inhibit-read-only t)) (emoji-list-mode) - (setq-local emoji--insert-buffer buf) (emoji--list-generate nil (cons nil emoji--labels)) (goto-char (point-min)))))) diff --git a/lisp/whitespace.el b/lisp/whitespace.el index 28d131b054c..cd8cd0450f2 100644 --- a/lisp/whitespace.el +++ b/lisp/whitespace.el @@ -739,7 +739,7 @@ This variable is used when `whitespace-style' includes (defcustom whitespace-indentation-regexp '("^\t*\\(\\( \\{%d\\}\\)+\\)[^\n\t]" - . "^ *\\(\t+\\)[^\n]") + . "^ *\\(\t+\\).") "Regexps to match indentation whitespace that should be visualized. The value should be a cons whose car specifies the regexp to match @@ -1752,7 +1752,7 @@ cleaning up these problems." ((eq (car option) 'space-after-tab::space) (whitespace-space-after-tab-regexp 'space)) ((eq (car option) 'missing-newline-at-eof) - "[^\n]\\'") + ".\\'") (t (cdr option))))) (when (re-search-forward regexp rend t) @@ -2188,14 +2188,14 @@ resultant list will be returned." 1 whitespace-space-after-tab t))) ,@(when (memq 'missing-newline-at-eof whitespace-active-style) ;; Show missing newline. - `(("[^\n]\\'" 0 - ;; Don't mark the end of the buffer is point is there -- + `((".\\'" 0 + ;; Don't mark the end of the buffer if point is there -- ;; it probably means that the user is typing something ;; at the end of the buffer. (and (/= whitespace-point (point-max)) 'whitespace-missing-newline-at-eof) - t))))) - (font-lock-add-keywords nil whitespace-font-lock-keywords t) + prepend))))) + (font-lock-add-keywords nil whitespace-font-lock-keywords 'append) (font-lock-flush))) @@ -2333,10 +2333,22 @@ Also refontify when necessary." (font-lock-flush whitespace-eob-marker (1+ (buffer-size))))) (setq-local whitespace-buffer-changed nil) (setq whitespace-point (point)) ; current point position - (let ((refontify (and (eolp) ; It is at end of line ... - ;; ... with trailing SPACE or TAB - (or (memq (preceding-char) '(?\s ?\t))) - (line-beginning-position))) + (let ((refontify (or (and (eolp) ; It is at end of line ... + ;; ... with trailing SPACE or TAB + (or (memq (preceding-char) '(?\s ?\t))) + (line-beginning-position)) + (and (memq 'missing-newline-at-eof + ;; If user requested to highlight + ;; EOB without a newline... + whitespace-active-style) + ;; ...and the buffer is not empty... + (not (= (point-min) (point-max))) + (= (point-max) (without-restriction (point-max))) + ;; ...and no newline at EOB... + (not (eq (char-before (point-max)) ?\n)) + ;; ...then refontify the last character in + ;; the buffer + (max (1- (point-max)) (point-min))))) (ostart (overlay-start whitespace-point--used))) (cond ((not refontify)