annotate lisp/options.el @ 17846:c427501449a1

(display_text_line): Move the code to fill out the line with the newline's face to the end of the newline code. Add changes (commented out) to record ellipsis positions in charstarts.
author Richard M. Stallman <rms@gnu.org>
date Fri, 16 May 1997 07:32:59 +0000
parents 83f275dcd93a
children 11218164bc54
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
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
32 ;;; Code:
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
33
258
1e0bc00dca7a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 233
diff changeset
34 ;;;###autoload
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
35 (defun list-options ()
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
36 "Display a list of Emacs user options, with values and documentation."
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
37 (interactive)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
38 (save-excursion
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
39 (set-buffer (get-buffer-create "*List Options*"))
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
40 (Edit-options-mode))
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)))
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
49 (princ ";; ")
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
50 (prin1 sym)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
51 (princ ":\n\t")
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
52 (prin1 (symbol-value sym))
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
53 (terpri)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
54 (princ (substitute-command-keys
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
55 (documentation-property sym 'variable-documentation)))
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
56 (princ "\n;;\n"))
11027
21761da820cd (edit-options): Make the buffer read-only.
Richard M. Stallman <rms@gnu.org>
parents: 10887
diff changeset
57 (setq vars (cdr vars)))))
21761da820cd (edit-options): Make the buffer read-only.
Richard M. Stallman <rms@gnu.org>
parents: 10887
diff changeset
58 (save-excursion
21761da820cd (edit-options): Make the buffer read-only.
Richard M. Stallman <rms@gnu.org>
parents: 10887
diff changeset
59 (set-buffer "*List Options*")
21761da820cd (edit-options): Make the buffer read-only.
Richard M. Stallman <rms@gnu.org>
parents: 10887
diff changeset
60 (setq buffer-read-only t)))
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
61
258
1e0bc00dca7a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 233
diff changeset
62 ;;;###autoload
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
63 (defun edit-options ()
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
64 "Edit a list of Emacs user option values.
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
65 Selects a buffer containing such a list,
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
66 in which there are commands to set the option values.
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
67 Type \\[describe-mode] in that buffer for a list of commands."
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
68 (interactive)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
69 (list-options)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
70 (pop-to-buffer "*List Options*"))
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
71
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
72 (defvar Edit-options-mode-map
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
73 (let ((map (make-keymap)))
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
74 (define-key map "s" 'Edit-options-set)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
75 (define-key map "x" 'Edit-options-toggle)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
76 (define-key map "1" 'Edit-options-t)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
77 (define-key map "0" 'Edit-options-nil)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
78 (define-key map "p" 'backward-paragraph)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
79 (define-key map " " 'forward-paragraph)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
80 (define-key map "n" 'forward-paragraph)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
81 map)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
82 "")
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
83
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
84 ;; Edit Options mode is suitable only for specially formatted data.
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
85 (put 'Edit-options-mode 'mode-class 'special)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
86
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
87 (defun Edit-options-mode ()
233
3f28d7f1c174 *** empty log message ***
Brian Preble <rassilon@gnu.org>
parents: 228
diff changeset
88 "\\<Edit-options-mode-map>\
3f28d7f1c174 *** empty log message ***
Brian Preble <rassilon@gnu.org>
parents: 228
diff changeset
89 Major mode for editing Emacs user option settings.
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
90 Special commands are:
233
3f28d7f1c174 *** empty log message ***
Brian Preble <rassilon@gnu.org>
parents: 228
diff changeset
91 \\[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
92 \\[Edit-options-toggle] -- toggle variable, t -> nil, nil -> t.
3f28d7f1c174 *** empty log message ***
Brian Preble <rassilon@gnu.org>
parents: 228
diff changeset
93 \\[Edit-options-t] -- set variable to t.
3f28d7f1c174 *** empty log message ***
Brian Preble <rassilon@gnu.org>
parents: 228
diff changeset
94 \\[Edit-options-nil] -- set variable to nil.
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
95 Changed values made by these commands take effect immediately.
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
96
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
97 Each variable description is a paragraph.
233
3f28d7f1c174 *** empty log message ***
Brian Preble <rassilon@gnu.org>
parents: 228
diff changeset
98 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
99 (kill-all-local-variables)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
100 (set-syntax-table emacs-lisp-mode-syntax-table)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
101 (use-local-map Edit-options-mode-map)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
102 (make-local-variable 'paragraph-separate)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
103 (setq paragraph-separate "[^\^@-\^?]")
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
104 (make-local-variable 'paragraph-start)
10887
b808c61b7ee1 (Edit-options-mode): Remove ^ from paragraph-start.
Boris Goldowsky <boris@gnu.org>
parents: 2308
diff changeset
105 (setq paragraph-start "\t")
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
106 (setq truncate-lines t)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
107 (setq major-mode 'Edit-options-mode)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
108 (setq mode-name "Options")
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
109 (run-hooks 'Edit-options-mode-hook))
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
110
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
111 (defun Edit-options-set () (interactive)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
112 (Edit-options-modify
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
113 '(lambda (var) (eval-minibuffer (concat "New " (symbol-name var) ": ")))))
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
114
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
115 (defun Edit-options-toggle () (interactive)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
116 (Edit-options-modify '(lambda (var) (not (symbol-value var)))))
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-t () (interactive)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
119 (Edit-options-modify '(lambda (var) t)))
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-nil () (interactive)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
122 (Edit-options-modify '(lambda (var) nil)))
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-modify (modfun)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
125 (save-excursion
11027
21761da820cd (edit-options): Make the buffer read-only.
Richard M. Stallman <rms@gnu.org>
parents: 10887
diff changeset
126 (let ((buffer-read-only nil) var pos)
228
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
127 (re-search-backward "^;; \\|\\`")
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
128 (forward-char 3)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
129 (setq pos (point))
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
130 (save-restriction
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
131 (narrow-to-region pos (progn (end-of-line) (1- (point))))
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
132 (goto-char pos)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
133 (setq var (read (current-buffer))))
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
134 (goto-char pos)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
135 (forward-line 1)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
136 (forward-char 1)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
137 (save-excursion
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
138 (set var (funcall modfun var)))
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
139 (kill-sexp 1)
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
140 (prin1 (symbol-value var) (current-buffer)))))
997a3c98d127 Initial revision
Raul Acevedo <kitaro@gnu.org>
parents:
diff changeset
141
659
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 258
diff changeset
142 ;;; options.el ends here