annotate lisp/emulation/vi.el @ 98007:883843ca3292

* verilog-mode.el (verilog-library-extensions): Enable .sv filename extensions to call verilog-mode. (verilog-auto, verilog-auto-inst, verilog-faq) (verilog-submit-bug-report): Update author support URLs. (verilog-delete-auto, verilog-auto-inout-module) (verilog-auto-inout-comp, verilog-auto): Add AUTOINOUTCOMP for creating complemented testbench modules. Suggested by Yishay Belkind. (verilog-auto-inst-port, verilog-simplify-range-expression): When verilog-auto-inst-param-value is set, don't require a AUTO_TEMPLATE to expand parameter substitutions. Suggested by Yishay Belkind. (verilog-auto-inst-param-value): Add safe variable. (verilog-re-search-forward, verilog-re-search-backward): Fix returning wrong search results on Emacs 22.1. (verilog-modi-cache-results, verilog-auto): Fix warning message about "toggling font-lock-mode." (verilog-auto): Fix loosing font-lock on errors. (verilog-auto-inst-param-value, verilog-mode-version) (verilog-mode-version-date, verilog-read-inst-param-value) (verilog-auto-inst, verilog-auto-inst-param) (verilog-auto-inst-port, verilog-simplify-range-expression): Allow parameters to be replaced with their values, on the expansion of an AUTOINST with Verilog 2001 style parameter settings. Suggested by David Rogoff. * verilog-mode.el (verilog-beg-block-re-ordered, verilog-calc-1): Better support for the property statement. Sometimes this keyword introduces a statement which requires an endproperty keyword, and sometimes it doesn't, dependening on the work before the property word. If property is prefixed with assert, assume or cover keyword, then the statement is ended with a ';' Otherwise, property is like task or specify, and is followed by some number of statements, which are ended with an endproperty keyword. (electric-verilog-tab): Support Emacs 22.2 style handling of tab in a highlighted region: indent each line in region according to mode. Supply this so it works in XEmacs and older Emacs.
author Dan Nicolaescu <dann@ics.uci.edu>
date Fri, 05 Sep 2008 22:13:55 +0000
parents f6a9b5a0591d
children 53108e6cea98 ad9d2270860e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38431
853c3674f20a Fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 18383
diff changeset
1 ;;; vi.el --- major mode for emulating "vi" editor under GNU Emacs
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 258
diff changeset
2
60902
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
3 ;; This file is in the public domain because the authors distributed it
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
4 ;; without a copyright notice before the US signed the Bern Convention.
11184
6878430e42fa Explain why public domain.
Richard M. Stallman <rms@gnu.org>
parents: 9865
diff changeset
5
38431
853c3674f20a Fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 18383
diff changeset
6 ;; This file is part of GNU Emacs.
853c3674f20a Fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 18383
diff changeset
7
773
9c89fd7ddd41 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 707
diff changeset
8 ;; Author: Neal Ziring <nz@rsch.wisc.edu>
9c89fd7ddd41 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 707
diff changeset
9 ;; Felix S. T. Wu <wu@crys.wisc.edu>
812
485e82a8acb5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 789
diff changeset
10 ;; Keywords: emulations
773
9c89fd7ddd41 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 707
diff changeset
11
38431
853c3674f20a Fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 18383
diff changeset
12 ;;; Commentary:
773
9c89fd7ddd41 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 707
diff changeset
13
60902
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
14 ;; Originally written by : seismo!wucs!nz@rsch.wisc.edu (Neal Ziring)
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
15 ;; Extensively redesigned and rewritten by wu@crys.wisc.edu (Felix S.T. Wu)
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
16 ;; Last revision: 01/07/87 Wed (for GNU Emacs 18.33)
11184
6878430e42fa Explain why public domain.
Richard M. Stallman <rms@gnu.org>
parents: 9865
diff changeset
17
60902
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
18 ;; INSTALLATION PROCEDURE:
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
19 ;; 1) Add a global key binding for command "vi-mode" (I use ESC ESC instead of
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
20 ;; the single ESC used in real "vi", so I can access other ESC prefixed emacs
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
21 ;; commands while I'm in "vi"), say, by putting the following line in your
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
22 ;; ".emacs" file:
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
23 ;; (define-key global-map "\e\e" 'vi-mode) ;quick switch into vi-mode
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
24 ;; 2) If you wish you can define "find-file-hook" to enter "vi" automatically
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
25 ;; after a file is loaded into the buffer. For example, I defined it as:
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
26 ;; (setq find-file-hook (list
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
27 ;; (function (lambda ()
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
28 ;; (if (not (or (eq major-mode 'Info-mode)
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
29 ;; (eq major-mode 'vi-mode)))
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
30 ;; (vi-mode))))))
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
31 ;; 3) In your .emacs file you can define the command "vi-mode" to be "autoload"
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
32 ;; or you can execute the "load" command to load "vi" directly.
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
33 ;; 4) Read the comments for command "vi-mode" before you start using it.
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
34
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
35 ;; COULD DO
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
36 ;; 1). A general 'define-operator' function to replace current hack
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
37 ;; 2). In operator handling, should allow other point moving Emacs commands
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
38 ;; (such as ESC <, ESC >) to be used as arguments.
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
39
773
9c89fd7ddd41 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 707
diff changeset
40 ;;; Code:
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41
17979
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
42 (defvar vi-mode-old-major-mode)
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
43 (defvar vi-mode-old-mode-name)
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
44 (defvar vi-mode-old-local-map)
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
45 (defvar vi-mode-old-case-fold)
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 (if (null (where-is-internal 'vi-switch-mode (current-local-map)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 (define-key ctl-x-map "~" 'vi-switch-mode))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 (defvar vi-tilde-map nil
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 "Keymap used for \\[vi-switch-mode] prefix key. Link to various major modes.")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 (if vi-tilde-map
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 nil
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 (setq vi-tilde-map (make-keymap))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 (define-key vi-tilde-map "a" 'abbrev-mode)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 (define-key vi-tilde-map "c" 'c-mode)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 (define-key vi-tilde-map "d" 'vi-debugging)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 (define-key vi-tilde-map "e" 'emacs-lisp-mode)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60 (define-key vi-tilde-map "f" 'auto-fill-mode)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 (define-key vi-tilde-map "g" 'prolog-mode)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 (define-key vi-tilde-map "h" 'hanoi)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 (define-key vi-tilde-map "i" 'info-mode)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 (define-key vi-tilde-map "l" 'lisp-mode)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 (define-key vi-tilde-map "n" 'nroff-mode)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66 (define-key vi-tilde-map "o" 'overwrite-mode)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67 (define-key vi-tilde-map "O" 'outline-mode)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 (define-key vi-tilde-map "P" 'picture-mode)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 (define-key vi-tilde-map "r" 'vi-readonly-mode)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 (define-key vi-tilde-map "t" 'text-mode)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 (define-key vi-tilde-map "v" 'vi-mode)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 (define-key vi-tilde-map "x" 'tex-mode)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73 (define-key vi-tilde-map "~" 'vi-back-to-old-mode))
17979
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
74
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
75 (defun vi-switch-mode (arg mode-char)
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
76 "Switch the major mode of current buffer as specified by the following char \\{vi-tilde-map}"
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
77 (interactive "P\nc")
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
78 (let ((mode-cmd (lookup-key vi-tilde-map (char-to-string mode-char))))
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
79 (if (null mode-cmd)
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
80 (with-output-to-temp-buffer "*Help*"
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
81 (princ (substitute-command-keys "Possible major modes to switch to: \\{vi-tilde-map}"))
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
82 (save-excursion
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
83 (set-buffer standard-output)
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
84 (help-mode)))
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
85 (setq prefix-arg arg) ; prefix arg will be passed down
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
86 (command-execute mode-cmd nil) ; may need to save mode-line-format etc
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
87 (force-mode-line-update)))) ; just in case
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88
17979
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
89
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 (defun vi-debugging (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 "Toggle debug-on-error flag. If prefix arg is given, set t."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 (interactive "P")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 (if arg
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 (setq debug-on-error t)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95 (setq debug-on-error (not debug-on-error)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 (if debug-on-error
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97 (message "Debug-on-error ...")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98 (message "NO more debug-on-error")))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 (defun vi-back-to-old-mode ()
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101 "Go back to the previous mode without setting up for insertion."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 (interactive)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 (if vi-mode-old-major-mode
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104 (progn
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105 (setq mode-name vi-mode-old-mode-name)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
106 (use-local-map vi-mode-old-local-map)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
107 (setq major-mode vi-mode-old-major-mode)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
108 (setq case-fold-search vi-mode-old-case-fold)
11567
bcf841745ef2 (vi-switch-mode, vi-back-to-old-mode): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents: 11184
diff changeset
109 (force-mode-line-update))))
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 (defun vi-readonly-mode ()
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112 "Toggle current buffer's readonly flag."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113 (interactive)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114 (setq buffer-read-only (not buffer-read-only)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116 (defvar vi-com-map nil
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 "Keymap used in Evi's command state
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118 Command state includes most of the vi editing commands, with some Emacs
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119 command extensions.")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
120
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
121 (put 'vi-undefined 'suppress-keymap t)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122 (if vi-com-map nil
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123 (setq vi-com-map (make-keymap))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124 ;;(fillarray vi-com-map 'vi-undefined)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125 (define-key vi-com-map "\C-@" 'vi-mark-region) ; extension
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126 (define-key vi-com-map "\C-a" 'vi-ask-for-info) ; extension
13951
b777c515e6dc (vi-backward-windowful): Renamed from vi-backward-windowfull.
Karl Heuer <kwzh@gnu.org>
parents: 12735
diff changeset
127 (define-key vi-com-map "\C-b" 'vi-backward-windowful)
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128 (define-key vi-com-map "\C-c" 'vi-do-old-mode-C-c-command) ; extension
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
129 (define-key vi-com-map "\C-d" 'vi-scroll-down-window)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130 (define-key vi-com-map "\C-e" 'vi-expose-line-below)
13951
b777c515e6dc (vi-backward-windowful): Renamed from vi-backward-windowfull.
Karl Heuer <kwzh@gnu.org>
parents: 12735
diff changeset
131 (define-key vi-com-map "\C-f" 'vi-forward-windowful)
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132 (define-key vi-com-map "\C-g" 'keyboard-quit)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
133 (define-key vi-com-map "\C-i" 'indent-relative-maybe) ; TAB
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
134 (define-key vi-com-map "\C-j" 'vi-next-line) ; LFD
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135 (define-key vi-com-map "\C-k" 'vi-kill-line) ; extension
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136 (define-key vi-com-map "\C-l" 'recenter)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137 (define-key vi-com-map "\C-m" 'vi-next-line-first-nonwhite) ; RET
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
138 (define-key vi-com-map "\C-n" 'vi-next-line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139 (define-key vi-com-map "\C-o" 'vi-split-open-line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 (define-key vi-com-map "\C-p" 'previous-line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141 (define-key vi-com-map "\C-q" 'vi-query-replace) ; extension
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142 (define-key vi-com-map "\C-r" 'vi-isearch-backward) ; modification
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143 (define-key vi-com-map "\C-s" 'vi-isearch-forward) ; extension
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144 (define-key vi-com-map "\C-t" 'vi-transpose-objects) ; extension
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145 (define-key vi-com-map "\C-u" 'vi-scroll-up-window)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146 (define-key vi-com-map "\C-v" 'scroll-up) ; extension
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 (define-key vi-com-map "\C-w" 'vi-kill-region) ; extension
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148 (define-key vi-com-map "\C-x" 'Control-X-prefix) ; extension
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149 (define-key vi-com-map "\C-y" 'vi-expose-line-above)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150 (define-key vi-com-map "\C-z" 'suspend-emacs)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152 (define-key vi-com-map "\e" 'ESC-prefix); C-[ (ESC)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153 (define-key vi-com-map "\C-\\" 'vi-unimplemented)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 (define-key vi-com-map "\C-]" 'find-tag)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155 (define-key vi-com-map "\C-^" 'vi-locate-def) ; extension
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 38431
diff changeset
156 (define-key vi-com-map "\C-_" 'vi-undefined)
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158 (define-key vi-com-map " " 'forward-char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159 (define-key vi-com-map "!" 'vi-operator)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160 (define-key vi-com-map "\"" 'vi-char-argument)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161 (define-key vi-com-map "#" 'universal-argument) ; extension
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162 (define-key vi-com-map "$" 'end-of-line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 (define-key vi-com-map "%" 'vi-find-matching-paren)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
164 (define-key vi-com-map "&" 'vi-unimplemented)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165 (define-key vi-com-map "'" 'vi-goto-line-mark)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166 (define-key vi-com-map "(" 'backward-sexp)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167 (define-key vi-com-map ")" 'forward-sexp)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168 (define-key vi-com-map "*" 'vi-name-last-change-or-macro) ; extension
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 (define-key vi-com-map "+" 'vi-next-line-first-nonwhite)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170 (define-key vi-com-map "," 'vi-reverse-last-find-char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171 (define-key vi-com-map "-" 'vi-previous-line-first-nonwhite)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172 (define-key vi-com-map "." 'vi-redo-last-change-command)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173 (define-key vi-com-map "/" 'vi-search-forward)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
174 (define-key vi-com-map "0" 'beginning-of-line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176 (define-key vi-com-map "1" 'vi-digit-argument)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177 (define-key vi-com-map "2" 'vi-digit-argument)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
178 (define-key vi-com-map "3" 'vi-digit-argument)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179 (define-key vi-com-map "4" 'vi-digit-argument)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180 (define-key vi-com-map "5" 'vi-digit-argument)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
181 (define-key vi-com-map "6" 'vi-digit-argument)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182 (define-key vi-com-map "7" 'vi-digit-argument)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
183 (define-key vi-com-map "8" 'vi-digit-argument)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
184 (define-key vi-com-map "9" 'vi-digit-argument)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
185
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186 (define-key vi-com-map ":" 'vi-ex-cmd)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 (define-key vi-com-map ";" 'vi-repeat-last-find-char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 (define-key vi-com-map "<" 'vi-operator)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 (define-key vi-com-map "=" 'vi-operator)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 (define-key vi-com-map ">" 'vi-operator)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191 (define-key vi-com-map "?" 'vi-search-backward)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192 (define-key vi-com-map "@" 'vi-call-named-change-or-macro) ; extension
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
193
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194 (define-key vi-com-map "A" 'vi-append-at-end-of-line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195 (define-key vi-com-map "B" 'vi-backward-blank-delimited-word)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196 (define-key vi-com-map "C" 'vi-change-rest-of-line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197 (define-key vi-com-map "D" 'vi-kill-line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
198 (define-key vi-com-map "E" 'vi-end-of-blank-delimited-word)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 (define-key vi-com-map "F" 'vi-backward-find-char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 (define-key vi-com-map "G" 'vi-goto-line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 (define-key vi-com-map "H" 'vi-home-window-line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202 (define-key vi-com-map "I" 'vi-insert-before-first-nonwhite)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203 (define-key vi-com-map "J" 'vi-join-lines)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 38431
diff changeset
204 (define-key vi-com-map "K" 'vi-undefined)
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205 (define-key vi-com-map "L" 'vi-last-window-line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
206 (define-key vi-com-map "M" 'vi-middle-window-line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
207 (define-key vi-com-map "N" 'vi-reverse-last-search)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208 (define-key vi-com-map "O" 'vi-open-above)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209 (define-key vi-com-map "P" 'vi-put-before)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210 (define-key vi-com-map "Q" 'vi-quote-words) ; extension
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211 (define-key vi-com-map "R" 'vi-replace-chars)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
212 (define-key vi-com-map "S" 'vi-substitute-lines)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
213 (define-key vi-com-map "T" 'vi-backward-upto-char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214 (define-key vi-com-map "U" 'vi-unimplemented)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 38431
diff changeset
215 (define-key vi-com-map "V" 'vi-undefined)
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
216 (define-key vi-com-map "W" 'vi-forward-blank-delimited-word)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217 (define-key vi-com-map "X" 'call-last-kbd-macro) ; modification/extension
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218 (define-key vi-com-map "Y" 'vi-yank-line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219 (define-key vi-com-map "Z" (make-sparse-keymap)) ;allow below prefix command
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220 (define-key vi-com-map "ZZ" 'vi-save-all-and-exit)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222 (define-key vi-com-map "[" 'vi-unimplemented)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
223 (define-key vi-com-map "\\" 'vi-operator) ; extension for vi-narrow-op
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224 (define-key vi-com-map "]" 'vi-unimplemented)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
225 (define-key vi-com-map "^" 'back-to-indentation)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
226 (define-key vi-com-map "_" 'vi-undefined)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227 (define-key vi-com-map "`" 'vi-goto-char-mark)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
229 (define-key vi-com-map "a" 'vi-insert-after)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
230 (define-key vi-com-map "b" 'backward-word)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
231 (define-key vi-com-map "c" 'vi-operator)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232 (define-key vi-com-map "d" 'vi-operator)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
233 (define-key vi-com-map "e" 'vi-end-of-word)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234 (define-key vi-com-map "f" 'vi-forward-find-char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235 (define-key vi-com-map "g" 'vi-beginning-of-buffer) ; extension
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236 (define-key vi-com-map "h" 'backward-char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237 (define-key vi-com-map "i" 'vi-insert-before)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
238 (define-key vi-com-map "j" 'vi-next-line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239 (define-key vi-com-map "k" 'previous-line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240 (define-key vi-com-map "l" 'forward-char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241 (define-key vi-com-map "m" 'vi-set-mark)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242 (define-key vi-com-map "n" 'vi-repeat-last-search)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243 (define-key vi-com-map "o" 'vi-open-below)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244 (define-key vi-com-map "p" 'vi-put-after)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245 (define-key vi-com-map "q" 'vi-replace)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246 (define-key vi-com-map "r" 'vi-replace-1-char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 (define-key vi-com-map "s" 'vi-substitute-chars)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248 (define-key vi-com-map "t" 'vi-forward-upto-char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 (define-key vi-com-map "u" 'undo)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 38431
diff changeset
250 (define-key vi-com-map "v" 'vi-verify-spelling)
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251 (define-key vi-com-map "w" 'vi-forward-word)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252 (define-key vi-com-map "x" 'vi-kill-char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253 (define-key vi-com-map "y" 'vi-operator)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 (define-key vi-com-map "z" 'vi-adjust-window)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256 (define-key vi-com-map "{" 'backward-paragraph)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257 (define-key vi-com-map "|" 'vi-goto-column)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
258 (define-key vi-com-map "}" 'forward-paragraph)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259 (define-key vi-com-map "~" 'vi-change-case)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260 (define-key vi-com-map "\177" 'delete-backward-char))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
262 (put 'backward-char 'point-moving-unit 'char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263 (put 'vi-next-line 'point-moving-unit 'line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
264 (put 'next-line 'point-moving-unit 'line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265 (put 'forward-line 'point-moving-unit 'line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
266 (put 'previous-line 'point-moving-unit 'line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267 (put 'vi-isearch-backward 'point-moving-unit 'search)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
268 (put 'vi-search-backward 'point-moving-unit 'search)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269 (put 'vi-isearch-forward 'point-moving-unit 'search)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270 (put 'vi-search-forward 'point-moving-unit 'search)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271 (put 'forward-char 'point-moving-unit 'char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272 (put 'end-of-line 'point-moving-unit 'char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273 (put 'vi-find-matching-paren 'point-moving-unit 'match)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274 (put 'vi-goto-line-mark 'point-moving-unit 'line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275 (put 'backward-sexp 'point-moving-unit 'sexp)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276 (put 'forward-sexp 'point-moving-unit 'sexp)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 (put 'vi-next-line-first-nonwhite 'point-moving-unit 'line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
278 (put 'vi-previous-line-first-nonwhite 'point-moving-unit 'line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279 (put 'vi-reverse-last-find-char 'point-moving-unit 'rev-find)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280 (put 'vi-re-search-forward 'point-moving-unit 'search)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281 (put 'beginning-of-line 'point-moving-unit 'char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 (put 'vi-beginning-of-buffer 'point-moving-unit 'char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283 (put 'vi-repeat-last-find-char 'point-moving-unit 'find)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284 (put 'vi-re-search-backward 'point-moving-unit 'search)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285 (put 'vi-backward-blank-delimited-word 'point-moving-unit 'WORD)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286 (put 'vi-end-of-blank-delimited-word 'point-moving-unit 'match)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
287 (put 'vi-backward-find-char 'point-moving-unit 'find)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
288 (put 'vi-goto-line 'point-moving-unit 'line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
289 (put 'vi-home-window-line 'point-moving-unit 'line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290 (put 'vi-last-window-line 'point-moving-unit 'line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 (put 'vi-middle-window-line 'point-moving-unit 'line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
292 (put 'vi-reverse-last-search 'point-moving-unit 'rev-search)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 (put 'vi-backward-upto-char 'point-moving-unit 'find)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294 (put 'vi-forward-blank-delimited-word 'point-moving-unit 'WORD)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 (put 'back-to-indentation 'point-moving-unit 'char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296 (put 'vi-goto-char-mark 'point-moving-unit 'char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297 (put 'backward-word 'point-moving-unit 'word)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 (put 'vi-end-of-word 'point-moving-unit 'match)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
299 (put 'vi-forward-find-char 'point-moving-unit 'find)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300 (put 'backward-char 'point-moving-unit 'char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301 (put 'vi-forward-char 'point-moving-unit 'char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
302 (put 'vi-repeat-last-search 'point-moving-unit 'search)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
303 (put 'vi-forward-upto-char 'point-moving-unit 'find)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
304 (put 'vi-forward-word 'point-moving-unit 'word)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
305 (put 'vi-goto-column 'point-moving-unit 'match)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306 (put 'forward-paragraph 'point-moving-unit 'paragraph)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307 (put 'backward-paragraph 'point-moving-unit 'paragraph)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309 ;;; region mark commands
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310 (put 'mark-page 'point-moving-unit 'region)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311 (put 'mark-paragraph 'point-moving-unit 'region)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312 (put 'mark-word 'point-moving-unit 'region)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
313 (put 'mark-sexp 'point-moving-unit 'region)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
314 (put 'mark-defun 'point-moving-unit 'region)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
315 (put 'mark-whole-buffer 'point-moving-unit 'region)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
316 (put 'mark-end-of-sentence 'point-moving-unit 'region)
63942
c9581f50bd50 (vi-mark-region): Use c-mark-function.
Richard M. Stallman <rms@gnu.org>
parents: 63401
diff changeset
317 (put 'c-mark-function 'point-moving-unit 'region)
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
318 ;;;
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
319
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
320 (defvar vi-mark-alist nil
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
321 "Alist of (NAME . MARK), marks are local to each buffer.")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
322
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
323 (defvar vi-scroll-amount (/ (window-height) 2)
12735
2e79a07a9c27 (vi-scroll-amount, vi-shift-width): Fix syntax of doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 11567
diff changeset
324 "Default amount of lines for scrolling (used by \"^D\"/\"^U\").")
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
325
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
326 (defvar vi-shift-width 4
12735
2e79a07a9c27 (vi-scroll-amount, vi-shift-width): Fix syntax of doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 11567
diff changeset
327 "Shift amount for \"<\"/\">\" operators.")
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
328
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
329 (defvar vi-ins-point nil ; integer
12735
2e79a07a9c27 (vi-scroll-amount, vi-shift-width): Fix syntax of doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 11567
diff changeset
330 "Last insertion point. Should use `mark' instead.")
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
331
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
332 (defvar vi-ins-length nil ; integer
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333 "Length of last insertion.")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
334
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
335 (defvar vi-ins-repetition nil ; integer
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336 "The repetition required for last insertion.")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 (defvar vi-ins-overwrt-p nil ; boolean
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
339 "T if last insertion was a replace actually.")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
341 (defvar vi-ins-prefix-code nil ; ready-to-eval sexp
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342 "Code to be eval'ed before (redo-)insertion begins.")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
343
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
344 (defvar vi-last-find-char nil ; cons cell
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345 "Save last direction, char and upto-flag used for char finding.")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347 (defvar vi-last-change-command nil ; cons cell
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 1577
diff changeset
348 "Save commands for redoing last changes. Each command is in (FUNC . ARGS)
12735
2e79a07a9c27 (vi-scroll-amount, vi-shift-width): Fix syntax of doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 11567
diff changeset
349 form that is ready to be `apply'ed.")
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351 (defvar vi-last-shell-command nil ; last shell op command line
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
352 "Save last shell command given for \"!\" operator.")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354 (defvar vi-insert-state nil ; boolean
12735
2e79a07a9c27 (vi-scroll-amount, vi-shift-width): Fix syntax of doc strings.
Richard M. Stallman <rms@gnu.org>
parents: 11567
diff changeset
355 "Non-nil if it is in insert state.")
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357 ; in "loaddefs.el"
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 38431
diff changeset
358 ;(defvar search-last-string ""
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359 ; "Last string search for by a search command.")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
360
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361 (defvar vi-search-last-command nil ; (re-)search-forward(backward)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362 "Save last search command for possible redo.")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
364 (defvar vi-mode-old-local-map nil
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 "Save the local-map used before entering vi-mode.")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
367 (defvar vi-mode-old-mode-name nil
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368 "Save the mode-name before entering vi-mode.")
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 38431
diff changeset
369
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
370 (defvar vi-mode-old-major-mode nil
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
371 "Save the major-mode before entering vi-mode.")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373 (defvar vi-mode-old-case-fold nil)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 38431
diff changeset
374
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375 ;(defconst vi-add-to-mode-line-1
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376 ; '(overwrite-mode nil " Insert"))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
378 ;; Value is same as vi-add-to-mode-line-1 when in vi mode,
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
379 ;; but nil in other buffers.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380 ;(defvar vi-add-to-mode-line nil)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
381
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
382 (defun vi-mode-setup ()
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
383 "Setup a buffer for vi-mode by creating necessary buffer-local variables."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384 ; (make-local-variable 'vi-add-to-mode-line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385 ; (setq vi-add-to-mode-line vi-add-to-mode-line-1)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386 ; (or (memq vi-add-to-mode-line minor-mode-alist)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387 ; (setq minor-mode-alist (cons vi-add-to-mode-line minor-mode-alist)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
388 (make-local-variable 'vi-scroll-amount)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 (setq vi-scroll-amount (/ (window-height) 2))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
390 (make-local-variable 'vi-shift-width)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391 (setq vi-shift-width 4)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392 (make-local-variable 'vi-ins-point)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393 (make-local-variable 'vi-ins-length)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394 (make-local-variable 'vi-ins-repetition)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
395 (make-local-variable 'vi-ins-overwrt-p)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396 (make-local-variable 'vi-ins-prefix-code)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 (make-local-variable 'vi-last-change-command)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398 (make-local-variable 'vi-last-shell-command)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 (make-local-variable 'vi-last-find-char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400 (make-local-variable 'vi-mark-alist)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401 (make-local-variable 'vi-insert-state)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402 (make-local-variable 'vi-mode-old-local-map)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403 (make-local-variable 'vi-mode-old-mode-name)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404 (make-local-variable 'vi-mode-old-major-mode)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 (make-local-variable 'vi-mode-old-case-fold)
62758
3225f62f5e9f (vi-mode-setup): Use run-mode-hooks.
Lute Kamstra <lute@gnu.org>
parents: 60902
diff changeset
406 (run-mode-hooks 'vi-mode-hook))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 38431
diff changeset
407
258
1e0bc00dca7a *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 6
diff changeset
408 ;;;###autoload
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409 (defun vi-mode ()
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 "Major mode that acts like the `vi' editor.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411 The purpose of this mode is to provide you the combined power of vi (namely,
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 the \"cross product\" effect of commands and repeat last changes) and Emacs.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 This command redefines nearly all keys to look like vi commands.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415 It records the previous major mode, and any vi command for input
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416 \(`i', `a', `s', etc.) switches back to that mode.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417 Thus, ordinary Emacs (in whatever major mode you had been using)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418 is \"input\" mode as far as vi is concerned.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
419
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420 To get back into vi from \"input\" mode, you must issue this command again.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421 Therefore, it is recommended that you assign it to a key.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423 Major differences between this mode and real vi :
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425 * Limitations and unsupported features
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 - Search patterns with line offset (e.g. /pat/+3 or /pat/z.) are
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427 not supported.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428 - Ex commands are not implemented; try ':' to get some hints.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429 - No line undo (i.e. the 'U' command), but multi-undo is a standard feature.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
431 * Modifications
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
432 - The stopping positions for some point motion commands (word boundary,
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
433 pattern search) are slightly different from standard 'vi'.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
434 Also, no automatic wrap around at end of buffer for pattern searching.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
435 - Since changes are done in two steps (deletion then insertion), you need
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436 to undo twice to completely undo a change command. But this is not needed
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
437 for undoing a repeated change command.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
438 - No need to set/unset 'magic', to search for a string with regular expr
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
439 in it just put a prefix arg for the search commands. Replace cmds too.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
440 - ^R is bound to incremental backward search, so use ^L to redraw screen.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
441
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
442 * Extensions
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
443 - Some standard (or modified) Emacs commands were integrated, such as
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
444 incremental search, query replace, transpose objects, and keyboard macros.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
445 - In command state, ^X links to the 'ctl-x-map', and ESC can be linked to
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
446 esc-map or set undefined. These can give you the full power of Emacs.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
447 - See vi-com-map for those keys that are extensions to standard vi, e.g.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
448 `vi-name-last-change-or-macro', `vi-verify-spelling', `vi-locate-def',
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
449 `vi-mark-region', and 'vi-quote-words'. Some of them are quite handy.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450 - Use \\[vi-switch-mode] to switch among different modes quickly.
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 38431
diff changeset
451
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452 Syntax table and abbrevs while in vi mode remain as they were in Emacs."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453 (interactive)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
454 (if (null vi-mode-old-major-mode) ; very first call for current buffer
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
455 (vi-mode-setup))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
456
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
457 (if (eq major-mode 'vi-mode)
53863
3c9fc6a0a6db (vi-mode): Remove extra format string argument.
Andreas Schwab <schwab@suse.de>
parents: 52401
diff changeset
458 (progn (ding) (message "Already in vi-mode."))
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459 (setq vi-mode-old-local-map (current-local-map))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460 (setq vi-mode-old-mode-name mode-name)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
461 (setq vi-mode-old-major-mode major-mode)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 (setq vi-mode-old-case-fold case-fold-search) ; this is needed !!
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463 (setq case-fold-search nil) ; exact case match in searching
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 (use-local-map vi-com-map)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465 (setq major-mode 'vi-mode)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466 (setq mode-name "VI")
11567
bcf841745ef2 (vi-switch-mode, vi-back-to-old-mode): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents: 11184
diff changeset
467 (force-mode-line-update) ; force mode line update
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468 (if vi-insert-state ; this is a return from insertion
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469 (vi-end-of-insert-state))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
471 (defun vi-ding()
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472 "Ding !"
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473 (interactive)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474 (ding))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476 (defun vi-save-all-and-exit ()
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
477 "Save all modified buffers without asking, then exits emacs."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
478 (interactive)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479 (save-some-buffers t)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480 (kill-emacs))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 ;; to be used by "ex" commands
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483 (defvar vi-replaced-string nil)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484 (defvar vi-replacing-string nil)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
485
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
486 (defun vi-ex-cmd ()
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487 "Ex commands are not implemented in Evi mode. For some commonly used ex
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
488 commands, you can use the following alternatives for similar effect :
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489 w C-x C-s (save-buffer)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490 wq C-x C-c (save-buffers-kill-emacs)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491 w fname C-x C-w (write-file)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 e fname C-x C-f (find-file)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493 r fname C-x i (insert-file)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 s/old/new use q (vi-replace) to do unconditional replace
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 use C-q (vi-query-replace) to do query replace
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
496 set sw=n M-x set-variable vi-shift-width n "
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497 (interactive)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498 ;; (let ((cmd (read-string ":")) (lines 1))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499 ;; (cond ((string-match "s"))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500 (with-output-to-temp-buffer "*Help*"
9842
6f9b0830f124 (vi-switch-mode, vi-ex-cmd): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 3591
diff changeset
501 (princ (documentation 'vi-ex-cmd))
6f9b0830f124 (vi-switch-mode, vi-ex-cmd): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 3591
diff changeset
502 (save-excursion
6f9b0830f124 (vi-switch-mode, vi-ex-cmd): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 3591
diff changeset
503 (set-buffer standard-output)
6f9b0830f124 (vi-switch-mode, vi-ex-cmd): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 3591
diff changeset
504 (help-mode))))
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506 (defun vi-undefined ()
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507 (interactive)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508 (message "Command key \"%s\" is undefined in Evi."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509 (single-key-description last-command-char))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510 (ding))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 (defun vi-unimplemented ()
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 (interactive)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 (message "Command key \"%s\" is not implemented in Evi."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515 (single-key-description last-command-char))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
516 (ding))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
517
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518 ;;;;;
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519 (defun vi-goto-insert-state (repetition &optional prefix-code do-it-now-p)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520 "Go into insert state, the text entered will be repeated if REPETITION > 1.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521 If PREFIX-CODE is given, do it before insertion begins if DO-IT-NOW-P is T.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
522 In any case, the prefix-code will be done before each 'redo-insert'.
63401
f32aaa9cbdf6 (vi-goto-insert-state): Fix quoting in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 62758
diff changeset
523 This function expects `overwrite-mode' being set properly beforehand."
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
524 (if do-it-now-p (apply (car prefix-code) (cdr prefix-code)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
525 (setq vi-ins-point (point))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
526 (setq vi-ins-repetition repetition)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
527 (setq vi-ins-prefix-code prefix-code)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
528 (setq mode-name vi-mode-old-mode-name)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
529 (setq case-fold-search vi-mode-old-case-fold)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
530 (use-local-map vi-mode-old-local-map)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
531 (setq major-mode vi-mode-old-major-mode)
11567
bcf841745ef2 (vi-switch-mode, vi-back-to-old-mode): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents: 11184
diff changeset
532 (force-mode-line-update)
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
533 (setq vi-insert-state t))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
534
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
535 (defun vi-end-of-insert-state ()
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536 "Terminate insertion and set up last change command."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537 (if (or (< (point) vi-ins-point) ;Check if there is any effective change
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
538 (and (= (point) vi-ins-point) (null vi-ins-prefix-code))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
539 (<= vi-ins-repetition 0))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
540 (vi-goto-command-state t)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
541 (if (> vi-ins-repetition 1)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 38431
diff changeset
542 (progn
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
543 (let ((str (buffer-substring vi-ins-point (point))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
544 (while (> vi-ins-repetition 1)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
545 (insert str)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
546 (setq vi-ins-repetition (1- vi-ins-repetition))))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
547 (vi-set-last-change-command 'vi-first-redo-insertion vi-ins-point (point)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
548 overwrite-mode vi-ins-prefix-code)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
549 (vi-goto-command-state t)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
550
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
551 (defun vi-first-redo-insertion (begin end &optional overwrite-p prefix-code)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
552 "Redo last insertion the first time. Extract the string and save it for
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
553 future redoes. Do prefix-code if it's given, use overwrite mode if asked."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
554 (let ((str (buffer-substring begin end)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
555 (if prefix-code (apply (car prefix-code) (cdr prefix-code)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
556 (if overwrite-p (delete-region (point) (+ (point) (length str))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
557 (insert str)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
558 (vi-set-last-change-command 'vi-more-redo-insertion str overwrite-p prefix-code)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
559
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
560 (defun vi-more-redo-insertion (str &optional overwrite-p prefix-code)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561 "Redo more insertion : copy string from STR to point, use overwrite mode
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562 if overwrite-p is T; apply prefix-code first if it's non-nil."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
563 (if prefix-code (apply (car prefix-code) (cdr prefix-code)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
564 (if overwrite-p (delete-region (point) (+ (point) (length str))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
565 (insert str))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
566
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
567 (defun vi-goto-command-state (&optional from-insert-state-p)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
568 "Go to vi-mode command state. If optional arg exists, means return from
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
569 insert state."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
570 (use-local-map vi-com-map)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
571 (setq vi-insert-state nil)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572 (if from-insert-state-p
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
573 (if overwrite-mode
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574 (overwrite-mode 0)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
575 ; (set-minor-mode 'ins "Insert" nil)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
576 )))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
578 (defun vi-kill-line (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
579 "kill specified number of lines (=d$), text saved in the kill ring."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
580 (interactive "*P")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
581 (kill-line arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
582 (vi-set-last-change-command 'kill-line arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
583
9865
9ca8b94a9f07 (vi-kill-region): Pass args to kill-region.
Karl Heuer <kwzh@gnu.org>
parents: 9842
diff changeset
584 (defun vi-kill-region (start end)
9ca8b94a9f07 (vi-kill-region): Pass args to kill-region.
Karl Heuer <kwzh@gnu.org>
parents: 9842
diff changeset
585 (interactive "*r")
9ca8b94a9f07 (vi-kill-region): Pass args to kill-region.
Karl Heuer <kwzh@gnu.org>
parents: 9842
diff changeset
586 (kill-region start end)
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
587 (vi-set-last-change-command 'kill-region))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 38431
diff changeset
588
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
589 (defun vi-append-at-end-of-line (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
590 "go to end of line and then go into vi insert state."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591 (interactive "*p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
592 (vi-goto-insert-state arg '(end-of-line) t))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
593
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
594 (defun vi-change-rest-of-line (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
595 "Change the rest of (ARG) lines (= c$ in vi)."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
596 (interactive "*P")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
597 (vi-goto-insert-state 1 (list 'kill-line arg) t))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
598
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
599 (defun vi-insert-before-first-nonwhite (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600 "(= ^i in vi)"
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601 (interactive "*p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
602 (vi-goto-insert-state arg '(back-to-indentation) t))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
603
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
604 (defun vi-open-above (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
605 "open new line(s) above current line and enter insert state."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
606 (interactive "*p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
607 (vi-goto-insert-state 1
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608 (list (function (lambda (x)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609 (or (beginning-of-line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
610 (open-line x)))) arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
611 t))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
612
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
613 (defun vi-open-below (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
614 "open new line(s) and go into insert mode on the last line."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
615 (interactive "*p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
616 (vi-goto-insert-state 1
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
617 (list (function (lambda (x)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
618 (or (end-of-line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
619 (open-line x)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
620 (forward-line x)))) arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
621 t))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
622
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
623 (defun vi-insert-after (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624 "start vi insert state after cursor."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
625 (interactive "*p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626 (vi-goto-insert-state arg
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627 (list (function (lambda ()
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
628 (if (not (eolp)) (forward-char)))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629 t))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
630
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
631 (defun vi-insert-before (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
632 "enter insert state before the cursor."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
633 (interactive "*p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634 (vi-goto-insert-state arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
635
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636 (defun vi-goto-line (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637 "Go to ARGth line."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638 (interactive "P")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
639 (if (null (vi-raw-numeric-prefix arg))
63942
c9581f50bd50 (vi-mark-region): Use c-mark-function.
Richard M. Stallman <rms@gnu.org>
parents: 63401
diff changeset
640 (with-no-warnings
c9581f50bd50 (vi-mark-region): Use c-mark-function.
Richard M. Stallman <rms@gnu.org>
parents: 63401
diff changeset
641 (end-of-buffer))
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
642 (goto-line (vi-prefix-numeric-value arg))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
643
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644 (defun vi-beginning-of-buffer ()
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 "Move point to the beginning of current buffer."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
646 (interactive)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647 (goto-char (point-min)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649 ;;;;; not used now
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650 ;;(defvar regexp-search t ; string
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
651 ;; "*T if search string can contain regular expressions. (= set magic in vi)")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652 ;;;;;
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
653
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
654 (defun vi-isearch-forward (arg)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 38431
diff changeset
655 "Incremental search forward. Use regexp version if ARG is non-nil."
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
656 (interactive "P")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
657 (let ((scmd (if arg 'isearch-forward-regexp 'isearch-forward))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
658 (opoint (point)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659 (call-interactively scmd)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
660 (if (= opoint (point))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661 nil
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662 (setq vi-search-last-command (if arg 're-search-forward 'search-forward)))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
663
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
664 (defun vi-isearch-backward (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
665 "Incremental search backward. Use regexp version if ARG is non-nil."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
666 (interactive "P")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
667 (let ((scmd (if arg 'isearch-backward-regexp 'isearch-backward))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
668 (opoint (point)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
669 (call-interactively scmd)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670 (if (= opoint (point))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671 nil
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672 (setq vi-search-last-command (if arg 're-search-backward 'search-backward)))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
674 (defun vi-search-forward (arg string)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
675 "Nonincremental search forward. Use regexp version if ARG is non-nil."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
676 (interactive (if current-prefix-arg
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
677 (list t (read-string "regexp/" nil))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
678 (list nil (read-string "/" nil))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
679 (setq vi-search-last-command (if arg 're-search-forward 'search-forward))
17979
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
680 (if (> (length string) 0)
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
681 (isearch-update-ring string arg))
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
682 (funcall vi-search-last-command string nil nil 1))
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
683
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
684 (defun vi-search-backward (arg string)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
685 "Nonincremental search backward. Use regexp version if ARG is non-nil."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
686 (interactive (if current-prefix-arg
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
687 (list t (read-string "regexp?" nil))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
688 (list nil (read-string "?" nil))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
689 (setq vi-search-last-command (if arg 're-search-backward 'search-backward))
17979
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
690 (if (> (length string) 0)
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
691 (isearch-update-ring string arg))
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
692 (funcall vi-search-last-command string nil nil 1))
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
693
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
694 (defun vi-repeat-last-search (arg &optional search-command search-string)
17979
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
695 "Repeat last search command.
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
696 If optional search-command/string are given,
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
697 use those instead of the ones saved."
17979
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
698 (interactive "p")
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
699 (if (null search-command) (setq search-command vi-search-last-command))
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
700 (if (null search-string)
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
701 (setq search-string
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
702 (car (if (memq search-command
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
703 '(re-search-forward re-search-backward))
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
704 regexp-search-ring
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
705 search-ring))))
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
706 (if (null search-command)
53863
3c9fc6a0a6db (vi-mode): Remove extra format string argument.
Andreas Schwab <schwab@suse.de>
parents: 52401
diff changeset
707 (progn (ding) (message "No last search command to repeat."))
17979
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
708 (funcall search-command search-string nil nil arg)))
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
709
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
710 (defun vi-reverse-last-search (arg &optional search-command search-string)
17979
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
711 "Redo last search command in reverse direction.
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
712 If the optional search args are given, use those instead of the ones saved."
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
713 (interactive "p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
714 (if (null search-command) (setq search-command vi-search-last-command))
17979
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
715 (if (null search-string)
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
716 (setq search-string
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
717 (car (if (memq search-command
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
718 '(re-search-forward re-search-backward))
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
719 regexp-search-ring
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
720 search-ring))))
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
721 (if (null search-command)
53863
3c9fc6a0a6db (vi-mode): Remove extra format string argument.
Andreas Schwab <schwab@suse.de>
parents: 52401
diff changeset
722 (progn (ding) (message "No last search command to repeat."))
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
723 (funcall (cond ((eq search-command 're-search-forward) 're-search-backward)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
724 ((eq search-command 're-search-backward) 're-search-forward)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
725 ((eq search-command 'search-forward) 'search-backward)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
726 ((eq search-command 'search-backward) 'search-forward))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
727 search-string nil nil arg)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 38431
diff changeset
728
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
729 (defun vi-join-lines (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
730 "join ARG lines from current line (default 2), cleaning up white space."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
731 (interactive "P")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
732 (if (null (vi-raw-numeric-prefix arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
733 (delete-indentation t)
17979
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
734 (let ((count (vi-prefix-numeric-value arg)))
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
735 (while (>= count 2)
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
736 (delete-indentation t)
2265b685be6a (vi-join-lines): Locally bind count.
Richard M. Stallman <rms@gnu.org>
parents: 17976
diff changeset
737 (setq count (1- count)))))
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
738 (vi-set-last-change-command 'vi-join-lines arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
739
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
740 (defun vi-backward-kill-line ()
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
741 "kill the current line. Only works in insert state."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
742 (interactive)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
743 (if (not vi-insert-state)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
744 nil
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
745 (beginning-of-line 1)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
746 (kill-line nil)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
747
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
748 (defun vi-abort-ins ()
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
749 "abort insert state, kill inserted text and go back to command state."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
750 (interactive)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
751 (if (not vi-insert-state)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
752 nil
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
753 (if (> (point) vi-ins-point)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
754 (kill-region vi-ins-point (point)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
755 (vi-goto-command-state t)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
756
13951
b777c515e6dc (vi-backward-windowful): Renamed from vi-backward-windowfull.
Karl Heuer <kwzh@gnu.org>
parents: 12735
diff changeset
757 (defun vi-backward-windowful (count)
b777c515e6dc (vi-backward-windowful): Renamed from vi-backward-windowfull.
Karl Heuer <kwzh@gnu.org>
parents: 12735
diff changeset
758 "Backward COUNT windowfuls. Default is one."
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
759 (interactive "p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
760 ; (set-mark-command nil)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
761 (while (> count 0)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
762 (scroll-down nil)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
763 (setq count (1- count))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
764
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
765 (defun vi-scroll-down-window (count)
1577
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
766 "Scrolls down window COUNT lines.
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
767 If COUNT is nil (actually, non-integer), scrolls default amount.
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
768 The given COUNT is remembered for future scrollings."
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
769 (interactive "P")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
770 (if (integerp count)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
771 (setq vi-scroll-amount count))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
772 (scroll-up vi-scroll-amount))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
773
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
774 (defun vi-expose-line-below (count)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
775 "Expose COUNT more lines below the current window. Default COUNT is 1."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
776 (interactive "p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
777 (scroll-up count))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
778
13951
b777c515e6dc (vi-backward-windowful): Renamed from vi-backward-windowfull.
Karl Heuer <kwzh@gnu.org>
parents: 12735
diff changeset
779 (defun vi-forward-windowful (count)
b777c515e6dc (vi-backward-windowful): Renamed from vi-backward-windowfull.
Karl Heuer <kwzh@gnu.org>
parents: 12735
diff changeset
780 "Forward COUNT windowfuls. Default is one."
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
781 (interactive "p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
782 ; (set-mark-command nil)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
783 (while (> count 0)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
784 (scroll-up nil)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
785 (setq count (1- count))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
786
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
787 (defun vi-next-line (count)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
788 "Go down count lines, try to keep at the same column."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
789 (interactive "p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
790 (setq this-command 'next-line) ; this is a needed trick
78534
9ba019f08d78 (vi-next-line): Ignore return value of line-move.
Richard M. Stallman <rms@gnu.org>
parents: 74580
diff changeset
791 (if (= (point) (progn (line-move count) (point)))
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
792 (ding) ; no moving, already at end of buffer
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
793 (setq last-command 'next-line)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
794
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
795 (defun vi-next-line-first-nonwhite (count)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
796 "Go down COUNT lines. Stop at first non-white."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
797 (interactive "p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
798 (if (= (point) (progn (forward-line count) (back-to-indentation) (point)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
799 (ding))) ; no moving, already at end of buffer
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
800
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
801 (defun vi-previous-line-first-nonwhite (count)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
802 "Go up COUNT lines. Stop at first non-white."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
803 (interactive "p")
85451
e1af3a725ca4 * textmodes/two-column.el (2C-split, 2C-merge):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78534
diff changeset
804 (forward-line (- count))
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
805 (back-to-indentation))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
806
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
807 (defun vi-scroll-up-window (count)
1577
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
808 "Scrolls up window COUNT lines.
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
809 If COUNT is nil (actually, non-integer), scrolls default amount.
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
810 The given COUNT is remembered for future scrollings."
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
811 (interactive "P")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
812 (if (integerp count)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
813 (setq vi-scroll-amount count))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
814 (scroll-down vi-scroll-amount))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
815
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
816 (defun vi-expose-line-above (count)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
817 "Expose COUNT more lines above the current window. Default COUNT is 1."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
818 (interactive "p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
819 (scroll-down count))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
820
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
821 (defun vi-char-argument (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
822 "Get following character (could be any CHAR) as part of the prefix argument.
74580
17d458291533 (vi-char-argument): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 63942
diff changeset
823 Possible prefix-arg cases are nil, INTEGER, (nil . CHAR) or (INTEGER . CHAR)."
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
824 (interactive "P")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
825 (let ((char (read-char)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
826 (cond ((null arg) (setq prefix-arg (cons nil char)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
827 ((integerp arg) (setq prefix-arg (cons arg char)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
828 ; This can happen only if the user changed his/her mind for CHAR,
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
829 ; Or there are some leading "universal-argument"s
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
830 (t (setq prefix-arg (cons (car arg) char))))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
831
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
832 (defun vi-goto-mark (mark-char &optional line-flag)
1577
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
833 "Go to marked position or line (if line-flag is given).
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
834 Goto mark '@' means jump into and pop the top mark on the mark ring."
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
835 (cond ((char-equal mark-char last-command-char) ; `` or ''
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
836 (exchange-point-and-mark) (if line-flag (back-to-indentation)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
837 ((char-equal mark-char ?@) ; jump and pop mark
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
838 (set-mark-command t) (if line-flag (back-to-indentation)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
839 (t
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
840 (let ((mark (vi-get-mark mark-char)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
841 (if (null mark)
53863
3c9fc6a0a6db (vi-mode): Remove extra format string argument.
Andreas Schwab <schwab@suse.de>
parents: 52401
diff changeset
842 (progn (vi-ding) (message "Mark register undefined."))
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
843 (set-mark-command nil)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
844 (goto-char mark)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
845 (if line-flag (back-to-indentation)))))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 38431
diff changeset
846
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
847 (defun vi-goto-line-mark (char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
848 "Go to the line (at first non-white) marked by next char."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
849 (interactive "c")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
850 (vi-goto-mark char t))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
851
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
852 (defun vi-goto-char-mark (char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
853 "Go to the char position marked by next mark-char."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
854 (interactive "c")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
855 (vi-goto-mark char))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
856
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
857 (defun vi-digit-argument (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
858 "Set numeric prefix argument."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
859 (interactive "P")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
860 (cond ((null arg) (digit-argument arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
861 ((integerp arg) (digit-argument nil)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
862 (setq prefix-arg (* prefix-arg arg)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
863 (t (digit-argument nil) ; in (NIL . CHAR) or (NUM . CHAR) form
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
864 (setq prefix-arg (cons (* prefix-arg
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
865 (if (null (car arg)) 1 (car arg)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
866 (cdr arg))))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
867
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
868 (defun vi-raw-numeric-prefix (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
869 "Return the raw value of numeric part prefix argument."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
870 (if (consp arg) (car arg) arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
871
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
872 (defun vi-prefix-numeric-value (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
873 "Return numeric meaning of the raw prefix argument. This is a modification
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
874 to the standard one provided in `callint.c' to handle (_ . CHAR) cases."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
875 (cond ((null arg) 1)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
876 ((integerp arg) arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
877 ((consp arg) (if (car arg) (car arg) 1))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
878
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
879 (defun vi-reverse-last-find-char (count &optional find-arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
880 "Reverse last f F t T operation COUNT times. If the optional FIND-ARG
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
881 is given, it is used instead of the saved one."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
882 (interactive "p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
883 (if (null find-arg) (setq find-arg vi-last-find-char))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
884 (if (null find-arg)
53863
3c9fc6a0a6db (vi-mode): Remove extra format string argument.
Andreas Schwab <schwab@suse.de>
parents: 52401
diff changeset
885 (progn (ding) (message "No last find char to repeat."))
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
886 (vi-find-char (cons (* (car find-arg) -1) (cdr find-arg)) count))) ;6/13/86
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
887
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
888 (defun vi-find-char (arg count)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
889 "Find in DIRECTION (1/-1) for CHAR of COUNT'th times on current line.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
890 If UPTO-FLAG is T, stop before the char. ARG = (DIRECTION.CHAR.UPTO-FLAG."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
891 (let* ((direction (car arg)) (char (car (cdr arg)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
892 (upto-flag (cdr (cdr arg))) (pos (+ (point) direction)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
893 (if (catch 'exit-find-char
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
894 (while t
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
895 (cond ((null (char-after pos)) (throw 'exit-find-char nil))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
896 ((char-equal (char-after pos) ?\n) (throw 'exit-find-char nil))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
897 ((char-equal char (char-after pos)) (setq count (1- count))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
898 (if (= count 0)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
899 (throw 'exit-find-char
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
900 (if upto-flag
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
901 (setq pos (- pos direction))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
902 pos)))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
903 (setq pos (+ pos direction))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
904 (goto-char pos)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
905 (ding))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
906
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
907 (defun vi-repeat-last-find-char (count &optional find-arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
908 "Repeat last f F t T operation COUNT times. If optional FIND-ARG is given,
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
909 it is used instead of the saved one."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
910 (interactive "p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
911 (if (null find-arg) (setq find-arg vi-last-find-char))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
912 (if (null find-arg)
53863
3c9fc6a0a6db (vi-mode): Remove extra format string argument.
Andreas Schwab <schwab@suse.de>
parents: 52401
diff changeset
913 (progn (ding) (message "No last find char to repeat."))
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
914 (vi-find-char find-arg count)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
915
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
916 (defun vi-backward-find-char (count char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
917 "Find the COUNT'th CHAR backward on current line."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
918 (interactive "p\nc")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
919 (setq vi-last-find-char (cons -1 (cons char nil)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
920 (vi-repeat-last-find-char count))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
921
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
922 (defun vi-forward-find-char (count char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
923 "Find the COUNT'th CHAR forward on current line."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
924 (interactive "p\nc")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
925 (setq vi-last-find-char (cons 1 (cons char nil)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
926 (vi-repeat-last-find-char count))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
927
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
928 (defun vi-backward-upto-char (count char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
929 "Find upto the COUNT'th CHAR backward on current line."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
930 (interactive "p\nc")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
931 (setq vi-last-find-char (cons -1 (cons char t)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
932 (vi-repeat-last-find-char count))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
933
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
934 (defun vi-forward-upto-char (count char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
935 "Find upto the COUNT'th CHAR forward on current line."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
936 (interactive "p\nc")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
937 (setq vi-last-find-char (cons 1 (cons char t)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
938 (vi-repeat-last-find-char count))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
939
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
940 (defun vi-end-of-word (count)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
941 "Move forward until encountering the end of a word.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
942 With argument, do this that many times."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
943 (interactive "p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
944 (if (not (eobp)) (forward-char))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
945 (if (re-search-forward "\\W*\\w+\\>" nil t count)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
946 (backward-char)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
947
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
948 (defun vi-replace-1-char (count char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
949 "Replace char after point by CHAR. Repeat COUNT times."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
950 (interactive "p\nc")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
951 (delete-char count nil) ; don't save in kill ring
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
952 (setq last-command-char char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
953 (self-insert-command count)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
954 (vi-set-last-change-command 'vi-replace-1-char count char))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
955
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
956 (defun vi-replace-chars (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
957 "Replace chars over old ones."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
958 (interactive "*p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
959 (overwrite-mode 1)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
960 (vi-goto-insert-state arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
961
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
962 (defun vi-substitute-chars (count)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
963 "Substitute COUNT chars by the input chars, enter insert state."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
964 (interactive "*p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
965 (vi-goto-insert-state 1 (list (function (lambda (c) ; this is a bit tricky
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
966 (delete-region (point)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
967 (+ (point) c))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
968 count) t))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
969
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
970 (defun vi-substitute-lines (count)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
971 "Substitute COUNT lines by the input chars. (=cc in vi)"
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
972 (interactive "*p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
973 (vi-goto-insert-state 1 (list 'vi-delete-op 'next-line (1- count)) t))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
974
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
975 (defun vi-prefix-char-value (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
976 "Get the char part of the current prefix argument."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
977 (cond ((null arg) nil)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
978 ((integerp arg) nil)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
979 ((consp arg) (cdr arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
980 (t nil)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
981
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
982 (defun vi-operator (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
983 "Handling vi operators (d/c/</>/!/=/y). Current implementation requires
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
984 the key bindings of the operators being fixed."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
985 (interactive "P")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
986 (catch 'vi-exit-op
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
987 (let ((this-op-char last-command-char))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
988 (setq last-command-char (read-char))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
989 (setq this-command (lookup-key vi-com-map (char-to-string last-command-char)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
990 (if (not (eq this-command 'vi-digit-argument))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
991 (setq prefix-arg arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
992 (vi-digit-argument arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
993 (setq last-command-char (read-char))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
994 (setq this-command (lookup-key vi-com-map (char-to-string last-command-char))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
995 (cond ((char-equal this-op-char last-command-char) ; line op
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
996 (vi-execute-op this-op-char 'next-line
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
997 (cons (1- (vi-prefix-numeric-value prefix-arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
998 (vi-prefix-char-value prefix-arg))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
999 ;; We assume any command that has no property 'point-moving-unit'
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1000 ;; as having that property with the value 'CHAR'. 3/12/86
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1001 (t ;; (get this-command 'point-moving-unit)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1002 (vi-execute-op this-op-char this-command prefix-arg))))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1003 ;; (t (throw 'vi-exit-op (ding)))))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1004
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1005 (defun vi-execute-op (op-char motion-command arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1006 "Execute vi edit operator as specified by OP-CHAR, the operand is the region
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1007 determined by the MOTION-COMMAND with ARG."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1008 (cond ((= op-char ?d)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1009 (if (vi-delete-op motion-command arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1010 (vi-set-last-change-command 'vi-delete-op (vi-repeat-command-of motion-command) arg)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1011 ((= op-char ?c)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1012 (if (vi-delete-op motion-command arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1013 (vi-goto-insert-state 1 (list 'vi-delete-op
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1014 (vi-repeat-command-of motion-command) arg) nil)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1015 ((= op-char ?y)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1016 (if (vi-yank-op motion-command arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1017 (vi-set-last-change-command 'vi-yank-op (vi-repeat-command-of motion-command) arg)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1018 ((= op-char ?!)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1019 (if (vi-shell-op motion-command arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1020 (vi-set-last-change-command 'vi-shell-op (vi-repeat-command-of motion-command) arg vi-last-shell-command)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1021 ((= op-char ?<)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1022 (if (vi-shift-op motion-command arg (- vi-shift-width))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1023 (vi-set-last-change-command 'vi-shift-op (vi-repeat-command-of motion-command) arg (- vi-shift-width))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1024 ((= op-char ?>)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1025 (if (vi-shift-op motion-command arg vi-shift-width)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1026 (vi-set-last-change-command 'vi-shift-op (vi-repeat-command-of motion-command) arg vi-shift-width)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1027 ((= op-char ?=)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1028 (if (vi-indent-op motion-command arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1029 (vi-set-last-change-command 'vi-indent-op (vi-repeat-command-of motion-command) arg)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1030 ((= op-char ?\\)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1031 (vi-narrow-op motion-command arg))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1032
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1033 (defun vi-repeat-command-of (command)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1034 "Return the command for redo the given command."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1035 (let ((cmd-type (get command 'point-moving-unit)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1036 (cond ((eq cmd-type 'search) 'vi-repeat-last-search)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1037 ((eq cmd-type 'find) 'vi-repeat-last-find-char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1038 (t command))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1039
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1040 (defun vi-effective-range (motion-command arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1041 "Return (begin . end) of the range spanned by executing the given
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1042 MOTION-COMMAND with ARG.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1043 MOTION-COMMAND in ready-to-eval list form is not yet supported."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1044 (save-excursion
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1045 (let ((begin (point)) end opoint
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1046 (moving-unit (get motion-command 'point-moving-unit)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1047 (setq prefix-arg arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1048 (setq opoint (point))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1049 (command-execute motion-command nil)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1050 ;; Check if there is any effective motion. Note that for single line operation
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1051 ;; the motion-command causes no effective point movement (since it moves up or
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1052 ;; down zero lines), but it should be counted as effectively moved.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1053 (if (and (= (point) opoint) (not (eq moving-unit 'line)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1054 (cons opoint opoint) ; no effective motion
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1055 (if (eq moving-unit 'region)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1056 (setq begin (or (mark) (point))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1057 (if (<= begin (point))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1058 (setq end (point))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1059 (setq end begin)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1060 (setq begin (point)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1061 (cond ((or (eq moving-unit 'match) (eq moving-unit 'find))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1062 (setq end (1+ end)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1063 ((eq moving-unit 'line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1064 (goto-char begin) (beginning-of-line) (setq begin (point))
85451
e1af3a725ca4 * textmodes/two-column.el (2C-split, 2C-merge):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78534
diff changeset
1065 (goto-char end) (forward-line 1) (beginning-of-line) (setq end (point))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 38431
diff changeset
1066 (if (> end (point-max)) (setq end (point-max))) ; force in buffer region
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1067 (cons begin end)))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1068
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1069 (defun vi-delete-op (motion-command arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1070 "Delete range specified by MOTION-COMMAND with ARG."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1071 (let* ((range (vi-effective-range motion-command arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1072 (begin (car range)) (end (cdr range)) reg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1073 (if (= begin end)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1074 nil ; point not moved, abort op
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1075 (setq reg (vi-prefix-char-value arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1076 (if (null reg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1077 (kill-region begin end) ; kill ring as unnamed registers
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1078 (if (and (>= reg ?A) (<= reg ?Z))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1079 (append-to-register (downcase reg) begin end t)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1080 (copy-to-register reg begin end t)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1081 t)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1082
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1083 (defun vi-yank-op (motion-command arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1084 "Yank (in vi sense) range specified by MOTION-COMMAND with ARG."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1085 (let* ((range (vi-effective-range motion-command arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1086 (begin (car range)) (end (cdr range)) reg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1087 (if (= begin end)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1088 nil ; point not moved, abort op
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1089 (setq reg (vi-prefix-char-value arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1090 (if (null reg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1091 (copy-region-as-kill begin end); kill ring as unnamed registers
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1092 (if (and (>= reg ?A) (<= reg ?Z))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1093 (append-to-register (downcase reg) begin end nil)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1094 (copy-to-register reg begin end nil)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1095 t)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1096
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1097 (defun vi-yank-line (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1098 "Yank (in vi sense) lines (= `yy' command)."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1099 (interactive "*P")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1100 (setq arg (cons (1- (vi-prefix-numeric-value arg)) (vi-prefix-char-value arg)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1101 (if (vi-yank-op 'next-line arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1102 (vi-set-last-change-command 'vi-yank-op 'next-line arg)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1103
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1104 (defun vi-string-end-with-nl-p (string)
1577
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
1105 "See if STRING ends with a newline char.
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
1106 Used in checking whether the yanked text should be put back as lines or not."
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1107 (= (aref string (1- (length string))) ?\n))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1108
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1109 (defun vi-put-before (arg &optional after-p)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 38431
diff changeset
1110 "Put yanked (in vi sense) text back before/above cursor.
1577
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
1111 If a numeric prefix value (currently it should be >1) is given, put back
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
1112 text as lines. If the optional after-p is given, put after/below the cursor."
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1113 (interactive "P")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1114 (let ((reg (vi-prefix-char-value arg)) put-text)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1115 (if (and reg (or (< reg ?1) (> reg ?9)) (null (get-register reg)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1116 (error "Nothing in register %c" reg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1117 (if (null reg) (setq reg ?1)) ; the default is the last text killed
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1118 (setq put-text
707
e4253da532fb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 657
diff changeset
1119 (cond
e4253da532fb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 657
diff changeset
1120 ((and (>= reg ?1) (<= reg ?9))
e4253da532fb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 657
diff changeset
1121 (setq this-command 'yank) ; So we may yank-pop !!
e4253da532fb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 657
diff changeset
1122 (current-kill (- reg ?0 1) 'do-not-rotate))
e4253da532fb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 657
diff changeset
1123 ((stringp (get-register reg)) (get-register reg))
e4253da532fb *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 657
diff changeset
1124 (t (error "Register %c is not containing text string" reg))))
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1125 (if (vi-string-end-with-nl-p put-text) ; put back text as lines
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1126 (if after-p
85451
e1af3a725ca4 * textmodes/two-column.el (2C-split, 2C-merge):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78534
diff changeset
1127 (progn (forward-line 1) (beginning-of-line))
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1128 (beginning-of-line))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1129 (if after-p (forward-char 1)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1130 (push-mark (point))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1131 (insert put-text)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1132 (exchange-point-and-mark)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1133 ;; (back-to-indentation) ; this is not allowed if we allow yank-pop
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1134 (vi-set-last-change-command 'vi-put-before arg after-p))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1135
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1136 (defun vi-put-after (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1137 "Put yanked (in vi sense) text back after/below cursor."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1138 (interactive "P")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1139 (vi-put-before arg t))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1140
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1141 (defun vi-shell-op (motion-command arg &optional shell-command)
1577
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
1142 "Perform shell command (as filter).
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
1143 Performs command on range specified by MOTION-COMMAND
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1144 with ARG. If SHELL-COMMAND is not given, ask for one from minibuffer.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1145 If char argument is given, it directs the output to a *temp* buffer."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1146 (let* ((range (vi-effective-range motion-command arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1147 (begin (car range)) (end (cdr range)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1148 (if (= begin end)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1149 nil ; point not moved, abort op
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1150 (cond ((null shell-command)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1151 (setq shell-command (read-string "!" nil))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1152 (setq vi-last-shell-command shell-command)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1153 (shell-command-on-region begin end shell-command (not (vi-prefix-char-value arg)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1154 t)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1155
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1156 (defun vi-shift-op (motion-command arg amount)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1157 "Perform shift command on range specified by MOTION-COMMAND with ARG for
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1158 AMOUNT on each line. Negative amount means shift left.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1159 SPECIAL FEATURE: char argument can be used to specify shift amount(1-9)."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1160 (let* ((range (vi-effective-range motion-command arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1161 (begin (car range)) (end (cdr range)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1162 (if (= begin end)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1163 nil ; point not moved, abort op
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1164 (if (vi-prefix-char-value arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1165 (setq amount (if (> amount 0)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1166 (- (vi-prefix-char-value arg) ?0)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1167 (- ?0 (vi-prefix-char-value arg)))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1168 (indent-rigidly begin end amount)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1169 t)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1170
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1171 (defun vi-indent-op (motion-command arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1172 "Perform indent command on range specified by MOTION-COMMAND with ARG."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1173 (let* ((range (vi-effective-range motion-command arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1174 (begin (car range)) (end (cdr range)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1175 (if (= begin end)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1176 nil ; point not moved, abort op
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1177 (indent-region begin end nil) ; insert TAB as indent command
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1178 t)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1179
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1180 (defun vi-narrow-op (motion-command arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1181 "Narrow to region specified by MOTION-COMMAND with ARG."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1182 (let* ((range (vi-effective-range motion-command arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1183 (begin (car range)) (end (cdr range)) reg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1184 (if (= begin end)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1185 nil ; point not moved, abort op
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1186 (narrow-to-region begin end))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1187
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1188 (defun vi-get-mark (char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1189 "Return contents of vi mark register named CHAR, or nil if undefined."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1190 (cdr (assq char vi-mark-alist)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1191
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1192 (defun vi-set-mark (char)
1577
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
1193 "Set contents of vi mark register named CHAR to current point.
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
1194 '@' is the special anonymous mark register."
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1195 (interactive "c")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1196 (if (char-equal char ?@)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1197 (set-mark-command nil)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1198 (let ((aelt (assq char vi-mark-alist)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1199 (if aelt
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1200 (move-marker (cdr aelt) (point)) ; fixed 6/12/86
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1201 (setq aelt (cons char (copy-marker (point))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1202 (setq vi-mark-alist (cons aelt vi-mark-alist))))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1203
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1204 (defun vi-find-matching-paren ()
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1205 "Locate the matching paren. It's a hack right now."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1206 (interactive)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1207 (cond ((looking-at "[[({]") (forward-sexp 1) (backward-char 1))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1208 ((looking-at "[])}]") (forward-char 1) (backward-sexp 1))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1209 (t (ding))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1210
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1211 (defun vi-backward-blank-delimited-word (count)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1212 "Backward COUNT blank-delimited words."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1213 (interactive "p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1214 (if (re-search-backward "[ \t\n\`][^ \t\n\`]+" nil t count)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1215 (if (not (bobp)) (forward-char 1))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1216
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1217 (defun vi-forward-blank-delimited-word (count)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1218 "Forward COUNT blank-delimited words."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1219 (interactive "p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1220 (if (re-search-forward "[^ \t\n]*[ \t\n]+[^ \t\n]" nil t count)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1221 (if (not (eobp)) (backward-char 1))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1222
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1223 (defun vi-end-of-blank-delimited-word (count)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1224 "Forward to the end of the COUNT'th blank-delimited word."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1225 (interactive "p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1226 (if (re-search-forward "[^ \t\n\']+[ \t\n\']" nil t count)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1227 (if (not (eobp)) (backward-char 2))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1228
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1229 (defun vi-home-window-line (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1230 "To window home or arg'th line from the top of the window."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1231 (interactive "p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1232 (move-to-window-line (1- arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1233 (back-to-indentation))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1234
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1235 (defun vi-last-window-line (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1236 "To window last line or arg'th line from the bottom of the window."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1237 (interactive "p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1238 (move-to-window-line (- arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1239 (back-to-indentation))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1240
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1241 (defun vi-middle-window-line ()
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1242 "To the middle line of the window."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1243 (interactive)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1244 (move-to-window-line nil)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1245 (back-to-indentation))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1246
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1247 (defun vi-forward-word (count)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1248 "Stop at the beginning of the COUNT'th words from point."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1249 (interactive "p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1250 (if (re-search-forward "\\w*\\W+\\<" nil t count)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1251 t
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1252 (vi-ding)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1253
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1254 (defun vi-set-last-change-command (fun &rest args)
1577
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
1255 "Set (FUN . ARGS) as the `last-change-command'."
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1256 (setq vi-last-change-command (cons fun args)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1257
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1258 (defun vi-redo-last-change-command (count &optional command)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1259 "Redo last change command COUNT times. If the optional COMMAND is given,
1577
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
1260 it is used instead of the current `last-change-command'."
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1261 (interactive "p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1262 (if (null command)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1263 (setq command vi-last-change-command))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1264 (if (null command)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1265 (message "No last change command available.")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1266 (while (> count 0)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1267 (apply (car command) (cdr command))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1268 (setq count (1- count)))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1269
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1270 (defun vi-kill-char (count)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1271 "Kill COUNT chars from current point."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1272 (interactive "*p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1273 (delete-char count t) ; save in kill ring
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1274 (vi-set-last-change-command 'delete-char count t))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1275
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1276 (defun vi-transpose-objects (arg unit)
1577
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
1277 "Transpose objects.
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
1278 The following char specifies unit of objects to be
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1279 transposed -- \"c\" for chars, \"l\" for lines, \"w\" for words, \"s\" for
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1280 sexp, \"p\" for paragraph.
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1281 For the use of the prefix-arg, refer to individual functions called."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1282 (interactive "*P\nc")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1283 (if (char-equal unit ??)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1284 (progn
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1285 (message "Transpose: c(har), l(ine), p(aragraph), s(-exp), w(ord),")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1286 (setq unit (read-char))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1287 (vi-set-last-change-command 'vi-transpose-objects arg unit)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1288 (cond ((char-equal unit ?c) (transpose-chars arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1289 ((char-equal unit ?l) (transpose-lines (vi-prefix-numeric-value arg)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1290 ((char-equal unit ?p) (transpose-paragraphs (vi-prefix-numeric-value arg)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1291 ((char-equal unit ?s) (transpose-sexps (vi-prefix-numeric-value arg)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1292 ((char-equal unit ?w) (transpose-words (vi-prefix-numeric-value arg)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1293 (t (vi-transpose-objects arg ??))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1294
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1295 (defun vi-query-replace (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1296 "Query replace, use regexp version if ARG is non-nil."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1297 (interactive "*P")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1298 (let ((rcmd (if arg 'query-replace-regexp 'query-replace)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1299 (call-interactively rcmd nil)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1300
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1301 (defun vi-replace (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1302 "Replace strings, use regexp version if ARG is non-nil."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1303 (interactive "*P")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1304 (let ((rcmd (if arg 'replace-regexp 'replace-string)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1305 (call-interactively rcmd nil)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 38431
diff changeset
1306
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1307 (defun vi-adjust-window (arg position)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1308 "Move current line to the top/center/bottom of the window."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1309 (interactive "p\nc")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1310 (cond ((char-equal position ?\r) (recenter 0))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1311 ((char-equal position ?-) (recenter -1))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1312 ((char-equal position ?.) (recenter (/ (window-height) 2)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1313 (t (message "Move current line to: \\r(top) -(bottom) .(middle)")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1314 (setq position (read-char))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1315 (vi-adjust-window arg position))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1316
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1317 (defun vi-goto-column (col)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1318 "Go to given column of the current line."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1319 (interactive "p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1320 (let ((opoint (point)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1321 (beginning-of-line)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1322 (while (> col 1)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1323 (if (eolp)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1324 (setq col 0)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1325 (forward-char 1)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1326 (setq col (1- col))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1327 (if (= col 1)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1328 t
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1329 (goto-char opoint)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1330 (ding))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1331
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1332 (defun vi-name-last-change-or-macro (arg char)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 38431
diff changeset
1333 "Give name to the last change command or just defined kbd macro.
1577
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
1334 If prefix ARG is given, name last macro, otherwise name last change command.
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
1335 The following CHAR will be the name for the command or macro."
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1336 (interactive "P\nc")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1337 (if arg
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1338 (name-last-kbd-macro (intern (char-to-string char)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1339 (if (eq (car vi-last-change-command) 'vi-first-redo-insertion)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1340 (let* ((args (cdr vi-last-change-command)) ; save the insertion text
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1341 (str (buffer-substring (nth 0 args) (nth 1 args)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1342 (overwrite-p (nth 2 args))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1343 (prefix-code (nth 3 args)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1344 (vi-set-last-change-command 'vi-more-redo-insertion str
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1345 overwrite-p prefix-code)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1346 (fset (intern (char-to-string char)) vi-last-change-command)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 38431
diff changeset
1347
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1348 (defun vi-call-named-change-or-macro (count char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1349 "Execute COUNT times the keyboard macro definition named by the following CHAR."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1350 (interactive "p\nc")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1351 (if (stringp (symbol-function (intern (char-to-string char))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1352 (execute-kbd-macro (intern (char-to-string char)) count)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1353 (vi-redo-last-change-command count (symbol-function (intern (char-to-string char))))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1354
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1355 (defun vi-change-case (arg) ; could be made as an operator ?
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1356 "Change the case of the char after point."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1357 (interactive "*p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1358 (catch 'exit
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1359 (if (looking-at "[a-z]")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1360 (upcase-region (point) (+ (point) arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1361 (if (looking-at "[A-Z]")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1362 (downcase-region (point) (+ (point) arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1363 (ding)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1364 (throw 'exit nil)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1365 (vi-set-last-change-command 'vi-change-case arg) ;should avoid redundant save
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1366 (forward-char arg)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1367
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1368 (defun vi-ask-for-info (char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1369 "Inquire status info. The next CHAR will specify the particular info requested."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1370 (interactive "c")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1371 (cond ((char-equal char ?l) (what-line))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1372 ((char-equal char ?c) (what-cursor-position))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1373 ((char-equal char ?p) (what-page))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1374 (t (message "Ask for: l(ine number), c(ursor position), p(age number)")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1375 (setq char (read-char))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1376 (vi-ask-for-info char))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1377
87117
f6a9b5a0591d Remove directory part from filenames in function declarations.
Glenn Morris <rgm@gnu.org>
parents: 86243
diff changeset
1378 (declare-function c-mark-function "cc-cmds" ())
86243
4d615a83cee2 * progmodes/idlw-help.el: Require browse-url unconditionally, it
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85451
diff changeset
1379
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1380 (defun vi-mark-region (arg region)
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 1577
diff changeset
1381 "Mark region appropriately. The next char REGION is d(efun),s(-exp),b(uffer),
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1382 p(aragraph), P(age), f(unction in C/Pascal etc.), w(ord), e(nd of sentence),
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1383 l(ines)."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1384 (interactive "p\nc")
9865
9ca8b94a9f07 (vi-kill-region): Pass args to kill-region.
Karl Heuer <kwzh@gnu.org>
parents: 9842
diff changeset
1385 (cond ((char-equal region ?d) (mark-defun))
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1386 ((char-equal region ?s) (mark-sexp arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1387 ((char-equal region ?b) (mark-whole-buffer))
9865
9ca8b94a9f07 (vi-kill-region): Pass args to kill-region.
Karl Heuer <kwzh@gnu.org>
parents: 9842
diff changeset
1388 ((char-equal region ?p) (mark-paragraph))
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1389 ((char-equal region ?P) (mark-page arg))
63942
c9581f50bd50 (vi-mark-region): Use c-mark-function.
Richard M. Stallman <rms@gnu.org>
parents: 63401
diff changeset
1390 ((char-equal region ?f) (c-mark-function))
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1391 ((char-equal region ?w) (mark-word arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1392 ((char-equal region ?e) (mark-end-of-sentence arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1393 ((char-equal region ?l) (vi-mark-lines arg))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1394 (t (message "Mark: d(efun),s(-exp),b(uf),p(arag),P(age),f(unct),w(ord),e(os),l(ines)")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1395 (setq region (read-char))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1396 (vi-mark-region arg region))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1397
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1398 (defun vi-mark-lines (num)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1399 "Mark NUM of lines from current line as current region."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1400 (beginning-of-line 1)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1401 (push-mark)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1402 (end-of-line num))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1403
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1404 (defun vi-verify-spelling (arg unit)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1405 "Verify spelling for the objects specified by char UNIT : [b(uffer),
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1406 r(egion), s(tring), w(ord) ]."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1407 (interactive "P\nc")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1408 (setq prefix-arg arg) ; seems not needed
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1409 (cond ((char-equal unit ?b) (call-interactively 'spell-buffer))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1410 ((char-equal unit ?r) (call-interactively 'spell-region))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1411 ((char-equal unit ?s) (call-interactively 'spell-string))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1412 ((char-equal unit ?w) (call-interactively 'spell-word))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1413 (t (message "Spell check: b(uffer), r(egion), s(tring), w(ord)")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1414 (setq unit (read-char))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1415 (vi-verify-spelling arg unit))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1416
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1417 (defun vi-do-old-mode-C-c-command (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1418 "This is a hack for accessing mode specific C-c commands in vi-mode."
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1419 (interactive "P")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1420 (let ((cmd (lookup-key vi-mode-old-local-map
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1421 (concat "\C-c" (char-to-string (read-char))))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1422 (if (catch 'exit-vi-mode ; kludge hack due to dynamic binding
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1423 ; of case-fold-search
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1424 (if (null cmd)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1425 (progn (ding) nil)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1426 (let ((case-fold-search vi-mode-old-case-fold)) ; a hack
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1427 (setq prefix-arg arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1428 (command-execute cmd nil)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1429 nil)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1430 (progn
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1431 (vi-back-to-old-mode)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1432 (setq prefix-arg arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1433 (command-execute cmd nil)))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1434
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1435 (defun vi-quote-words (arg char)
1577
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
1436 "Quote ARG words from the word point is on with pattern specified by CHAR.
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
1437 Currently, CHAR could be [,{,(,\",',`,<,*, etc."
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1438 (interactive "*p\nc")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1439 (while (not (string-match "[[({<\"'`*]" (char-to-string char)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1440 (message "Enter any of [,{,(,<,\",',`,* as quoting character.")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1441 (setq char (read-char)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1442 (vi-set-last-change-command 'vi-quote-words arg char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1443 (if (not (looking-at "\\<")) (forward-word -1))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1444 (insert char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1445 (cond ((char-equal char ?[) (setq char ?]))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1446 ((char-equal char ?{) (setq char ?}))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1447 ((char-equal char ?<) (setq char ?>))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1448 ((char-equal char ?() (setq char ?)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1449 ((char-equal char ?`) (setq char ?')))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1450 (vi-end-of-word arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1451 (forward-char 1)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1452 (insert char))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1453
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1454 (defun vi-locate-def ()
1577
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
1455 "Locate definition in current file for the name before the point.
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
1456 It assumes a `(def..' always starts at the beginning of a line."
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1457 (interactive)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1458 (let (name)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1459 (save-excursion
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1460 (setq name (buffer-substring (progn (vi-backward-blank-delimited-word 1)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1461 (skip-chars-forward "^a-zA-Z")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1462 (point))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1463 (progn (vi-end-of-blank-delimited-word 1)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1464 (forward-char)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1465 (skip-chars-backward "^a-zA-Z")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1466 (point)))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1467 (set-mark-command nil)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1468 (goto-char (point-min))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1469 (if (re-search-forward (concat "^(def[unvarconst ]*" name) nil t)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1470 nil
53863
3c9fc6a0a6db (vi-mode): Remove extra format string argument.
Andreas Schwab <schwab@suse.de>
parents: 52401
diff changeset
1471 (ding)
3c9fc6a0a6db (vi-mode): Remove extra format string argument.
Andreas Schwab <schwab@suse.de>
parents: 52401
diff changeset
1472 (message "No definition for \"%s\" in current file." name)
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1473 (set-mark-command t))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1474
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1475 (defun vi-split-open-line (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1476 "Insert a newline and leave point before it.
1577
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 841
diff changeset
1477 With ARG, inserts that many newlines."
6
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1478 (interactive "*p")
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1479 (vi-goto-insert-state 1
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1480 (list (function (lambda (arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1481 (let ((flag (and (bolp) (not (bobp)))))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1482 (if flag (forward-char -1))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1483 (while (> arg 0)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1484 (save-excursion
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1485 (insert ?\n)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1486 (if fill-prefix (insert fill-prefix)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1487 (setq arg (1- arg)))
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1488 (if flag (forward-char 1))))) arg)
058329560a88 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1489 t))
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 258
diff changeset
1490
18383
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 17979
diff changeset
1491 (provide 'vi)
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 17979
diff changeset
1492
60902
7160fe3a7ef1 find-file-hooks -> find-file-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53863
diff changeset
1493 ;; arch-tag: ac9bdac3-8acb-4ddd-bdae-c6dd873153b3
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 258
diff changeset
1494 ;;; vi.el ends here