annotate lisp/options.el @ 34097:0225d8e15f2c

(coordinates_in_window): Handle computations for positions on the vertical bar and fringes differently for window-system frames. Consider some pixels near the vertical bar as on the bar if the frame doesn't have vertical scroll bars. Associate positions between mode or header lines with the right window, the left one.
author Gerd Moellmann <gerd@gnu.org>
date Fri, 01 Dec 2000 20:44:31 +0000
parents 1c042b411eda
children 253f761ad37b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
659
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 258
diff changeset
1 ;;; options.el --- edit Options command for Emacs.
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 258
diff changeset
2
845
213978acbc1e entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
3 ;; Copyright (C) 1985 Free Software Foundation, Inc.
213978acbc1e entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
4
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
5 ;; Maintainer: FSF
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
6
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
7 ;; This file is part of GNU Emacs.
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
8
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
9 ;; GNU Emacs is free software; you can redistribute it and/or modify
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
10 ;; it under the terms of the GNU General Public License as published by
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
11 ;; the Free Software Foundation; either version 2, or (at your option)
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
12 ;; any later version.
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
13
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
14 ;; GNU Emacs is distributed in the hope that it will be useful,
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
15 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
16 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
17 ;; GNU General Public License for more details.
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
18
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
19 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 11027
diff changeset
20 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 11027
diff changeset
21 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 11027
diff changeset
22 ;; Boston, MA 02111-1307, USA.
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
23
2308
f287613dfc28 Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 845
diff changeset
24 ;;; Commentary:
f287613dfc28 Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 845
diff changeset
25
f287613dfc28 Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 845
diff changeset
26 ;; This code provides functions to list and edit the values of all global
f287613dfc28 Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 845
diff changeset
27 ;; option variables known to loaded Emacs Lisp code. There are two entry
f287613dfc28 Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 845
diff changeset
28 ;; points, `list-options' and `edit' options'. The latter enters a major
f287613dfc28 Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 845
diff changeset
29 ;; mode specifically for editing option values. Do `M-x describe-mode' in
f287613dfc28 Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 845
diff changeset
30 ;; that context for more details.
f287613dfc28 Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 845
diff changeset
31
18383
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
32 ;; The customization buffer feature is intended to make this obsolete.
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
33
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
34 ;;; Code:
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
35
258
1e0bc00dca7a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 233
diff changeset
36 ;;;###autoload
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
37 (defun list-options ()
32289
1c042b411eda (list-options): Doc that you should use customize.
Dave Love <fx@gnu.org>
parents: 30886
diff changeset
38 "Display a list of Emacs user options, with values and documentation.
1c042b411eda (list-options): Doc that you should use customize.
Dave Love <fx@gnu.org>
parents: 30886
diff changeset
39 It is now better to use Customize instead."
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
40 (interactive)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
41 (with-output-to-temp-buffer "*List Options*"
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
42 (let (vars)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
43 (mapatoms (function (lambda (sym)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
44 (if (user-variable-p sym)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
45 (setq vars (cons sym vars))))))
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
46 (setq vars (sort vars 'string-lessp))
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
47 (while vars
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
48 (let ((sym (car vars)))
24429
d4276a9b567e (edit-options): Doc fix.
Dave Love <fx@gnu.org>
parents: 18383
diff changeset
49 (when (boundp sym)
d4276a9b567e (edit-options): Doc fix.
Dave Love <fx@gnu.org>
parents: 18383
diff changeset
50 (princ ";; ")
d4276a9b567e (edit-options): Doc fix.
Dave Love <fx@gnu.org>
parents: 18383
diff changeset
51 (prin1 sym)
d4276a9b567e (edit-options): Doc fix.
Dave Love <fx@gnu.org>
parents: 18383
diff changeset
52 (princ ":\n\t")
d4276a9b567e (edit-options): Doc fix.
Dave Love <fx@gnu.org>
parents: 18383
diff changeset
53 (prin1 (symbol-value sym))
d4276a9b567e (edit-options): Doc fix.
Dave Love <fx@gnu.org>
parents: 18383
diff changeset
54 (terpri)
d4276a9b567e (edit-options): Doc fix.
Dave Love <fx@gnu.org>
parents: 18383
diff changeset
55 (princ (substitute-command-keys
d4276a9b567e (edit-options): Doc fix.
Dave Love <fx@gnu.org>
parents: 18383
diff changeset
56 (documentation-property sym 'variable-documentation)))
d4276a9b567e (edit-options): Doc fix.
Dave Love <fx@gnu.org>
parents: 18383
diff changeset
57 (princ "\n;;\n"))
d4276a9b567e (edit-options): Doc fix.
Dave Love <fx@gnu.org>
parents: 18383
diff changeset
58 (setq vars (cdr vars))))
d4276a9b567e (edit-options): Doc fix.
Dave Love <fx@gnu.org>
parents: 18383
diff changeset
59 (with-current-buffer "*List Options*"
d4276a9b567e (edit-options): Doc fix.
Dave Love <fx@gnu.org>
parents: 18383
diff changeset
60 (Edit-options-mode)
d4276a9b567e (edit-options): Doc fix.
Dave Love <fx@gnu.org>
parents: 18383
diff changeset
61 (setq buffer-read-only t)))))
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
62
258
1e0bc00dca7a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 233
diff changeset
63 ;;;###autoload
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
64 (defun edit-options ()
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
65 "Edit a list of Emacs user option values.
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
66 Selects a buffer containing such a list,
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
67 in which there are commands to set the option values.
24429
d4276a9b567e (edit-options): Doc fix.
Dave Love <fx@gnu.org>
parents: 18383
diff changeset
68 Type \\[describe-mode] in that buffer for a list of commands.
d4276a9b567e (edit-options): Doc fix.
Dave Love <fx@gnu.org>
parents: 18383
diff changeset
69
d4276a9b567e (edit-options): Doc fix.
Dave Love <fx@gnu.org>
parents: 18383
diff changeset
70 The Custom feature is intended to make this obsolete."
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
71 (interactive)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
72 (list-options)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
73 (pop-to-buffer "*List Options*"))
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
74
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
75 (defvar Edit-options-mode-map
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
76 (let ((map (make-keymap)))
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
77 (define-key map "s" 'Edit-options-set)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
78 (define-key map "x" 'Edit-options-toggle)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
79 (define-key map "1" 'Edit-options-t)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
80 (define-key map "0" 'Edit-options-nil)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
81 (define-key map "p" 'backward-paragraph)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
82 (define-key map " " 'forward-paragraph)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
83 (define-key map "n" 'forward-paragraph)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
84 map)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
85 "")
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
86
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
87 ;; Edit Options mode is suitable only for specially formatted data.
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
88 (put 'Edit-options-mode 'mode-class 'special)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
89
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
90 (defun Edit-options-mode ()
233
3f28d7f1c174 *** empty log message ***
Brian Preble <rassilon@gnu.org>
parents: 228
diff changeset
91 "\\<Edit-options-mode-map>\
3f28d7f1c174 *** empty log message ***
Brian Preble <rassilon@gnu.org>
parents: 228
diff changeset
92 Major mode for editing Emacs user option settings.
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
93 Special commands are:
233
3f28d7f1c174 *** empty log message ***
Brian Preble <rassilon@gnu.org>
parents: 228
diff changeset
94 \\[Edit-options-set] -- set variable point points at. New value read using minibuffer.
3f28d7f1c174 *** empty log message ***
Brian Preble <rassilon@gnu.org>
parents: 228
diff changeset
95 \\[Edit-options-toggle] -- toggle variable, t -> nil, nil -> t.
3f28d7f1c174 *** empty log message ***
Brian Preble <rassilon@gnu.org>
parents: 228
diff changeset
96 \\[Edit-options-t] -- set variable to t.
3f28d7f1c174 *** empty log message ***
Brian Preble <rassilon@gnu.org>
parents: 228
diff changeset
97 \\[Edit-options-nil] -- set variable to nil.
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
98 Changed values made by these commands take effect immediately.
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
99
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
100 Each variable description is a paragraph.
233
3f28d7f1c174 *** empty log message ***
Brian Preble <rassilon@gnu.org>
parents: 228
diff changeset
101 For convenience, the characters \\[backward-paragraph] and \\[forward-paragraph] move back and forward by paragraphs."
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
102 (kill-all-local-variables)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
103 (set-syntax-table emacs-lisp-mode-syntax-table)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
104 (use-local-map Edit-options-mode-map)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
105 (make-local-variable 'paragraph-separate)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
106 (setq paragraph-separate "[^\^@-\^?]")
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
107 (make-local-variable 'paragraph-start)
10887
b808c61b7ee1 (Edit-options-mode): Remove ^ from paragraph-start.
Boris Goldowsky <boris@gnu.org>
parents: 2308
diff changeset
108 (setq paragraph-start "\t")
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
109 (setq truncate-lines t)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
110 (setq major-mode 'Edit-options-mode)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
111 (setq mode-name "Options")
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
112 (run-hooks 'Edit-options-mode-hook))
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
113
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
114 (defun Edit-options-set () (interactive)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
115 (Edit-options-modify
30886
207eba858980 (Edit-options-{set,toggle,t,nil}): Don't quote lambda.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 24429
diff changeset
116 (lambda (var) (eval-minibuffer (concat "New " (symbol-name var) ": ")))))
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
117
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
118 (defun Edit-options-toggle () (interactive)
30886
207eba858980 (Edit-options-{set,toggle,t,nil}): Don't quote lambda.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 24429
diff changeset
119 (Edit-options-modify (lambda (var) (not (symbol-value var)))))
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
120
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
121 (defun Edit-options-t () (interactive)
30886
207eba858980 (Edit-options-{set,toggle,t,nil}): Don't quote lambda.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 24429
diff changeset
122 (Edit-options-modify (lambda (var) t)))
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
123
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
124 (defun Edit-options-nil () (interactive)
30886
207eba858980 (Edit-options-{set,toggle,t,nil}): Don't quote lambda.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 24429
diff changeset
125 (Edit-options-modify (lambda (var) nil)))
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
126
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
127 (defun Edit-options-modify (modfun)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
128 (save-excursion
11027
21761da820cd (edit-options): Make the buffer read-only.
Richard M. Stallman <rms@gnu.org>
parents: 10887
diff changeset
129 (let ((buffer-read-only nil) var pos)
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
130 (re-search-backward "^;; \\|\\`")
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
131 (forward-char 3)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
132 (setq pos (point))
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
133 (save-restriction
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
134 (narrow-to-region pos (progn (end-of-line) (1- (point))))
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
135 (goto-char pos)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
136 (setq var (read (current-buffer))))
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
137 (goto-char pos)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
138 (forward-line 1)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
139 (forward-char 1)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
140 (save-excursion
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
141 (set var (funcall modfun var)))
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
142 (kill-sexp 1)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
143 (prin1 (symbol-value var) (current-buffer)))))
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
144
18383
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
145 (provide 'options)
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
146
659
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 258
diff changeset
147 ;;; options.el ends here