Mercurial > emacs
annotate lisp/mouse-sel.el @ 97608:2bde8f2e8ed1
* xterm.c (x_delete_display): Don't call XrmDestroyDatabase on GTK+.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Thu, 21 Aug 2008 19:36:56 +0000 |
parents | c3309dba6542 |
children | d42aff5ca541 |
rev | line source |
---|---|
38436
b174db545cfd
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
30691
diff
changeset
|
1 ;;; mouse-sel.el --- multi-click selection support for Emacs 19 |
4934 | 2 |
64762
41bb365f41c4
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64091
diff
changeset
|
3 ;; Copyright (C) 1993, 1994, 1995, 2001, 2002, 2003, 2004, |
79721 | 4 ;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc. |
4934 | 5 |
46194
71bf019cb382
Change maintainer email address.
Richard M. Stallman <rms@gnu.org>
parents:
41608
diff
changeset
|
6 ;; Author: Mike Williams <mdub@bigfoot.com> |
4934 | 7 ;; Keywords: mouse |
8 | |
9 ;; This file is part of GNU Emacs. | |
10 | |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79721
diff
changeset
|
11 ;; GNU Emacs is free software: you can redistribute it and/or modify |
4934 | 12 ;; it under the terms of the GNU General Public License as published by |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79721
diff
changeset
|
13 ;; the Free Software Foundation, either version 3 of the License, or |
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79721
diff
changeset
|
14 ;; (at your option) any later version. |
4934 | 15 |
16 ;; GNU Emacs is distributed in the hope that it will be useful, | |
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 ;; GNU General Public License for more details. | |
20 | |
14169 | 21 ;; You should have received a copy of the GNU General Public License |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
79721
diff
changeset
|
22 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
14169 | 23 |
7942 | 24 ;;; Commentary: |
14169 | 25 |
4934 | 26 ;; This module provides multi-click mouse support for GNU Emacs versions |
27 ;; 19.18 and later. I've tried to make it behave more like standard X | |
28 ;; clients (eg. xterm) than the default Emacs 19 mouse selection handlers. | |
29 ;; Basically: | |
30 ;; | |
31 ;; * Clicking mouse-1 starts (cancels) selection, dragging extends it. | |
32 ;; | |
33 ;; * Clicking or dragging mouse-3 extends the selection as well. | |
34 ;; | |
35 ;; * Double-clicking on word constituents selects words. | |
36 ;; Double-clicking on symbol constituents selects symbols. | |
37 ;; Double-clicking on quotes or parentheses selects sexps. | |
38 ;; Double-clicking on whitespace selects whitespace. | |
39 ;; Triple-clicking selects lines. | |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
40 ;; Quad-clicking selects paragraphs. |
4934 | 41 ;; |
42 ;; * Selecting sets the region & X primary selection, but does NOT affect | |
43 ;; the kill-ring. Because the mouse handlers set the primary selection | |
44 ;; directly, mouse-sel sets the variables interprogram-cut-function | |
45 ;; and interprogram-paste-function to nil. | |
46 ;; | |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
47 ;; * Clicking mouse-2 inserts the contents of the primary selection at |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
48 ;; the mouse position (or point, if mouse-yank-at-point is non-nil). |
4934 | 49 ;; |
5750
e1153522d5f1
(mouse-sel-version): Don't base version number on
Richard M. Stallman <rms@gnu.org>
parents:
4934
diff
changeset
|
50 ;; * Pressing mouse-2 while selecting or extending copies selection |
4934 | 51 ;; to the kill ring. Pressing mouse-1 or mouse-3 kills it. |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
52 ;; |
5750
e1153522d5f1
(mouse-sel-version): Don't base version number on
Richard M. Stallman <rms@gnu.org>
parents:
4934
diff
changeset
|
53 ;; * Double-clicking mouse-3 also kills selection. |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
54 ;; |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
55 ;; * M-mouse-1, M-mouse-2 & M-mouse-3 work similarly to mouse-1, mouse-2 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
56 ;; & mouse-3, but operate on the X secondary selection rather than the |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
57 ;; primary selection and region. |
4934 | 58 ;; |
5750
e1153522d5f1
(mouse-sel-version): Don't base version number on
Richard M. Stallman <rms@gnu.org>
parents:
4934
diff
changeset
|
59 ;; This module requires my thingatpt.el module, which it uses to find the |
e1153522d5f1
(mouse-sel-version): Don't base version number on
Richard M. Stallman <rms@gnu.org>
parents:
4934
diff
changeset
|
60 ;; bounds of words, lines, sexps, etc. |
4934 | 61 ;; |
62 ;; Thanks to KevinB@bartley.demon.co.uk for his useful input. | |
63 ;; | |
5750
e1153522d5f1
(mouse-sel-version): Don't base version number on
Richard M. Stallman <rms@gnu.org>
parents:
4934
diff
changeset
|
64 ;;--- Customisation ------------------------------------------------------- |
e1153522d5f1
(mouse-sel-version): Don't base version number on
Richard M. Stallman <rms@gnu.org>
parents:
4934
diff
changeset
|
65 ;; |
e1153522d5f1
(mouse-sel-version): Don't base version number on
Richard M. Stallman <rms@gnu.org>
parents:
4934
diff
changeset
|
66 ;; * You may want to use none or more of following: |
4934 | 67 ;; |
68 ;; ;; Enable region highlight | |
69 ;; (transient-mark-mode 1) | |
70 ;; | |
71 ;; ;; But only in the selected window | |
72 ;; (setq highlight-nonselected-windows nil) | |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
73 ;; |
4934 | 74 ;; ;; Enable pending-delete |
75 ;; (delete-selection-mode 1) | |
76 ;; | |
8766 | 77 ;; * You can control the way mouse-sel binds its keys by setting the value |
4934 | 78 ;; of mouse-sel-default-bindings before loading mouse-sel. |
79 ;; | |
80 ;; (a) If mouse-sel-default-bindings = t (the default) | |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
81 ;; |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
82 ;; Mouse sets and insert selection |
4934 | 83 ;; mouse-1 mouse-select |
84 ;; mouse-2 mouse-insert-selection | |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
85 ;; mouse-3 mouse-extend |
4934 | 86 ;; |
87 ;; Selection/kill-ring interaction is disabled | |
88 ;; interprogram-cut-function = nil | |
89 ;; interprogram-paste-function = nil | |
90 ;; | |
91 ;; (b) If mouse-sel-default-bindings = 'interprogram-cut-paste | |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
92 ;; |
4934 | 93 ;; Mouse sets selection, and pastes from kill-ring |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
94 ;; mouse-1 mouse-select |
46403
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
95 ;; mouse-2 mouse-insert-selection |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
96 ;; mouse-3 mouse-extend |
46403
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
97 ;; In this mode, mouse-insert-selection just calls mouse-yank-at-click. |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
98 ;; |
4934 | 99 ;; Selection/kill-ring interaction is retained |
100 ;; interprogram-cut-function = x-select-text | |
101 ;; interprogram-paste-function = x-cut-buffer-or-selection-value | |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
102 ;; |
4934 | 103 ;; What you lose is the ability to select some text in |
104 ;; delete-selection-mode and yank over the top of it. | |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
105 ;; |
4934 | 106 ;; (c) If mouse-sel-default-bindings = nil, no bindings are made. |
107 ;; | |
6228 | 108 ;; * By default, mouse-insert-selection (mouse-2) inserts the selection at |
109 ;; the mouse position. You can tell it to insert at point instead with: | |
110 ;; | |
7644
d50f6828a89d
(mouse-insert-selection): Test mouse-yank-at-point.
Richard M. Stallman <rms@gnu.org>
parents:
7298
diff
changeset
|
111 ;; (setq mouse-yank-at-point t) |
6228 | 112 ;; |
4934 | 113 ;; * I like to leave point at the end of the region nearest to where the |
114 ;; mouse was, even though this makes region highlighting mis-leading (the | |
115 ;; cursor makes it look like one extra character is selected). You can | |
96376
c3309dba6542
American English spelling fix.
Glenn Morris <rgm@gnu.org>
parents:
95841
diff
changeset
|
116 ;; disable this behavior with: |
4934 | 117 ;; |
118 ;; (setq mouse-sel-leave-point-near-mouse nil) | |
119 ;; | |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
120 ;; * By default, mouse-select cycles the click count after 4 clicks. That |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
121 ;; is, clicking mouse-1 five times has the same effect as clicking it |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
122 ;; once, clicking six times has the same effect as clicking twice, etc. |
96376
c3309dba6542
American English spelling fix.
Glenn Morris <rgm@gnu.org>
parents:
95841
diff
changeset
|
123 ;; Disable this behavior with: |
4934 | 124 ;; |
125 ;; (setq mouse-sel-cycle-clicks nil) | |
126 ;; | |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
127 ;; * The variables mouse-sel-{set,get}-selection-function control how the |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
128 ;; selection is handled. Under X Windows, these variables default so |
4934 | 129 ;; that the X primary selection is used. Under other windowing systems, |
130 ;; alternate functions are used, which simply store the selection value | |
131 ;; in a variable. | |
132 ;; | |
133 ;; * You can change the selection highlight face by altering the properties | |
134 ;; of mouse-drag-overlay, eg. | |
135 ;; | |
136 ;; (overlay-put mouse-drag-overlay 'face 'bold) | |
137 | |
14169 | 138 ;;; Code: |
4934 | 139 |
140 (require 'mouse) | |
141 (require 'thingatpt) | |
142 | |
18784
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
143 (eval-when-compile |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
144 (require 'cl)) |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
145 |
4934 | 146 ;;=== User Variables ====================================================== |
147 | |
18784
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
148 (defgroup mouse-sel nil |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
149 "Mouse selection enhancement." |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
150 :group 'mouse) |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
151 |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
152 (defcustom mouse-sel-leave-point-near-mouse t |
4934 | 153 "*Leave point near last mouse position. |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
154 If non-nil, \\[mouse-select] and \\[mouse-extend] will leave point at the end |
4934 | 155 of the region nearest to where the mouse last was. |
18784
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
156 If nil, point will always be placed at the beginning of the region." |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
157 :type 'boolean |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
158 :group 'mouse-sel) |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
159 |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
160 (defcustom mouse-sel-cycle-clicks t |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
161 "*If non-nil, \\[mouse-select] cycles the click-counts after 4 clicks." |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
162 :type 'boolean |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
163 :group 'mouse-sel) |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
164 |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
165 (defcustom mouse-sel-default-bindings t |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
166 "*Control mouse bindings." |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
167 :type '(choice (const :tag "none" nil) |
22593
2407b3d241a6
(mouse-sel-default-bindings): Use `other' widget
Andreas Schwab <schwab@suse.de>
parents:
18784
diff
changeset
|
168 (const :tag "cut and paste" interprogram-cut-paste) |
2407b3d241a6
(mouse-sel-default-bindings): Use `other' widget
Andreas Schwab <schwab@suse.de>
parents:
18784
diff
changeset
|
169 (other :tag "default bindings" t)) |
18784
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
170 :group 'mouse-sel) |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
171 |
46403
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
172 ;;=== Key bindings ======================================================== |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
173 |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
174 (defconst mouse-sel-bound-events |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
175 '(;; Primary selection bindings. |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
176 ;; |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
177 ;; Bind keys to `ignore' instead of unsetting them because modes may |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
178 ;; bind `down-mouse-1', for instance, without binding `mouse-1'. |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
179 ;; If we unset `mouse-1', this leads to a bitch_at_user when the |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
180 ;; mouse goes up because no matching binding is found for that. |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
181 ([mouse-1] . ignore) |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
182 ([drag-mouse-1] . ignore) |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
183 ([mouse-3] . ignore) |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
184 ([down-mouse-1] . mouse-select) |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
185 ([down-mouse-3] . mouse-extend) |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
186 ([mouse-2] . mouse-insert-selection) |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
187 ;; Secondary selection bindings. |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
188 ([M-mouse-1] . ignore) |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
189 ([M-drag-mouse-1] . ignore) |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
190 ([M-mouse-3] . ignore) |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
191 ([M-down-mouse-1] . mouse-select-secondary) |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
192 ([M-mouse-2] . mouse-insert-secondary) |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
193 ([M-down-mouse-3] . mouse-extend-secondary)) |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
194 "An alist of events that `mouse-sel-mode' binds.") |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
195 |
18784
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
196 ;;=== User Command ======================================================== |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
197 |
54257
b647c5859635
(mouse-sel-has-been-enabled): New var.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
198 (defvar mouse-sel-has-been-enabled nil |
b647c5859635
(mouse-sel-has-been-enabled): New var.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
199 "Non-nil if Mouse Sel mode has been enabled at least once.") |
b647c5859635
(mouse-sel-has-been-enabled): New var.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
200 |
46403
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
201 (defvar mouse-sel-original-bindings nil) |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
202 (defvar mouse-sel-original-interprogram-cut-function nil) |
46406
72f4c4b10835
(mouse-sel-original-interprogram-paste-function): Defvar it.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46403
diff
changeset
|
203 (defvar mouse-sel-original-interprogram-paste-function nil) |
46403
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
204 |
18784
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
205 ;;;###autoload |
46403
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
206 (define-minor-mode mouse-sel-mode |
18784
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
207 "Toggle Mouse Sel mode. |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
208 With prefix ARG, turn Mouse Sel mode on if and only if ARG is positive. |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
209 Returns the new status of Mouse Sel mode (non-nil means on). |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
210 |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
211 When Mouse Sel mode is enabled, mouse selection is enhanced in various ways: |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
212 |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
213 - Clicking mouse-1 starts (cancels) selection, dragging extends it. |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
214 |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
215 - Clicking or dragging mouse-3 extends the selection as well. |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
216 |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
217 - Double-clicking on word constituents selects words. |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
218 Double-clicking on symbol constituents selects symbols. |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
219 Double-clicking on quotes or parentheses selects sexps. |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
220 Double-clicking on whitespace selects whitespace. |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
221 Triple-clicking selects lines. |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
222 Quad-clicking selects paragraphs. |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
223 |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
224 - Selecting sets the region & X primary selection, but does NOT affect |
46403
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
225 the `kill-ring', nor do the kill-ring functions change the X selection. |
30691 | 226 Because the mouse handlers set the primary selection directly, |
46403
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
227 mouse-sel sets the variables `interprogram-cut-function' and |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
228 `interprogram-paste-function' to nil. |
18784
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
229 |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
230 - Clicking mouse-2 inserts the contents of the primary selection at |
38897
f9cec1b1d7ba
Docstring fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
38775
diff
changeset
|
231 the mouse position (or point, if `mouse-yank-at-point' is non-nil). |
18784
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
232 |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
233 - Pressing mouse-2 while selecting or extending copies selection |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
234 to the kill ring. Pressing mouse-1 or mouse-3 kills it. |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
235 |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
236 - Double-clicking mouse-3 also kills selection. |
4934 | 237 |
18784
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
238 - M-mouse-1, M-mouse-2 & M-mouse-3 work similarly to mouse-1, mouse-2 |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
239 & mouse-3, but operate on the X secondary selection rather than the |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
240 primary selection and region." |
46403
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
241 :global t |
57687
5a8b58d927d6
(mouse-sel-mode): Specify custom group.
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
54258
diff
changeset
|
242 :group 'mouse-sel |
46403
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
243 (if mouse-sel-mode |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
244 (progn |
74530
b1d0c631bbe2
(mouse-sel-mode): Register mouse-2 as a click type.
Chong Yidong <cyd@stupidchicken.com>
parents:
73272
diff
changeset
|
245 ;; If mouse-2 has never been done by the user, initialize the |
b1d0c631bbe2
(mouse-sel-mode): Register mouse-2 as a click type.
Chong Yidong <cyd@stupidchicken.com>
parents:
73272
diff
changeset
|
246 ;; `event-kind' property to ensure that `follow-link' clicks |
b1d0c631bbe2
(mouse-sel-mode): Register mouse-2 as a click type.
Chong Yidong <cyd@stupidchicken.com>
parents:
73272
diff
changeset
|
247 ;; are interpreted correctly. |
b1d0c631bbe2
(mouse-sel-mode): Register mouse-2 as a click type.
Chong Yidong <cyd@stupidchicken.com>
parents:
73272
diff
changeset
|
248 (put 'mouse-2 'event-kind 'mouse-click) |
57781
1d855c5b0242
(mouse-sel-mode): Adjust to new names for x-lost-selection-functions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57687
diff
changeset
|
249 (add-hook 'x-lost-selection-functions 'mouse-sel-lost-selection-hook) |
46403
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
250 (when mouse-sel-default-bindings |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
251 ;; Save original bindings and replace them with new ones. |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
252 (setq mouse-sel-original-bindings |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
253 (mapcar (lambda (binding) |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
254 (let ((event (car binding))) |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
255 (prog1 (cons event (lookup-key global-map event)) |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
256 (global-set-key event (cdr binding))))) |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
257 mouse-sel-bound-events)) |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
258 ;; Update interprogram functions. |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
259 (setq mouse-sel-original-interprogram-cut-function |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
260 interprogram-cut-function |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
261 mouse-sel-original-interprogram-paste-function |
54257
b647c5859635
(mouse-sel-has-been-enabled): New var.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
262 interprogram-paste-function |
b647c5859635
(mouse-sel-has-been-enabled): New var.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
263 mouse-sel-has-been-enabled t) |
46403
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
264 (unless (eq mouse-sel-default-bindings 'interprogram-cut-paste) |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
265 (setq interprogram-cut-function nil |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
266 interprogram-paste-function nil)))) |
38443
643e08c68af9
(mouse-sel-bindings): Instead of unbinding
Gerd Moellmann <gerd@gnu.org>
parents:
38436
diff
changeset
|
267 |
46359
186ccb97f37d
(mouse-sel-bound-events): New constant.
Mike Williams <mdub@bigfoot.com>
parents:
46194
diff
changeset
|
268 ;; Restore original bindings |
57781
1d855c5b0242
(mouse-sel-mode): Adjust to new names for x-lost-selection-functions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57687
diff
changeset
|
269 (remove-hook 'x-lost-selection-functions 'mouse-sel-lost-selection-hook) |
46403
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
270 (dolist (binding mouse-sel-original-bindings) |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
271 (global-set-key (car binding) (cdr binding))) |
54258 | 272 ;; Restore the old values of these variables, |
273 ;; only if they were actually saved previously. | |
54257
b647c5859635
(mouse-sel-has-been-enabled): New var.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
274 (if mouse-sel-has-been-enabled |
b647c5859635
(mouse-sel-has-been-enabled): New var.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
275 (setq interprogram-cut-function |
b647c5859635
(mouse-sel-has-been-enabled): New var.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
276 mouse-sel-original-interprogram-cut-function |
b647c5859635
(mouse-sel-has-been-enabled): New var.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
277 interprogram-paste-function |
b647c5859635
(mouse-sel-has-been-enabled): New var.
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
278 mouse-sel-original-interprogram-paste-function)))) |
4934 | 279 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
280 ;;=== Internal Variables/Constants ======================================== |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
281 |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
282 (defvar mouse-sel-primary-thing nil |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
283 "Type of PRIMARY selection in current buffer.") |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
284 (make-variable-buffer-local 'mouse-sel-primary-thing) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
285 |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
286 (defvar mouse-sel-secondary-thing nil |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
287 "Type of SECONDARY selection in current buffer.") |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
288 (make-variable-buffer-local 'mouse-sel-secondary-thing) |
4934 | 289 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
290 ;; Ensure that secondary overlay is defined |
18784
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
291 (unless (overlayp mouse-secondary-overlay) |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
292 (setq mouse-secondary-overlay (make-overlay 1 1)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
293 (overlay-put mouse-secondary-overlay 'face 'secondary-selection)) |
4934 | 294 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
295 (defconst mouse-sel-selection-alist |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
296 '((PRIMARY mouse-drag-overlay mouse-sel-primary-thing) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
297 (SECONDARY mouse-secondary-overlay mouse-sel-secondary-thing)) |
38897
f9cec1b1d7ba
Docstring fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
38775
diff
changeset
|
298 "Alist associating selections with variables. |
f9cec1b1d7ba
Docstring fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
38775
diff
changeset
|
299 Each element is of the form: |
4934 | 300 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
301 (SELECTION-NAME OVERLAY-SYMBOL SELECTION-THING-SYMBOL) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
302 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
303 where SELECTION-NAME = name of selection |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
304 OVERLAY-SYMBOL = name of variable containing overlay to use |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
305 SELECTION-THING-SYMBOL = name of variable where the current selection |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
306 type for this selection should be stored.") |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
307 |
95841
b4e36ff621b3
Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents:
94678
diff
changeset
|
308 (declare-function x-select-text "term/x-win" (text &optional push)) |
b4e36ff621b3
Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents:
94678
diff
changeset
|
309 |
18784
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
310 (defvar mouse-sel-set-selection-function |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
311 (if (eq mouse-sel-default-bindings 'interprogram-cut-paste) |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
312 'x-set-selection |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
313 (lambda (selection value) |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
314 (if (eq selection 'PRIMARY) |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
315 (x-select-text value) |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
316 (x-set-selection selection value)))) |
4934 | 317 "Function to call to set selection. |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
318 Called with two arguments: |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
319 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
320 SELECTION, the name of the selection concerned, and |
16471
51916440738f
(mouse-sel-set-selection-function): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
321 VALUE, the text to store. |
18784
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
322 |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
323 This sets the selection as well as the cut buffer for the older applications, |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
324 unless `mouse-sel-default-bindings' is `interprogram-cut-paste'.") |
4934 | 325 |
95841
b4e36ff621b3
Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents:
94678
diff
changeset
|
326 (declare-function x-cut-buffer-or-selection-value "term/x-win" ()) |
b4e36ff621b3
Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents:
94678
diff
changeset
|
327 |
4934 | 328 (defvar mouse-sel-get-selection-function |
18784
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
329 (lambda (selection) |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
330 (if (eq selection 'PRIMARY) |
52047
0be309c83b20
(mouse-sel-get-selection-function):
John Paul Wallington <jpw@pobox.com>
parents:
49839
diff
changeset
|
331 (or (x-cut-buffer-or-selection-value) |
0be309c83b20
(mouse-sel-get-selection-function):
John Paul Wallington <jpw@pobox.com>
parents:
49839
diff
changeset
|
332 (bound-and-true-p x-last-selected-text) |
0be309c83b20
(mouse-sel-get-selection-function):
John Paul Wallington <jpw@pobox.com>
parents:
49839
diff
changeset
|
333 (bound-and-true-p x-last-selected-text-primary)) |
18784
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
334 (x-get-selection selection))) |
4934 | 335 "Function to call to get the selection. |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
336 Called with one argument: |
4934 | 337 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
338 SELECTION: the name of the selection concerned.") |
4934 | 339 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
340 ;;=== Support/access functions ============================================ |
4934 | 341 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
342 (defun mouse-sel-determine-selection-thing (nclicks) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
343 "Determine what `thing' `mouse-sel' should operate on. |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
344 The first argument is NCLICKS, is the number of consecutive |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
345 mouse clicks at the same position. |
4934 | 346 |
347 Double-clicking on word constituents selects words. | |
348 Double-clicking on symbol constituents selects symbols. | |
349 Double-clicking on quotes or parentheses selects sexps. | |
350 Double-clicking on whitespace selects whitespace. | |
351 Triple-clicking selects lines. | |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
352 Quad-clicking selects paragraphs. |
4934 | 353 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
354 Feel free to re-define this function to support your own desired |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
355 multi-click semantics." |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
356 (let* ((next-char (char-after (point))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
357 (char-syntax (if next-char (char-syntax next-char)))) |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
358 (if mouse-sel-cycle-clicks |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
359 (setq nclicks (1+ (% (1- nclicks) 4)))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
360 (cond |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
361 ((= nclicks 1) nil) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
362 ((= nclicks 3) 'line) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
363 ((>= nclicks 4) 'paragraph) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
364 ((memq char-syntax '(?\( ?\) ?\" ?')) 'sexp) |
49839
4398c7a41151
(mouse-sel-determine-selection-thing): Fix character constant.
Juanma Barranquero <lekktu@gmail.com>
parents:
46406
diff
changeset
|
365 ((memq next-char '(?\s ?\t ?\n)) 'whitespace) |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
366 ((eq char-syntax ?_) 'symbol) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
367 ((eq char-syntax ?w) 'word)))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
368 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
369 (defun mouse-sel-set-selection (selection value) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
370 "Set the specified SELECTION to VALUE." |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
371 (if mouse-sel-set-selection-function |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
372 (funcall mouse-sel-set-selection-function selection value) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
373 (put 'mouse-sel-internal-selection selection value))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
374 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
375 (defun mouse-sel-get-selection (selection) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
376 "Get the value of the specified SELECTION." |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
377 (if mouse-sel-get-selection-function |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
378 (funcall mouse-sel-get-selection-function selection) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
379 (get 'mouse-sel-internal-selection selection))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
380 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
381 (defun mouse-sel-selection-overlay (selection) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
382 "Return overlay corresponding to SELECTION." |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
383 (let ((symbol (nth 1 (assoc selection mouse-sel-selection-alist)))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
384 (or symbol (error "No overlay corresponding to %s selection" selection)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
385 (symbol-value symbol))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
386 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
387 (defun mouse-sel-selection-thing (selection) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
388 "Return overlay corresponding to SELECTION." |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
389 (let ((symbol (nth 2 (assoc selection mouse-sel-selection-alist)))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
390 (or symbol (error "No symbol corresponding to %s selection" selection)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
391 symbol)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
392 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
393 (defun mouse-sel-region-to-primary (orig-window) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
394 "Convert region to PRIMARY overlay and deactivate region. |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
395 Argument ORIG-WINDOW specifies the window the cursor was in when the |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
396 originating command was issued, and is used to determine whether the |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
397 region was visible or not." |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
398 (if transient-mark-mode |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
399 (let ((overlay (mouse-sel-selection-overlay 'PRIMARY))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
400 (cond |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
401 ((and mark-active |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
402 (or highlight-nonselected-windows |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
403 (eq orig-window (selected-window)))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
404 ;; Region was visible, so convert region to overlay |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
405 (move-overlay overlay (region-beginning) (region-end) |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
406 (current-buffer))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
407 ((eq orig-window (selected-window)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
408 ;; Point was visible, so set overlay at point |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
409 (move-overlay overlay (point) (point) (current-buffer))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
410 (t |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
411 ;; Nothing was visible, so remove overlay |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
412 (delete-overlay overlay))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
413 (setq mark-active nil)))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
414 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
415 (defun mouse-sel-primary-to-region (&optional direction) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
416 "Convert PRIMARY overlay to region. |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
417 Optional argument DIRECTION specifies the mouse drag direction: a value of |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
418 1 indicates that the mouse was dragged left-to-right, otherwise it was |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
419 dragged right-to-left." |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
420 (let* ((overlay (mouse-sel-selection-overlay 'PRIMARY)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
421 (start (overlay-start overlay)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
422 (end (overlay-end overlay))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
423 (if (eq start end) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
424 (progn |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
425 (if start (goto-char start)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
426 (deactivate-mark)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
427 (if (and mouse-sel-leave-point-near-mouse (eq direction 1)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
428 (progn |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
429 (goto-char end) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
430 (push-mark start 'nomsg 'active)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
431 (goto-char start) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
432 (push-mark end 'nomsg 'active))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
433 (if transient-mark-mode (delete-overlay overlay)))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
434 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
435 (defmacro mouse-sel-eval-at-event-end (event &rest forms) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
436 "Evaluate forms at mouse position. |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
437 Move to the end position of EVENT, execute FORMS, and restore original |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
438 point and window." |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
439 `(let ((posn (event-end ,event))) |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
440 (if posn (mouse-minibuffer-check ,event)) |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
441 (if (and posn (not (windowp (posn-window posn)))) |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
442 (error "Cursor not in text area of window")) |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
443 (let (orig-window orig-point-marker) |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
444 (setq orig-window (selected-window)) |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
445 (if posn (select-window (posn-window posn))) |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
446 (setq orig-point-marker (point-marker)) |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
447 (if (and posn (numberp (posn-point posn))) |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
448 (goto-char (posn-point posn))) |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
449 (unwind-protect |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
450 (progn |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
451 ,@forms) |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
452 (goto-char (marker-position orig-point-marker)) |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
453 (move-marker orig-point-marker nil) |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
454 (select-window orig-window))))) |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
455 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
456 (put 'mouse-sel-eval-at-event-end 'lisp-indent-hook 1) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
457 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
458 ;;=== Select ============================================================== |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
459 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
460 (defun mouse-select (event) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
461 "Set region/selection using the mouse. |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
462 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
463 Click sets point & mark to click position. |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
464 Dragging extends region/selection. |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
465 |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
466 Multi-clicking selects word/lines/paragraphs, as determined by |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
467 'mouse-sel-determine-selection-thing. |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
468 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
469 Clicking mouse-2 while selecting copies selected text to the kill-ring. |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
470 Clicking mouse-1 or mouse-3 kills the selected text. |
4934 | 471 |
472 This should be bound to a down-mouse event." | |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
473 (interactive "@e") |
62228
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
474 (let (select) |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
475 (unwind-protect |
62228
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
476 (setq select (mouse-select-internal 'PRIMARY event)) |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
477 (if (and select (listp select)) |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
478 (push (cons 'mouse-2 (cdr event)) unread-command-events) |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
479 (mouse-sel-primary-to-region select))))) |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
480 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
481 (defun mouse-select-secondary (event) |
18784
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
482 "Set secondary selection using the mouse. |
4934 | 483 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
484 Click sets the start of the secondary selection to click position. |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
485 Dragging extends the secondary selection. |
4934 | 486 |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
487 Multi-clicking selects word/lines/paragraphs, as determined by |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
488 'mouse-sel-determine-selection-thing. |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
489 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
490 Clicking mouse-2 while selecting copies selected text to the kill-ring. |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
491 Clicking mouse-1 or mouse-3 kills the selected text. |
4934 | 492 |
493 This should be bound to a down-mouse event." | |
18784
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
494 (interactive "e") |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
495 (mouse-select-internal 'SECONDARY event)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
496 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
497 (defun mouse-select-internal (selection event) |
62228
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
498 "Set SELECTION using the mouse, with EVENT as the initial down-event. |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
499 Normally, this returns the direction in which the selection was |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
500 made: a value of 1 indicates that the mouse was dragged |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
501 left-to-right, otherwise it was dragged right-to-left. |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
502 |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
503 However, if `mouse-1-click-follows-link' is non-nil and the |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
504 subsequent mouse events specify following a link, this returns |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
505 the final mouse-event. In that case, the selection is not set." |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
506 (mouse-sel-eval-at-event-end event |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
507 (let ((thing-symbol (mouse-sel-selection-thing selection)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
508 (overlay (mouse-sel-selection-overlay selection))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
509 (set thing-symbol |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
510 (mouse-sel-determine-selection-thing (event-click-count event))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
511 (let ((object-bounds (bounds-of-thing-at-point |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
512 (symbol-value thing-symbol)))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
513 (if object-bounds |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
514 (progn |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
515 (move-overlay overlay |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
516 (car object-bounds) (cdr object-bounds) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
517 (current-buffer))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
518 (move-overlay overlay (point) (point) (current-buffer))))) |
62228
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
519 (catch 'follow-link |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
520 (mouse-extend-internal selection event t)))) |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
521 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
522 ;;=== Extend ============================================================== |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
523 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
524 (defun mouse-extend (event) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
525 "Extend region/selection using the mouse." |
4934 | 526 (interactive "e") |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
527 (let ((orig-window (selected-window)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
528 direction) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
529 (select-window (posn-window (event-end event))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
530 (unwind-protect |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
531 (progn |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
532 (mouse-sel-region-to-primary orig-window) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
533 (setq direction (mouse-extend-internal 'PRIMARY event))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
534 (mouse-sel-primary-to-region direction)))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
535 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
536 (defun mouse-extend-secondary (event) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
537 "Extend secondary selection using the mouse." |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
538 (interactive "e") |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
539 (save-window-excursion |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
540 (mouse-extend-internal 'SECONDARY event))) |
4934 | 541 |
62228
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
542 (defun mouse-extend-internal (selection &optional initial-event no-process) |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
543 "Extend specified SELECTION using the mouse. |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
544 Track mouse-motion events, adjusting the SELECTION appropriately. |
62228
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
545 Optional argument INITIAL-EVENT specifies an initial down-mouse event. |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
546 Optional argument NO-PROCESS means not to process the initial |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
547 event. |
4934 | 548 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
549 See documentation for mouse-select-internal for more details." |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
550 (mouse-sel-eval-at-event-end initial-event |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
551 (let ((orig-cursor-type |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
552 (cdr (assoc 'cursor-type (frame-parameters (selected-frame)))))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
553 (unwind-protect |
4934 | 554 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
555 (let* ((thing-symbol (mouse-sel-selection-thing selection)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
556 (overlay (mouse-sel-selection-overlay selection)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
557 (orig-window (selected-window)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
558 (orig-window-frame (window-frame orig-window)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
559 (top (nth 1 (window-edges orig-window))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
560 (bottom (nth 3 (window-edges orig-window))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
561 (mark-active nil) ; inhibit normal region highlight |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
562 (echo-keystrokes 0) ; don't echo mouse events |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
563 min max |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
564 direction |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
565 event) |
4934 | 566 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
567 ;; Get current bounds of overlay |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
568 (if (eq (overlay-buffer overlay) (current-buffer)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
569 (setq min (overlay-start overlay) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
570 max (overlay-end overlay)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
571 (setq min (point) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
572 max min) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
573 (set thing-symbol nil)) |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
574 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
575 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
576 ;; Bar cursor |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
577 (if (fboundp 'modify-frame-parameters) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
578 (modify-frame-parameters (selected-frame) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
579 '((cursor-type . bar)))) |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
580 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
581 ;; Handle dragging |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
582 (track-mouse |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
583 |
62228
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
584 (while (if (and initial-event (not no-process)) |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
585 ;; Use initial event |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
586 (prog1 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
587 (setq event initial-event) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
588 (setq initial-event nil)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
589 (setq event (read-event)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
590 (and (consp event) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
591 (memq (car event) '(mouse-movement switch-frame)))) |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
592 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
593 (let ((selection-thing (symbol-value thing-symbol)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
594 (end (event-end event))) |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
595 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
596 (cond |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
597 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
598 ;; Ignore any movement outside the frame |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
599 ((eq (car-safe event) 'switch-frame) nil) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
600 ((and (posn-window end) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
601 (not (eq (let ((posn-w (posn-window end))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
602 (if (windowp posn-w) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
603 (window-frame posn-w) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
604 posn-w)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
605 (window-frame orig-window)))) nil) |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
606 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
607 ;; Different window, same frame |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
608 ((not (eq (posn-window end) orig-window)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
609 (let ((end-row (cdr (cdr (mouse-position))))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
610 (cond |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
611 ((and end-row (not (bobp)) (< end-row top)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
612 (mouse-scroll-subr orig-window (- end-row top) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
613 overlay max)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
614 ((and end-row (not (eobp)) (>= end-row bottom)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
615 (mouse-scroll-subr orig-window (1+ (- end-row bottom)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
616 overlay min)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
617 ))) |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
618 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
619 ;; On the mode line |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
620 ((eq (posn-point end) 'mode-line) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
621 (mouse-scroll-subr orig-window 1 overlay min)) |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
622 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
623 ;; In original window |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
624 (t (goto-char (posn-point end))) |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
625 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
626 ) |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
627 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
628 ;; Determine direction of drag |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
629 (cond |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
630 ((and (not direction) (not (eq min max))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
631 (setq direction (if (< (point) (/ (+ min max) 2)) -1 1))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
632 ((and (not (eq direction -1)) (<= (point) min)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
633 (setq direction -1)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
634 ((and (not (eq direction 1)) (>= (point) max)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
635 (setq direction 1))) |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
636 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
637 (if (not selection-thing) nil |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
638 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
639 ;; If dragging forward, goal is next character |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
640 (if (and (eq direction 1) (not (eobp))) (forward-char 1)) |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
641 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
642 ;; Move to start/end of selected thing |
12592
efb59db39da7
Don't (require 'backquote).
Richard M. Stallman <rms@gnu.org>
parents:
11490
diff
changeset
|
643 (let ((goal (point))) |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
644 (goto-char (if (eq 1 direction) min max)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
645 (condition-case nil |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
646 (progn |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
647 (while (> (* direction (- goal (point))) 0) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
648 (forward-thing selection-thing direction)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
649 (let ((end (point))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
650 (forward-thing selection-thing (- direction)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
651 (goto-char |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
652 (if (> (* direction (- goal (point))) 0) |
12592
efb59db39da7
Don't (require 'backquote).
Richard M. Stallman <rms@gnu.org>
parents:
11490
diff
changeset
|
653 end (point))))) |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
654 (error)))) |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
655 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
656 ;; Move overlay |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
657 (move-overlay overlay |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
658 (if (eq 1 direction) min (point)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
659 (if (eq -1 direction) max (point)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
660 (current-buffer)) |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
661 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
662 ))) ; end track-mouse |
4934 | 663 |
62228
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
664 ;; Detect follow-link events |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
665 (when (mouse-sel-follow-link-p initial-event event) |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
666 (throw 'follow-link event)) |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
667 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
668 ;; Finish up after dragging |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
669 (let ((overlay-start (overlay-start overlay)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
670 (overlay-end (overlay-end overlay))) |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
671 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
672 ;; Set selection |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
673 (if (not (eq overlay-start overlay-end)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
674 (mouse-sel-set-selection |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
675 selection |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
676 (buffer-substring overlay-start overlay-end))) |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
677 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
678 ;; Handle copy/kill |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
679 (let (this-command) |
4934 | 680 (cond |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
681 ((eq (event-basic-type last-input-event) 'mouse-2) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
682 (copy-region-as-kill overlay-start overlay-end) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
683 (read-event) (read-event)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
684 ((and (memq (event-basic-type last-input-event) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
685 '(mouse-1 mouse-3)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
686 (memq 'down (event-modifiers last-input-event))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
687 (kill-region overlay-start overlay-end) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
688 (move-overlay overlay overlay-start overlay-start) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
689 (read-event) (read-event)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
690 ((and (eq (event-basic-type last-input-event) 'mouse-3) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
691 (memq 'double (event-modifiers last-input-event))) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
692 (kill-region overlay-start overlay-end) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
693 (move-overlay overlay overlay-start overlay-start))))) |
4934 | 694 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
695 direction) |
4934 | 696 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
697 ;; Restore cursor |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
698 (if (fboundp 'modify-frame-parameters) |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
699 (modify-frame-parameters |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
700 (selected-frame) (list (cons 'cursor-type orig-cursor-type)))) |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
701 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
702 )))) |
4934 | 703 |
62228
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
704 (defun mouse-sel-follow-link-p (initial final) |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
705 "Return t if we should follow a link, given INITIAL and FINAL mouse events. |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
706 See `mouse-1-click-follows-link' for details. Currently, Mouse |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
707 Sel mode does not support using a `double' value to follow links |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
708 using double-clicks." |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
709 (and initial final mouse-1-click-follows-link |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
710 (eq (car initial) 'down-mouse-1) |
72890
5ba1cd1da822
* mouse-sel.el (mouse-sel-follow-link-p): Use event position
David Kastrup <dak@gnu.org>
parents:
68651
diff
changeset
|
711 (mouse-on-link-p (event-start initial)) |
62228
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
712 (= (posn-point (event-start initial)) |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
713 (posn-point (event-end final))) |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
714 (= (event-click-count initial) 1) |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
715 (or (not (integerp mouse-1-click-follows-link)) |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
716 (let ((t0 (posn-timestamp (event-start initial))) |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
717 (t1 (posn-timestamp (event-end final)))) |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
718 (and (integerp t0) (integerp t1) |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
719 (if (> mouse-1-click-follows-link 0) |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
720 (<= (- t1 t0) mouse-1-click-follows-link) |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
721 (< (- t0 t1) mouse-1-click-follows-link))))))) |
680b3e8df7c5
From Chong Yidong <cyd@stupidchicken.com>
Kim F. Storm <storm@cua.dk>
parents:
57781
diff
changeset
|
722 |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
723 ;;=== Paste =============================================================== |
4934 | 724 |
46403
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
725 (defun mouse-insert-selection (event arg) |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
726 "Insert the contents of the PRIMARY selection at mouse click. |
7644
d50f6828a89d
(mouse-insert-selection): Test mouse-yank-at-point.
Richard M. Stallman <rms@gnu.org>
parents:
7298
diff
changeset
|
727 If `mouse-yank-at-point' is non-nil, insert at point instead." |
46403
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
728 (interactive "e\nP") |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
729 (if (eq mouse-sel-default-bindings 'interprogram-cut-paste) |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
730 (mouse-yank-at-click event arg) |
3b394c7ff111
(mouse-sel-mode): Use define-minor-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46385
diff
changeset
|
731 (mouse-insert-selection-internal 'PRIMARY event))) |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
732 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
733 (defun mouse-insert-secondary (event) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
734 "Insert the contents of the SECONDARY selection at mouse click. |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
735 If `mouse-yank-at-point' is non-nil, insert at point instead." |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
736 (interactive "e") |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
737 (mouse-insert-selection-internal 'SECONDARY event)) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
738 |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
739 (defun mouse-insert-selection-internal (selection event) |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
740 "Insert the contents of the named SELECTION at mouse click. |
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
741 If `mouse-yank-at-point' is non-nil, insert at point instead." |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
38897
diff
changeset
|
742 (unless mouse-yank-at-point |
18784
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
743 (mouse-set-point event)) |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
744 (when mouse-sel-get-selection-function |
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
745 (push-mark (point) 'nomsg) |
73272
a5ea274e14ac
(mouse-insert-selection-internal): Use insert-for-yank, so that yank handlers
Eli Zaretskii <eliz@gnu.org>
parents:
72890
diff
changeset
|
746 (insert-for-yank |
a5ea274e14ac
(mouse-insert-selection-internal): Use insert-for-yank, so that yank handlers
Eli Zaretskii <eliz@gnu.org>
parents:
72890
diff
changeset
|
747 (or (funcall mouse-sel-get-selection-function selection) "")))) |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
748 |
12592
efb59db39da7
Don't (require 'backquote).
Richard M. Stallman <rms@gnu.org>
parents:
11490
diff
changeset
|
749 ;;=== Handle loss of selections =========================================== |
4934 | 750 |
12592
efb59db39da7
Don't (require 'backquote).
Richard M. Stallman <rms@gnu.org>
parents:
11490
diff
changeset
|
751 (defun mouse-sel-lost-selection-hook (selection) |
efb59db39da7
Don't (require 'backquote).
Richard M. Stallman <rms@gnu.org>
parents:
11490
diff
changeset
|
752 "Remove the overlay for a lost selection." |
13556
8c181dcb4fdd
(mouse-sel-lost-selection-hook): Undo prev change.
Richard M. Stallman <rms@gnu.org>
parents:
13547
diff
changeset
|
753 (let ((overlay (mouse-sel-selection-overlay selection))) |
12592
efb59db39da7
Don't (require 'backquote).
Richard M. Stallman <rms@gnu.org>
parents:
11490
diff
changeset
|
754 (delete-overlay overlay))) |
4934 | 755 |
18784
5e56fda13c2f
Customise. Don't install bindings on file load; use a fn.
Simon Marshall <simon@gnu.org>
parents:
17671
diff
changeset
|
756 (provide 'mouse-sel) |
11490
01f5b6e9c234
Downcase function parameters.
Richard M. Stallman <rms@gnu.org>
parents:
9427
diff
changeset
|
757 |
57781
1d855c5b0242
(mouse-sel-mode): Adjust to new names for x-lost-selection-functions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57687
diff
changeset
|
758 ;; arch-tag: 86e6c73f-deaa-48d3-a24e-c565fda1f7d7 |
38436
b174db545cfd
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
30691
diff
changeset
|
759 ;;; mouse-sel.el ends here |