Mercurial > emacs
annotate lisp/emulation/viper-init.el @ 110410:f2e111723c3a
Merge changes made in Gnus trunk.
Reimplement nnimap, and do tweaks to the rest of the code to support that.
* gnus-int.el (gnus-finish-retrieve-group-infos)
(gnus-retrieve-group-data-early): New functions.
* gnus-range.el (gnus-range-nconcat): New function.
* gnus-start.el (gnus-get-unread-articles): Support early retrieval of
data.
(gnus-read-active-for-groups): Support finishing the early retrieval of
data.
* gnus-sum.el (gnus-summary-move-article): Pass the move-to group name
if the move is internal, so that nnimap can do fast internal moves.
* gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for
nnimap usage.
* nnimap.el: Rewritten.
* nnmail.el (nnmail-inhibit-default-split-group): New internal variable
to allow the mail splitting to not return a default group. This is
useful for nnimap, which will leave unmatched mail in the inbox.
* utf7.el (utf7-encode): Autoload.
Implement shell connection.
* nnimap.el (nnimap-open-shell-stream): New function.
(nnimap-open-connection): Use it.
Get the number of lines by using BODYSTRUCTURE.
(nnimap-transform-headers): Get the number of lines in each message.
(nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the
number of lines.
Not all servers return UIDNEXT. Work past this problem.
Remove junk from end of file.
Fix typo in "bogus" section.
Make capabilties be case-insensitive.
Require cl when compiling.
Don't bug out if the LIST command doesn't have any parameters.
2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change)
* nnimap.el (nnimap-get-groups): Don't bug out if the LIST command
doesn't have any parameters.
(mm-text-html-renderer): Document gnus-article-html.
2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix)
* mm-decode.el (mm-text-html-renderer): Document gnus-article-html.
* dgnushack.el: Define netrc-credentials.
If the user doesn't have a /etc/services, supply some sensible port defaults.
Have `unseen-or-unread' select an unread unseen article first.
(nntp-open-server): Return whether the open was successful or not.
Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ).
Save result so that it doesn't say "failed" all the time.
Add ~/.authinfo to the default, since that's probably most useful for users.
Don't use the "finish" method when we're reading from the agent.
Add some more nnimap-relevant agent stuff to nnagent.el.
* nnimap.el (nnimap-with-process-buffer): Removed.
Revert one line that was changed by mistake in the last checkin.
(nnimap-open-connection): Don't error out when we can't make a connection
nnimap-related changes to avoid bugging out if we can't contact a server.
* gnus-start.el (gnus-get-unread-articles): Don't try to scan groups
from methods that are denied.
* nnimap.el (nnimap-possibly-change-group): Return nil if we can't log
in.
(nnimap-finish-retrieve-group-infos): Make sure we're not waiting for
nothing.
* gnus-sum.el (gnus-select-newsgroup): Indent.
author | Katsumi Yamaoka <yamaoka@jpl.org> |
---|---|
date | Sat, 18 Sep 2010 10:02:19 +0000 |
parents | 280c8ae2476d |
children | 13a509edfa26 |
rev | line source |
---|---|
18047 | 1 ;;; viper-init.el --- some common definitions for Viper |
2 | |
64701
34bd8e434dd7
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64383
diff
changeset
|
3 ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, |
106815 | 4 ;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. |
18047 | 5 |
42602
633233bf2bbf
2002-01-07 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
42452
diff
changeset
|
6 ;; Author: Michael Kifer <kifer@cs.stonybrook.edu> |
110015
280c8ae2476d
Add "Package:" file headers to denote built-in packages.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
7 ;; Package: viper |
39215
8dccf2552307
2001-09-09 Michael Kifer <kifer@cs.sunysb.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
38414
diff
changeset
|
8 |
18047 | 9 ;; This file is part of GNU Emacs. |
10 | |
94658
eb7b2376cae5
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93773
diff
changeset
|
11 ;; GNU Emacs is free software: you can redistribute it and/or modify |
18047 | 12 ;; it under the terms of the GNU General Public License as published by |
94658
eb7b2376cae5
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93773
diff
changeset
|
13 ;; the Free Software Foundation, either version 3 of the License, or |
eb7b2376cae5
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93773
diff
changeset
|
14 ;; (at your option) any later version. |
18047 | 15 |
16 ;; GNU Emacs is distributed in the hope that it will be useful, | |
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 ;; GNU General Public License for more details. | |
20 | |
21 ;; You should have received a copy of the GNU General Public License | |
94658
eb7b2376cae5
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93773
diff
changeset
|
22 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
18047 | 23 |
38414
67b464da13ec
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
35955
diff
changeset
|
24 ;;; Commentary: |
67b464da13ec
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
35955
diff
changeset
|
25 |
67b464da13ec
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
35955
diff
changeset
|
26 ;;; Code: |
18047 | 27 |
28 ;; compiler pacifier | |
29 (defvar mark-even-if-inactive) | |
19462 | 30 (defvar quail-mode) |
31 (defvar iso-accents-mode) | |
32 (defvar viper-current-state) | |
18172 | 33 (defvar viper-version) |
18839 | 34 (defvar viper-expert-level) |
21940 | 35 (defvar current-input-method) |
36 (defvar default-input-method) | |
37 (defvar describe-current-input-method-function) | |
42602
633233bf2bbf
2002-01-07 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
42452
diff
changeset
|
38 (defvar bar-cursor) |
633233bf2bbf
2002-01-07 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
42452
diff
changeset
|
39 (defvar cursor-type) |
18047 | 40 ;; end pacifier |
41 | |
18172 | 42 |
43 ;; Viper version | |
44 (defun viper-version () | |
45 (interactive) | |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
46 (message "Viper version is %s" viper-version)) |
18172 | 47 |
18047 | 48 ;; Tell whether we are running as a window application or on a TTY |
42602
633233bf2bbf
2002-01-07 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
42452
diff
changeset
|
49 |
92383
6eac1e449121
(viper-cond-compile-for-xemacs-or-emacs): Delete macro.
Glenn Morris <rgm@gnu.org>
parents:
87649
diff
changeset
|
50 (defsubst viper-device-type () |
85511
f873840f9fea
* emulation/edt-mapper.el (function-key-map):
Dan Nicolaescu <dann@ics.uci.edu>
parents:
82140
diff
changeset
|
51 (if (featurep 'xemacs) |
92383
6eac1e449121
(viper-cond-compile-for-xemacs-or-emacs): Delete macro.
Glenn Morris <rgm@gnu.org>
parents:
87649
diff
changeset
|
52 (device-type (selected-device)) |
6eac1e449121
(viper-cond-compile-for-xemacs-or-emacs): Delete macro.
Glenn Morris <rgm@gnu.org>
parents:
87649
diff
changeset
|
53 window-system)) |
42602
633233bf2bbf
2002-01-07 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
42452
diff
changeset
|
54 |
60168
d96e54250eea
* viper-cmd.el (viper-prefix-commands): make into a defconst.
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
52401
diff
changeset
|
55 (defun viper-color-display-p () |
d96e54250eea
* viper-cmd.el (viper-prefix-commands): make into a defconst.
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
52401
diff
changeset
|
56 (condition-case nil |
92383
6eac1e449121
(viper-cond-compile-for-xemacs-or-emacs): Delete macro.
Glenn Morris <rgm@gnu.org>
parents:
87649
diff
changeset
|
57 (if (featurep 'xemacs) |
6eac1e449121
(viper-cond-compile-for-xemacs-or-emacs): Delete macro.
Glenn Morris <rgm@gnu.org>
parents:
87649
diff
changeset
|
58 (eq (device-class (selected-device)) 'color) |
6eac1e449121
(viper-cond-compile-for-xemacs-or-emacs): Delete macro.
Glenn Morris <rgm@gnu.org>
parents:
87649
diff
changeset
|
59 (display-color-p)) |
60168
d96e54250eea
* viper-cmd.el (viper-prefix-commands): make into a defconst.
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
52401
diff
changeset
|
60 (error nil))) |
d96e54250eea
* viper-cmd.el (viper-prefix-commands): make into a defconst.
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
52401
diff
changeset
|
61 |
18047 | 62 ;; in XEmacs: device-type is tty on tty and stream in batch. |
19079 | 63 (defun viper-window-display-p () |
64 (and (viper-device-type) (not (memq (viper-device-type) '(tty stream pc))))) | |
18047 | 65 |
20003 | 66 (defcustom viper-ms-style-os-p (memq system-type |
67 '(ms-dos windows-nt windows-95)) | |
18839 | 68 "Tells if Emacs is running under an MS-style OS: ms-dos, windows-nt, W95." |
69 :type 'boolean | |
70 :tag "Is it Microsoft-made OS?" | |
20003 | 71 :group 'viper-misc) |
18047 | 72 |
81331
c3779fe5830e
2007-06-12 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
75346
diff
changeset
|
73 (defcustom viper-suppress-input-method-change-message nil |
c3779fe5830e
2007-06-12 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
75346
diff
changeset
|
74 "If t, the message notifying about changes in the input method is not displayed. |
c3779fe5830e
2007-06-12 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
75346
diff
changeset
|
75 Normally, a message is displayed each time on enters the vi, insert or replace |
c3779fe5830e
2007-06-12 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
75346
diff
changeset
|
76 state." |
c3779fe5830e
2007-06-12 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
75346
diff
changeset
|
77 :type 'boolean |
c3779fe5830e
2007-06-12 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
75346
diff
changeset
|
78 :group 'viper-misc) |
c3779fe5830e
2007-06-12 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
75346
diff
changeset
|
79 |
19079 | 80 (defcustom viper-force-faces nil |
18047 | 81 "If t, Viper will think that it is running on a display that supports faces. |
18839 | 82 This is provided as a temporary relief for users of graphics-capable terminals |
83 that Viper doesn't know about. | |
84 In all likelihood, you don't need to bother with this setting." | |
85 :type 'boolean | |
20003 | 86 :group 'viper-highlighting) |
18047 | 87 |
19079 | 88 (defun viper-has-face-support-p () |
89 (cond ((viper-window-display-p)) | |
90 (viper-force-faces) | |
60168
d96e54250eea
* viper-cmd.el (viper-prefix-commands): make into a defconst.
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
52401
diff
changeset
|
91 ((viper-color-display-p)) |
85972
51aa47312c4b
* ediff-init.el (ediff-xemacs-p, ediff-emacs-p): Remove.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
85511
diff
changeset
|
92 ((featurep 'emacs) (memq (viper-device-type) '(pc))) |
51aa47312c4b
* ediff-init.el (ediff-xemacs-p, ediff-emacs-p): Remove.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
85511
diff
changeset
|
93 ((featurep 'xemacs) (memq (viper-device-type) '(tty pc))))) |
18047 | 94 |
95 | |
96 ;;; Macros | |
97 | |
19079 | 98 (defmacro viper-deflocalvar (var default-value &optional documentation) |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
99 `(progn |
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
100 (defvar ,var ,default-value |
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
101 ,(format "%s\n\(buffer local\)" documentation)) |
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
102 (make-variable-buffer-local ',var))) |
18047 | 103 |
19462 | 104 ;; (viper-loop COUNT BODY) Execute BODY COUNT times. |
105 (defmacro viper-loop (count &rest body) | |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
106 `(let ((count ,count)) |
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
107 (while (> count 0) |
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
108 ,@body |
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
109 (setq count (1- count))))) |
18047 | 110 |
19079 | 111 (defmacro viper-buffer-live-p (buf) |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
112 `(and ,buf (get-buffer ,buf) (buffer-name (get-buffer ,buf)))) |
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
113 |
18047 | 114 ;; return buffer-specific macro definition, given a full macro definition |
19079 | 115 (defmacro viper-kbd-buf-alist (macro-elt) |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
116 `(nth 1 ,macro-elt)) |
18047 | 117 ;; get a pair: (curr-buffer . macro-definition) |
19079 | 118 (defmacro viper-kbd-buf-pair (macro-elt) |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
119 `(assoc (buffer-name) (viper-kbd-buf-alist ,macro-elt))) |
18047 | 120 ;; get macro definition for current buffer |
19079 | 121 (defmacro viper-kbd-buf-definition (macro-elt) |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
122 `(cdr (viper-kbd-buf-pair ,macro-elt))) |
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
123 |
18047 | 124 ;; return mode-specific macro definitions, given a full macro definition |
19079 | 125 (defmacro viper-kbd-mode-alist (macro-elt) |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
126 `(nth 2 ,macro-elt)) |
18047 | 127 ;; get a pair: (major-mode . macro-definition) |
19079 | 128 (defmacro viper-kbd-mode-pair (macro-elt) |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
129 `(assoc major-mode (viper-kbd-mode-alist ,macro-elt))) |
18047 | 130 ;; get macro definition for the current major mode |
19079 | 131 (defmacro viper-kbd-mode-definition (macro-elt) |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
132 `(cdr (viper-kbd-mode-pair ,macro-elt))) |
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
133 |
18047 | 134 ;; return global macro definition, given a full macro definition |
19079 | 135 (defmacro viper-kbd-global-pair (macro-elt) |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
136 `(nth 3 ,macro-elt)) |
18047 | 137 ;; get global macro definition from an elt of macro-alist |
19079 | 138 (defmacro viper-kbd-global-definition (macro-elt) |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
139 `(cdr (viper-kbd-global-pair ,macro-elt))) |
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
140 |
18047 | 141 ;; last elt of a sequence |
19079 | 142 (defsubst viper-seq-last-elt (seq) |
18047 | 143 (elt seq (1- (length seq)))) |
19462 | 144 |
145 (defsubst viper-string-to-list (string) | |
146 (append (vconcat string) nil)) | |
147 | |
148 (defsubst viper-charlist-to-string (list) | |
149 (mapconcat 'char-to-string list "")) | |
150 | |
151 ;; like char-after/before, but saves typing | |
152 (defun viper-char-at-pos (direction &optional offset) | |
153 (or (integerp offset) (setq offset 0)) | |
154 (if (eq direction 'forward) | |
155 (char-after (+ (point) offset)) | |
156 (char-before (- (point) offset)))) | |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
157 |
18047 | 158 |
19079 | 159 (defvar viper-minibuffer-overlay-priority 300) |
160 (defvar viper-replace-overlay-priority 400) | |
161 (defvar viper-search-overlay-priority 500) | |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
162 |
18047 | 163 |
164 ;;; Viper minor modes | |
165 | |
166 ;; Mode for vital things like \e, C-z. | |
19079 | 167 (viper-deflocalvar viper-vi-intercept-minor-mode nil) |
18047 | 168 |
19079 | 169 (viper-deflocalvar viper-vi-basic-minor-mode nil |
18047 | 170 "Viper's minor mode for Vi bindings.") |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
171 |
19079 | 172 (viper-deflocalvar viper-vi-local-user-minor-mode nil |
18047 | 173 "Auxiliary minor mode for user-defined local bindings in Vi state.") |
174 | |
19079 | 175 (viper-deflocalvar viper-vi-global-user-minor-mode nil |
18047 | 176 "Auxiliary minor mode for user-defined global bindings in Vi state.") |
177 | |
19079 | 178 (viper-deflocalvar viper-vi-state-modifier-minor-mode nil |
18047 | 179 "Minor mode used to make major-mode-specific modification to Vi state.") |
180 | |
19079 | 181 (viper-deflocalvar viper-vi-diehard-minor-mode nil |
18047 | 182 "This minor mode is in effect when the user wants Viper to be Vi.") |
183 | |
19079 | 184 (viper-deflocalvar viper-vi-kbd-minor-mode nil |
18047 | 185 "Minor mode for Ex command macros in Vi state. |
186 The corresponding keymap stores key bindings of Vi macros defined with | |
187 the Ex command :map.") | |
188 | |
189 ;; Mode for vital things like \e, C-z. | |
19079 | 190 (viper-deflocalvar viper-insert-intercept-minor-mode nil) |
18047 | 191 |
19079 | 192 (viper-deflocalvar viper-insert-basic-minor-mode nil |
18047 | 193 "Viper's minor mode for bindings in Insert mode.") |
194 | |
19079 | 195 (viper-deflocalvar viper-insert-local-user-minor-mode nil |
18047 | 196 "Auxiliary minor mode for buffer-local user-defined bindings in Insert state. |
197 This is a way to overshadow normal Insert mode bindings locally to certain | |
198 designated buffers.") | |
199 | |
19079 | 200 (viper-deflocalvar viper-insert-global-user-minor-mode nil |
18047 | 201 "Auxiliary minor mode for global user-defined bindings in Insert state.") |
202 | |
19079 | 203 (viper-deflocalvar viper-insert-state-modifier-minor-mode nil |
18047 | 204 "Minor mode used to make major-mode-specific modification to Insert state.") |
205 | |
19079 | 206 (viper-deflocalvar viper-insert-diehard-minor-mode nil |
18047 | 207 "Minor mode that simulates Vi very closely. |
208 Not recommened, except for the novice user.") | |
209 | |
19079 | 210 (viper-deflocalvar viper-insert-kbd-minor-mode nil |
18047 | 211 "Minor mode for Ex command macros Insert state. |
212 The corresponding keymap stores key bindings of Vi macros defined with | |
213 the Ex command :map!.") | |
214 | |
19079 | 215 (viper-deflocalvar viper-replace-minor-mode nil |
18047 | 216 "Minor mode in effect in replace state (cw, C, and the like commands).") |
217 | |
20206 | 218 ;; Mode for vital things like \C-z and \C-x) This is set to t, when viper-mode |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
219 ;; is invoked. So, any new buffer will have C-z defined as switch to Vi, |
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
220 ;; unless we switched states in this buffer |
20206 | 221 (viper-deflocalvar viper-emacs-intercept-minor-mode nil) |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
222 |
20206 | 223 (viper-deflocalvar viper-emacs-local-user-minor-mode nil |
18047 | 224 "Minor mode for local user bindings effective in Emacs state. |
225 Users can use it to override Emacs bindings when Viper is in its Emacs | |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
226 state.") |
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
227 |
20206 | 228 (viper-deflocalvar viper-emacs-global-user-minor-mode nil |
18047 | 229 "Minor mode for global user bindings in effect in Emacs state. |
230 Users can use it to override Emacs bindings when Viper is in its Emacs | |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
231 state.") |
18047 | 232 |
20206 | 233 (viper-deflocalvar viper-emacs-kbd-minor-mode nil |
18047 | 234 "Minor mode for Vi style macros in Emacs state. |
235 The corresponding keymap stores key bindings of Vi macros defined with | |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
236 `viper-record-kbd-macro' command. There is no Ex-level command to do this |
18047 | 237 interactively.") |
238 | |
20206 | 239 (viper-deflocalvar viper-emacs-state-modifier-minor-mode nil |
18047 | 240 "Minor mode used to make major-mode-specific modification to Emacs state. |
241 For instance, a Vi purist may want to bind `dd' in Dired mode to a function | |
242 that deletes a file.") | |
243 | |
19079 | 244 (viper-deflocalvar viper-vi-minibuffer-minor-mode nil |
18047 | 245 "Minor mode that forces Vi-style when the Minibuffer is in Vi state.") |
246 | |
19079 | 247 (viper-deflocalvar viper-insert-minibuffer-minor-mode nil |
18047 | 248 "Minor mode that forces Vi-style when the Minibuffer is in Insert state.") |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
249 |
18047 | 250 |
251 | |
252 ;; Some common error messages | |
253 | |
19079 | 254 (defconst viper-SpuriousText "Spurious text after command" "") |
255 (defconst viper-BadExCommand "Not an editor command" "") | |
256 (defconst viper-InvalidCommandArgument "Invalid command argument" "") | |
257 (defconst viper-NoPrevSearch "No previous search string" "") | |
258 (defconst viper-EmptyRegister "`%c': Nothing in this register" "") | |
259 (defconst viper-InvalidRegister "`%c': Invalid register" "") | |
260 (defconst viper-EmptyTextmarker "`%c': Text marker doesn't point anywhere" "") | |
261 (defconst viper-InvalidTextmarker "`%c': Invalid text marker" "") | |
262 (defconst viper-InvalidViCommand "Invalid command" "") | |
263 (defconst viper-BadAddress "Ill-formed address" "") | |
264 (defconst viper-FirstAddrExceedsSecond "First address exceeds second" "") | |
265 (defconst viper-NoFileSpecified "No file specified" "") | |
18047 | 266 |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
267 ;; Is t until viper-mode executes for the very first time. |
18047 | 268 ;; Prevents recursive descend into startup messages. |
19079 | 269 (defvar viper-first-time t) |
18047 | 270 |
19079 | 271 (defvar viper-expert-level (if (boundp 'viper-expert-level) viper-expert-level 0) |
18047 | 272 "User's expert level. |
19079 | 273 The minor mode viper-vi-diehard-minor-mode is in effect when |
274 viper-expert-level is 1 or 2 or when viper-want-emacs-keys-in-vi is t. | |
275 The minor mode viper-insert-diehard-minor-mode is in effect when | |
276 viper-expert-level is 1 or 2 or if viper-want-emacs-keys-in-insert is t. | |
18839 | 277 Use `M-x viper-set-expert-level' to change this.") |
18047 | 278 |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
279 ;; Max expert level supported by Viper. This is NOT a user option. |
18047 | 280 ;; It is here to make it hard for the user from resetting it. |
18839 | 281 (defconst viper-max-expert-level 5) |
18047 | 282 |
283 | |
19462 | 284 ;;; ISO characters and MULE |
285 | |
286 ;; If non-nil, ISO accents will be turned on in insert/replace emacs states and | |
287 ;; turned off in vi-state. For some users, this behavior may be too | |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
288 ;; primitive. In this case, use insert/emacs/vi state hooks. |
19079 | 289 (viper-deflocalvar viper-automatic-iso-accents nil "") |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
290 ;; Set iso-accents-mode to ARG. Check if it is bound first |
19462 | 291 (defsubst viper-set-iso-accents-mode (arg) |
292 (if (boundp 'iso-accents-mode) | |
293 (setq iso-accents-mode arg))) | |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
294 |
19462 | 295 ;; Internal flag used to control when viper mule hooks are run. |
296 ;; Don't change this! | |
297 (defvar viper-mule-hook-flag t) | |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
298 ;; If non-nil, the default intl. input method is turned on. |
19462 | 299 (viper-deflocalvar viper-special-input-method nil "") |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
300 |
19462 | 301 ;; viper hook to run on input-method activation |
302 (defun viper-activate-input-method-action () | |
303 (if (null viper-mule-hook-flag) | |
304 () | |
305 (setq viper-special-input-method t) | |
306 ;; turn off special input methods in vi-state | |
307 (if (eq viper-current-state 'vi-state) | |
308 (viper-set-input-method nil)) | |
81331
c3779fe5830e
2007-06-12 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
75346
diff
changeset
|
309 (if (and (memq viper-current-state '(vi-state insert-state replace-state)) |
c3779fe5830e
2007-06-12 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
75346
diff
changeset
|
310 (not viper-suppress-input-method-change-message)) |
19462 | 311 (message "Viper special input method%s: on" |
312 (if (or current-input-method default-input-method) | |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
313 (format " %S" |
19462 | 314 (or current-input-method default-input-method)) |
315 ""))) | |
316 )) | |
21940 | 317 |
19462 | 318 ;; viper hook to run on input-method deactivation |
319 (defun viper-inactivate-input-method-action () | |
320 (if (null viper-mule-hook-flag) | |
321 () | |
322 (setq viper-special-input-method nil) | |
81331
c3779fe5830e
2007-06-12 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
75346
diff
changeset
|
323 (if (and (memq viper-current-state '(vi-state insert-state replace-state)) |
c3779fe5830e
2007-06-12 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
75346
diff
changeset
|
324 (not viper-suppress-input-method-change-message)) |
19462 | 325 (message "Viper special input method%s: off" |
326 (if (or current-input-method default-input-method) | |
327 (format " %S" | |
328 (or current-input-method default-input-method)) | |
329 ""))))) | |
330 | |
331 (defun viper-inactivate-input-method () | |
85972
51aa47312c4b
* ediff-init.el (ediff-xemacs-p, ediff-emacs-p): Remove.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
85511
diff
changeset
|
332 (cond ((and (featurep 'emacs) (fboundp 'inactivate-input-method)) |
19462 | 333 (inactivate-input-method)) |
85972
51aa47312c4b
* ediff-init.el (ediff-xemacs-p, ediff-emacs-p): Remove.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
85511
diff
changeset
|
334 ((and (featurep 'xemacs) (boundp 'current-input-method)) |
92383
6eac1e449121
(viper-cond-compile-for-xemacs-or-emacs): Delete macro.
Glenn Morris <rgm@gnu.org>
parents:
87649
diff
changeset
|
335 ;; XEmacs had broken quail-mode for some time, so we are working around |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
336 ;; it here |
19462 | 337 (setq quail-mode nil) |
338 (if (featurep 'quail) | |
339 (quail-delete-overlays)) | |
340 (setq describe-current-input-method-function nil) | |
341 (setq current-input-method nil) | |
342 (run-hooks 'input-method-inactivate-hook) | |
343 (force-mode-line-update)) | |
344 )) | |
345 (defun viper-activate-input-method () | |
85972
51aa47312c4b
* ediff-init.el (ediff-xemacs-p, ediff-emacs-p): Remove.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
85511
diff
changeset
|
346 (cond ((and (featurep 'emacs) (fboundp 'activate-input-method)) |
19462 | 347 (activate-input-method default-input-method)) |
64383
66f4633e319a
(viper-activate-input-method): Avoid warning.
Richard M. Stallman <rms@gnu.org>
parents:
64215
diff
changeset
|
348 ((featurep 'xemacs) |
66f4633e319a
(viper-activate-input-method): Avoid warning.
Richard M. Stallman <rms@gnu.org>
parents:
64215
diff
changeset
|
349 (if (fboundp 'quail-mode) (quail-mode 1))))) |
19462 | 350 |
351 ;; Set quail-mode to ARG | |
352 (defun viper-set-input-method (arg) | |
353 (setq viper-mule-hook-flag t) ; just a precaution | |
81331
c3779fe5830e
2007-06-12 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
75346
diff
changeset
|
354 (let (viper-mule-hook-flag) ; temporarily deactivate viper mule hooks |
19462 | 355 (cond ((and arg (> (prefix-numeric-value arg) 0) default-input-method) |
356 ;; activate input method | |
357 (viper-activate-input-method)) | |
358 (t ; deactivate input method | |
359 (viper-inactivate-input-method))) | |
360 )) | |
361 | |
18047 | 362 |
363 ;; VI-style Undo | |
364 | |
365 ;; Used to 'undo' complex commands, such as replace and insert commands. | |
19079 | 366 (viper-deflocalvar viper-undo-needs-adjustment nil) |
367 (put 'viper-undo-needs-adjustment 'permanent-local t) | |
18047 | 368 |
369 ;; A mark that Viper puts on buffer-undo-list. Marks the beginning of a | |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
370 ;; complex command that must be undone atomically. If inserted, it is |
19079 | 371 ;; erased by viper-change-state-to-vi and viper-repeat. |
372 (defconst viper-buffer-undo-list-mark 'viper) | |
18047 | 373 |
19079 | 374 (defcustom viper-keep-point-on-undo nil |
18047 | 375 "*Non-nil means not to move point while undoing commands. |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
376 This style is different from Emacs and Vi. Try it to see if |
18839 | 377 it better fits your working style." |
378 :type 'boolean | |
379 :tag "Preserve Position of Point After Undo" | |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
380 :group 'viper) |
18047 | 381 |
382 ;; Replace mode and changing text | |
383 | |
21940 | 384 ;; Hack used to pass global states around for short period of time |
19079 | 385 (viper-deflocalvar viper-intermediate-command nil "") |
386 | |
387 ;; This is used to pass the right Vi command key sequence to | |
388 ;; viper-set-destructive-command whenever (this-command-keys) doesn't give the | |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
389 ;; right result. For instance, in commands like c/bla<RET>, |
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
390 ;; (this-command-keys) will return ^M, which invoked exit-minibuffer, while we |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
391 ;; need "c/" |
19079 | 392 (defconst viper-this-command-keys nil) |
18047 | 393 |
394 ;; Indicates that the current destructive command has started in replace mode. | |
19079 | 395 (viper-deflocalvar viper-began-as-replace nil "") |
18047 | 396 |
19079 | 397 (defcustom viper-allow-multiline-replace-regions t |
18047 | 398 "If non-nil, Viper will allow multi-line replace regions. |
399 This is an extension to standard Vi. | |
400 If nil, commands that attempt to replace text spanning multiple lines first | |
18839 | 401 delete the text being replaced, as in standard Vi." |
402 :type 'boolean | |
403 :group 'viper) | |
18047 | 404 |
19079 | 405 (defcustom viper-replace-overlay-cursor-color "Red" |
18839 | 406 "*Cursor color when Viper is in Replace state." |
407 :type 'string | |
408 :group 'viper) | |
64750
fbdb9482b6fc
2005-08-06 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
64701
diff
changeset
|
409 |
19079 | 410 (defcustom viper-insert-state-cursor-color "Green" |
18839 | 411 "Cursor color when Viper is in insert state." |
412 :type 'string | |
413 :group 'viper) | |
414 | |
72516
aba79a1f03ed
2006-08-25 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
71569
diff
changeset
|
415 ;; viper-emacs-state-cursor-color doesn't work well. Causes cursor colors to be |
aba79a1f03ed
2006-08-25 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
71569
diff
changeset
|
416 ;; confused in some cases. So, this var is nulled for now. |
aba79a1f03ed
2006-08-25 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
71569
diff
changeset
|
417 ;; (defcustom viper-emacs-state-cursor-color "Magenta" |
aba79a1f03ed
2006-08-25 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
71569
diff
changeset
|
418 (defcustom viper-emacs-state-cursor-color nil |
73741
02e5b380f763
(viper-emacs-state-cursor-color): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents:
72516
diff
changeset
|
419 "Cursor color when Viper is in Emacs state." |
68997
6169b51037af
2006-02-19 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
68648
diff
changeset
|
420 :type 'string |
6169b51037af
2006-02-19 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
68648
diff
changeset
|
421 :group 'viper) |
6169b51037af
2006-02-19 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
68648
diff
changeset
|
422 |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
423 ;; internal var, used to remember the default cursor color of emacs frames |
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
424 (defvar viper-vi-state-cursor-color nil) |
87018
36d8fe7938ef
(viper-replace-overlay-cursor-color)
Glenn Morris <rgm@gnu.org>
parents:
86981
diff
changeset
|
425 |
92383
6eac1e449121
(viper-cond-compile-for-xemacs-or-emacs): Delete macro.
Glenn Morris <rgm@gnu.org>
parents:
87649
diff
changeset
|
426 ;; Frame-local variables are obsolete from Emacs 22.2 onwards, so we |
6eac1e449121
(viper-cond-compile-for-xemacs-or-emacs): Delete macro.
Glenn Morris <rgm@gnu.org>
parents:
87649
diff
changeset
|
427 ;; do it by hand with viper-frame-value (qv). |
6eac1e449121
(viper-cond-compile-for-xemacs-or-emacs): Delete macro.
Glenn Morris <rgm@gnu.org>
parents:
87649
diff
changeset
|
428 (when (and (featurep 'xemacs) |
6eac1e449121
(viper-cond-compile-for-xemacs-or-emacs): Delete macro.
Glenn Morris <rgm@gnu.org>
parents:
87649
diff
changeset
|
429 (fboundp 'make-variable-frame-local)) |
6eac1e449121
(viper-cond-compile-for-xemacs-or-emacs): Delete macro.
Glenn Morris <rgm@gnu.org>
parents:
87649
diff
changeset
|
430 (make-variable-frame-local 'viper-replace-overlay-cursor-color) |
6eac1e449121
(viper-cond-compile-for-xemacs-or-emacs): Delete macro.
Glenn Morris <rgm@gnu.org>
parents:
87649
diff
changeset
|
431 (make-variable-frame-local 'viper-insert-state-cursor-color) |
6eac1e449121
(viper-cond-compile-for-xemacs-or-emacs): Delete macro.
Glenn Morris <rgm@gnu.org>
parents:
87649
diff
changeset
|
432 (make-variable-frame-local 'viper-emacs-state-cursor-color) |
6eac1e449121
(viper-cond-compile-for-xemacs-or-emacs): Delete macro.
Glenn Morris <rgm@gnu.org>
parents:
87649
diff
changeset
|
433 (make-variable-frame-local 'viper-vi-state-cursor-color)) |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
434 |
19079 | 435 (viper-deflocalvar viper-replace-overlay nil "") |
436 (put 'viper-replace-overlay 'permanent-local t) | |
18047 | 437 |
19079 | 438 (defcustom viper-replace-region-end-delimiter "$" |
18047 | 439 "A string marking the end of replacement regions. |
19079 | 440 It is used only with TTYs or if `viper-use-replace-region-delimiters' |
18839 | 441 is non-nil." |
442 :type 'string | |
443 :group 'viper) | |
19079 | 444 (defcustom viper-replace-region-start-delimiter "" |
18047 | 445 "A string marking the beginning of replacement regions. |
19079 | 446 It is used only with TTYs or if `viper-use-replace-region-delimiters' |
18839 | 447 is non-nil." |
448 :type 'string | |
449 :group 'viper) | |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
450 (defcustom viper-use-replace-region-delimiters |
19756 | 451 (or (not (viper-has-face-support-p)) |
85972
51aa47312c4b
* ediff-init.el (ediff-xemacs-p, ediff-emacs-p): Remove.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
85511
diff
changeset
|
452 (and (featurep 'xemacs) (eq (viper-device-type) 'tty))) |
19079 | 453 "*If non-nil, Viper will always use `viper-replace-region-end-delimiter' and |
454 `viper-replace-region-start-delimiter' to delimit replacement regions, even on | |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
455 color displays. By default, the delimiters are used only on TTYs." |
18839 | 456 :type 'boolean |
457 :group 'viper) | |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
458 |
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
459 (defcustom viper-read-buffer-function 'read-buffer |
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
460 "Function to use for prompting the user for a buffer name." |
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
461 :type 'symbol |
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
462 :group 'viper) |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
463 |
18047 | 464 ;; XEmacs requires glyphs |
92383
6eac1e449121
(viper-cond-compile-for-xemacs-or-emacs): Delete macro.
Glenn Morris <rgm@gnu.org>
parents:
87649
diff
changeset
|
465 (when (featurep 'xemacs) |
6eac1e449121
(viper-cond-compile-for-xemacs-or-emacs): Delete macro.
Glenn Morris <rgm@gnu.org>
parents:
87649
diff
changeset
|
466 (or (glyphp viper-replace-region-end-delimiter) |
6eac1e449121
(viper-cond-compile-for-xemacs-or-emacs): Delete macro.
Glenn Morris <rgm@gnu.org>
parents:
87649
diff
changeset
|
467 (setq viper-replace-region-end-delimiter |
6eac1e449121
(viper-cond-compile-for-xemacs-or-emacs): Delete macro.
Glenn Morris <rgm@gnu.org>
parents:
87649
diff
changeset
|
468 (make-glyph viper-replace-region-end-delimiter))) |
6eac1e449121
(viper-cond-compile-for-xemacs-or-emacs): Delete macro.
Glenn Morris <rgm@gnu.org>
parents:
87649
diff
changeset
|
469 (or (glyphp viper-replace-region-start-delimiter) |
6eac1e449121
(viper-cond-compile-for-xemacs-or-emacs): Delete macro.
Glenn Morris <rgm@gnu.org>
parents:
87649
diff
changeset
|
470 (setq viper-replace-region-start-delimiter |
6eac1e449121
(viper-cond-compile-for-xemacs-or-emacs): Delete macro.
Glenn Morris <rgm@gnu.org>
parents:
87649
diff
changeset
|
471 (make-glyph viper-replace-region-start-delimiter)))) |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
472 |
18047 | 473 ;; These are local marker that must be initialized to nil and moved with |
19079 | 474 ;; `viper-move-marker-locally' |
18047 | 475 ;; |
476 ;; Remember the last position inside the replace region. | |
19079 | 477 (viper-deflocalvar viper-last-posn-in-replace-region nil) |
18047 | 478 ;; Remember the last position while inserting |
19079 | 479 (viper-deflocalvar viper-last-posn-while-in-insert-state nil) |
480 (put 'viper-last-posn-in-replace-region 'permanent-local t) | |
481 (put 'viper-last-posn-while-in-insert-state 'permanent-local t) | |
18047 | 482 |
19079 | 483 (viper-deflocalvar viper-sitting-in-replace nil "") |
484 (put 'viper-sitting-in-replace 'permanent-local t) | |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
485 |
18047 | 486 ;; Remember the number of characters that have to be deleted in replace |
487 ;; mode to compensate for the inserted characters. | |
19079 | 488 (viper-deflocalvar viper-replace-chars-to-delete 0 "") |
19462 | 489 ;; This variable is used internally by the before/after changed functions to |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
490 ;; determine how many chars were deleted by the change. This can't be |
19462 | 491 ;; determined inside after-change-functions because those get the length of the |
492 ;; deleted region, not the number of chars deleted (which are two different | |
493 ;; things under MULE). | |
494 (viper-deflocalvar viper-replace-region-chars-deleted 0 "") | |
18047 | 495 |
496 ;; Insertion ring and command ring | |
19079 | 497 (defcustom viper-insertion-ring-size 14 |
18839 | 498 "The size of history of inserted text. |
499 This is a list where Viper keeps the history of previously inserted pieces of | |
500 text." | |
501 :type 'integer | |
20003 | 502 :group 'viper-misc) |
18047 | 503 ;; The insertion ring. |
19079 | 504 (defvar viper-insertion-ring nil) |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
505 ;; This is temp insertion ring. Used to do rotation for display purposes. |
19079 | 506 ;; When rotation just started, it is initialized to viper-insertion-ring. |
507 (defvar viper-temp-insertion-ring nil) | |
508 (defvar viper-last-inserted-string-from-insertion-ring "") | |
18047 | 509 |
19079 | 510 (defcustom viper-command-ring-size 14 |
18839 | 511 "The size of history of Vi commands repeatable with dot." |
512 :type 'integer | |
20003 | 513 :group 'viper-misc) |
18047 | 514 ;; The command ring. |
19079 | 515 (defvar viper-command-ring nil) |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
516 ;; This is temp command ring. Used to do rotation for display purposes. |
19079 | 517 ;; When rotation just started, it is initialized to viper-command-ring. |
518 (defvar viper-temp-command-ring nil) | |
18047 | 519 |
18839 | 520 ;; Fast keyseq and ESC keyseq timeouts |
19079 | 521 (defcustom viper-fast-keyseq-timeout 200 |
18839 | 522 "*Key sequence separated by no more than this many milliseconds is viewed as a Vi-style macro, if such a macro is defined. |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
523 Setting this too high may slow down your typing. Setting this value too low |
35955
e26b0d79408b
(viper-fast-keyseq-timeout, viper-translate-all-ESC-keysequences): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
34861
diff
changeset
|
524 will make it hard to use Vi-style timeout macros." |
18839 | 525 :type 'integer |
20003 | 526 :group 'viper-misc) |
18839 | 527 |
99789
125a6fd7c956
2008-11-22 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
99595
diff
changeset
|
528 ;; This function determines if ESC key sequences are to be translated into |
125a6fd7c956
2008-11-22 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
99595
diff
changeset
|
529 ;; commands. |
125a6fd7c956
2008-11-22 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
99595
diff
changeset
|
530 (defun viper-translate-all-ESC-keysequences () |
125a6fd7c956
2008-11-22 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
99595
diff
changeset
|
531 (not (viper-window-display-p))) |
27899
42f9a58e0fc4
* viper-cmd.el (viper-envelop-ESC-key): added the option to
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
26429
diff
changeset
|
532 |
18047 | 533 ;; Modes and related variables |
534 | |
535 ;; Current mode. One of: `emacs-state', `vi-state', `insert-state' | |
19079 | 536 (viper-deflocalvar viper-current-state 'emacs-state) |
18047 | 537 |
538 | |
539 ;; Autoindent in insert | |
540 | |
541 ;; Variable that keeps track of whether C-t has been pressed. | |
19079 | 542 (viper-deflocalvar viper-cted nil "") |
18047 | 543 |
544 ;; Preserve the indent value, used by C-d in insert mode. | |
19079 | 545 (viper-deflocalvar viper-current-indent 0) |
18047 | 546 |
547 ;; Whether to preserve the indent, used by C-d in insert mode. | |
19079 | 548 (viper-deflocalvar viper-preserve-indent nil) |
18047 | 549 |
19079 | 550 (viper-deflocalvar viper-auto-indent nil "") |
551 (defcustom viper-auto-indent nil | |
18839 | 552 "*Enable autoindent, if t. |
553 This is a buffer-local variable." | |
554 :type 'boolean | |
555 :group 'viper) | |
18047 | 556 |
19079 | 557 (viper-deflocalvar viper-electric-mode t "") |
558 (defcustom viper-electric-mode t | |
18839 | 559 "*If t, electrify Viper. |
560 Currently, this only electrifies auto-indentation, making it appropriate to the | |
561 mode of the buffer. | |
562 This means that auto-indentation will depart from standard Vi and will indent | |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
563 appropriate to the mode of the buffer. This is especially useful for editing |
18839 | 564 programs and LaTeX documents." |
565 :type 'boolean | |
566 :group 'viper) | |
567 | |
19079 | 568 (defcustom viper-shift-width 8 |
21940 | 569 "*The value of the shiftwidth. |
570 This determines the number of columns by which the Ctl-t moves the cursor in | |
571 the Insert state." | |
18839 | 572 :type 'integer |
573 :group 'viper) | |
18047 | 574 |
575 ;; Variables for repeating destructive commands | |
576 | |
19079 | 577 (defcustom viper-keep-point-on-repeat t |
18047 | 578 "*If t, don't move point when repeating previous command. |
579 This is useful for doing repeated changes with the '.' key. | |
580 The user can change this to nil, if she likes when the cursor moves | |
18839 | 581 to a new place after repeating previous Vi command." |
582 :type 'boolean | |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
583 :group 'viper) |
18047 | 584 |
585 ;; Remember insert point as a marker. This is a local marker that must be | |
19079 | 586 ;; initialized to nil and moved with `viper-move-marker-locally'. |
587 (viper-deflocalvar viper-insert-point nil) | |
588 (put 'viper-insert-point 'permanent-local t) | |
18047 | 589 |
590 ;; This remembers the point before dabbrev-expand was called. | |
19079 | 591 ;; If viper-insert-point turns out to be bigger than that, it is reset |
592 ;; back to viper-pre-command-point. | |
18047 | 593 ;; The reason this is needed is because dabbrev-expand (and possibly |
594 ;; others) may jump to before the insertion point, delete something and | |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
595 ;; then reinsert a bigger piece. For instance: bla^blo |
19079 | 596 ;; If dabbrev-expand is called after `blo' and ^ undicates viper-insert-point, |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
597 ;; then point jumps to the beginning of `blo'. If expansion is found, `blablo' |
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
598 ;; is deleted, and we have |^, where | denotes point. Next, dabbrev-expand |
18047 | 599 ;; will insert the expansion, and we get: blablo^ |
600 ;; Whatever we insert next goes before the ^, i.e., before the | |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
601 ;; viper-insert-point marker. So, Viper will think that nothing was |
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
602 ;; inserted. Remembering the orig position of the marker circumvents the |
18047 | 603 ;; problem. |
604 ;; We don't know of any command, except dabbrev-expand, that has the same | |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
605 ;; problem. However, the same trick can be used if such a command is |
18047 | 606 ;; discovered later. |
607 ;; | |
19079 | 608 (viper-deflocalvar viper-pre-command-point nil) |
609 (put 'viper-pre-command-point 'permanent-local t) ; this is probably an overkill | |
18047 | 610 |
611 ;; This is used for saving inserted text. | |
19079 | 612 (defvar viper-last-insertion nil) |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
613 |
18047 | 614 ;; Remembers the last replaced region. |
19079 | 615 (defvar viper-last-replace-region "") |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
616 |
18047 | 617 ;; Remember com point as a marker. |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
618 ;; This is a local marker. Should be moved with `viper-move-marker-locally' |
19079 | 619 (viper-deflocalvar viper-com-point nil) |
18047 | 620 |
621 ;; If non-nil, the value is a list (M-COM VAL COM REG inserted-text cmd-keys) | |
622 ;; It is used to re-execute last destructive command. | |
623 ;; M-COM is a Lisp symbol representing the function to be executed. | |
624 ;; VAL is the prefix argument that was used with that command. | |
625 ;; COM is an internal descriptor, such as ?r, ?c, ?C, which contains | |
626 ;; additional information on how the function in M-COM is to be handled. | |
627 ;; REG is the register used by command | |
628 ;; INSERTED-TEXT is text inserted by that command (in case of o, c, C, i, r | |
629 ;; commands). | |
630 ;; COMMAND-KEYS are the keys that were typed to invoke the command. | |
19079 | 631 (defvar viper-d-com nil) |
18047 | 632 |
633 ;; The character remembered by the Vi `r' command. | |
19079 | 634 (defvar viper-d-char nil) |
18047 | 635 |
636 ;; Name of register to store deleted or yanked strings | |
19079 | 637 (defvar viper-use-register nil) |
18047 | 638 |
639 | |
19462 | 640 ;;; Variables for Moves and Searches |
18047 | 641 |
20003 | 642 (defgroup viper-search nil |
643 "Variables that define the search and query-replace behavior of Viper." | |
644 :prefix "viper-" | |
645 :group 'viper) | |
646 | |
18047 | 647 ;; For use by `;' command. |
19079 | 648 (defvar viper-f-char nil) |
18047 | 649 |
650 ;; For use by `.' command. | |
19079 | 651 (defvar viper-F-char nil) |
18047 | 652 |
653 ;; For use by `;' command. | |
19079 | 654 (defvar viper-f-forward nil) |
18047 | 655 |
656 ;; For use by `;' command. | |
19079 | 657 (defvar viper-f-offset nil) |
18047 | 658 |
659 ;; Last search string | |
19079 | 660 (defvar viper-s-string "") |
18047 | 661 |
19079 | 662 (defcustom viper-quote-string "> " |
18839 | 663 "String inserted at the beginning of quoted region." |
664 :type 'string | |
665 :group 'viper) | |
18047 | 666 |
667 ;; If t, search is forward. | |
19079 | 668 (defvar viper-s-forward nil) |
18047 | 669 |
19079 | 670 (defcustom viper-case-fold-search nil |
18839 | 671 "*If not nil, search ignores cases." |
672 :type 'boolean | |
20003 | 673 :group 'viper-search) |
18047 | 674 |
19079 | 675 (defcustom viper-re-search t |
18839 | 676 "*If not nil, search is regexp search, otherwise vanilla search." |
677 :type 'boolean | |
678 :tag "Regexp Search" | |
20003 | 679 :group 'viper-search) |
18047 | 680 |
19079 | 681 (defcustom viper-search-scroll-threshold 2 |
18047 | 682 "*If search lands within this threshnold from the window top/bottom, |
683 the window will be scrolled up or down appropriately, to reveal context. | |
684 If you want Viper search to behave as usual in Vi, set this variable to a | |
18839 | 685 negative number." |
686 :type 'boolean | |
20003 | 687 :group 'viper-search) |
18047 | 688 |
19079 | 689 (defcustom viper-re-query-replace t |
18839 | 690 "*If t then do regexp replace, if nil then do string replace." |
691 :type 'boolean | |
692 :tag "Regexp Query Replace" | |
20003 | 693 :group 'viper-search) |
18047 | 694 |
19079 | 695 (defcustom viper-re-replace t |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
696 "*If t, do regexp replace. nil means do string replace." |
18839 | 697 :type 'boolean |
698 :tag "Regexp Replace" | |
20003 | 699 :group 'viper-search) |
18047 | 700 |
19079 | 701 (defcustom viper-parse-sexp-ignore-comments t |
18839 | 702 "*If t, `%' ignores the parentheses that occur inside comments." |
703 :type 'boolean | |
704 :group 'viper) | |
18047 | 705 |
19079 | 706 (viper-deflocalvar viper-ex-style-motion t "") |
707 (defcustom viper-ex-style-motion t | |
18839 | 708 "*If t, the commands l,h do not cross lines, etc (Ex-style). |
709 If nil, these commands cross line boundaries." | |
710 :type 'boolean | |
711 :group 'viper) | |
18047 | 712 |
19462 | 713 (viper-deflocalvar viper-ex-style-editing t "") |
714 (defcustom viper-ex-style-editing t | |
715 "*If t, Ex-style behavior while editing in Vi command and insert states. | |
716 `Backspace' and `Delete' don't cross line boundaries in insert. | |
717 `X' and `x' can't delete characters across line boundary in Vi, etc. | |
18839 | 718 Note: this doesn't preclude `Backspace' and `Delete' from deleting characters |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
719 by moving past the insertion point. This is a feature, not a bug. |
19462 | 720 |
721 If nil, the above commands can work across lines." | |
18839 | 722 :type 'boolean |
723 :group 'viper) | |
18047 | 724 |
19462 | 725 (viper-deflocalvar viper-ESC-moves-cursor-back viper-ex-style-editing "") |
19079 | 726 (defcustom viper-ESC-moves-cursor-back nil |
18839 | 727 "*If t, ESC moves cursor back when changing from insert to vi state. |
19462 | 728 If nil, the cursor stays where it was when ESC was hit." |
18839 | 729 :type 'boolean |
730 :group 'viper) | |
18047 | 731 |
19079 | 732 (viper-deflocalvar viper-delete-backwards-in-replace nil "") |
733 (defcustom viper-delete-backwards-in-replace nil | |
18839 | 734 "*If t, DEL key will delete characters while moving the cursor backwards. |
735 If nil, the cursor will move backwards without deleting anything." | |
736 :type 'boolean | |
737 :group 'viper) | |
738 | |
19079 | 739 (defcustom viper-buffer-search-char nil |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
740 "*Key used for buffer-searching. Must be a character type, e.g., ?g." |
18839 | 741 :type '(choice (const nil) character) |
20003 | 742 :group 'viper-search) |
18047 | 743 |
93773
d7554c14325c
2008-04-06 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
92383
diff
changeset
|
744 (defcustom viper-search-wrap-around t |
18839 | 745 "*If t, search wraps around." |
746 :type 'boolean | |
747 :tag "Search Wraps Around" | |
20003 | 748 :group 'viper-search) |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
749 |
19079 | 750 (viper-deflocalvar viper-related-files-and-buffers-ring nil "") |
751 (defcustom viper-related-files-and-buffers-ring nil | |
18839 | 752 "*List of file and buffer names that are considered to be related to the current buffer. |
753 Related buffers can be cycled through via :R and :P commands." | |
754 :type 'boolean | |
20003 | 755 :group 'viper-misc) |
19079 | 756 (put 'viper-related-files-and-buffers-ring 'permanent-local t) |
18047 | 757 |
758 ;; Used to find out if we are done with searching the current buffer. | |
19079 | 759 (viper-deflocalvar viper-local-search-start-marker nil) |
18047 | 760 ;; As above, but global |
19079 | 761 (defvar viper-search-start-marker (make-marker)) |
18047 | 762 |
763 ;; the search overlay | |
19079 | 764 (viper-deflocalvar viper-search-overlay nil) |
18047 | 765 |
766 | |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
767 (defvar viper-heading-start |
18047 | 768 (concat "^\\s-*(\\s-*defun\\s-\\|" ; lisp |
769 "^{\\s-*$\\|^[_a-zA-Z][^()]*[()].*{\\s-*$\\|" ; C/C++ | |
770 "^\\s-*class.*{\\|^\\s-*struct.*{\\|^\\s-*enum.*{\\|" | |
771 "^\\\\[sb][a-z]*{.*}\\s-*$\\|" ; latex | |
772 "^@node\\|@table\\|^@m?enu\\|^@itemize\\|^@if\\|" ; texinfo | |
773 "^.+:-") ; prolog | |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
774 "*Regexps for Headings. Used by \[\[ and \]\].") |
18047 | 775 |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
776 (defvar viper-heading-end |
18047 | 777 (concat "^}\\|" ; C/C++ |
778 "^\\\\end{\\|" ; latex | |
779 "^@end \\|" ; texinfo | |
780 ")\n\n[ \t\n]*\\|" ; lisp | |
781 "\\.\\s-*$") ; prolog | |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
782 "*Regexps to end Headings/Sections. Used by \[\].") |
18047 | 783 |
784 | |
785 ;; These two vars control the interaction of jumps performed by ' and `. | |
786 ;; In this new version, '' doesn't erase the marks set by ``, so one can | |
787 ;; use both kinds of jumps interchangeably and without loosing positions | |
788 ;; inside the lines. | |
789 | |
790 ;; Remembers position of the last jump done using ``'. | |
19079 | 791 (viper-deflocalvar viper-last-jump nil) |
18047 | 792 ;; Remembers position of the last jump done using `''. |
19079 | 793 (viper-deflocalvar viper-last-jump-ignore 0) |
18047 | 794 |
795 ;; History variables | |
796 | |
797 ;; History of search strings. | |
19079 | 798 (defvar viper-search-history (list "")) |
18047 | 799 ;; History of query-replace strings used as a source. |
19079 | 800 (defvar viper-replace1-history nil) |
18047 | 801 ;; History of query-replace strings used as replacement. |
19079 | 802 (defvar viper-replace2-history nil) |
18047 | 803 ;; History of region quoting strings. |
19079 | 804 (defvar viper-quote-region-history (list viper-quote-string)) |
18047 | 805 ;; History of Ex-style commands. |
19079 | 806 (defvar viper-ex-history nil) |
18047 | 807 ;; History of shell commands. |
19079 | 808 (defvar viper-shell-history nil) |
18047 | 809 |
810 | |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
811 ;; Last shell command. There are two of these, one for Ex (in viper-ex) |
18047 | 812 ;; and one for Vi. |
813 | |
814 ;; Last shell command executed with ! command. | |
19079 | 815 (defvar viper-last-shell-com nil) |
18047 | 816 |
19203 | 817 |
818 ;;; Face-saving tricks | |
819 | |
820 (defgroup viper-highlighting nil | |
821 "Hilighting of replace region, search pattern, minibuffer, etc." | |
822 :prefix "viper-" | |
823 :group 'viper) | |
824 | |
825 | |
63224
ac0fb9e12515
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-388
Miles Bader <miles@gnu.org>
parents:
60168
diff
changeset
|
826 (defface viper-search |
19203 | 827 '((((class color)) (:foreground "Black" :background "khaki")) |
19234
55924d8a5b9e
(viper-replace-overlay-pixmap)
Richard M. Stallman <rms@gnu.org>
parents:
19203
diff
changeset
|
828 (t (:underline t :stipple "gray3"))) |
19203 | 829 "*Face used to flash out the search pattern." |
830 :group 'viper-highlighting) | |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
831 ;; An internal variable. Viper takes the face from here. |
63224
ac0fb9e12515
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-388
Miles Bader <miles@gnu.org>
parents:
60168
diff
changeset
|
832 (defvar viper-search-face 'viper-search |
20003 | 833 "Face used to flash out the search pattern. |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
834 DO NOT CHANGE this variable. Instead, use the customization widget |
64215
a4c59075cac8
* viper-cmd.el (viper--key-maps): new variable.
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
64085
diff
changeset
|
835 to customize the actual face object `viper-search' |
20003 | 836 this variable represents.") |
19203 | 837 |
63224
ac0fb9e12515
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-388
Miles Bader <miles@gnu.org>
parents:
60168
diff
changeset
|
838 (defface viper-replace-overlay |
19203 | 839 '((((class color)) (:foreground "Black" :background "darkseagreen2")) |
19234
55924d8a5b9e
(viper-replace-overlay-pixmap)
Richard M. Stallman <rms@gnu.org>
parents:
19203
diff
changeset
|
840 (t (:underline t :stipple "gray3"))) |
19203 | 841 "*Face for highlighting replace regions on a window display." |
842 :group 'viper-highlighting) | |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
843 ;; An internal variable. Viper takes the face from here. |
63224
ac0fb9e12515
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-388
Miles Bader <miles@gnu.org>
parents:
60168
diff
changeset
|
844 (defvar viper-replace-overlay-face 'viper-replace-overlay |
20003 | 845 "Face for highlighting replace regions on a window display. |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
846 DO NOT CHANGE this variable. Instead, use the customization widget |
64215
a4c59075cac8
* viper-cmd.el (viper--key-maps): new variable.
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
64085
diff
changeset
|
847 to customize the actual face object `viper-replace-overlay' |
20003 | 848 this variable represents.") |
19203 | 849 |
63224
ac0fb9e12515
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-388
Miles Bader <miles@gnu.org>
parents:
60168
diff
changeset
|
850 (defface viper-minibuffer-emacs |
19203 | 851 '((((class color)) (:foreground "Black" :background "darkseagreen2")) |
42452
0cfd64a10789
(ps-font-lock-face-attributes): Use :weight and :slant.
Richard M. Stallman <rms@gnu.org>
parents:
39215
diff
changeset
|
852 (t (:weight bold))) |
19203 | 853 "Face used in the Minibuffer when it is in Emacs state." |
854 :group 'viper-highlighting) | |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
855 ;; An internal variable. Viper takes the face from here. |
63224
ac0fb9e12515
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-388
Miles Bader <miles@gnu.org>
parents:
60168
diff
changeset
|
856 (defvar viper-minibuffer-emacs-face 'viper-minibuffer-emacs |
20003 | 857 "Face used in the Minibuffer when it is in Emacs state. |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
858 DO NOT CHANGE this variable. Instead, use the customization widget |
64215
a4c59075cac8
* viper-cmd.el (viper--key-maps): new variable.
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
64085
diff
changeset
|
859 to customize the actual face object `viper-minibuffer-emacs' |
20003 | 860 this variable represents.") |
19203 | 861 |
63224
ac0fb9e12515
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-388
Miles Bader <miles@gnu.org>
parents:
60168
diff
changeset
|
862 (defface viper-minibuffer-insert |
19203 | 863 '((((class color)) (:foreground "Black" :background "pink")) |
42452
0cfd64a10789
(ps-font-lock-face-attributes): Use :weight and :slant.
Richard M. Stallman <rms@gnu.org>
parents:
39215
diff
changeset
|
864 (t (:slant italic))) |
19203 | 865 "Face used in the Minibuffer when it is in Insert state." |
866 :group 'viper-highlighting) | |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
867 ;; An internal variable. Viper takes the face from here. |
63224
ac0fb9e12515
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-388
Miles Bader <miles@gnu.org>
parents:
60168
diff
changeset
|
868 (defvar viper-minibuffer-insert-face 'viper-minibuffer-insert |
20003 | 869 "Face used in the Minibuffer when it is in Insert state. |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
870 DO NOT CHANGE this variable. Instead, use the customization widget |
64215
a4c59075cac8
* viper-cmd.el (viper--key-maps): new variable.
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
64085
diff
changeset
|
871 to customize the actual face object `viper-minibuffer-insert' |
20003 | 872 this variable represents.") |
19203 | 873 |
63224
ac0fb9e12515
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-388
Miles Bader <miles@gnu.org>
parents:
60168
diff
changeset
|
874 (defface viper-minibuffer-vi |
19203 | 875 '((((class color)) (:foreground "DarkGreen" :background "grey")) |
876 (t (:inverse-video t))) | |
877 "Face used in the Minibuffer when it is in Vi state." | |
878 :group 'viper-highlighting) | |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
879 ;; An internal variable. Viper takes the face from here. |
63224
ac0fb9e12515
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-388
Miles Bader <miles@gnu.org>
parents:
60168
diff
changeset
|
880 (defvar viper-minibuffer-vi-face 'viper-minibuffer-vi |
20003 | 881 "Face used in the Minibuffer when it is in Vi state. |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
882 DO NOT CHANGE this variable. Instead, use the customization widget |
64215
a4c59075cac8
* viper-cmd.el (viper--key-maps): new variable.
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
64085
diff
changeset
|
883 to customize the actual face object `viper-minibuffer-vi' |
20003 | 884 this variable represents.") |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
885 |
19203 | 886 ;; the current face to be used in the minibuffer |
20003 | 887 (viper-deflocalvar |
888 viper-minibuffer-current-face viper-minibuffer-emacs-face "") | |
18047 | 889 |
890 | |
891 ;;; Miscellaneous | |
892 | |
19079 | 893 (defvar viper-inhibit-startup-message nil |
18047 | 894 "Whether Viper startup message should be inhibited.") |
895 | |
19079 | 896 (defcustom viper-spell-function 'ispell-region |
18839 | 897 "Spell function used by #s<move> command to spell." |
898 :type 'function | |
20003 | 899 :group 'viper-misc) |
18047 | 900 |
19079 | 901 (defcustom viper-tags-file-name "TAGS" |
18839 | 902 "The tags file used by Viper." |
903 :type 'string | |
20003 | 904 :group 'viper-misc) |
18047 | 905 |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
906 (defcustom viper-change-notification-threshold 1 |
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
907 "Notify the user when this many lines or characters have been deleted/yanked. |
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
908 For line-deleting/yanking commands (like `dd', `yy'), the value denotes the |
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
909 number of lines. For character-based commands (such as `x', `dw', etc.), the |
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
910 value refers to the number of characters affected." |
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
911 :type 'integer |
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
912 :group 'viper-misc) |
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
913 |
18047 | 914 ;; Minibuffer |
915 | |
19079 | 916 (defcustom viper-vi-style-in-minibuffer t |
18047 | 917 "If t, use vi-style editing in minibuffer. |
19079 | 918 Should be set in `~/.viper' file." |
18839 | 919 :type 'boolean |
920 :group 'viper) | |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
921 |
18047 | 922 ;; overlay used in the minibuffer to indicate which state it is in |
19079 | 923 (viper-deflocalvar viper-minibuffer-overlay nil) |
26263
4f315ca65976
*** empty log message ***
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
21940
diff
changeset
|
924 (put 'viper-minibuffer-overlay 'permanent-local t) |
18047 | 925 |
926 ;; Hook, specific to Viper, which is run just *before* exiting the minibuffer. | |
21940 | 927 ;; This is needed because beginning with Emacs 19.26, the standard |
928 ;; `minibuffer-exit-hook' is run *after* exiting the minibuffer | |
929 (defvar viper-minibuffer-exit-hook nil) | |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
930 |
18047 | 931 |
932 ;; Mode line | |
19079 | 933 (defconst viper-vi-state-id "<V> " |
18047 | 934 "Mode line tag identifying the Vi mode of Viper.") |
19079 | 935 (defconst viper-emacs-state-id "<E> " |
18047 | 936 "Mode line tag identifying the Emacs mode of Viper.") |
19079 | 937 (defconst viper-insert-state-id "<I> " |
18047 | 938 "Mode line tag identifying the Insert mode of Viper.") |
19079 | 939 (defconst viper-replace-state-id "<R> " |
18047 | 940 "Mode line tag identifying the Replace mode of Viper.") |
941 | |
942 | |
20003 | 943 (defgroup viper-hooks nil |
944 "Viper hooks." | |
945 :prefix "viper-" | |
946 :group 'viper) | |
947 | |
33842
f6a67d77484a
* ediff-diff.el: Moved variables around to have it compile under NT.
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
27899
diff
changeset
|
948 (defcustom viper-vi-state-hook 'viper-restore-cursor-type |
18839 | 949 "*Hooks run just before the switch to Vi mode is completed." |
950 :type 'hook | |
20003 | 951 :group 'viper-hooks) |
33842
f6a67d77484a
* ediff-diff.el: Moved variables around to have it compile under NT.
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
27899
diff
changeset
|
952 (defcustom viper-insert-state-hook 'viper-set-insert-cursor-type |
18839 | 953 "*Hooks run just before the switch to Insert mode is completed." |
954 :type 'hook | |
20003 | 955 :group 'viper-hooks) |
33842
f6a67d77484a
* ediff-diff.el: Moved variables around to have it compile under NT.
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
27899
diff
changeset
|
956 (defcustom viper-replace-state-hook 'viper-restore-cursor-type |
18839 | 957 "*Hooks run just before the switch to Replace mode is completed." |
958 :type 'hook | |
20003 | 959 :group 'viper-hooks) |
33842
f6a67d77484a
* ediff-diff.el: Moved variables around to have it compile under NT.
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
27899
diff
changeset
|
960 (defcustom viper-emacs-state-hook 'viper-restore-cursor-type |
18839 | 961 "*Hooks run just before the switch to Emacs mode is completed." |
962 :type 'hook | |
20003 | 963 :group 'viper-hooks) |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
964 |
19079 | 965 (defcustom viper-load-hook nil |
18839 | 966 "Hooks run just after loading Viper." |
967 :type 'hook | |
20003 | 968 :group 'viper-hooks) |
26429
e20b16957cdd
* emulation/viper-init.el (viper-deflocalvar, viper-loop,
Sam Steingold <sds@gnu.org>
parents:
26263
diff
changeset
|
969 |
33842
f6a67d77484a
* ediff-diff.el: Moved variables around to have it compile under NT.
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
27899
diff
changeset
|
970 (defun viper-restore-cursor-type () |
34861
4b66ba04d2e0
2000-12-25 Michael Kifer <kifer@cs.sunysb.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
33842
diff
changeset
|
971 (condition-case nil |
85972
51aa47312c4b
* ediff-init.el (ediff-xemacs-p, ediff-emacs-p): Remove.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
85511
diff
changeset
|
972 (if (featurep 'xemacs) |
65856
d64aeb0dc54e
2005-10-05 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
65627
diff
changeset
|
973 (set (make-local-variable 'bar-cursor) nil) |
104665
dd47ce8e136c
* emulation/viper-init.el (viper-restore-cursor-type):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
100908
diff
changeset
|
974 (setq cursor-type (default-value 'cursor-type))) |
42602
633233bf2bbf
2002-01-07 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
42452
diff
changeset
|
975 (error nil))) |
33842
f6a67d77484a
* ediff-diff.el: Moved variables around to have it compile under NT.
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
27899
diff
changeset
|
976 |
f6a67d77484a
* ediff-diff.el: Moved variables around to have it compile under NT.
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
27899
diff
changeset
|
977 (defun viper-set-insert-cursor-type () |
85972
51aa47312c4b
* ediff-init.el (ediff-xemacs-p, ediff-emacs-p): Remove.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
85511
diff
changeset
|
978 (if (featurep 'xemacs) |
65856
d64aeb0dc54e
2005-10-05 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
65627
diff
changeset
|
979 (set (make-local-variable 'bar-cursor) 2) |
33842
f6a67d77484a
* ediff-diff.el: Moved variables around to have it compile under NT.
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
27899
diff
changeset
|
980 (setq cursor-type '(bar . 2)))) |
f6a67d77484a
* ediff-diff.el: Moved variables around to have it compile under NT.
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
27899
diff
changeset
|
981 |
99595
eb7532b56b78
2008-11-16 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
97142
diff
changeset
|
982 (defun viper-ESC-keyseq-timeout () |
eb7532b56b78
2008-11-16 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
97142
diff
changeset
|
983 "*Key sequence beginning with ESC and separated by no more than this many milliseconds is considered to be generated by a keyboard function key. |
eb7532b56b78
2008-11-16 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
97142
diff
changeset
|
984 Setting this too high may slow down switching from insert to vi state. Setting |
eb7532b56b78
2008-11-16 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
97142
diff
changeset
|
985 this value too low will make it impossible to use function keys in insert mode |
eb7532b56b78
2008-11-16 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
97142
diff
changeset
|
986 on a dumb terminal." |
eb7532b56b78
2008-11-16 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
97142
diff
changeset
|
987 (if (viper-window-display-p) |
eb7532b56b78
2008-11-16 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
97142
diff
changeset
|
988 0 viper-fast-keyseq-timeout)) |
eb7532b56b78
2008-11-16 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
97142
diff
changeset
|
989 |
eb7532b56b78
2008-11-16 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
97142
diff
changeset
|
990 |
18839 | 991 |
86981
31417cdd2b64
(top-level): Move provide statement to end.
Glenn Morris <rgm@gnu.org>
parents:
85972
diff
changeset
|
992 (provide 'viper-init) |
31417cdd2b64
(top-level): Move provide statement to end.
Glenn Morris <rgm@gnu.org>
parents:
85972
diff
changeset
|
993 |
31417cdd2b64
(top-level): Move provide statement to end.
Glenn Morris <rgm@gnu.org>
parents:
85972
diff
changeset
|
994 |
65856
d64aeb0dc54e
2005-10-05 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
65627
diff
changeset
|
995 ;; Local Variables: |
d64aeb0dc54e
2005-10-05 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
65627
diff
changeset
|
996 ;; eval: (put 'viper-deflocalvar 'lisp-indent-hook 'defun) |
d64aeb0dc54e
2005-10-05 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
65627
diff
changeset
|
997 ;; End: |
18839 | 998 |
65856
d64aeb0dc54e
2005-10-05 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents:
65627
diff
changeset
|
999 ;; arch-tag: 4efa2416-1fcb-4690-be10-1a2a0248d250 |
38414
67b464da13ec
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
35955
diff
changeset
|
1000 ;;; viper-init.el ends here |