annotate lisp/emacs-lisp/lucid.el @ 38136:278f2295cde6

New node Program Misc; text about word and paragraph and selective display features moved there. Major rewrite of Programming Modes node. Mention font lock and compilation commands in initial list of capabilities. Rewrite explanation of C-M- convention. In Basic Indent, add intro text.
author Richard M. Stallman <rms@gnu.org>
date Wed, 20 Jun 2001 10:57:04 +0000
parents 1b5db0f1b8b7
children 67b464da13ec
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2484
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
1 ;;; lucid.el --- Emulate some Lucid Emacs functions.
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 11235
diff changeset
2
11235
e6bdaaa6ce1b Update copyright.
Karl Heuer <kwzh@gnu.org>
parents: 10596
diff changeset
3 ;; Copyright (C) 1993, 1995 Free Software Foundation, Inc.
2484
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
4
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
5 ;; This file is part of GNU Emacs.
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
6
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
7 ;; GNU Emacs is free software; you can redistribute it and/or modify
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
8 ;; it under the terms of the GNU General Public License as published by
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
9 ;; the Free Software Foundation; either version 2, or (at your option)
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
10 ;; any later version.
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
11
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
12 ;; GNU Emacs is distributed in the hope that it will be useful,
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
13 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
14 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
15 ;; GNU General Public License for more details.
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
16
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
17 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 11235
diff changeset
18 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 11235
diff changeset
19 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 11235
diff changeset
20 ;; Boston, MA 02111-1307, USA.
2484
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
21
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 11235
diff changeset
22 ;;; Code:
2484
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
23
30087
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
24 ;; XEmacs autoloads CL so we might as well make use of it.
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
25 (require 'cl)
2089
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
26
2571
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
27 (defalias 'current-time-seconds 'current-time)
2089
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
28
2206
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
29 (defun map-keymap (function keymap &optional sort-first)
2168
af8f27940f79 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2089
diff changeset
30 "Call FUNCTION for every binding in KEYMAP.
30087
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
31 This does not include bindings inherited from a parent keymap.
2168
af8f27940f79 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2089
diff changeset
32 FUNCTION receives two arguments each time it is called:
af8f27940f79 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2089
diff changeset
33 the character (more generally, the event type) that is bound,
3399
c910eb73b259 (map-keymap): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 3389
diff changeset
34 and the binding it has.
c910eb73b259 (map-keymap): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 3389
diff changeset
35
c910eb73b259 (map-keymap): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 3389
diff changeset
36 Note that passing the event type directly to `define-key' does not work
c910eb73b259 (map-keymap): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 3389
diff changeset
37 in Emacs 19. We do not emulate that particular feature of Lucid Emacs.
c910eb73b259 (map-keymap): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 3389
diff changeset
38 If your code does that, modify it to make a vector containing the event
c910eb73b259 (map-keymap): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 3389
diff changeset
39 type that you get. That will work in both versions of Emacs."
2206
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
40 (if sort-first
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
41 (let (list)
30087
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
42 (cl-map-keymap (lambda (a b) (push (cons a b) list))
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
43 keymap)
2206
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
44 (setq list (sort list
30087
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
45 (lambda (a b)
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
46 (setq a (car a) b (car b))
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
47 (if (integerp a)
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
48 (if (integerp b) (< a b)
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
49 t)
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
50 (if (integerp b) t
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
51 (string< a b))))))
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
52 (dolist (p list)
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
53 (funcall function (car p) (cdr p))))
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
54 (cl-map-keymap function keymap)))
2206
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
55
10589
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
56 (defun read-number (prompt &optional integers-only)
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
57 "Read a number from the minibuffer.
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
58 Keep reentering the minibuffer until we get suitable input.
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
59 If optional argument INTEGERS-ONLY is non-nil, insist on an integer."
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
60 (interactive)
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
61 (let (success
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
62 (number nil)
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
63 (predicate (if integers-only 'integerp 'numberp)))
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
64 (while (not success)
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
65 (let ((input-string (read-string prompt)))
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
66 (condition-case ()
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
67 (setq number (read input-string))
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
68 (error))
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
69 (if (funcall predicate number)
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
70 (setq success t)
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
71 (let ((cursor-in-echo-area t))
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
72 (message "Please type %s"
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
73 (if integers-only "an integer" "a number"))
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
74 (sit-for 1)))))
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
75 number))
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
76
2206
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
77 (defun real-path-name (name &optional default)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
78 (file-truename (expand-file-name name default)))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
79
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
80 ;; It's not clear what to return if the mouse is not in FRAME.
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
81 (defun read-mouse-position (frame)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
82 (let ((pos (mouse-position)))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
83 (if (eq (car pos) frame)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
84 (cdr pos))))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
85
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
86 (defun switch-to-other-buffer (arg)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
87 "Switch to the previous buffer.
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
88 With a numeric arg N, switch to the Nth most recent buffer.
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
89 With an arg of 0, buries the current buffer at the
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
90 bottom of the buffer stack."
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
91 (interactive "p")
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
92 (if (eq arg 0)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
93 (bury-buffer (current-buffer)))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
94 (switch-to-buffer
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
95 (if (<= arg 1) (other-buffer (current-buffer))
9991
8deb32278622 (set-keymap-parent): Fix bug in case of empty keymap.
Richard M. Stallman <rms@gnu.org>
parents: 7365
diff changeset
96 (nth arg
2631
1e3d854828fc * lucid.el: Comment out fset of set-screen-width properly.
Jim Blandy <jimb@redhat.com>
parents: 2571
diff changeset
97 (apply 'nconc
1e3d854828fc * lucid.el: Comment out fset of set-screen-width properly.
Jim Blandy <jimb@redhat.com>
parents: 2571
diff changeset
98 (mapcar
1e3d854828fc * lucid.el: Comment out fset of set-screen-width properly.
Jim Blandy <jimb@redhat.com>
parents: 2571
diff changeset
99 (lambda (buf)
3002
7274509e47a3 * lucid.el (switch-to-other-buffer): Build the list of acceptable
Jim Blandy <jimb@redhat.com>
parents: 2631
diff changeset
100 (if (= ?\ (string-to-char (buffer-name buf)))
2631
1e3d854828fc * lucid.el: Comment out fset of set-screen-width properly.
Jim Blandy <jimb@redhat.com>
parents: 2571
diff changeset
101 nil
3002
7274509e47a3 * lucid.el (switch-to-other-buffer): Build the list of acceptable
Jim Blandy <jimb@redhat.com>
parents: 2631
diff changeset
102 (list buf)))
7274509e47a3 * lucid.el (switch-to-other-buffer): Build the list of acceptable
Jim Blandy <jimb@redhat.com>
parents: 2631
diff changeset
103 (buffer-list)))))))
2388
3f27c886f375 (try-face-font, find-face, get-face): New aliases.
Richard M. Stallman <rms@gnu.org>
parents: 2281
diff changeset
104
2571
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
105 (defalias 'find-face 'internal-find-face)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
106 (defalias 'get-face 'internal-get-face)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
107 (defalias 'try-face-font 'internal-try-face-font)
16340
14b661a07c1f (exec-to-string): New alias.
Richard M. Stallman <rms@gnu.org>
parents: 16293
diff changeset
108
14b661a07c1f (exec-to-string): New alias.
Richard M. Stallman <rms@gnu.org>
parents: 16293
diff changeset
109 (defalias 'exec-to-string 'shell-command-to-string)
2206
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
110
10596
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
111 (defun make-extent (beg end &optional buffer)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
112 (make-overlay beg end buffer))
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
113
30087
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
114 (defun extent-properties (extent) (overlay-properties extent))
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
115 (unless (fboundp 'extent-property) (defalias 'extent-property 'overlay-get))
19340
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
116
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
117 (defun extent-at (pos &optional object property before)
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
118 (with-current-buffer (or object (current-buffer))
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
119 (let ((overlays (overlays-at pos)))
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
120 (when property
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
121 (let (filtered)
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
122 (while overlays
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
123 (if (overlay-get (car overlays) property)
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
124 (setq filtered (cons (car overlays) filtered)))
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
125 (setq overlays (cdr overlays)))
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
126 (setq overlays filtered)))
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
127 (setq overlays
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
128 (sort overlays
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
129 (function (lambda (o1 o2)
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
130 (let ((p1 (or (overlay-get o1 'priority) 0))
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
131 (p2 (or (overlay-get o2 'priority) 0)))
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
132 (or (> p1 p2)
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
133 (and (= p1 p2)
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
134 (> (overlay-start o1) (overlay-start o2)))))))))
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
135 (if before
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
136 (nth 1 (memq before overlays))
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
137 (car overlays)))))
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
138
10596
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
139 (defun set-extent-property (extent prop value)
19321
995bfd9752d5 (set-extent-property): Don't allow
Richard M. Stallman <rms@gnu.org>
parents: 16340
diff changeset
140 ;; Make sure that separate adjacent extents
995bfd9752d5 (set-extent-property): Don't allow
Richard M. Stallman <rms@gnu.org>
parents: 16340
diff changeset
141 ;; with the same mouse-face value
995bfd9752d5 (set-extent-property): Don't allow
Richard M. Stallman <rms@gnu.org>
parents: 16340
diff changeset
142 ;; do not run together as one extent.
995bfd9752d5 (set-extent-property): Don't allow
Richard M. Stallman <rms@gnu.org>
parents: 16340
diff changeset
143 (and (eq prop 'mouse-face)
995bfd9752d5 (set-extent-property): Don't allow
Richard M. Stallman <rms@gnu.org>
parents: 16340
diff changeset
144 (symbolp value)
995bfd9752d5 (set-extent-property): Don't allow
Richard M. Stallman <rms@gnu.org>
parents: 16340
diff changeset
145 (setq value (list value)))
10596
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
146 (if (eq prop 'duplicable)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
147 (cond ((and value (not (overlay-get extent prop)))
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
148 ;; If becoming duplicable, copy all overlayprops to text props.
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
149 (add-text-properties (overlay-start extent)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
150 (overlay-end extent)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
151 (overlay-properties extent)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
152 (overlay-buffer extent)))
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
153 ;; If becoming no longer duplicable, remove these text props.
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
154 ((and (not value) (overlay-get extent prop))
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
155 (remove-text-properties (overlay-start extent)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
156 (overlay-end extent)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
157 (overlay-properties extent)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
158 (overlay-buffer extent))))
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
159 ;; If extent is already duplicable, put this property
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
160 ;; on the text as well as on the overlay.
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
161 (if (overlay-get extent 'duplicable)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
162 (put-text-property (overlay-start extent)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
163 (overlay-end extent)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
164 prop value (overlay-buffer extent))))
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
165 (overlay-put extent prop value))
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
166
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
167 (defun set-extent-face (extent face)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
168 (set-extent-property extent 'face face))
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
169
30087
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
170 (defun set-extent-end-glyph (extent glyph)
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
171 (set-extent-property extent 'after-string glyph))
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
172
10596
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
173 (defun delete-extent (extent)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
174 (set-extent-property extent 'duplicable nil)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
175 (delete-overlay extent))
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
176
2206
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
177 ;; Support the Lucid names with `screen' instead of `frame'.
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
178
2571
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
179 (defalias 'current-screen-configuration 'current-frame-configuration)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
180 (defalias 'delete-screen 'delete-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
181 (defalias 'find-file-new-screen 'find-file-other-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
182 (defalias 'find-file-read-only-new-screen 'find-file-read-only-other-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
183 (defalias 'find-tag-new-screen 'find-tag-other-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
184 ;;(defalias 'focus-screen 'focus-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
185 (defalias 'iconify-screen 'iconify-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
186 (defalias 'mail-new-screen 'mail-other-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
187 (defalias 'make-screen-invisible 'make-frame-invisible)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
188 (defalias 'make-screen-visible 'make-frame-visible)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
189 ;; (defalias 'minibuffer-screen-list 'minibuffer-frame-list)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
190 (defalias 'modify-screen-parameters 'modify-frame-parameters)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
191 (defalias 'next-screen 'next-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
192 ;; (defalias 'next-multiscreen-window 'next-multiframe-window)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
193 ;; (defalias 'previous-multiscreen-window 'previous-multiframe-window)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
194 ;; (defalias 'redirect-screen-focus 'redirect-frame-focus)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
195 (defalias 'redraw-screen 'redraw-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
196 ;; (defalias 'screen-char-height 'frame-char-height)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
197 ;; (defalias 'screen-char-width 'frame-char-width)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
198 ;; (defalias 'screen-configuration-to-register 'frame-configuration-to-register)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
199 ;; (defalias 'screen-focus 'frame-focus)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
200 (defalias 'screen-list 'frame-list)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
201 ;; (defalias 'screen-live-p 'frame-live-p)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
202 (defalias 'screen-parameters 'frame-parameters)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
203 (defalias 'screen-pixel-height 'frame-pixel-height)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
204 (defalias 'screen-pixel-width 'frame-pixel-width)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
205 (defalias 'screen-root-window 'frame-root-window)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
206 (defalias 'screen-selected-window 'frame-selected-window)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
207 (defalias 'lower-screen 'lower-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
208 (defalias 'raise-screen 'raise-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
209 (defalias 'screen-visible-p 'frame-visible-p)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
210 (defalias 'screenp 'framep)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
211 (defalias 'select-screen 'select-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
212 (defalias 'selected-screen 'selected-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
213 ;; (defalias 'set-screen-configuration 'set-frame-configuration)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
214 ;; (defalias 'set-screen-height 'set-frame-height)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
215 (defalias 'set-screen-position 'set-frame-position)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
216 (defalias 'set-screen-size 'set-frame-size)
2631
1e3d854828fc * lucid.el: Comment out fset of set-screen-width properly.
Jim Blandy <jimb@redhat.com>
parents: 2571
diff changeset
217 ;; (defalias 'set-screen-width 'set-frame-width)
2571
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
218 (defalias 'switch-to-buffer-new-screen 'switch-to-buffer-other-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
219 ;; (defalias 'unfocus-screen 'unfocus-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
220 (defalias 'visible-screen-list 'visible-frame-list)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
221 (defalias 'window-screen 'window-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
222 (defalias 'x-create-screen 'x-create-frame)
7365
8c2f150f2880 Change new-frame to make-frame.
Karl Heuer <kwzh@gnu.org>
parents: 4997
diff changeset
223 (defalias 'x-new-screen 'make-frame)
2484
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
224
2631
1e3d854828fc * lucid.el: Comment out fset of set-screen-width properly.
Jim Blandy <jimb@redhat.com>
parents: 2571
diff changeset
225 (provide 'lucid)
1e3d854828fc * lucid.el: Comment out fset of set-screen-width properly.
Jim Blandy <jimb@redhat.com>
parents: 2571
diff changeset
226
2484
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
227 ;;; end of lucid.el