annotate lisp/xt-mouse.el @ 49506:ac9e2eeeb03d

New format of AUTHORS file; list each author name once followed by contributed and changed files. Improve selection of entries to include in list, and generate list of unrecognized entries indicating syntax errors in ChangeLog files. (authors-coding-system): New variable. (authors-many-files): Update doc string. (authors-aliases): Change format. Now one entry with multiple aliases per author. (authors-valid-file-names, authors-renamed-files-alist) (authors-renamed-files-regexps): New variables. (authors-canonical-file-name): New function. Validates that file exists or occurs in one of the above lists. Record unrecognized file names in global authors-invalid-file-names list. (authors-add): Change to record per-change counts. (authors-canonical-author-name): Handle new format of authors-aliases list. (authors-scan-change-log): Rename FILE arg to LOG-FILE. Change doc string to describe new entry format. Only add author entries for valid file names. (authors-print): Replace by authors-add-to-author-list. (authors-add-to-author-list): New function which reorders per-file entries and adds them to global authors-author-list. (authors): Instead of authors-print to insert in *Authors* buffer, use authors-add-to-author-list to reorder the list and then insert result in *Authors* buffer with new format. Generate *Authors Errors* compilation-mode buffer listing unrecognized ChangeLog entries.
author Kim F. Storm <storm@cua.dk>
date Wed, 29 Jan 2003 00:13:11 +0000
parents cd975daf6365
children e88404e8f2cf
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 38178
diff changeset
1 ;;; xt-mouse.el --- support the mouse when emacs run in an xterm
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13920
diff changeset
2
38563
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
3 ;; Copyright (C) 1994, 2000, 2001 Free Software Foundation
13163
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4
17982
24b81a90c347 Updated address.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 15331
diff changeset
5 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
13163
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 ;; Keywords: mouse, terminals
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13920
diff changeset
8 ;; This file is part of GNU Emacs.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13920
diff changeset
9
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13920
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
13163
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; any later version.
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13920
diff changeset
14
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13920
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
13163
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; GNU General Public License for more details.
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13920
diff changeset
19
13163
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13920
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13920
diff changeset
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13920
diff changeset
23 ;; Boston, MA 02111-1307, USA.
13163
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24
27803
5b4cb85d9312 Doc fixes.
Dave Love <fx@gnu.org>
parents: 23823
diff changeset
25 ;;; Commentary:
13163
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26
14750
01ca1fbb38bc Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
27 ;; Enable mouse support when running inside an xterm or Linux console.
13163
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 ;; This is actually useful when you are running X11 locally, but is
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 ;; working on remote machine over a modem line or through a gateway.
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 ;; It works by translating xterm escape codes into generic emacs mouse
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 ;; events so it should work with any package that uses the mouse.
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34
14750
01ca1fbb38bc Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
35 ;; The xterm mouse escape codes are supposedly also supported by the
01ca1fbb38bc Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
36 ;; Linux console, but I have not been able to verify this.
01ca1fbb38bc Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
37
01ca1fbb38bc Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
38 ;; You don't have to turn off xterm mode to use the normal xterm mouse
01ca1fbb38bc Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
39 ;; functionality, it is still available by holding down the SHIFT key
01ca1fbb38bc Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
40 ;; when you press the mouse button.
01ca1fbb38bc Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
41
13163
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 ;;; Todo:
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 ;; Support multi-click -- somehow.
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 ;; Clicking on the mode-line does not work, although it should.
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47
27803
5b4cb85d9312 Doc fixes.
Dave Love <fx@gnu.org>
parents: 23823
diff changeset
48 ;;; Code:
13163
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 (define-key function-key-map "\e[M" 'xterm-mouse-translate)
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51
13920
3a5b5eeba5b5 (xterm-mouse-translate, xterm-mouse-event):
Richard M. Stallman <rms@gnu.org>
parents: 13500
diff changeset
52 (defvar xterm-mouse-last)
3a5b5eeba5b5 (xterm-mouse-translate, xterm-mouse-event):
Richard M. Stallman <rms@gnu.org>
parents: 13500
diff changeset
53
13163
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 (defun xterm-mouse-translate (event)
27803
5b4cb85d9312 Doc fixes.
Dave Love <fx@gnu.org>
parents: 23823
diff changeset
55 "Read a click and release event from XTerm."
13163
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 (save-excursion
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 (save-window-excursion
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 (deactivate-mark)
13920
3a5b5eeba5b5 (xterm-mouse-translate, xterm-mouse-event):
Richard M. Stallman <rms@gnu.org>
parents: 13500
diff changeset
59 (let* ((xterm-mouse-last)
13500
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
60 (down (xterm-mouse-event))
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
61 (down-command (nth 0 down))
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
62 (down-data (nth 1 down))
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
63 (down-where (nth 1 down-data))
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
64 (down-binding (key-binding (if (symbolp down-where)
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
65 (vector down-where down-command)
38563
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
66 (vector down-command))))
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
67 (is-click (string-match "^mouse" (symbol-name (car down)))))
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
68
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
69 (unless is-click
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
70 (unless (and (eq (read-char) ?\e)
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
71 (eq (read-char) ?\[)
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
72 (eq (read-char) ?M))
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
73 (error "Unexpected escape sequence from XTerm")))
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
74
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
75 (let* ((click (if is-click down (xterm-mouse-event)))
13500
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
76 (click-command (nth 0 click))
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
77 (click-data (nth 1 click))
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
78 (click-where (nth 1 click-data)))
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
79 (if (memq down-binding '(nil ignore))
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
80 (if (and (symbolp click-where)
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
81 (not (eq 'menu-bar click-where)))
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
82 (vector (list click-where click-data) click)
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
83 (vector click))
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
84 (setq unread-command-events
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
85 (if (eq down-where click-where)
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
86 (list click)
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
87 (list
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
88 ;; Cheat `mouse-drag-region' with move event.
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
89 (list 'mouse-movement click-data)
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
90 ;; Generate a drag event.
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
91 (if (symbolp down-where)
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
92 0
27803
5b4cb85d9312 Doc fixes.
Dave Love <fx@gnu.org>
parents: 23823
diff changeset
93 (list (intern (format "drag-mouse-%d"
5b4cb85d9312 Doc fixes.
Dave Love <fx@gnu.org>
parents: 23823
diff changeset
94 (+ 1 xterm-mouse-last)))
13500
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
95 down-data click-data))
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
96 )))
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
97 (if (and (symbolp down-where)
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
98 (not (eq 'menu-bar down-where)))
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
99 (vector (list down-where down-data) down)
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
100 (vector down))))))))
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
101
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
102 (defvar xterm-mouse-x 0
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
103 "Position of last xterm mouse event relative to the frame.")
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
104
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
105 (defvar xterm-mouse-y 0
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
106 "Position of last xterm mouse event relative to the frame.")
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
107
23823
d60ff4432412 (xterm-mouse-mode): Pacify the byte compiler.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 21270
diff changeset
108 ;; Indicator for the xterm-mouse mode.
d60ff4432412 (xterm-mouse-mode): Pacify the byte compiler.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 21270
diff changeset
109
27803
5b4cb85d9312 Doc fixes.
Dave Love <fx@gnu.org>
parents: 23823
diff changeset
110 (defun xterm-mouse-position-function (pos)
5b4cb85d9312 Doc fixes.
Dave Love <fx@gnu.org>
parents: 23823
diff changeset
111 "Bound to `mouse-position-function' in XTerm mouse mode."
5b4cb85d9312 Doc fixes.
Dave Love <fx@gnu.org>
parents: 23823
diff changeset
112 (setcdr pos (cons xterm-mouse-x xterm-mouse-y))
5b4cb85d9312 Doc fixes.
Dave Love <fx@gnu.org>
parents: 23823
diff changeset
113 pos)
13163
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115 (defun xterm-mouse-event ()
27803
5b4cb85d9312 Doc fixes.
Dave Love <fx@gnu.org>
parents: 23823
diff changeset
116 "Convert XTerm mouse event to Emacs mouse event."
38563
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
117 (let* ((type (- (read-char) #o40))
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
118 (x (- (read-char) #o40 1))
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
119 (y (- (read-char) #o40 1))
13163
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
120 (point (cons x y))
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
121 (window (window-at x y))
27803
5b4cb85d9312 Doc fixes.
Dave Love <fx@gnu.org>
parents: 23823
diff changeset
122 (where (if window
13500
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
123 (coordinates-in-window-p point window)
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
124 'menu-bar))
13163
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125 (pos (if (consp where)
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126 (progn
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127 (select-window window)
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128 (goto-char (window-start window))
38178
364478eab234 (xterm-mouse-event): If the buffer displayed in the
Eli Zaretskii <eliz@gnu.org>
parents: 27804
diff changeset
129 (move-to-window-line (-
364478eab234 (xterm-mouse-event): If the buffer displayed in the
Eli Zaretskii <eliz@gnu.org>
parents: 27804
diff changeset
130 (cdr where)
364478eab234 (xterm-mouse-event): If the buffer displayed in the
Eli Zaretskii <eliz@gnu.org>
parents: 27804
diff changeset
131 (if (or header-line-format
364478eab234 (xterm-mouse-event): If the buffer displayed in the
Eli Zaretskii <eliz@gnu.org>
parents: 27804
diff changeset
132 default-header-line-format)
364478eab234 (xterm-mouse-event): If the buffer displayed in the
Eli Zaretskii <eliz@gnu.org>
parents: 27804
diff changeset
133 1
364478eab234 (xterm-mouse-event): If the buffer displayed in the
Eli Zaretskii <eliz@gnu.org>
parents: 27804
diff changeset
134 0)))
13163
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135 (move-to-column (+ (car where) (current-column)
15331
8cf5ec9e5058 (xterm-mouse-event): Adjust for minibuffer prompt width.
Richard M. Stallman <rms@gnu.org>
parents: 14750
diff changeset
136 (if (string-match "\\` \\*Minibuf"
8cf5ec9e5058 (xterm-mouse-event): Adjust for minibuffer prompt width.
Richard M. Stallman <rms@gnu.org>
parents: 14750
diff changeset
137 (buffer-name))
8cf5ec9e5058 (xterm-mouse-event): Adjust for minibuffer prompt width.
Richard M. Stallman <rms@gnu.org>
parents: 14750
diff changeset
138 (- (minibuffer-prompt-width))
8cf5ec9e5058 (xterm-mouse-event): Adjust for minibuffer prompt width.
Richard M. Stallman <rms@gnu.org>
parents: 14750
diff changeset
139 0)
13163
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 (max 0 (1- (window-hscroll)))))
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141 (point))
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142 where))
38563
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
143 (mouse (intern
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
144 ;; For buttons > 3, the release-event looks
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
145 ;; differently (see xc/programs/xterm/button.c,
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
146 ;; function EditorButton), and there seems to come in
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
147 ;; a release-event only, no down-event.
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
148 (cond ((>= type 64)
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
149 (format "mouse-%d" (- type 60)))
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
150 ((= type 3)
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
151 (format "mouse-%d" (+ 1 xterm-mouse-last)))
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
152 (t
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
153 (setq xterm-mouse-last type)
75f49513b989 (xterm-mouse-event): Recognize control sequences
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
154 (format "down-mouse-%d" (+ 1 type)))))))
13500
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
155 (setq xterm-mouse-x x
5de4c8a3f702 (global-map): Removed bindings of down events to ignore.
Richard M. Stallman <rms@gnu.org>
parents: 13163
diff changeset
156 xterm-mouse-y y)
13163
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157 (list mouse
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158 (list window pos point
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159 (/ (nth 2 (current-time)) 1000)))))
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161 ;;;###autoload
44520
53a8da1bdd13 (xterm-mouse-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41814
diff changeset
162 (define-minor-mode xterm-mouse-mode
13163
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 "Toggle XTerm mouse mode.
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
164 With prefix arg, turn XTerm mouse mode on iff arg is positive.
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166 Turn it on to use emacs mouse commands, and off to use xterm mouse commands."
46836
cd975daf6365 * xt-mouse.el (xterm-mouse-mode): Make it a global mode.
John Paul Wallington <jpw@pobox.com>
parents: 44520
diff changeset
167 nil " Mouse" nil :global t
44520
53a8da1bdd13 (xterm-mouse-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41814
diff changeset
168 (if xterm-mouse-mode
53a8da1bdd13 (xterm-mouse-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41814
diff changeset
169 ;; Turn it on
53a8da1bdd13 (xterm-mouse-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41814
diff changeset
170 (unless window-system
53a8da1bdd13 (xterm-mouse-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41814
diff changeset
171 (setq mouse-position-function #'xterm-mouse-position-function)
53a8da1bdd13 (xterm-mouse-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41814
diff changeset
172 (turn-on-xterm-mouse-tracking))
53a8da1bdd13 (xterm-mouse-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41814
diff changeset
173 ;; Turn it off
53a8da1bdd13 (xterm-mouse-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41814
diff changeset
174 (turn-off-xterm-mouse-tracking 'force)
53a8da1bdd13 (xterm-mouse-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41814
diff changeset
175 (setq mouse-position-function nil)))
13163
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177 (defun turn-on-xterm-mouse-tracking ()
27803
5b4cb85d9312 Doc fixes.
Dave Love <fx@gnu.org>
parents: 23823
diff changeset
178 "Enable Emacs mouse tracking in xterm."
13163
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179 (if xterm-mouse-mode
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180 (send-string-to-terminal "\e[?1000h")))
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
181
44520
53a8da1bdd13 (xterm-mouse-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41814
diff changeset
182 (defun turn-off-xterm-mouse-tracking (&optional force)
41814
42c496dc0b7d (turn-off-xterm-mouse-tracking): Doc fix.
Andreas Schwab <schwab@suse.de>
parents: 38563
diff changeset
183 "Disable Emacs mouse tracking in xterm."
44520
53a8da1bdd13 (xterm-mouse-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 41814
diff changeset
184 (if (or force xterm-mouse-mode)
13163
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
185 (send-string-to-terminal "\e[?1000l")))
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 ;; Restore normal mouse behaviour outside Emacs.
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 (add-hook 'suspend-hook 'turn-off-xterm-mouse-tracking)
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 (add-hook 'suspend-resume-hook 'turn-on-xterm-mouse-tracking)
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 (add-hook 'kill-emacs-hook 'turn-off-xterm-mouse-tracking)
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192 (provide 'xt-mouse)
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
193
01f90e21a1db Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194 ;;; xt-mouse.el ends here