diff options
| author | Joakim Verona | 2011-08-20 10:47:09 +0200 |
|---|---|---|
| committer | Joakim Verona | 2011-08-20 10:47:09 +0200 |
| commit | 636890f209ede9cd3e058b0d26127a379e274073 (patch) | |
| tree | c0e11708994f7d55f182ed3618d84b4c460dd22d | |
| parent | a6df1daab828f67f244af22a24bd19cf7d0f1c1b (diff) | |
| parent | b911cc52c93288b12c04cc5ad658a7ce01fe4991 (diff) | |
| download | emacs-636890f209ede9cd3e058b0d26127a379e274073.tar.gz emacs-636890f209ede9cd3e058b0d26127a379e274073.zip | |
upstream
| -rw-r--r-- | lisp/ChangeLog | 5 | ||||
| -rw-r--r-- | lisp/files.el | 8 | ||||
| -rw-r--r-- | lisp/gnus/ChangeLog | 31 | ||||
| -rw-r--r-- | lisp/gnus/gnus-art.el | 9 | ||||
| -rw-r--r-- | lisp/gnus/gnus-group.el | 15 | ||||
| -rw-r--r-- | lisp/gnus/gnus-sum.el | 3 | ||||
| -rw-r--r-- | lisp/gnus/gnus-util.el | 59 | ||||
| -rw-r--r-- | lisp/gnus/message.el | 8 | ||||
| -rw-r--r-- | lisp/gnus/nnimap.el | 3 | ||||
| -rw-r--r-- | lisp/gnus/nnmail.el | 4 | ||||
| -rw-r--r-- | lisp/gnus/starttls.el | 4 | ||||
| -rw-r--r-- | lisp/minibuffer.el | 22 | ||||
| -rw-r--r-- | src/ChangeLog | 11 | ||||
| -rw-r--r-- | src/xdisp.c | 19 | ||||
| -rw-r--r-- | src/xfaces.c | 15 |
15 files changed, 134 insertions, 82 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 38c536af62c..fcccc802203 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2011-08-19 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * files.el (hack-local-variables-prop-line, hack-local-variables): | ||
| 4 | Downcase "Mode:". (Bug#9331) | ||
| 5 | |||
| 1 | 2011-08-18 Chong Yidong <cyd@stupidchicken.com> | 6 | 2011-08-18 Chong Yidong <cyd@stupidchicken.com> |
| 2 | 7 | ||
| 3 | * international/characters.el: Add L and R categories. | 8 | * international/characters.el: Add L and R categories. |
diff --git a/lisp/files.el b/lisp/files.el index 6b8a352f20c..8c7e63dda14 100644 --- a/lisp/files.el +++ b/lisp/files.el | |||
| @@ -3003,9 +3003,10 @@ mode, if there is one, otherwise nil." | |||
| 3003 | "-mode")))) | 3003 | "-mode")))) |
| 3004 | (or (equal keyname "coding") | 3004 | (or (equal keyname "coding") |
| 3005 | (condition-case nil | 3005 | (condition-case nil |
| 3006 | (push (cons (if (eq key 'eval) | 3006 | (push (cons (cond ((eq key 'eval) 'eval) |
| 3007 | 'eval | 3007 | ;; Downcase "Mode:". |
| 3008 | (indirect-variable key)) | 3008 | ((equal keyname "mode") 'mode) |
| 3009 | (t (indirect-variable key))) | ||
| 3009 | val) result) | 3010 | val) result) |
| 3010 | (error nil)))) | 3011 | (error nil)))) |
| 3011 | (skip-chars-forward " \t;"))) | 3012 | (skip-chars-forward " \t;"))) |
| @@ -3153,6 +3154,7 @@ major-mode." | |||
| 3153 | (var (let ((read-circle nil)) | 3154 | (var (let ((read-circle nil)) |
| 3154 | (read str))) | 3155 | (read str))) |
| 3155 | val val2) | 3156 | val val2) |
| 3157 | (and (eq var 'Mode) (setq var 'mode)) | ||
| 3156 | ;; Read the variable value. | 3158 | ;; Read the variable value. |
| 3157 | (skip-chars-forward "^:") | 3159 | (skip-chars-forward "^:") |
| 3158 | (forward-char 1) | 3160 | (forward-char 1) |
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 230bd8a6508..744817e68f2 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog | |||
| @@ -1,3 +1,13 @@ | |||
| 1 | 2011-08-19 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 2 | |||
| 3 | * nnimap.el (nnimap-transform-headers): Protect against (NIL ...) | ||
| 4 | bodystructures (bug#9314). | ||
| 5 | |||
| 6 | 2011-08-19 Katsumi Yamaoka <yamaoka@jpl.org> | ||
| 7 | |||
| 8 | * gnus-art.el (gnus-insert-mime-button, gnus-mime-display-alternative): | ||
| 9 | Make button keymap non-sticky after buttons. | ||
| 10 | |||
| 1 | 2011-08-18 David Engster <dengste@eml.cc> | 11 | 2011-08-18 David Engster <dengste@eml.cc> |
| 2 | 12 | ||
| 3 | * nnmairix.el (nnmairix-request-set-mark) | 13 | * nnmairix.el (nnmairix-request-set-mark) |
| @@ -7,8 +17,29 @@ | |||
| 7 | `gnus-registry-get-id-key' since `gnus-registry-fetch-groups' isn't | 17 | `gnus-registry-get-id-key' since `gnus-registry-fetch-groups' isn't |
| 8 | available anymore. | 18 | available anymore. |
| 9 | 19 | ||
| 20 | 2011-08-12 Simon Josefsson <simon@josefsson.org> | ||
| 21 | |||
| 22 | * starttls.el (starttls-any-program-available): Define as obsolete | ||
| 23 | function. | ||
| 24 | |||
| 25 | 2011-08-18 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 26 | |||
| 27 | * gnus-util.el (gnus-y-or-n-p): Reinstate the message-clearing y-or-n-p | ||
| 28 | versions which Gnus use when appropriate. | ||
| 29 | |||
| 30 | * gnus-group.el (gnus-group-clear-data): Add a y-or-n query, since it's | ||
| 31 | a pretty destructive command. | ||
| 32 | |||
| 33 | * nnmail.el (nnmail-extra-headers): Clarify slightly (bug#9302). | ||
| 34 | |||
| 10 | 2011-08-17 Lars Magne Ingebrigtsen <larsi@gnus.org> | 35 | 2011-08-17 Lars Magne Ingebrigtsen <larsi@gnus.org> |
| 11 | 36 | ||
| 37 | * message.el (message-fix-before-sending): Make a different warning | ||
| 38 | about NUL characters (bug#9270). | ||
| 39 | |||
| 40 | * gnus-sum.el (gnus-auto-select-subject): Allow specifying a function | ||
| 41 | from custom (bug#9260). | ||
| 42 | |||
| 12 | * gnus-spec.el (gnus-lrm-string): Use 8206 instead of ?\x200e to make | 43 | * gnus-spec.el (gnus-lrm-string): Use 8206 instead of ?\x200e to make |
| 13 | things work in Emacs 22 and XEmacs, too. | 44 | things work in Emacs 22 and XEmacs, too. |
| 14 | 45 | ||
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index 28c6aca367c..c6e0180dadc 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el | |||
| @@ -5700,7 +5700,8 @@ all parts." | |||
| 5700 | gnus-callback gnus-mm-display-part | 5700 | gnus-callback gnus-mm-display-part |
| 5701 | gnus-part ,gnus-tmp-id | 5701 | gnus-part ,gnus-tmp-id |
| 5702 | article-type annotation | 5702 | article-type annotation |
| 5703 | gnus-data ,handle)) | 5703 | gnus-data ,handle |
| 5704 | rear-nonsticky t)) | ||
| 5704 | (setq e (if (bolp) | 5705 | (setq e (if (bolp) |
| 5705 | ;; Exclude a newline. | 5706 | ;; Exclude a newline. |
| 5706 | (1- (point)) | 5707 | (1- (point)) |
| @@ -6013,7 +6014,8 @@ If displaying \"text/html\" is discouraged \(see | |||
| 6013 | ,gnus-mouse-face-prop ,gnus-article-mouse-face | 6014 | ,gnus-mouse-face-prop ,gnus-article-mouse-face |
| 6014 | face ,gnus-article-button-face | 6015 | face ,gnus-article-button-face |
| 6015 | gnus-part ,id | 6016 | gnus-part ,id |
| 6016 | article-type multipart)) | 6017 | article-type multipart |
| 6018 | rear-nonsticky t)) | ||
| 6017 | (widget-convert-button 'link from (point) | 6019 | (widget-convert-button 'link from (point) |
| 6018 | :action 'gnus-widget-press-button | 6020 | :action 'gnus-widget-press-button |
| 6019 | :button-keymap gnus-widget-button-keymap) | 6021 | :button-keymap gnus-widget-button-keymap) |
| @@ -6037,7 +6039,8 @@ If displaying \"text/html\" is discouraged \(see | |||
| 6037 | ,gnus-mouse-face-prop ,gnus-article-mouse-face | 6039 | ,gnus-mouse-face-prop ,gnus-article-mouse-face |
| 6038 | face ,gnus-article-button-face | 6040 | face ,gnus-article-button-face |
| 6039 | gnus-part ,id | 6041 | gnus-part ,id |
| 6040 | gnus-data ,handle)) | 6042 | gnus-data ,handle |
| 6043 | rear-nonsticky t)) | ||
| 6041 | (widget-convert-button 'link from (point) | 6044 | (widget-convert-button 'link from (point) |
| 6042 | :action 'gnus-widget-press-button | 6045 | :action 'gnus-widget-press-button |
| 6043 | :button-keymap gnus-widget-button-keymap) | 6046 | :button-keymap gnus-widget-button-keymap) |
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el index 2a31ccd34f0..5ae29053b6f 100644 --- a/lisp/gnus/gnus-group.el +++ b/lisp/gnus/gnus-group.el | |||
| @@ -3471,13 +3471,14 @@ sort in reverse order." | |||
| 3471 | "Clear all marks and read ranges from the current group. | 3471 | "Clear all marks and read ranges from the current group. |
| 3472 | Obeys the process/prefix convention." | 3472 | Obeys the process/prefix convention." |
| 3473 | (interactive "P") | 3473 | (interactive "P") |
| 3474 | (gnus-group-iterate arg | 3474 | (when (gnus-y-or-n-p "Really clear data? ") |
| 3475 | (lambda (group) | 3475 | (gnus-group-iterate arg |
| 3476 | (let (info) | 3476 | (lambda (group) |
| 3477 | (gnus-info-clear-data (setq info (gnus-get-info group))) | 3477 | (let (info) |
| 3478 | (gnus-get-unread-articles-in-group info (gnus-active group) t) | 3478 | (gnus-info-clear-data (setq info (gnus-get-info group))) |
| 3479 | (when (gnus-group-goto-group group) | 3479 | (gnus-get-unread-articles-in-group info (gnus-active group) t) |
| 3480 | (gnus-group-update-group-line)))))) | 3480 | (when (gnus-group-goto-group group) |
| 3481 | (gnus-group-update-group-line))))))) | ||
| 3481 | 3482 | ||
| 3482 | (defun gnus-group-clear-data-on-native-groups () | 3483 | (defun gnus-group-clear-data-on-native-groups () |
| 3483 | "Clear all marks and read ranges from all native groups." | 3484 | "Clear all marks and read ranges from all native groups." |
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index cd4699e6107..73ecffb090e 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el | |||
| @@ -375,7 +375,8 @@ place point on some subject line." | |||
| 375 | (const unread) | 375 | (const unread) |
| 376 | (const first) | 376 | (const first) |
| 377 | (const unseen) | 377 | (const unseen) |
| 378 | (const unseen-or-unread))) | 378 | (const unseen-or-unread) |
| 379 | (function :tag "Function to call"))) | ||
| 379 | 380 | ||
| 380 | (defcustom gnus-auto-select-next t | 381 | (defcustom gnus-auto-select-next t |
| 381 | "*If non-nil, offer to go to the next group from the end of the previous. | 382 | "*If non-nil, offer to go to the next group from the end of the previous. |
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el index 7155c7f9607..03ff4a2ea4b 100644 --- a/lisp/gnus/gnus-util.el +++ b/lisp/gnus/gnus-util.el | |||
| @@ -388,57 +388,14 @@ TIME defaults to the current time." | |||
| 388 | (define-key keymap key (pop plist)) | 388 | (define-key keymap key (pop plist)) |
| 389 | (pop plist))))) | 389 | (pop plist))))) |
| 390 | 390 | ||
| 391 | ;; Two silly functions to ensure that all `y-or-n-p' questions clear | 391 | (defun gnus-y-or-n-p (prompt) |
| 392 | ;; the echo area. | 392 | (prog1 |
| 393 | ;; | 393 | (y-or-n-p prompt) |
| 394 | ;; Do we really need these functions? Workarounds for bugs in the corresponding | 394 | (message ""))) |
| 395 | ;; Emacs functions? Maybe these bugs are no longer present in any supported | 395 | (defun gnus-yes-or-no-p (prompt) |
| 396 | ;; (X)Emacs version? Alias them to the original functions and see if anyone | 396 | (prog1 |
| 397 | ;; reports a problem. If not, replace with original functions. --rsteib, | 397 | (yes-or-no-p prompt) |
| 398 | ;; 2007-12-14 | 398 | (message ""))) |
| 399 | ;; | ||
| 400 | ;; All supported Emacsen clear the echo area after `yes-or-no-p', so we can | ||
| 401 | ;; remove `yes-or-no-p'. RMS says that not clearing after `y-or-n-p' is | ||
| 402 | ;; intentional (see below), so we could remove `gnus-y-or-n-p' too. | ||
| 403 | ;; Objections? --rsteib, 2008-02-16 | ||
| 404 | ;; | ||
| 405 | ;; ,----[ http://thread.gmane.org/gmane.emacs.gnus.general/65099/focus=66070 ] | ||
| 406 | ;; | From: Richard Stallman | ||
| 407 | ;; | Subject: Re: Do we need gnus-yes-or-no-p and gnus-y-or-n-p? | ||
| 408 | ;; | To: Katsumi Yamaoka [...] | ||
| 409 | ;; | Cc: emacs-devel@[...], xemacs-beta@[...], ding@[...] | ||
| 410 | ;; | Date: Mon, 07 Jan 2008 12:16:05 -0500 | ||
| 411 | ;; | Message-ID: <E1JBva1-000528-VY@fencepost.gnu.org> | ||
| 412 | ;; | | ||
| 413 | ;; | The behavior of `y-or-n-p' that it doesn't clear the question | ||
| 414 | ;; | and the answer is not serious of course, but I feel it is not | ||
| 415 | ;; | cool. | ||
| 416 | ;; | | ||
| 417 | ;; | It is intentional. | ||
| 418 | ;; | | ||
| 419 | ;; | Currently, it is commented out in the trunk by Reiner Steib. He | ||
| 420 | ;; | also wrote the benefit of leaving the question and the answer in | ||
| 421 | ;; | the echo area as follows: | ||
| 422 | ;; | | ||
| 423 | ;; | (http://article.gmane.org/gmane.emacs.gnus.general/66061) | ||
| 424 | ;; | > In contrast to yes-or-no-p it is much easier to type y, n, | ||
| 425 | ;; | > SPC, DEL, etc accidentally, so it might be useful for the user | ||
| 426 | ;; | > to see what he has typed. | ||
| 427 | ;; | | ||
| 428 | ;; | Yes, that is the reason. | ||
| 429 | ;; `---- | ||
| 430 | |||
| 431 | ;; (defun gnus-y-or-n-p (prompt) | ||
| 432 | ;; (prog1 | ||
| 433 | ;; (y-or-n-p prompt) | ||
| 434 | ;; (message ""))) | ||
| 435 | ;; (defun gnus-yes-or-no-p (prompt) | ||
| 436 | ;; (prog1 | ||
| 437 | ;; (yes-or-no-p prompt) | ||
| 438 | ;; (message ""))) | ||
| 439 | |||
| 440 | (defalias 'gnus-y-or-n-p 'y-or-n-p) | ||
| 441 | (defalias 'gnus-yes-or-no-p 'yes-or-no-p) | ||
| 442 | 399 | ||
| 443 | ;; By Frank Schmitt <ich@Frank-Schmitt.net>. Allows to have | 400 | ;; By Frank Schmitt <ich@Frank-Schmitt.net>. Allows to have |
| 444 | ;; age-depending date representations. (e.g. just the time if it's | 401 | ;; age-depending date representations. (e.g. just the time if it's |
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el index a157afe2ce6..52cef1925a2 100644 --- a/lisp/gnus/message.el +++ b/lisp/gnus/message.el | |||
| @@ -4254,8 +4254,10 @@ conformance." | |||
| 4254 | "Invisible text found and made visible; continue sending? ") | 4254 | "Invisible text found and made visible; continue sending? ") |
| 4255 | (error "Invisible text found and made visible"))))) | 4255 | (error "Invisible text found and made visible"))))) |
| 4256 | (message-check 'illegible-text | 4256 | (message-check 'illegible-text |
| 4257 | (let (char found choice) | 4257 | (let (char found choice nul-chars) |
| 4258 | (message-goto-body) | 4258 | (message-goto-body) |
| 4259 | (setq nul-chars (save-excursion | ||
| 4260 | (search-forward "\000" nil t))) | ||
| 4259 | (while (progn | 4261 | (while (progn |
| 4260 | (skip-chars-forward mm-7bit-chars) | 4262 | (skip-chars-forward mm-7bit-chars) |
| 4261 | (when (get-text-property (point) 'no-illegible-text) | 4263 | (when (get-text-property (point) 'no-illegible-text) |
| @@ -4281,7 +4283,9 @@ conformance." | |||
| 4281 | (when found | 4283 | (when found |
| 4282 | (setq choice | 4284 | (setq choice |
| 4283 | (gnus-multiple-choice | 4285 | (gnus-multiple-choice |
| 4284 | "Non-printable characters found. Continue sending?" | 4286 | (if nul-chars |
| 4287 | "NUL characters found, which may cause problems. Continue sending?" | ||
| 4288 | "Non-printable characters found. Continue sending?") | ||
| 4285 | `((?d "Remove non-printable characters and send") | 4289 | `((?d "Remove non-printable characters and send") |
| 4286 | (?r ,(format | 4290 | (?r ,(format |
| 4287 | "Replace non-printable characters with \"%s\" and send" | 4291 | "Replace non-printable characters with \"%s\" and send" |
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el index c940e06fbb6..2dbc465f8c9 100644 --- a/lisp/gnus/nnimap.el +++ b/lisp/gnus/nnimap.el | |||
| @@ -216,9 +216,10 @@ textual parts.") | |||
| 216 | (let ((structure (ignore-errors | 216 | (let ((structure (ignore-errors |
| 217 | (read (current-buffer))))) | 217 | (read (current-buffer))))) |
| 218 | (while (and (consp structure) | 218 | (while (and (consp structure) |
| 219 | (not (stringp (car structure)))) | 219 | (not (atom (car structure)))) |
| 220 | (setq structure (car structure))) | 220 | (setq structure (car structure))) |
| 221 | (setq lines (if (and | 221 | (setq lines (if (and |
| 222 | (stringp (car structure)) | ||
| 222 | (equal (upcase (nth 0 structure)) "MESSAGE") | 223 | (equal (upcase (nth 0 structure)) "MESSAGE") |
| 223 | (equal (upcase (nth 1 structure)) "RFC822")) | 224 | (equal (upcase (nth 1 structure)) "RFC822")) |
| 224 | (nth 9 structure) | 225 | (nth 9 structure) |
diff --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el index 8906a036779..dc2080dee1a 100644 --- a/lisp/gnus/nnmail.el +++ b/lisp/gnus/nnmail.el | |||
| @@ -554,7 +554,9 @@ parameter. It should return nil, `warn' or `delete'." | |||
| 554 | (const delete))) | 554 | (const delete))) |
| 555 | 555 | ||
| 556 | (defcustom nnmail-extra-headers '(To Newsgroups) | 556 | (defcustom nnmail-extra-headers '(To Newsgroups) |
| 557 | "*Extra headers to parse." | 557 | "Extra headers to parse. |
| 558 | In addition to the standard headers, these extra headers will be | ||
| 559 | included in NOV headers (and the like) when backends parse headers." | ||
| 558 | :version "21.1" | 560 | :version "21.1" |
| 559 | :group 'nnmail | 561 | :group 'nnmail |
| 560 | :type '(repeat symbol)) | 562 | :type '(repeat symbol)) |
diff --git a/lisp/gnus/starttls.el b/lisp/gnus/starttls.el index c1caca90cf0..b995f7478ce 100644 --- a/lisp/gnus/starttls.el +++ b/lisp/gnus/starttls.el | |||
| @@ -301,6 +301,10 @@ GNUTLS requires a port number." | |||
| 301 | starttls-gnutls-program | 301 | starttls-gnutls-program |
| 302 | starttls-program))) | 302 | starttls-program))) |
| 303 | 303 | ||
| 304 | (defalias 'starttls-any-program-available 'starttls-available-p) | ||
| 305 | (make-obsolete 'starttls-any-program-available 'starttls-available-p | ||
| 306 | "2011-08-02") | ||
| 307 | |||
| 304 | (provide 'starttls) | 308 | (provide 'starttls) |
| 305 | 309 | ||
| 306 | ;;; starttls.el ends here | 310 | ;;; starttls.el ends here |
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 313298de97e..b82147b97f1 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el | |||
| @@ -1119,13 +1119,27 @@ It also eliminates runs of equal strings." | |||
| 1119 | `(display (space :align-to ,column))) | 1119 | `(display (space :align-to ,column))) |
| 1120 | nil)))) | 1120 | nil)))) |
| 1121 | (if (not (consp str)) | 1121 | (if (not (consp str)) |
| 1122 | (put-text-property (point) (progn (insert str) (point)) | 1122 | (put-text-property (point) |
| 1123 | (progn | ||
| 1124 | (insert (bidi-string-mark-left-to-right | ||
| 1125 | str)) | ||
| 1126 | (point)) | ||
| 1123 | 'mouse-face 'highlight) | 1127 | 'mouse-face 'highlight) |
| 1124 | (put-text-property (point) (progn (insert (car str)) (point)) | 1128 | (put-text-property (point) |
| 1129 | (progn | ||
| 1130 | (insert | ||
| 1131 | (bidi-string-mark-left-to-right | ||
| 1132 | (car str))) | ||
| 1133 | (point)) | ||
| 1125 | 'mouse-face 'highlight) | 1134 | 'mouse-face 'highlight) |
| 1126 | (add-text-properties (point) (progn (insert (cadr str)) (point)) | 1135 | (add-text-properties (point) |
| 1136 | (progn | ||
| 1137 | (insert | ||
| 1138 | (bidi-string-mark-left-to-right | ||
| 1139 | (cadr str))) | ||
| 1140 | (point)) | ||
| 1127 | '(mouse-face nil | 1141 | '(mouse-face nil |
| 1128 | face completions-annotations))) | 1142 | face completions-annotations))) |
| 1129 | (cond | 1143 | (cond |
| 1130 | ((eq completions-format 'vertical) | 1144 | ((eq completions-format 'vertical) |
| 1131 | ;; Vertical format | 1145 | ;; Vertical format |
diff --git a/src/ChangeLog b/src/ChangeLog index 2b5b6fd0602..85a55b2b7c9 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,14 @@ | |||
| 1 | 2011-08-19 Eli Zaretskii <eliz@gnu.org> | ||
| 2 | |||
| 3 | * xfaces.c (face_at_buffer_position): Avoid repeated evaluation of | ||
| 4 | face ID by FACE_FROM_ID, and avoid a crash when mouse is moved | ||
| 5 | from an Org mode buffer to a Speedbar frame. | ||
| 6 | |||
| 7 | * xdisp.c (RECORD_MAX_MIN_POS): If the display element comes from | ||
| 8 | a composition, take its buffer position from IT->cmp_it.charpos. | ||
| 9 | Fixes cursor positioning at the beginning of a line that begins | ||
| 10 | with a composed character. | ||
| 11 | |||
| 1 | 2011-08-18 Eli Zaretskii <eliz@gnu.org> | 12 | 2011-08-18 Eli Zaretskii <eliz@gnu.org> |
| 2 | 13 | ||
| 3 | * bidi.c (bidi_get_type): If bidi_type_table reports zero as the | 14 | * bidi.c (bidi_get_type): If bidi_type_table reports zero as the |
diff --git a/src/xdisp.c b/src/xdisp.c index b26d844cdf2..2cd1bb9bfdb 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -18491,15 +18491,22 @@ display_line (struct it *it) | |||
| 18491 | #define RECORD_MAX_MIN_POS(IT) \ | 18491 | #define RECORD_MAX_MIN_POS(IT) \ |
| 18492 | do \ | 18492 | do \ |
| 18493 | { \ | 18493 | { \ |
| 18494 | if (IT_CHARPOS (*(IT)) < min_pos) \ | 18494 | int composition_p = (IT)->what == IT_COMPOSITION; \ |
| 18495 | EMACS_INT current_pos = \ | ||
| 18496 | composition_p ? (IT)->cmp_it.charpos \ | ||
| 18497 | : IT_CHARPOS (*(IT)); \ | ||
| 18498 | EMACS_INT current_bpos = \ | ||
| 18499 | composition_p ? CHAR_TO_BYTE (current_pos) \ | ||
| 18500 | : IT_BYTEPOS (*(IT)); \ | ||
| 18501 | if (current_pos < min_pos) \ | ||
| 18495 | { \ | 18502 | { \ |
| 18496 | min_pos = IT_CHARPOS (*(IT)); \ | 18503 | min_pos = current_pos; \ |
| 18497 | min_bpos = IT_BYTEPOS (*(IT)); \ | 18504 | min_bpos = current_bpos; \ |
| 18498 | } \ | 18505 | } \ |
| 18499 | if (IT_CHARPOS (*(IT)) > max_pos) \ | 18506 | if (current_pos > max_pos) \ |
| 18500 | { \ | 18507 | { \ |
| 18501 | max_pos = IT_CHARPOS (*(IT)); \ | 18508 | max_pos = current_pos; \ |
| 18502 | max_bpos = IT_BYTEPOS (*(IT)); \ | 18509 | max_bpos = current_bpos; \ |
| 18503 | } \ | 18510 | } \ |
| 18504 | } \ | 18511 | } \ |
| 18505 | while (0) | 18512 | while (0) |
diff --git a/src/xfaces.c b/src/xfaces.c index 83c92cdbc52..52b86638a50 100644 --- a/src/xfaces.c +++ b/src/xfaces.c | |||
| @@ -6008,9 +6008,18 @@ face_at_buffer_position (struct window *w, EMACS_INT pos, | |||
| 6008 | 6008 | ||
| 6009 | *endptr = endpos; | 6009 | *endptr = endpos; |
| 6010 | 6010 | ||
| 6011 | default_face = FACE_FROM_ID (f, base_face_id >= 0 ? base_face_id | 6011 | { |
| 6012 | : NILP (Vface_remapping_alist) ? DEFAULT_FACE_ID | 6012 | int face_id; |
| 6013 | : lookup_basic_face (f, DEFAULT_FACE_ID)); | 6013 | |
| 6014 | if (base_face_id >= 0) | ||
| 6015 | face_id = base_face_id; | ||
| 6016 | else if (NILP (Vface_remapping_alist)) | ||
| 6017 | face_id = DEFAULT_FACE_ID; | ||
| 6018 | else | ||
| 6019 | face_id = lookup_basic_face (f, DEFAULT_FACE_ID); | ||
| 6020 | |||
| 6021 | default_face = FACE_FROM_ID (f, face_id); | ||
| 6022 | } | ||
| 6014 | 6023 | ||
| 6015 | /* Optimize common cases where we can use the default face. */ | 6024 | /* Optimize common cases where we can use the default face. */ |
| 6016 | if (noverlays == 0 | 6025 | if (noverlays == 0 |