annotate lisp/emacs-lisp/lucid.el @ 51010:f79532778159

Rewrote the local minor mode so that it can be sticky as well and made sticky the default. Reimplemented the global minor mode. Updated the commentary section to document these changes. (hl-line-sticky-flag): New user option. (hl-line-overlay): Made it buffer-local and gave it a docstring. (global-hl-line-overlay): New variable. (hl-line-mode): Rewritten to use `hl-line-sticky-flag'. (hl-line-highlight): Rewritten to use `hl-line-sticky-flag'. (hl-line-unhighlight): Updated docstring. (global-hl-line-mode): Implemented directly so that is does not depend on `hl-line-mode' any more. (global-hl-line-highlight, global-hl-line-unhighlight): New functions.
author Lute Kamstra <lute@gnu.org>
date Thu, 15 May 2003 13:21:23 +0000
parents c8ca209edecc
children 695cf19ef79e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38414
67b464da13ec Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 30087
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
39117
abd085bfec0c Add Keywords header.
Gerd Moellmann <gerd@gnu.org>
parents: 38695
diff changeset
3 ;; Copyright (C) 1993, 1995, 2001 Free Software Foundation, Inc.
2484
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
4
38695
01c7199c0ee7 Specify FSF as Maintainer.
Pavel Janík <Pavel@Janik.cz>
parents: 38414
diff changeset
5 ;; Maintainer: FSF
39117
abd085bfec0c Add Keywords header.
Gerd Moellmann <gerd@gnu.org>
parents: 38695
diff changeset
6 ;; Keywords: emulations
38695
01c7199c0ee7 Specify FSF as Maintainer.
Pavel Janík <Pavel@Janik.cz>
parents: 38414
diff changeset
7
2484
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
8 ;; This file is part of GNU Emacs.
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
9
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
10 ;; 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
11 ;; 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
12 ;; 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
13 ;; any later version.
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
14
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
15 ;; 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
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
18 ;; GNU General Public License for more details.
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
19
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
20 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 11235
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 11235
diff changeset
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 11235
diff changeset
23 ;; Boston, MA 02111-1307, USA.
2484
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
24
38414
67b464da13ec Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 30087
diff changeset
25 ;;; Commentary:
67b464da13ec Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 30087
diff changeset
26
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 11235
diff changeset
27 ;;; Code:
2484
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
28
30087
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
29 ;; 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
30 (require 'cl)
2089
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
31
2571
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
32 (defalias 'current-time-seconds 'current-time)
2089
cc2e35185964 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2088
diff changeset
33
50801
9c84256c5456 (cl-map-keymap): Be careful with aliases.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44519
diff changeset
34 ;; In case cl-map-keymap is an alias for map-keymap, avoid circular calls.
9c84256c5456 (cl-map-keymap): Be careful with aliases.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44519
diff changeset
35 (fset 'cl-map-keymap (indirect-function 'cl-map-keymap))
9c84256c5456 (cl-map-keymap): Be careful with aliases.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44519
diff changeset
36
2206
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
37 (defun map-keymap (function keymap &optional sort-first)
2168
af8f27940f79 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2089
diff changeset
38 "Call FUNCTION for every binding in KEYMAP.
30087
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
39 This does not include bindings inherited from a parent keymap.
2168
af8f27940f79 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2089
diff changeset
40 FUNCTION receives two arguments each time it is called:
af8f27940f79 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2089
diff changeset
41 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
42 and the binding it has.
c910eb73b259 (map-keymap): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 3389
diff changeset
43
c910eb73b259 (map-keymap): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 3389
diff changeset
44 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
45 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
46 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
47 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
48 (if sort-first
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
49 (let (list)
30087
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
50 (cl-map-keymap (lambda (a b) (push (cons a b) list))
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
51 keymap)
2206
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
52 (setq list (sort list
30087
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
53 (lambda (a b)
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
54 (setq a (car a) b (car b))
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
55 (if (integerp a)
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
56 (if (integerp b) (< a b)
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
57 t)
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
58 (if (integerp b) t
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
59 (string< a b))))))
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
60 (dolist (p list)
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
61 (funcall function (car p) (cdr p))))
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
62 (cl-map-keymap function keymap)))
2206
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
63
10589
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
64 (defun read-number (prompt &optional integers-only)
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
65 "Read a number from the minibuffer.
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
66 Keep reentering the minibuffer until we get suitable input.
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
67 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
68 (interactive)
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
69 (let (success
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
70 (number nil)
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
71 (predicate (if integers-only 'integerp 'numberp)))
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
72 (while (not success)
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
73 (let ((input-string (read-string prompt)))
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
74 (condition-case ()
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
75 (setq number (read input-string))
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
76 (error))
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
77 (if (funcall predicate number)
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
78 (setq success t)
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
79 (let ((cursor-in-echo-area t))
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
80 (message "Please type %s"
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
81 (if integers-only "an integer" "a number"))
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
82 (sit-for 1)))))
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
83 number))
4d7bc901319a (read-number): New function.
Richard M. Stallman <rms@gnu.org>
parents: 9991
diff changeset
84
2206
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
85 (defun real-path-name (name &optional default)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
86 (file-truename (expand-file-name name default)))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
87
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
88 ;; 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
89 (defun read-mouse-position (frame)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
90 (let ((pos (mouse-position)))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
91 (if (eq (car pos) frame)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
92 (cdr pos))))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
93
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
94 (defun switch-to-other-buffer (arg)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
95 "Switch to the previous buffer.
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
96 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
97 With an arg of 0, buries the current buffer at the
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
98 bottom of the buffer stack."
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
99 (interactive "p")
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
100 (if (eq arg 0)
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
101 (bury-buffer (current-buffer)))
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
102 (switch-to-buffer
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
103 (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
104 (nth arg
2631
1e3d854828fc * lucid.el: Comment out fset of set-screen-width properly.
Jim Blandy <jimb@redhat.com>
parents: 2571
diff changeset
105 (apply 'nconc
1e3d854828fc * lucid.el: Comment out fset of set-screen-width properly.
Jim Blandy <jimb@redhat.com>
parents: 2571
diff changeset
106 (mapcar
1e3d854828fc * lucid.el: Comment out fset of set-screen-width properly.
Jim Blandy <jimb@redhat.com>
parents: 2571
diff changeset
107 (lambda (buf)
3002
7274509e47a3 * lucid.el (switch-to-other-buffer): Build the list of acceptable
Jim Blandy <jimb@redhat.com>
parents: 2631
diff changeset
108 (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
109 nil
3002
7274509e47a3 * lucid.el (switch-to-other-buffer): Build the list of acceptable
Jim Blandy <jimb@redhat.com>
parents: 2631
diff changeset
110 (list buf)))
7274509e47a3 * lucid.el (switch-to-other-buffer): Build the list of acceptable
Jim Blandy <jimb@redhat.com>
parents: 2631
diff changeset
111 (buffer-list)))))))
2388
3f27c886f375 (try-face-font, find-face, get-face): New aliases.
Richard M. Stallman <rms@gnu.org>
parents: 2281
diff changeset
112
44519
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
113 (defun device-class (&optional device)
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
114 "Return the class (color behavior) of DEVICE.
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
115 This will be one of 'color, 'grayscale, or 'mono.
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
116 This function exists for compatibility with XEmacs."
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
117 (cond
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
118 ((display-color-p device) 'color)
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
119 ((display-grayscale-p device) 'grayscale)
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
120 (t 'mono)))
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
121
2571
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
122 (defalias 'find-face 'internal-find-face)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
123 (defalias 'get-face 'internal-get-face)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
124 (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
125
14b661a07c1f (exec-to-string): New alias.
Richard M. Stallman <rms@gnu.org>
parents: 16293
diff changeset
126 (defalias 'exec-to-string 'shell-command-to-string)
2206
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
127
44519
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
128
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
129 ;; Buffer context
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
130
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
131 (defun buffer-syntactic-context (&optional buffer)
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
132 "Syntactic context at point in BUFFER.
50866
c8ca209edecc (buffer-syntactic-context): Don't quote nil and t in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 50801
diff changeset
133 Either of `string', `comment' or nil.
44519
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
134 This is an XEmacs compatibility function."
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
135 (with-current-buffer (or buffer (current-buffer))
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
136 (let ((state (syntax-ppss (point))))
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
137 (cond
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
138 ((nth 3 state) 'string)
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
139 ((nth 4 state) 'comment)))))
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
140
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
141
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
142 (defun buffer-syntactic-context-depth (&optional buffer)
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
143 "Syntactic parenthesis depth at point in BUFFER.
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
144 This is an XEmacs compatibility function."
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
145 (with-current-buffer (or buffer (current-buffer))
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
146 (nth 0 (syntax-ppss (point)))))
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
147
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
148
4925eba04c46 (device-class, buffer-syntactic-context)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39117
diff changeset
149 ;; Extents
10596
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
150 (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
151 (make-overlay beg end buffer))
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
152
30087
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
153 (defun extent-properties (extent) (overlay-properties extent))
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
154 (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
155
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
156 (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
157 (with-current-buffer (or object (current-buffer))
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
158 (let ((overlays (overlays-at pos)))
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
159 (when property
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
160 (let (filtered)
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
161 (while overlays
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
162 (if (overlay-get (car overlays) property)
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
163 (setq filtered (cons (car overlays) filtered)))
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
164 (setq overlays (cdr overlays)))
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
165 (setq overlays filtered)))
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
166 (setq overlays
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
167 (sort overlays
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
168 (function (lambda (o1 o2)
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
169 (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
170 (p2 (or (overlay-get o2 'priority) 0)))
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
171 (or (> p1 p2)
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
172 (and (= p1 p2)
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
173 (> (overlay-start o1) (overlay-start o2)))))))))
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
174 (if before
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
175 (nth 1 (memq before overlays))
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
176 (car overlays)))))
ce11e3471a36 (extent-properties, extent-at): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 19321
diff changeset
177
10596
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
178 (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
179 ;; Make sure that separate adjacent extents
995bfd9752d5 (set-extent-property): Don't allow
Richard M. Stallman <rms@gnu.org>
parents: 16340
diff changeset
180 ;; with the same mouse-face value
995bfd9752d5 (set-extent-property): Don't allow
Richard M. Stallman <rms@gnu.org>
parents: 16340
diff changeset
181 ;; do not run together as one extent.
995bfd9752d5 (set-extent-property): Don't allow
Richard M. Stallman <rms@gnu.org>
parents: 16340
diff changeset
182 (and (eq prop 'mouse-face)
995bfd9752d5 (set-extent-property): Don't allow
Richard M. Stallman <rms@gnu.org>
parents: 16340
diff changeset
183 (symbolp value)
995bfd9752d5 (set-extent-property): Don't allow
Richard M. Stallman <rms@gnu.org>
parents: 16340
diff changeset
184 (setq value (list value)))
10596
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
185 (if (eq prop 'duplicable)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
186 (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
187 ;; 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
188 (add-text-properties (overlay-start extent)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
189 (overlay-end extent)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
190 (overlay-properties extent)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
191 (overlay-buffer extent)))
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
192 ;; 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
193 ((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
194 (remove-text-properties (overlay-start extent)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
195 (overlay-end extent)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
196 (overlay-properties extent)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
197 (overlay-buffer extent))))
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
198 ;; 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
199 ;; 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
200 (if (overlay-get extent 'duplicable)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
201 (put-text-property (overlay-start extent)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
202 (overlay-end extent)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
203 prop value (overlay-buffer extent))))
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
204 (overlay-put extent prop value))
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
205
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
206 (defun set-extent-face (extent face)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
207 (set-extent-property extent 'face face))
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
208
30087
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
209 (defun set-extent-end-glyph (extent glyph)
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
210 (set-extent-property extent 'after-string glyph))
1b5db0f1b8b7 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 19340
diff changeset
211
10596
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
212 (defun delete-extent (extent)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
213 (set-extent-property extent 'duplicable nil)
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
214 (delete-overlay extent))
3cda29fdf5f6 (make-extent, delete-extent, set-extent-property)
Richard M. Stallman <rms@gnu.org>
parents: 10589
diff changeset
215
2206
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
216 ;; Support the Lucid names with `screen' instead of `frame'.
c3bec907580c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 2168
diff changeset
217
2571
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
218 (defalias 'current-screen-configuration 'current-frame-configuration)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
219 (defalias 'delete-screen 'delete-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
220 (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
221 (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
222 (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
223 ;;(defalias 'focus-screen 'focus-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
224 (defalias 'iconify-screen 'iconify-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
225 (defalias 'mail-new-screen 'mail-other-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
226 (defalias 'make-screen-invisible 'make-frame-invisible)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
227 (defalias 'make-screen-visible 'make-frame-visible)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
228 ;; (defalias 'minibuffer-screen-list 'minibuffer-frame-list)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
229 (defalias 'modify-screen-parameters 'modify-frame-parameters)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
230 (defalias 'next-screen 'next-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
231 ;; (defalias 'next-multiscreen-window 'next-multiframe-window)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
232 ;; (defalias 'previous-multiscreen-window 'previous-multiframe-window)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
233 ;; (defalias 'redirect-screen-focus 'redirect-frame-focus)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
234 (defalias 'redraw-screen 'redraw-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
235 ;; (defalias 'screen-char-height 'frame-char-height)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
236 ;; (defalias 'screen-char-width 'frame-char-width)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
237 ;; (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
238 ;; (defalias 'screen-focus 'frame-focus)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
239 (defalias 'screen-list 'frame-list)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
240 ;; (defalias 'screen-live-p 'frame-live-p)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
241 (defalias 'screen-parameters 'frame-parameters)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
242 (defalias 'screen-pixel-height 'frame-pixel-height)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
243 (defalias 'screen-pixel-width 'frame-pixel-width)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
244 (defalias 'screen-root-window 'frame-root-window)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
245 (defalias 'screen-selected-window 'frame-selected-window)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
246 (defalias 'lower-screen 'lower-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
247 (defalias 'raise-screen 'raise-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
248 (defalias 'screen-visible-p 'frame-visible-p)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
249 (defalias 'screenp 'framep)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
250 (defalias 'select-screen 'select-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
251 (defalias 'selected-screen 'selected-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
252 ;; (defalias 'set-screen-configuration 'set-frame-configuration)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
253 ;; (defalias 'set-screen-height 'set-frame-height)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
254 (defalias 'set-screen-position 'set-frame-position)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
255 (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
256 ;; (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
257 (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
258 ;; (defalias 'unfocus-screen 'unfocus-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
259 (defalias 'visible-screen-list 'visible-frame-list)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
260 (defalias 'window-screen 'window-frame)
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2484
diff changeset
261 (defalias 'x-create-screen 'x-create-frame)
7365
8c2f150f2880 Change new-frame to make-frame.
Karl Heuer <kwzh@gnu.org>
parents: 4997
diff changeset
262 (defalias 'x-new-screen 'make-frame)
2484
6ddf357bd36c Add copyright notice.
Richard M. Stallman <rms@gnu.org>
parents: 2388
diff changeset
263
2631
1e3d854828fc * lucid.el: Comment out fset of set-screen-width properly.
Jim Blandy <jimb@redhat.com>
parents: 2571
diff changeset
264 (provide 'lucid)
1e3d854828fc * lucid.el: Comment out fset of set-screen-width properly.
Jim Blandy <jimb@redhat.com>
parents: 2571
diff changeset
265
38414
67b464da13ec Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 30087
diff changeset
266 ;;; lucid.el ends here