Mercurial > emacs
annotate lisp/mouse-sel.el @ 106768:21fd634f447a
Make line<->pixel_y conversion macros aware of native menu/tool bars.
They are placed above the internal border. This supersedes special
treatment of native tool bars in the display code.
This fixes wrong display position of native menu bars and bogus mouse
highlighting of native tool bars, both of which can be found when
internal border width is large. Also it fixes wrong flashed part on
visible bell with native menu bars.
* frame.h (FRAME_TOP_MARGIN_HEIGHT): New macro.
(FRAME_LINE_TO_PIXEL_Y, FRAME_PIXEL_Y_TO_LINE): Take account of pseudo
windows above internal border.
* window.h (WINDOW_MENU_BAR_P, WINDOW_TOOL_BAR_P): New macros.
(WINDOW_TOP_EDGE_Y, WINDOW_BOTTOM_EDGE_Y): Take account of pseudo
windows above internal border.
* xdisp.c (get_glyph_string_clip_rects, init_glyph_string): Don't treat
tool bar windows specially.
* xfns.c (x_set_tool_bar_lines): Take account of menu bar height.
* xterm.c (x_after_update_window_line): Don't treat tool bar windows
specially.
(XTflash): Take account of menu bar height.
* w32term.c (x_after_update_window_line): Don't treat tool bar windows
specially.
author | YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> |
---|---|
date | Sat, 09 Jan 2010 13:16:32 +0900 |
parents | a9dc0e7c3f2b |
children | 1d1d5d9bd884 |
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, |
100908 | 4 ;; 2005, 2006, 2007, 2008, 2009 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 |
100171 | 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 |
100171 | 161 "If non-nil, \\[mouse-select] cycles the click-counts after 4 clicks." |
18784
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 |
100171 | 166 "Control mouse bindings." |
18784
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 |