Now on revision 109094. ------------------------------------------------------------ revno: 109094 committer: Leo Liu branch nick: trunk timestamp: Sun 2012-07-15 08:52:16 +0800 message: Add news for exclamation-mark and flymake diff: === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2012-07-14 02:08:32 +0000 +++ doc/lispref/ChangeLog 2012-07-15 00:52:16 +0000 @@ -1,3 +1,7 @@ +2012-07-15 Leo Liu + + * display.texi (Fringe Bitmaps): Add exclamation-mark. + 2012-07-13 Chong Yidong * buffers.texi (Read Only Buffers): Document toggle-read-only === modified file 'doc/lispref/display.texi' --- doc/lispref/display.texi 2012-06-17 05:13:40 +0000 +++ doc/lispref/display.texi 2012-07-15 00:52:16 +0000 @@ -3550,7 +3550,7 @@ @itemx @code{vertical-bar}, @code{horizontal-bar} Used for different types of fringe cursors. -@item @code{empty-line}, @code{question-mark} +@item @code{empty-line}, @code{question-mark}, @code{exclamation-mark} Unused. @end table === modified file 'etc/ChangeLog' --- etc/ChangeLog 2012-07-14 02:08:32 +0000 +++ etc/ChangeLog 2012-07-15 00:52:16 +0000 @@ -1,3 +1,7 @@ +2012-07-15 Leo Liu + + * NEWS: Mention exclamation-mark and flymake. + 2012-07-08 Juanma Barranquero * tutorials/TUTORIAL.es: Sync with changes in revno:108936. === modified file 'etc/NEWS' --- etc/NEWS 2012-07-14 02:19:07 +0000 +++ etc/NEWS 2012-07-15 00:52:16 +0000 @@ -113,6 +113,8 @@ ** Face underlining can now use a wave. See the "Face Attributes" section of the Elisp manual. +** New fringe bitmap exclamation-mark. + ** String values for `initial-buffer-choice' also apply to emacsclient frames, if emacsclient is only told to open a new frame without specifying any file to visit or expression to evaluate. @@ -268,6 +270,10 @@ the face `diff-changed', or `diff-removed' and `diff-added' to highlight changes in context diffs. +** Flymake uses fringe bitmaps to indicate errors and warnings. +See flymake-fringe-indicator-position, flymake-error-bitmap and +flymake-warning-bitmap. + ** Ediff now uses the same color scheme as Diff mode on high color displays. === modified file 'src/ChangeLog' --- src/ChangeLog 2012-07-14 11:44:39 +0000 +++ src/ChangeLog 2012-07-15 00:52:16 +0000 @@ -1,3 +1,7 @@ +2012-07-15 Leo Liu + + * fringe.c: Fix typo in comments. + 2012-07-14 Leo Liu * fringe.c: Add a new bitmap exclamation-mark. === modified file 'src/fringe.c' --- src/fringe.c 2012-07-14 11:44:39 +0000 +++ src/fringe.c 2012-07-15 00:52:16 +0000 @@ -107,7 +107,7 @@ static unsigned short question_mark_bits[] = { 0x3c, 0x7e, 0x7e, 0x0c, 0x18, 0x18, 0x00, 0x18, 0x18}; -/* A exclamation mark. */ +/* An exclamation mark. */ /* ...XX... ...XX... ------------------------------------------------------------ revno: 109093 fixes bug(s): http://debbugs.gnu.org/10642 committer: Chong Yidong branch nick: trunk timestamp: Sat 2012-07-14 23:40:12 +0800 message: * xt-mouse.el: Implement extended mouse coordinates. (xterm-mouse-translate): Move code into xterm-mouse-translate-1. (xterm-mouse-translate-extended, xterm-mouse-translate-1) (xterm-mouse--read-event-sequence-1000) (xterm-mouse--read-event-sequence-1006): New functions. For old mouse protocol, handle M-mouse-X events correctly. (xterm-mouse-event): New arg specifying mouse protocol. (turn-on-xterm-mouse-tracking-on-terminal) (turn-off-xterm-mouse-tracking-on-terminal): Send DEC 1006 sequence to toggle extended coordinates on newer XTerms. This appears to be harmless on terminals which do not support this. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-07-14 12:02:22 +0000 +++ lisp/ChangeLog 2012-07-14 15:40:12 +0000 @@ -1,3 +1,17 @@ +2012-07-14 Chong Yidong + + * xt-mouse.el: Implement extended mouse coordinates (Bug#10642). + (xterm-mouse-translate): Move code into xterm-mouse-translate-1. + (xterm-mouse-translate-extended, xterm-mouse-translate-1) + (xterm-mouse--read-event-sequence-1000) + (xterm-mouse--read-event-sequence-1006): New functions. For old + mouse protocol, handle M-mouse-X events correctly. + (xterm-mouse-event): New arg specifying mouse protocol. + (turn-on-xterm-mouse-tracking-on-terminal) + (turn-off-xterm-mouse-tracking-on-terminal): Send DEC 1006 + sequence to toggle extended coordinates on newer XTerms. This + appears to be harmless on terminals which do not support this. + 2012-07-14 Leo Liu Add fringe bitmap indicators for flymake. (Bug#11253) === modified file 'lisp/xt-mouse.el' --- lisp/xt-mouse.el 2012-01-19 07:21:25 +0000 +++ lisp/xt-mouse.el 2012-07-14 15:40:12 +0000 @@ -47,33 +47,49 @@ ;; Mouse events symbols must have an 'event-kind property with ;; the value 'mouse-click. (dolist (event-type '(mouse-1 mouse-2 mouse-3 - M-down-mouse-1 M-down-mouse-2 M-down-mouse-3)) + M-down-mouse-1 M-down-mouse-2 M-down-mouse-3)) (put event-type 'event-kind 'mouse-click)) (defun xterm-mouse-translate (_event) "Read a click and release event from XTerm." + (xterm-mouse-translate-1)) + +(defun xterm-mouse-translate-extended (_event) + "Read a click and release event from XTerm. +Similar to `xterm-mouse-translate', but using the \"1006\" +extension, which supports coordinates >= 231 (see +http://invisible-island.net/xterm/ctlseqs/ctlseqs.html)." + (xterm-mouse-translate-1 1006)) + +(defun xterm-mouse-translate-1 (&optional extension) (save-excursion (save-window-excursion (deactivate-mark) - (let* ((xterm-mouse-last) - (down (xterm-mouse-event)) + (let* ((xterm-mouse-last nil) + (down (xterm-mouse-event extension)) (down-command (nth 0 down)) - (down-data (nth 1 down)) - (down-where (nth 1 down-data)) + (down-data (nth 1 down)) + (down-where (nth 1 down-data)) (down-binding (key-binding (if (symbolp down-where) (vector down-where down-command) (vector down-command)))) (is-click (string-match "^mouse" (symbol-name (car down))))) + ;; Retrieve the expected preface for the up-event. (unless is-click - (unless (and (eq (read-char) ?\e) - (eq (read-char) ?\[) - (eq (read-char) ?M)) + (unless (cond ((null extension) + (and (eq (read-char) ?\e) + (eq (read-char) ?\[) + (eq (read-char) ?M))) + ((eq extension 1006) + (and (eq (read-char) ?\e) + (eq (read-char) ?\[) + (eq (read-char) ?<)))) (error "Unexpected escape sequence from XTerm"))) - (let* ((click (if is-click down (xterm-mouse-event))) - ;; (click-command (nth 0 click)) - (click-data (nth 1 click)) + ;; Process the up-event. + (let* ((click (if is-click down (xterm-mouse-event extension))) + (click-data (nth 1 click)) (click-where (nth 1 click-data))) (if (memq down-binding '(nil ignore)) (if (and (symbolp click-where) @@ -81,17 +97,18 @@ (vector (list click-where click-data) click) (vector click)) (setq unread-command-events - (if (eq down-where click-where) - (list click) - (list - ;; Cheat `mouse-drag-region' with move event. - (list 'mouse-movement click-data) - ;; Generate a drag event. - (if (symbolp down-where) - 0 - (list (intern (format "drag-mouse-%d" - (+ 1 xterm-mouse-last))) - down-data click-data))))) + (append (if (eq down-where click-where) + (list click) + (list + ;; Cheat `mouse-drag-region' with move event. + (list 'mouse-movement click-data) + ;; Generate a drag event. + (if (symbolp down-where) + 0 + (list (intern (format "drag-mouse-%d" + (1+ xterm-mouse-last))) + down-data click-data)))) + unread-command-events)) (if xterm-mouse-debug-buffer (print unread-command-events xterm-mouse-debug-buffer)) (if (and (symbolp down-where) @@ -118,7 +135,7 @@ (terminal-parameter nil 'xterm-mouse-y)))) pos) -;; read xterm sequences above ascii 127 (#x7f) +;; Read XTerm sequences above ASCII 127 (#x7f) (defun xterm-mouse-event-read () ;; We get the characters decoded by the keyboard coding system. Try ;; to recover the raw character. @@ -147,11 +164,82 @@ (fdiff (- f (* 1.0 maxwrap dbig)))) (+ (truncate fdiff) (* maxwrap dbig)))))) -(defun xterm-mouse-event () - "Convert XTerm mouse event to Emacs mouse event." - (let* ((type (- (xterm-mouse-event-read) #o40)) - (x (- (xterm-mouse-event-read) #o40 1)) - (y (- (xterm-mouse-event-read) #o40 1)) +;; Normal terminal mouse click reporting: expect three bytes, of the +;; form . Return a list (EVENT-TYPE X Y). +(defun xterm-mouse--read-event-sequence-1000 () + (list (let ((code (- (xterm-mouse-event-read) 32))) + (intern + ;; For buttons > 3, the release-event looks differently + ;; (see xc/programs/xterm/button.c, function EditorButton), + ;; and come in a release-event only, no down-event. + (cond ((>= code 64) + (format "mouse-%d" (- code 60))) + ((memq code '(8 9 10)) + (setq xterm-mouse-last code) + (format "M-down-mouse-%d" (- code 7))) + ((= code 11) + (format "M-mouse-%d" (- xterm-mouse-last 7))) + ((= code 3) + ;; For buttons > 5 xterm only reports a + ;; button-release event. Avoid error by mapping + ;; them all to mouse-1. + (format "mouse-%d" (+ 1 (or xterm-mouse-last 0)))) + (t + (setq xterm-mouse-last code) + (format "down-mouse-%d" (+ 1 code)))))) + ;; x and y coordinates + (- (xterm-mouse-event-read) 33) + (- (xterm-mouse-event-read) 33))) + +;; XTerm's 1006-mode terminal mouse click reporting has the form +;;