annotate lisp/emacs-lisp/lselect.el @ 42829:07bd6e693cb6

(easy-mmode-defmap): Enable "Up Stack", "Down Stack", and "Finish Function" menu map entries for jdb mode. (gud-jdb-use-classpath): New customization variable. (gud-jdb-command-name): Add customization. (gud-jdb-classpath, gud-marker-acc-max-length): New variables. (gud-jdb-classpath-string): New variable. (gud-jdb-source-files, gud-jdb-class-source-alist): Add doc strings. (gud-jdb-build-source-files-list): Likewise. (gud-jdb-massage-args): Record any command argument classpath string in `gud-jdb-classpath-string'. (gud-jdb-lowest-stack-level): New function, finds bottom of current java call stack in jdb output. (gud-jdb-find-source-using-classpath, gud-jdb-find-source) (gud-jdb-parse-classpath-string): New functions. (gud-jdb-marker-filter): Search/detect classpath information in jdb's output. marker regexp updated to match oldjdb and jdb output formats. Expand search for source files to include new/old methods using new functions above. Do not allow `gud-marker-acc' to grow without bound. (jdb): Set classpath information (if available) as jdb is started. Change `gud-break' and `gud-remove' to use new %c ("class") escape in format strings. Add `gud-finish', `gud-up', `gud-down' command string functions, and add them to the local menu map. Update `comint-prompt-regexp' for jdb and oldjdb. If attaching to an already running java VM and configured to use classpath, send command to query for classpath, else use previous method for finding and parsing java sources. Set `gud-jdb-find-source' function accordingly. (gud-mode): Doc fix. (gud-format-command): Add support for new %c ("class") escape. (gud-find-class): New function in support of %c escape.
author Richard M. Stallman <rms@gnu.org>
date Fri, 18 Jan 2002 18:57:20 +0000
parents e03e925846db
children 695cf19ef79e d7ddb3e565de
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2234
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1 ;;; lselect.el --- Lucid interface to X Selections
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 2571
diff changeset
3 ;; Copyright (C) 1990, 1993 Free Software Foundation, Inc.
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 2571
diff changeset
4
38961
5b23575286e6 Add the Maintainer keyword. From Pavel Janik.
Eli Zaretskii <eliz@gnu.org>
parents: 38414
diff changeset
5 ;; Maintainer: FSF
2234
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
6 ;; Keywords: emulations
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
7
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
8 ;; This won't completely work until we support or emulate Lucid-style extents.
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
9 ;; Based on Lucid's selection code.
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
10
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
11 ;; This file is part of GNU Emacs.
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
12
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
13 ;; GNU Emacs is free software; you can redistribute it and/or modify
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
14 ;; it under the terms of the GNU General Public License as published by
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
15 ;; the Free Software Foundation; either version 2, or (at your option)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
16 ;; any later version.
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
17
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
18 ;; GNU Emacs is distributed in the hope that it will be useful,
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
21 ;; GNU General Public License for more details.
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
22
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
23 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 2571
diff changeset
24 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 2571
diff changeset
25 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 2571
diff changeset
26 ;; Boston, MA 02111-1307, USA.
2234
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
27
38414
67b464da13ec Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 18383
diff changeset
28 ;;; Commentary:
67b464da13ec Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 18383
diff changeset
29
2234
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
30 ;;; Code:
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
31
39565
e03e925846db Use facep iso find-face.
Gerd Moellmann <gerd@gnu.org>
parents: 38961
diff changeset
32 ;; The selection code requires us to use certain symbols whose names are
e03e925846db Use facep iso find-face.
Gerd Moellmann <gerd@gnu.org>
parents: 38961
diff changeset
33 ;; all upper-case; this may seem tasteless, but it makes there be a 1:1
e03e925846db Use facep iso find-face.
Gerd Moellmann <gerd@gnu.org>
parents: 38961
diff changeset
34 ;; correspondence between these symbols and X Atoms (which are upcased.)
2234
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
35
2571
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2234
diff changeset
36 (defalias 'x-get-cutbuffer 'x-get-cut-buffer)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2234
diff changeset
37 (defalias 'x-store-cutbuffer 'x-set-cut-buffer)
2234
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
38
39565
e03e925846db Use facep iso find-face.
Gerd Moellmann <gerd@gnu.org>
parents: 38961
diff changeset
39 (or (facep 'primary-selection)
2234
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
40 (make-face 'primary-selection))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
41
39565
e03e925846db Use facep iso find-face.
Gerd Moellmann <gerd@gnu.org>
parents: 38961
diff changeset
42 (or (facep 'secondary-selection)
2234
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
43 (make-face 'secondary-selection))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
44
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
45 (defun x-get-secondary-selection ()
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
46 "Return text selected from some X window."
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
47 (x-get-selection-internal 'SECONDARY 'STRING))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
48
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
49 (defvar primary-selection-extent nil
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
50 "The extent of the primary selection; don't use this.")
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
51
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
52 (defvar secondary-selection-extent nil
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
53 "The extent of the secondary selection; don't use this.")
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
54
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
55
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
56 (defun x-select-make-extent-for-selection (selection previous-extent face)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
57 ;; Given a selection, this makes an extent in the buffer which holds that
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
58 ;; selection, for highlighting purposes. If the selection isn't associated
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
59 ;; with a buffer, this does nothing.
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
60 (let ((buffer nil)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
61 (valid (and (extentp previous-extent)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
62 (extent-buffer previous-extent)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
63 (buffer-name (extent-buffer previous-extent))))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
64 start end)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
65 (cond ((stringp selection)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
66 ;; if we're selecting a string, lose the previous extent used
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
67 ;; to highlight the selection.
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
68 (setq valid nil))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
69 ((consp selection)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
70 (setq start (min (car selection) (cdr selection))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
71 end (max (car selection) (cdr selection))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
72 valid (and valid
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
73 (eq (marker-buffer (car selection))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
74 (extent-buffer previous-extent)))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
75 buffer (marker-buffer (car selection))))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
76 ((extentp selection)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
77 (setq start (extent-start-position selection)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
78 end (extent-end-position selection)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
79 valid (and valid
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
80 (eq (extent-buffer selection)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
81 (extent-buffer previous-extent)))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
82 buffer (extent-buffer selection)))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
83 )
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
84 (if (and (not valid)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
85 (extentp previous-extent)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
86 (extent-buffer previous-extent)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
87 (buffer-name (extent-buffer previous-extent)))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
88 (delete-extent previous-extent))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
89 (if (not buffer)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
90 ;; string case
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
91 nil
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
92 ;; normal case
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
93 (if valid
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
94 (set-extent-endpoints previous-extent start end)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
95 (setq previous-extent (make-extent start end buffer))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
96 ;; use same priority as mouse-highlighting so that conflicts between
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
97 ;; the selection extent and a mouse-highlighted extent are resolved
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
98 ;; by the usual size-and-endpoint-comparison method.
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
99 (set-extent-priority previous-extent mouse-highlight-priority)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
100 (set-extent-face previous-extent face)))))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
101
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
102
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
103 (defun x-own-selection (selection &optional type)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
104 "Make a primary X Selection of the given argument.
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
105 The argument may be a string, a cons of two markers, or an extent.
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
106 In the latter cases the selection is considered to be the text
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
107 between the markers, or the between extents endpoints."
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
108 (interactive (if (not current-prefix-arg)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
109 (list (read-string "Store text for pasting: "))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
110 (list (cons ;; these need not be ordered.
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
111 (copy-marker (point-marker))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
112 (copy-marker (mark-marker))))))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
113 (or type (setq type 'PRIMARY))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
114 (x-set-selection selection type)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
115 (cond ((eq type 'PRIMARY)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
116 (setq primary-selection-extent
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
117 (x-select-make-extent-for-selection
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
118 selection primary-selection-extent 'primary-selection)))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
119 ((eq type 'SECONDARY)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
120 (setq secondary-selection-extent
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
121 (x-select-make-extent-for-selection
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
122 selection secondary-selection-extent 'secondary-selection))))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
123 selection)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
124
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
125
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
126 (defun x-own-secondary-selection (selection &optional type)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
127 "Make a secondary X Selection of the given argument. The argument may be a
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
128 string or a cons of two markers (in which case the selection is considered to
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
129 be the text between those markers.)"
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
130 (interactive (if (not current-prefix-arg)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
131 (list (read-string "Store text for pasting: "))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
132 (list (cons ;; these need not be ordered.
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
133 (copy-marker (point-marker))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
134 (copy-marker (mark-marker))))))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
135 (x-own-selection selection 'SECONDARY))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
136
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
137
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
138 (defun x-own-clipboard (string)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
139 "Paste the given string to the X Clipboard."
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
140 (x-own-selection string 'CLIPBOARD))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
141
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
142
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
143 (defun x-disown-selection (&optional secondary-p)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
144 "Assuming we own the selection, disown it. With an argument, discard the
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
145 secondary selection instead of the primary selection."
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
146 (x-disown-selection-internal (if secondary-p 'SECONDARY 'PRIMARY)))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
147
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
148 (defun x-dehilight-selection (selection)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
149 "for use as a value of x-lost-selection-hooks."
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
150 (cond ((eq selection 'PRIMARY)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
151 (if primary-selection-extent
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
152 (let ((inhibit-quit t))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
153 (delete-extent primary-selection-extent)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
154 (setq primary-selection-extent nil)))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
155 (if zmacs-regions (zmacs-deactivate-region)))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
156 ((eq selection 'SECONDARY)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
157 (if secondary-selection-extent
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
158 (let ((inhibit-quit t))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
159 (delete-extent secondary-selection-extent)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
160 (setq secondary-selection-extent nil)))))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
161 nil)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
162
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
163 (setq x-lost-selection-hooks 'x-dehilight-selection)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
164
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
165 (defun x-notice-selection-requests (selection type successful)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
166 "for possible use as the value of x-sent-selection-hooks."
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
167 (if (not successful)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
168 (message "Selection request failed to convert %s to %s"
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
169 selection type)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
170 (message "Sent selection %s as %s" selection type)))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
171
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
172 (defun x-notice-selection-failures (selection type successful)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
173 "for possible use as the value of x-sent-selection-hooks."
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
174 (or successful
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
175 (message "Selection request failed to convert %s to %s"
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
176 selection type)))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
177
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
178 ;(setq x-sent-selection-hooks 'x-notice-selection-requests)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
179 ;(setq x-sent-selection-hooks 'x-notice-selection-failures)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
180
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
181
39565
e03e925846db Use facep iso find-face.
Gerd Moellmann <gerd@gnu.org>
parents: 38961
diff changeset
182 ;; Random utility functions
2234
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
183
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
184 (defun x-kill-primary-selection ()
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
185 "If there is a selection, delete the text it covers, and copy it to
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
186 both the kill ring and the Clipboard."
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
187 (interactive)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
188 (or (x-selection-owner-p) (error "emacs does not own the primary selection"))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
189 (setq last-command nil)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
190 (or primary-selection-extent
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
191 (error "the primary selection is not an extent?"))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
192 (save-excursion
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
193 (set-buffer (extent-buffer primary-selection-extent))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
194 (kill-region (extent-start-position primary-selection-extent)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
195 (extent-end-position primary-selection-extent)))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
196 (x-disown-selection nil))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
197
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
198 (defun x-delete-primary-selection ()
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
199 "If there is a selection, delete the text it covers *without* copying it to
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
200 the kill ring or the Clipboard."
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
201 (interactive)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
202 (or (x-selection-owner-p) (error "emacs does not own the primary selection"))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
203 (setq last-command nil)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
204 (or primary-selection-extent
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
205 (error "the primary selection is not an extent?"))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
206 (save-excursion
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
207 (set-buffer (extent-buffer primary-selection-extent))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
208 (delete-region (extent-start-position primary-selection-extent)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
209 (extent-end-position primary-selection-extent)))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
210 (x-disown-selection nil))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
211
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
212 (defun x-copy-primary-selection ()
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
213 "If there is a selection, copy it to both the kill ring and the Clipboard."
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
214 (interactive)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
215 (setq last-command nil)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
216 (or (x-selection-owner-p) (error "emacs does not own the primary selection"))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
217 (or primary-selection-extent
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
218 (error "the primary selection is not an extent?"))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
219 (save-excursion
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
220 (set-buffer (extent-buffer primary-selection-extent))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
221 (copy-region-as-kill (extent-start-position primary-selection-extent)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
222 (extent-end-position primary-selection-extent))))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
223
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
224 (defun x-yank-clipboard-selection ()
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
225 "If someone owns a Clipboard selection, insert it at point."
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
226 (interactive)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
227 (setq last-command nil)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
228 (let ((clip (x-get-clipboard)))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
229 (or clip (error "there is no clipboard selection"))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
230 (push-mark)
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
231 (insert clip)))
53ce64806d58 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
232
18383
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
233 (provide 'lselect)
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
234
38414
67b464da13ec Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 18383
diff changeset
235 ;;; lselect.el ends here