
(defvar vip-emacs-local-map nil "\
Local map used in emacs mode. (buffer specific)")

(defvar vip-insert-local-map nil "\
Local map used in insert command mode. (buffer specific)")

(make-variable-buffer-local (quote vip-emacs-local-map))

(make-variable-buffer-local (quote vip-insert-local-map))

(defconst vip-insert-mode-vi-map t "\
* Whether you want the vi map in insert mode or want to use emacs mode maps.
Buffer specific so that that you can choose depending on the mode")

(make-variable-buffer-local (quote vip-insert-mode-vi-map))

(defvar vip-current-mode nil "\
Current mode.  One of emacs-mode, vi-mode, insert-mode.")

(make-variable-buffer-local (quote vip-current-mode))

(setq-default vip-current-mode (quote emacs-mode))

(defvar vip-emacs-mode-line-buffer-identification nil "\
value of mode-line-buffer-identification in emacs-mode.")

(make-variable-buffer-local (quote vip-emacs-mode-line-buffer-identification))

(setq-default vip-emacs-mode-line-buffer-identification (quote ("Emacs: %17b")))

(defvar vip-current-major-mode nil "\
vip-current-major-mode is the major-mode vi considers it is now.
(buffer specific)")

(make-variable-buffer-local (quote vip-current-major-mode))

(defconst vip-toggle-key "" "\
*The key which will be used to change modes from emacs to vi and back.
In insert mode, this will also function as Meta")

(defconst vip-ESC-key "" "\
key used to ESC")

(defconst vip-no-multiple-ESC t "\
*If true, multiple ESC in vi mode will cause bell to ring.
_ is then mapped to Meta")

(defconst vip-help-in-insert-mode nil "\
*if t then C-h is bound to help-command in insert mode, if nil then it is
bound to delete-backward-char.")

(defvar vip-need-to-finish-change nil "\
Change command still need to be finished.
(buffer specific)")

(make-variable-buffer-local (quote vip-need-to-finish-change))

(defvar vip-need-to-exit-overwrite nil "\
Overwrite mode needs to aborted.(buffer specific)")

(make-variable-buffer-local (quote vip-need-to-exit-overwrite))

(defvar vip-change-beg-point nil "\
Remember point where change is to start.(buffer specific)")

(set-default (quote vip-change-beg-point) (make-marker))

(make-variable-buffer-local (quote vip-change-beg-point))

(defvar vip-change-end-point nil "\
Remember point where change is to end.(buffer specific)")

(set-default (quote vip-change-end-point) (make-marker))

(make-variable-buffer-local (quote vip-change-end-point))

(defvar vip-cted nil "\
cted - Control T'ed - keep track of whether C-t has been pressed.
(buffer specific)")

(make-variable-buffer-local (quote vip-cted))

(defvar vip-current-indent 0 "\
Preserve the indent value, used during ^^D.(buffer specific)")

(make-variable-buffer-local (quote vip-current-indent))

(defvar vip-preserve-indent nil "\
Whether to preserve the indent, used by ^^D.(buffer specific)")

(make-variable-buffer-local (quote vip-preserve-indent))

(defconst vip-auto-indent nil "\
* Autoindent if t.")

(defconst vip-shift-width 8 "\
* the shiftwidth variable")

(defvar vip-insert-point nil "\
Remember insert point as a marker. (buffer specific)")

(set-default (quote vip-insert-point) (make-marker))

(make-variable-buffer-local (quote vip-insert-point))

(defvar vip-com-point nil "\
Remember com point as a marker. (buffer specific)")

(set-default (quote vip-com-point) (make-marker))

(make-variable-buffer-local (quote vip-com-point))

(defvar vip-d-com nil "\
If non-nil, it's value is a list (M-COM VAL COM), and is used to
re-execute last destrcutive command")

(defvar vip-d-char nil "\
The character remembered by the vi \"r\" command")

(defvar vip-use-register nil "\
name of register to store deleted or yanked strings.")

(defvar vip-f-char nil "\
for use by \";\" command")

(defvar vip-F-char nil "\
for use by \".\" command")

(defvar vip-f-forward nil "\
for use by \";\" command")

(defvar vip-f-offset nil "\
for use by \";\" command")

(defvar vip-s-string nil "\
last search string")

(defvar vip-s-forward nil "\
if t, search is forward.")

(defconst vip-case-fold-search nil "\
*if t, search ignores cases.")

(defconst vip-re-search t "\
*if t, search is reg-exp search, otherwise vanilla search.")

(defconst vip-re-query-replace t "\
*If t then do regexp replace, if nil then do string replace.")

(defconst vip-re-replace t "\
*If t then do regexp replace, if nil then do string replace.")

(defconst vip-ex-style-motion t "\
*l,h do not cross lines, ESC backs up etc.")

(defconst vip-buffer-search-char 103 "\
* Key bound for buffer-searching")

(defconst vip-search-wrap-around-t t "\
*if t, search wraps around")

(defconst vip-heading-start (concat "^\\s-*(\\s-*defun\\s-\\|" "^{\\s-*$\\|^[_a-zA-Z][^()]*[()].*{\\s-*$\\|" "^\\s-*class.*{\\|^\\s-*struct.*{\\|^\\s-*enum.*{\\|" "^\\\\[sb][a-z]*{.*}\\s-*$\\|" "^@node\\|@table\\|^@m?enu\\|^@itemize\\|^@if") "\
* Regexps for Headings. Used by [[, ]].")

(defconst vip-heading-end "^}\\|^\\\\end{\\|^@end \\|)

[ 	
]*" "* Regexps to end Headings/Sections")

(defvar vip-word-chars-alpha "a-zA-Z0-9_")

(defvar vip-word-chars-nonalpha "^a-zA-Z0-9_ 	
")

(defvar vip-word-chars-separator " 	
")

(defvar vip-history nil)

(defvar vip-search-history nil)

(defvar vip-ex-history nil)

(defconst vip-want-history nil "\
* History for vi searches and ex commands")

(defconst vip-make-cc-quit nil "\
* If set, will call set-input-mode to make ^C the quit character.
However, there is no quit-char option for older emacsen. Moreover, the
first two options may need to change from system to system")

(defvar vip-last-keyboard-macro nil "\
Remember the last register used for keyboard macro")

(defconst vip-filename-complete nil "\
*If t then enable filename completion.")

(defvar vip-ex-last-shell-com nil "\
last shell command executed by :! command")

(defvar vip-last-shell-com nil "\
last shell command executed by ! command")

(defvar vip-inhibit-startup-message nil)

(defconst vip-always t "\
* Default vip-mode for files and buffers")

(defconst vip-custom-file-name "~/.vip" "\
* Customisation file")

(defvar vip-is-vi nil "\
Ultimate compatibility test")

(defvar vip-quote-string "> " "\
string inserted at the beginning of region")

(defvar vip-tags-file-name "TAGS")

(if (not (boundp (quote running-epoch))) (setq running-epoch nil))

(global-set-key vip-toggle-key (quote vip-change-mode-to-vi))

(defun vip-redefine-toggle-key (key) "\
Redefine the toggle key to be the ARG" (byte-code "!	#\"	#" [key vip-mode-map nil vip-toggle-key global-unset-key define-key global-set-key vip-change-mode-to-vi vip-change-mode-to-emacs] 7))

(defmacro vip-loop (count body) "(COUNT BODY) Execute BODY COUNT times." (byte-code "DCE	DEFE" [count body let while > 0 setq 1-] 9))

(defun vip-push-mark-silent (&optional location) "\
Set mark at LOCATION (point, by default) and push old mark on mark ring.
No message." (byte-code " ?
 +  !	B	G
V+ 
	\"@\"
S	\"\"2 `!" [nil mark-ring mark-ring-max location mark copy-marker mark-marker move-marker nthcdr setcdr set-mark] 9))

(defun vip-goto-col (arg) "\
Go to ARG's column." (interactive "P") (byte-code "Ĉ	!	! iTV !)
\" `\" S!
4 
#*" [val arg com vip-com-point nil vip-p-val vip-getcom end-of-line error "" move-marker beginning-of-line forward-char vip-execute-com vip-goto-col] 11))

(defun vip-refresh-mode-line nil "\
Redraw mode line." (byte-code " !" [set-buffer-modified-p buffer-modified-p] 3))

(defun vip-copy-keymap (map) (byte-code "?
   !" [map make-sparse-keymap copy-keymap] 3))

(defun vip-change-mode (new-mode) "\
Change mode to NEW-MODE.  NEW-MODE is either emacs-mode, vi-mode,
or insert-mode." (byte-code "=o 	=3 É=  \" `\" 0 n?0 !c 	=T  =?Q !  !	c  
 !	!! = 	= `\" 
 !	 	= 	 =? ! !	 ! `\"!	!	!	#	#  = !! " [new-mode vip-current-mode vip-need-to-exit-overwrite t vip-need-to-finish-change vip-insert-point vip-ex-style-motion vip-mode-map vip-emacs-local-map vip-insert-local-map vip-emacs-mode-line-buffer-identification mode-line-buffer-identification vip-ESC-key vip-toggle-key vi-mode insert-mode vip-finish-change vip-copy-region-as-kill vip-repeat-insert-command backward-char 1 current-local-map message "Warning: Local map changed under vi mode" vip-copy-keymap vip-change-mode-line "Vi:   " use-local-map emacs-mode move-marker "Warning: Local map changed under insert mode!!!" "Warning: From insert mode to insert mode!!!" "Insert" define-key vip-exit-insert-mode vip-alternate-ESC vip-insert-mode-bindings "Emacs:" vip-refresh-mode-line] 34))

(set (quote vip-insert-mode-map) (make-sparse-keymap))

(define-key vip-insert-mode-map "" (quote vip-insert-quit))

(define-key vip-insert-mode-map "" (quote self-insert-command))

(define-key vip-insert-mode-map "" (quote quoted-insert))

(define-key vip-insert-mode-map "" (if vip-help-in-insert-mode (quote help-command) (quote delete-backward-char)))

(define-key vip-insert-mode-map "	" (quote self-insert-command))

(define-key vip-insert-mode-map "" (quote vip-delete-backward-word))

(define-key vip-insert-mode-map "" (quote vip-erase-line))

(define-key vip-insert-mode-map "" (quote vip-forward-indent))

(define-key vip-insert-mode-map "" (quote vip-backward-indent))

(define-key vip-insert-mode-map "" (quote delete-backward-char))

(or (fboundp (quote vip-insert-mode-bindings)) (defun vip-insert-mode-bindings nil (if vip-insert-mode-vi-map (progn (vip-rebind-emacs-keys vip-insert-local-map (quote self-insert-command)) (vip-rebind-other-keys vip-insert-local-map (quote self-insert-command)) (vip-add-keymap vip-insert-mode-map vip-insert-local-map) (if vip-auto-indent (progn (define-key vip-insert-local-map "" (quote vip-autoindent)) (define-key vip-insert-local-map "
" (quote vip-autoindent)))) (if vip-is-vi (define-key vip-insert-local-map "" (quote self-insert-command)))))))

(defun vip-add-keymap (mapsrc mapdst) "\
Add contents of mapsrc to mapdst. It is assumed that mapsrc is sparse" (byte-code "A\"" [mapsrc mapcar (lambda (p) (byte-code "	@!	A#" [mapdst p define-key char-to-string] 5))] 3))

(defun vip-copy-region-as-kill (beg end) "\
If BEG and END do not belong to the same buffer, it copies empty region." (byte-code "" [nil (byte-code "	\"" [beg end copy-region-as-kill] 3) ((error (byte-code "\"" [beg copy-region-as-kill] 3)))] 3))

(defun vip-change-mode-line (string) "\
Assuming that the mode line format contains the string \"Emacs:\", this
function replaces the string by \"Vi:   \" etc." (byte-code "	\" 
 	PC" [mode-line-buffer-identification string vip-emacs-mode-line-buffer-identification string= "Emacs:" " %17b"] 3))

(defun vip-mode nil "\
Turn on VIP emulation of VI." (interactive) (byte-code "Ĉ?H ! !ceb!@ !!
qdbc )
!!!)p!! " [vip-inhibit-startup-message t buf vip-custom-file-name nil switch-to-buffer "VIP Startup Message" erase-buffer substitute-command-keys "VIP is a VI emulation package for GNU Emacs.VIP provides most 
VI and EX commands.The important differences from VI are:
    1. VI EXIT functions (e.g. :wq) work on INDIVIDUAL files.
    2. \"ZZ\" and ^X^C EXITS EMACS.
    3. \"u\" will undo. Repeat undo by \".\". Another u changes direction.
    5. ^X will invoke emacs functions; ^Z will toggle vi/emacs modes.
    6. Emacs Meta functions are invoked by \"_\" instead of ESC.
    7. Try ^C,^G repeatedly and \\[abort-recursive-edit] if something strange happens. 
You can get more information on VIP by:
    1.  Typing `M-x info' and selecting menu item \"vip\".
    2.  Printing VIP manual which can be found as GNU/man/vip.texinfo
    3.  Printing VIP Reference Card which can be found as GNU/etc/vipcard.tex
Ultimate compatibilty: Execute vip-become-vi. Emacs is suppressed.
    
This startup message appears whenever you load VIP unless you type `y' now.
Type `n' to quit this window for now.
" y-or-n-p "Inhibit VIP startup message? " find-file-noselect substitute-in-file-name "
(setq vip-inhibit-startup-message t)
" save-buffer kill-buffer message "VIP startup message inhibited." sit-for 2 "" vip-change-mode-to-vi] 14))

(defun vip-exit-insert-mode nil "\
Exit from insert mode to vi mode." (interactive) (byte-code "!" [nil vip-change-mode vi-mode] 2))

(defun vip-insert-quit nil "\
Exit from insert mode to vi mode and do a keyboard quit." (interactive) (byte-code "  " [nil vip-exit-insert-mode vip-keyboard-quit] 3))

(defun vip-change-mode-to-vi nil "\
Change mode to vi mode." (interactive) (byte-code "!" [nil vip-change-mode vi-mode] 2))

(defun vip-change-mode-to-insert nil "\
Change mode to insert mode." (interactive) (byte-code "!" [nil vip-change-mode insert-mode] 2))

(defun vip-change-mode-to-emacs nil "\
Change mode to emacs mode." (interactive) (byte-code "!" [nil vip-change-mode emacs-mode] 2))

(defun vip-get-editor-command (l-map g-map &optional str) "\
Read characters from keyboard until an editor command is formed, using
local keymap L-MAP and global keymap G-MAP.  If the command is a
self-insert-command, the character just read is returned instead.  Optional
string STR is used as initial input string." (byte-code "? \" r !\"	?[ \"
?= ǂX 
!M 
!#X 
=W X 
 	! \"
?x 	!# 
! 	
!# 	!# 	=  	+" [char l-bind g-bind str last-command-char l-map g-map nil string= "" string-to-char vip-binding-of keymapp vip-get-editor-command vip-string-tail self-insert-command] 19))

(defun vip-binding-of (char map) "\
Return key-binding of CHAR under keymap MAP.  It is nil if the binding
is void, or a command, or a keymap" (byte-code "	< 
	\"A 	
H? ÂB !. 9* K+ B K?9 !@ A ))" [val map char nil t fun assq keymapp] 4))

(defun vip-escape-to-emacs (arg &optional char) "\
Escape to emacs mode and execute one emacs command and then return to
vi mode.  ARG is used as the prefix value for the executed command.  If
CHAR is given it becomes the first character of the command." (interactive "P") (byte-code "Ȉp 
 Y\\ ȉ	
\"!S !VO !cS9 )X \" ȉ+" [com buff first t char unread-command-char prefix-arg arg nil vip-emacs-local-map global-map count 0 vip-get-editor-command numberp vip-p-val char-to-string command-execute] 8))

(defun vip-message-conditions (conditions) "\
Print CONDITIONS as a message." (byte-code "	@	A
? \" 
!# *" [case conditions msg message "%s" "%s %s" prin1-to-string ding] 6))

(defun vip-ESC (arg) "\
Emulate ESC key in Emacs mode. Prevent multiple escape keystrokes if
vip-no-multiple-ESC is true. In that case @ will be bound to ESC" (interactive "P") (byte-code "È?
 	= 
\"  " [vip-no-multiple-ESC vip-current-mode arg nil insert-mode vip-escape-to-emacs 27 ding] 3))

(defun vip-alternate-ESC (arg) "\
ESC key without checking for multiple keystrokes" (interactive "P") (byte-code "\"" [arg nil vip-escape-to-emacs 27] 3))

(defun vip-ctl-c (arg) "\
Emulate C-c key in Emacs mode." (interactive "P") (byte-code "\"" [arg nil vip-escape-to-emacs 3] 3))

(defun vip-ctl-x (arg) "\
Emulate C-x key in Emacs mode." (interactive "P") (byte-code "\"" [arg nil vip-escape-to-emacs 24] 3))

(defun vip-ctl-h (arg) "\
Emulate C-h key in Emacs mode." (interactive "P") (byte-code "\"" [arg nil vip-escape-to-emacs 8] 3))

(defun vip-prefix-arg-value (char value com) "\
Compute numeric prefix arg value.  Invoked by CHAR.  VALUE is the value
obtained so far, and COM is the command part obtained so far." (byte-code "Y	 X( 	! 	 \"Z\\r  	6 
BUH 
!r7 " [char value prefix-arg com unread-command-char 48 57 * numberp 0 10 85 vip-describe-arg] 6))

(defun vip-prefix-arg-com (char value com) "\
Vi operator as prefix argument." (byte-code "K 
UK 
UK 
UK 
UK 
UK 
UK 
UK 
UK 
UK 
UK 
UK 
U n 
U[ 
Ua !
Bŉ 
Uw 
U 
rŉ 
U r\\r 
U rX X X X  !r) 
r )!	B
U !r 

@U@U=@A	B
U0!4!ŉ*	?GI		ŉ\"b	B!\"r	B!\"~ \"	B!\"	B!\"	B!\"	B!\"	B!!" [cont t char vip-buffer-search-char com nil reg vip-use-register prefix-arg value unread-command-char 99 100 121 33 60 62 61 35 114 82 34 error "" 128 65 122 49 57 atom 85 vip-describe-arg vip-region vip-Region 1 equal (99 . 99) vip-line 67 (100 . 100) 68 (100 . 121) vip-yank-defun (121 . 121) 89 (60 . 60) (62 . 62) (33 . 33) (61 . 61)] 24))

(defun vip-describe-arg (arg) (byte-code "
!
!?% 	? !\" 	\"6 	?1 \"6 	#*" [val com arg nil vip-P-val vip-getcom message "Value is nil, and commmand is nil." "Value is nil, and command is %c." "Value is %d, and command is nil." "Value is %d, and command is %c."] 9))

(defun vip-digit-argument (arg) "\
Begin numeric argument for the next command." (interactive "P") (byte-code "
: 
A #" [last-command-char nil arg vip-prefix-arg-value] 4))

(defun vip-command-argument (arg) "\
Accept a motion command as an argument." (interactive "P") (byte-code "Ï" [nil conditions (byte-code "	? \" 	: 	@\" 	! 	\" !	?+ B 	:5 	AB 	!? B !#" [last-command-char arg nil t vip-prefix-arg-com numberp error "strange arg"] 8) ((quit (byte-code "\"" [vip-use-register nil signal quit] 3)))] 3))

(defun vip-p-val (arg) "\
Get value part of prefix-argument ARG." (byte-code "?	  : @?  @ " [arg t 1] 1))

(defun vip-P-val (arg) "\
Get value part of prefix-argument ARG." (byte-code ":
 @ " [arg t] 1))

(defun vip-getcom (arg) "\
Get com part of prefix-argument ARG." (byte-code "?	  : A " [arg nil t] 1))

(defun vip-getCom (arg) "\
Get com part of prefix-argument ARG and modify it." (byte-code "	!\" Ƃ& \" Ȃ& \"% ʂ& )" [com arg t vip-getcom equal 99 67 100 68 121 89] 6))

(defun vip-append-to-register (reg start end) "\
Append region to text in register REG.
START and END are buffer positions indicating what to append." (byte-code "!	 	
\"P\"" [reg start end set-register get-register "" buffer-substring] 7))

(defun vip-execute-com (m-com val com) "\
(M-COM VAL COM)  Execute command COM. The list (M-COM VAL COM) is set
to vip-d-com for later use by vip-repeat" (byte-code "	
 
U `\" 
[U! `\" 
U+ 
[U ! `\"	u 	XF 	XS 	 `$q 	X\\ 	Xj 	\\ `#q ĉ!ĉ `\")!
U     
U 	 	X 	X 	`$ 	X 	X 	\\`# ĉ!ĉ=  ĉ`\" l n? ! 
Uv! `\"	M	X	X+	 `$I	X4	XB	\\ `#Iĉ!ĉ=YZĉ `\"	=o)  
U		X	X	`$	X	X	\\`#ĉ!ĉĉ`\"b 
U%! `\"		X	X	 `$	X	X	\\ `#ĉ!ĉĉ `\")b 
U/
[UX! `\" `
UP!
R
$) 
U}! `\" `Vr  `#) 
U! `\" `[#)b 
U! `\" `#)b 
Y
Z! 
U `\"ŉ@ ЁA #BB #
UĂ-	
U
U
U'
[(
F)" [reg vip-use-register com vip-com-point nil t last-command this-command vip-ex-style-motion m-com vip-last-shell-com vip-shift-width vip-buffer-search-char vip-s-string vip-s-forward vip-want-history vip-search-history vip-d-com val 99 vip-change vip-change-subr 67 set-mark vip-enlarge-region mark 97 122 copy-to-register 65 90 vip-append-to-register 32 error "" delete-region open-line 1 vip-change-mode-to-insert yank 100 d-command kill-region backward-char 68 D-command vip-line back-to-indentation 121 copy-region-as-kill 89 33 shell-command-on-region vip-read-string "!" 61 exchange-point-and-mark indent-region 60 indent-rigidly 62 128 vip-special-prefix-com buffer-substring put default vip-search] 76))

(defun vip-repeat (arg) "\
(ARG)  Re-excute last destructive command.  vip-d-com has the form
(COM ARG CH REG), where COM is the command to be re-executed, ARG is the
argument for COM, CH is a flag for repeat, and REG is optional and if exists
is the name of the register for COM." (interactive "P") (byte-code "Ȉ=  ? 
@!
AA@
8?( 
A@	?1 !	B\"," [last-command m-com vip-d-com val arg com reg vip-use-register nil vip-undo vip-undo-more vip-P-val 3 error "No previous command to repeat." funcall] 7))

(defun vip-special-prefix-com (char) "\
This command is invoked interactively by the key sequence #<char>" (byte-code "U 	`^	`]\"J U\" 	`^	`]\"J U1 	! J U@ 	! J UJ 	`\"" [char vip-com-point 99 downcase-region 67 upcase-region 103 set-mark vip-global-execute 113 vip-quote-region 115 spell-region] 9))

(defun vip-undo nil "\
Undo previous change." (interactive) (byte-code "È!  !l n? !?% !)͉" [modified t this-command nil message "undo!" buffer-modified-p undo-start undo-more 2 backward-char 1 set-buffer-modified-p vip-undo] 8))

(defun vip-undo-more nil "\
Continue undoing previous changes." (byte-code "!!l n? !Ɖ" [this-command message "undo more!" undo-more 1 backward-char vip-undo] 5))

(defun vip-string-tail (str) (byte-code "?	 \"  O" [str nil string= "" 1] 4))

(defun vip-yank-defun nil (byte-code " ` \"" [mark-defun copy-region-as-kill mark] 5))

(defun vip-enlarge-region (beg end) "\
Enlarge region between BEG and END." (byte-code "	W b	! 	b!  m?# n?) ! 	V5  " [beg end set-mark beginning-of-line exchange-point-and-mark next-line 1] 8))

(defun vip-global-execute nil "\
Call last keyboad macro for each line in the region." (byte-code "` V	    ` W$ !   " [mark exchange-point-and-mark beginning-of-line call-last-kbd-macro forward-line 1] 10))

(defun vip-quote-region nil "\
Quote region by inserting the user supplied string at the beginning of
each line in the region." (byte-code "\"	\"  	)` \"` V$  c !` W7 nG c !/ " [vip-quote-string str vip-read-string "quote-string:" string= "" vip-enlarge-region mark exchange-point-and-mark beginning-of-line forward-line 1] 13))

(defun vip-end-with-a-newline-p (string) "\
Check if the string ends with a newline." (byte-code "\" 		GSHU" [text string string= "" 10] 3))

(defun vip-read-string-complete nil (interactive) (byte-code "	$" [completer-words default-directory nil completer-complete-goto "^ 	
\"" read-file-name-internal] 5))

(defun vip-read-string-help nil (interactive) (byte-code " " [nil completer-help] 2))

(defun vip-read-string (prompt &optional init history-var) (byte-code "	!	#	#	#	#	
#3 	#	#׏)" [save-minibuffer-local-map minibuffer-local-map vip-ESC-key vip-filename-complete str copy-keymap define-key "" delete-backward-char "" delete-backward-word "" abort-recursive-edit "" quoted-insert exit-minibuffer "	" vip-read-string-complete "?" vip-read-string-help nil conditions (byte-code "	 
 
 # \"" [str vip-want-history history-var prompt init read-with-history-in vip-history read-string] 4) ((quit (byte-code "	\"" [minibuffer-local-map save-minibuffer-local-map nil signal quit] 3)))] 11))

(defun vip-repeat-insert-command nil "\
This function is called when mode changes from insertion mode to
vi command mode.  It will repeat the insertion command if original insertion
command was invoked with argument > 1." (byte-code "	@	A@
 
V# 
SE!
E*" [i-com vip-d-com val nil 1 114 vip-repeat] 4))

(defun vip-insert (arg) "\
" (interactive "P") (byte-code "ň	!	!E
, V(  S ).  *" [val arg com vip-d-com count nil vip-p-val vip-getcom vip-insert 114 0 yank vip-change-mode-to-insert] 6))

(defun vip-append (arg) "\
Append after point." (interactive "P") (byte-code "ň	!	!El?  
\"7 V3  S\" )9  *" [val arg com vip-d-com count nil vip-p-val vip-getcom vip-append 114 forward-char equal 0 yank vip-change-mode-to-insert] 8))

(defun vip-Append (arg) "\
Append at end of line." (interactive "P") (byte-code "ň	!	!E 
\"2 V.  S )4  *" [val arg com vip-d-com count nil vip-p-val vip-getcom vip-Append 114 end-of-line equal 0 yank vip-change-mode-to-insert] 8))

(defun vip-Insert (arg) "\
Insert before first non-white." (interactive "P") (byte-code "ň	!	!E 
\"2 V.  S )4  *" [val arg com vip-d-com count nil vip-p-val vip-getcom vip-Insert 114 back-to-indentation equal 0 yank vip-change-mode-to-insert] 8))

(defun vip-open-line (arg) "\
Open line below." (interactive "P") (byte-code "Ɉ	!	!E 
\"F VB  !6 ȉj S )\\  !Y ȉj )*" [val arg com vip-d-com col count vip-auto-indent vip-cted t nil vip-p-val vip-getcom vip-open-line 114 current-indentation equal 0 end-of-line newline 1 yank vip-change-mode-to-insert] 11))

(defun vip-Open-line (arg) "\
Open line above." (interactive "P") (byte-code "Ɉ	!	!E 
\"F VB  !6 ȉj S )\\  !Y ȉj )*" [val arg com vip-d-com col count vip-auto-indent vip-cted t nil vip-p-val vip-getcom vip-Open-line 114 current-indentation equal 0 beginning-of-line open-line 1 yank vip-change-mode-to-insert] 11))

(defun vip-open-line-at-point (arg) "\
Open line at point." (interactive "P") (byte-code "ň	!	!E
\"3 V/ ! S )9 ! *" [val arg com vip-d-com count nil vip-p-val vip-getcom vip-open-line-at-point 114 equal 0 open-line 1 yank vip-change-mode-to-insert] 8))

(defun vip-substitute (arg) "\
Substitute characters." (interactive "P") (byte-code "Ĉ	!	!`!!
\"!  `\"&  `\"E*" [val arg com vip-d-com nil vip-p-val vip-getcom set-mark forward-char equal 114 vip-change-subr mark vip-change vip-substitute] 12))

(defun vip-substitute-line (arg) "\
Substitute lines." (interactive "p") (byte-code "B!" [arg nil vip-line 67] 3))

(defun vip-overwrite-execute (&optional arg exclusive limit) (interactive) (byte-code "ň `V ! ŉ?# 
 \"!~ 	M lA !!c!e !c	?e l?b !e Én ` U{ ŉ!  
\" +" [com overrun cont t limit nil vip-need-to-exit-overwrite vip-insert-local-map global-map exclusive arg set-mark vip-get-editor-command numberp forward-char 1 char-to-string delete-char mark vip-change-mode-line "Insert" vip-refresh-mode-line command-execute] 15))

(defun vip-change-mode-to-overwrite (&optional arg exclusive limit) "\
Change mode to overwrite mode until optional limit is reached.
Also implement actual overwrite mode, eventually overwriting multiple
lines if exclusive is set to true." (interactive) (byte-code " ! ˉ#
)" [vip-need-to-exit-overwrite nil echo echo-keystrokes arg exclusive limit vip-change-mode-to-insert vip-change-mode-line "Replac" vip-refresh-mode-line 0 vip-overwrite-execute] 7))

(defun vip-overwrite (arg) "\
" (interactive "P") (byte-code "ƈ	!	!E
, V(  S )3 ɉ	!*" [val arg com vip-d-com count last-command nil vip-p-val vip-getcom vip-overwrite 114 0 yank vip-change-mode-to-overwrite] 6))

(defun vip-line (arg) (byte-code "	@	A`\"S!
#*" [val arg com vip-com-point move-marker next-line vip-execute-com vip-line] 6))

(defun vip-yank-line (arg) "\
Yank ARG lines (in vi's sense)" (interactive "P") (byte-code "	!B!)" [val arg nil vip-p-val vip-line 89] 4))

(defun vip-region (arg) (interactive "P") (byte-code "Ĉ	!	!`\" 
#*" [val arg com vip-com-point nil vip-P-val vip-getcom move-marker exchange-point-and-mark vip-execute-com vip-region] 8))

(defun vip-Region (arg) (interactive "P") (byte-code "Ĉ	!	!`\" 
#*" [val arg com vip-com-point nil vip-P-val vip-getCom move-marker exchange-point-and-mark vip-execute-com vip-Region] 8))

(defun vip-replace-char (arg) "\
Replace the following ARG chars by the character read." (interactive "P") (byte-code "Ĉl n !	!	!l !E
\"4 5 r\"+" [val arg com at-end nil vip-d-com vip-d-char error "No character to replace" vip-p-val vip-getcom backward-char 1 vip-replace-char 114 vip-replace-char-subr equal] 8))

(defun vip-replace-char-subr (char arg) (byte-code "\"V  [V2 =' c) cS )!" [arg t vip-d-char char count delete-char 0 13 "
" backward-char] 4))

(defun vip-replace-string nil "\
Replace string.  If you supply null string as the string to be replaced,
the query replace mode will toggle between string replace and regexp replace." (interactive) (byte-code "	 Ă !\"/ 	?	) ˂* \"!H 	? \"!\"H \"!\")" [str vip-re-replace nil vip-read-string "Replace regexp: " "Replace string: " string= "" message format "Replace mode changed to %s." "regexp replace" "string replace" replace-regexp "Replace regexp \"%s\" with: " replace-string "Replace \"%s\" with: "] 13))

(defun vip-forward-char (arg) "\
Move point right ARG characters (left if ARG negative).On reaching end
of line, stop and signal error." (interactive "P") (byte-code "ň	!	!
 `\"A l n% !( !
2 
#l> !!N !
N 
#*" [val arg com vip-com-point vip-ex-style-motion nil vip-p-val vip-getcom move-marker error "" forward-char vip-execute-com vip-forward-char backward-char 1] 13))

(defun vip-backward-char (arg) "\
Move point left ARG characters (right if ARG negative).  On reaching
beginning of line, stop and signal error." (interactive "P") (byte-code "ň	!	!
 `\"1 n! !$ !
. 
#> !
> 
#*" [val arg com vip-com-point vip-ex-style-motion nil vip-p-val vip-getcom move-marker error "" backward-char vip-execute-com vip-backward-char] 11))

(defun vip-skip-separators (forward) (byte-code " !!  !, ! !* !,  " [forward skip-chars-forward " 	" looking-at "
" forward-char skip-chars-backward backward-char] 10))

(defun vip-forward-word-kernel (val) (byte-code "VA 	Q! 	!!8 Q!( !8 Q!8 !!S  " [val vip-word-chars-alpha t vip-word-chars-separator vip-word-chars-nonalpha 0 looking-at "[" "]" skip-chars-forward vip-skip-separators] 11))

(defun vip-forward-word (arg) "\
Forward word." (interactive "P") (byte-code "Ĉ	!	!
 `\"!
W 
U% 
[U. !Q 
U8 
[UA !Q 
UK 
[UQ !
#*" [val arg com vip-com-point nil vip-p-val vip-getcom move-marker vip-forward-word-kernel 99 skip-chars-backward " 	
" 121 "
" 100 vip-execute-com vip-forward-word] 11))

(defun vip-forward-Word (arg) "\
Forward word delimited by white character." (interactive "P") (byte-code "ƈ	!	!
 `\"V+ !!S )
m 
U; 
[UD !g 
UN 
[UW !g 
Ua 
[Ug !
#*" [val arg com vip-com-point count t nil vip-p-val vip-getcom move-marker 0 skip-chars-forward "^ 	
" vip-skip-separators 99 skip-chars-backward " 	
" 121 "
" 100 vip-execute-com vip-forward-Word] 12))

(defun vip-end-of-word-kernel (val) (byte-code "	Q! 	Q!)   !' !L  0 ÂL !? 
? =E !! *" [was-sep vip-word-chars-separator next-sep nil val looking-at "[" "]" forward-char vip-end-of-word-p "[ 	]*
" skip-chars-forward " 	
" vip-one-char-word-p vip-forward-word-kernel 1 vip-skip-separators backward-char] 13))

(defun vip-end-of-word-p nil (byte-code "m 2 	Q!  	Q!1 
Q!1  	R!)" [t vip-word-chars-alpha vip-word-chars-nonalpha vip-word-chars-separator looking-at "[" "]" forward-char "[^"] 10))

(defun vip-one-char-word-p nil (byte-code "	Q!7 o ɉ  o# 	Q!3 !	Q!4 j Q!j oJ ɉL  oX 	R!i !	R!j ))" [step vip-word-chars-alpha nil vip-word-chars-nonalpha vip-word-chars-separator 2 looking-at "[" "]" 1 backward-char "[^" forward-char] 14))

(defun vip-end-of-word (arg) "\
Move point to end of current word." (interactive "P") (byte-code "ň	!	!
 `\"V' !S )
5  
#*" [val arg com vip-com-point count nil vip-p-val vip-getcom move-marker 0 vip-end-of-word-kernel 1 forward-char vip-execute-com vip-end-of-word] 9))

(defun vip-end-of-Word (arg) "\
Forward to end of word delimited by white character." (interactive "P") (byte-code "ƈ	!	!
 `\"V> !Q$?. db! S )
L  
#*" [val arg com vip-com-point count vip-word-chars-separator nil t vip-p-val vip-getcom move-marker 0 vip-end-of-word-kernel 1 re-search-forward "[" "]" skip-chars-backward " 	
" backward-char forward-char vip-execute-com vip-end-of-Word] 12))

(defun vip-backward-word-kernel (val) (byte-code "Vc  	Q! 	!Z 
Q!N  ! 	Q!: 	!K Q!I !K  Z Q!Z !S  " [val vip-word-chars-alpha vip-word-chars-separator nil vip-word-chars-nonalpha t 0 backward-char looking-at "[" "]" skip-chars-backward forward-char vip-skip-separators] 17))

(defun vip-backward-word (arg) "\
Backward word." (interactive "P") (byte-code "ň	!	!
,  !)  `\"+  )!
: 
#*" [val arg com i vip-com-point nil vip-p-val vip-getcom backward-char looking-at "
" move-marker forward-char vip-backward-word-kernel vip-execute-com vip-backward-word] 12))

(defun vip-backward-Word (arg) "\
Backward word delimited by white character." (interactive "P") (byte-code "ƈ	!	!
,  !)  `\"+  )VE !!S/ )
P 
#*" [val arg com i vip-com-point count nil vip-p-val vip-getcom backward-char looking-at "
" move-marker forward-char 0 vip-skip-separators skip-chars-backward "^ 	
" vip-execute-com vip-backward-Word] 13))

(defun vip-beginning-of-line (arg) "\
Go to beginning of line." (interactive "P") (byte-code "Ĉ	!	!
 `\"!
  
#*" [val arg com vip-com-point nil vip-p-val vip-getcom move-marker beginning-of-line vip-execute-com vip-beginning-of-line] 8))

(defun vip-bol-and-skip-white (arg) "\
Beginning of line at first non-white character." (interactive "P") (byte-code "Ĉ	!	!
 `\"S!
! 
#*" [val arg com vip-com-point nil vip-p-val vip-getcom move-marker forward-to-indentation vip-execute-com vip-bol-and-skip-white] 8))

(defun vip-goto-eol (arg) "\
Go to end of line." (interactive "P") (byte-code "ň	!	!
 `\"!
  
#1 l+ n?1 !*" [val arg com vip-com-point vip-ex-style-motion nil vip-p-val vip-getcom move-marker end-of-line vip-execute-com vip-goto-eol backward-char 1] 8))

(defun vip-next-line (arg) "\
Go to next line." (interactive "P") (byte-code "ƈ m !)	!	!
 `\"!4 l. n?4 !͉
B 
#*" [val arg com vip-com-point vip-ex-style-motion this-command nil end-of-line error "Last line in buffer" vip-p-val vip-getCom move-marker next-line backward-char 1 vip-execute-com vip-next-line] 11))

(defun vip-next-line-at-bol (arg) "\
Next line at beginning of line." (interactive "P") (byte-code "Ĉ m !)	!	!
 `\"! 
0 
#*" [val arg com vip-com-point nil end-of-line error "Last line in buffer" vip-p-val vip-getCom move-marker next-line back-to-indentation vip-execute-com vip-next-line-at-bol] 11))

(defun vip-previous-line (arg) "\
Go to previous line." (interactive "P") (byte-code "ƈ o !)	!	!
 `\"[!5 l/ n?5 !Љ
C 
#*" [val arg com vip-com-point vip-ex-style-motion this-command nil beginning-of-line error "First line in buffer" vip-p-val vip-getCom move-marker next-line backward-char 1 previous-line vip-execute-com vip-previous-line] 11))

(defun vip-previous-line-at-bol (arg) "\
Previous line at beginning of line." (interactive "P") (byte-code "Ĉ o !)	!	!
 `\"[! 
1 
#*" [val arg com vip-com-point nil beginning-of-line error "First line in buffer" vip-p-val vip-getCom move-marker next-line back-to-indentation vip-execute-com vip-previous-line] 11))

(defun vip-change-to-eol (arg) "\
Change to end of line." (interactive "P") (byte-code "B!" [arg nil vip-goto-eol 99] 3))

(defun vip-kill-line (arg) "\
Delete line." (interactive "P") (byte-code "B!" [arg nil vip-goto-eol 100] 3))

(defun vip-erase-line (arg) "\
Erase line." (interactive "P") (byte-code "B!" [arg nil vip-beginning-of-line 100] 3))

(defun vip-goto-line (arg) "\
Go to ARG's line.  Without ARG go to end of buffer." (interactive "P") (byte-code "Ĉ	!	!`\"`!? db$ ebS! 
1 
#*" [val arg com vip-com-point nil vip-P-val vip-getCom move-marker set-mark forward-line back-to-indentation vip-execute-com vip-goto-line] 10))

(defun vip-find-char (arg char forward offset) "\
Find ARG's occurence of CHAR on the current line.  If FORWARD then
search is forward, otherwise backward.  OFFSET is used to adjust point
after search." (byte-code "	 
 [V- l  !! `! `\"> n8 !9 ` `\"VK eTbM db!$)`Vg 
dUs Ws 
eUy !))
V  Ђ т  ̂ \\b*" [arg forward point case-fold-search nil char offset 0 narrow-to-region error "" next-line 1 beginning-of-line search-forward char-to-string -2 -1] 13))

(defun vip-find-char-forward (arg) "\
Find char on the line.  If called interactively read the char to find
from the terminal, and if called from vip-repeat, the char last used is
used.  This behaviour is controlled by the sign of prefix numeric value." (interactive "P") (byte-code "ǈ	!	!V rǉ [
) `\"	!V8 : 	$[
T 	 
#*" [val arg com vip-f-char vip-f-forward t vip-f-offset nil vip-com-point vip-F-char vip-p-val vip-getcom 0 move-marker vip-find-char forward-char vip-execute-com vip-find-char-forward] 10))

(defun vip-goto-char-forward (arg) "\
Go up to char ARG forward on line." (interactive "P") (byte-code "Ɉ	!	!V rŉ [
) `\"	!V8 : $[
T  
#*" [val arg com vip-f-char vip-f-forward t vip-f-offset vip-com-point vip-F-char nil vip-p-val vip-getcom 0 move-marker vip-find-char forward-char vip-execute-com vip-goto-char-forward] 10))

(defun vip-find-char-backward (arg) "\
Find char ARG on line backward." (interactive "P") (byte-code "ň	!	!V rŉ [
) `\"	!V8 : $[
Q 
#*" [val arg com vip-f-char vip-f-forward nil vip-f-offset vip-com-point vip-F-char vip-p-val vip-getcom 0 move-marker vip-find-char vip-execute-com vip-find-char-backward] 9))

(defun vip-goto-char-backward (arg) "\
Go up to char ARG backward on line." (interactive "P") (byte-code "ň	!	!V rǉ [
) `\"	!V8 : 	$[
Q 	
#*" [val arg com vip-f-char vip-f-forward nil vip-f-offset t vip-com-point vip-F-char vip-p-val vip-getcom 0 move-marker vip-find-char vip-execute-com vip-goto-char-backward] 9))

(defun vip-repeat-find (arg) "\
Repeat previous find command." (interactive "P") (byte-code "ǈ	!	!
 `\"$
+ %  
#*" [val arg com vip-com-point vip-f-char vip-f-forward vip-f-offset nil vip-p-val vip-getcom move-marker vip-find-char forward-char vip-execute-com vip-repeat-find] 9))

(defun vip-repeat-find-opposite (arg) "\
Repeat previous find command in the opposite direction." (interactive "P") (byte-code "ǈ	!	!
 `\"?$
, &  
#*" [val arg com vip-com-point vip-f-char vip-f-forward vip-f-offset nil vip-p-val vip-getcom move-marker vip-find-char forward-char vip-execute-com vip-repeat-find-opposite] 9))

(defun vip-other-window (arg) "\
Switch to other window." (interactive "p") (byte-code "!	=? p!\"  " [arg vip-current-mode nil other-window emacs-mode string= buffer-name " *Minibuf-1*" vip-change-mode-to-vi] 5))

(defun vip-window-top (arg) "\
Go to home window line." (interactive "P") (byte-code "Ĉ	!	!
 `\"S!
?  
) 
#*" [val arg com vip-com-point nil vip-p-val vip-getCom move-marker move-to-window-line back-to-indentation vip-execute-com vip-window-top] 9))

(defun vip-window-middle (arg) "\
Go to middle window line." (interactive "P") (byte-code "Ĉ	!	!
 `\" S\"S\\!
?&  
0 
#*" [val arg com vip-com-point nil vip-p-val vip-getCom move-marker move-to-window-line / window-height 2 back-to-indentation vip-execute-com vip-window-middle] 11))

(defun vip-window-bottom (arg) "\
Go to last window line." (interactive "P") (byte-code "Ĉ	!	!
 `\"[!
?  
) 
#*" [val arg com vip-com-point nil vip-p-val vip-getCom move-marker move-to-window-line back-to-indentation vip-execute-com vip-window-bottom] 9))

(defun vip-line-to-top (arg) "\
Put current line on the home line." (interactive "p") (byte-code "S!" [arg nil recenter] 2))

(defun vip-line-to-middle (arg) "\
Put current line on the middle line." (interactive "p") (byte-code "S S\"\\!" [arg nil recenter / window-height 2] 6))

(defun vip-line-to-bottom (arg) "\
Put current line on the last line." (interactive "p") (byte-code " TZ!" [arg nil recenter window-height] 4))

(defun vip-paren-match (arg) "\
Go to the matching parenthesis." (interactive "P") (byte-code "ň	!	!< 	V 	W !9 dV. d\"	\"5 d	\"\"b  lD n?J ! `)
#a  d !)! t `\"! #   !   `\"! # !)" [com arg lim t vip-com-point nil vip-getcom numberp 99 1 error "Prefix must be between 1 and 99." 80000 * / 100 back-to-indentation forward-char -1 end-of-line re-search-forward "[][(){}]" backward-char "No matchable character on line" looking-at "[([{]" move-marker forward-sexp vip-execute-com vip-paren-match "[])}]" backward-sexp ""] 26))

(defun vip-forward-sentence (arg) "\
Forward sentence." (interactive "P") (byte-code "Ĉ	!	!
 `\"!
  
#*" [val arg com vip-com-point nil vip-p-val vip-getcom move-marker forward-sentence vip-execute-com vip-forward-sentence] 8))

(defun vip-backward-sentence (arg) "\
Backward sentence." (interactive "P") (byte-code "Ĉ	!	!
 `\"!
  
#*" [val arg com vip-com-point nil vip-p-val vip-getcom move-marker backward-sentence vip-execute-com vip-backward-sentence] 8))

(defun vip-forward-paragraph (arg) "\
Forward paragraph." (interactive "P") (byte-code "Ĉ	!	!
 `\"!
  
#*" [val arg com vip-com-point nil vip-p-val vip-getCom move-marker forward-paragraph vip-execute-com vip-forward-paragraph] 8))

(defun vip-backward-paragraph (arg) "\
Backward paragraph." (interactive "P") (byte-code "Ĉ	!	!
 `\"!
  
#*" [val arg com vip-com-point nil vip-p-val vip-getCom move-marker backward-paragraph vip-execute-com vip-backward-paragraph] 8))

(defun vip-prev-heading (arg) (interactive "P") (byte-code "ň	!	!
 `\"$!b
( 
#*" [val arg com vip-com-point vip-heading-start nil t vip-p-val vip-getCom move-marker re-search-backward match-beginning 0 vip-execute-com vip-prev-heading] 9))

(defun vip-heading-end (arg) (interactive "P") (byte-code "ň	!	!
 `\"$!b
( 
#*" [val arg com vip-com-point vip-heading-end nil t vip-p-val vip-getCom move-marker re-search-forward match-beginning 0 vip-execute-com] 9))

(defun vip-next-heading (arg) (interactive "P") (byte-code "ň	!	!
 `\" $!b
+ 
#*" [val arg com vip-com-point vip-heading-start nil t vip-p-val vip-getCom move-marker end-of-line re-search-forward match-beginning 0 vip-execute-com vip-next-heading] 10))

(defun vip-scroll (arg) "\
Scroll to next screen." (interactive "p") (byte-code "V V  S - V-  T " [arg nil 0 scroll-up scroll-down] 5))

(defun vip-scroll-back (arg) "\
Scroll to previous screen." (interactive "p") (byte-code "[!" [arg nil vip-scroll] 2))

(defun vip-scroll-down (arg) "\
Scroll up half screen." (interactive "P") (byte-code "?  \"! !" [arg nil scroll-down / window-height 2] 5))

(defun vip-scroll-down-one (arg) "\
Scroll up one line." (interactive "p") (byte-code "!" [arg nil scroll-down] 2))

(defun vip-scroll-up (arg) "\
Scroll down half screen." (interactive "P") (byte-code "?  \"! !" [arg nil scroll-up / window-height 2] 5))

(defun vip-scroll-up-one (arg) "\
Scroll down one line." (interactive "p") (byte-code "!" [arg nil scroll-up] 2))

(setq scroll-step 1)

(defun vip-buffer-in-two-windows nil "\
Show current buffer in two windows." (interactive) (byte-code " !" [nil delete-other-windows split-window-vertically] 3))

(defun vip-if-string (prompt) (byte-code "	#\"? )" [s prompt vip-s-string vip-read-string "" vip-search-history string=] 4))

(defun vip-search-forward (arg) "\
Search a string forward.  ARG is used to find the ARG's occurence
of the string.  Null string will repeat previous search" (interactive "P") (byte-code "ǈ	!	!ĉ!#
(  \"
#*" [val arg com vip-s-forward t vip-s-string vip-com-point nil vip-P-val vip-getcom vip-if-string "/" vip-search move-marker mark vip-execute-com vip-search-next] 10))

(defun vip-search-backward (arg) "\
Search a string backward.  ARG is used to find the ARG's occurence
of the string.  Null string will repeat previous search" (interactive "P") (byte-code "Ĉ	!	!ĉ!#
(  \"
#*" [val arg com vip-s-forward nil vip-s-string vip-com-point vip-P-val vip-getcom vip-if-string "?" vip-search move-marker mark vip-execute-com vip-search-next] 10))

(defun vip-search (string forward arg &optional no-offset init-point) "\
(STRING FORWARD COUNT &optional NO-OFFSET) Search COUNT's occurrence of
STRING.  Search will be forward if FORWARD, otherwise backward." (byte-code "	!	!	!??	 `
( Џ, ҏ." [val arg com null-arg offset no-offset case-fold-search vip-case-fold-search start-point init-point forward vip-p-val vip-getcom vip-P-val conditions (byte-code " m?  	 
$
!' 
$
!!" [offset vip-re-search string nil val start-point forward-char re-search-forward re-search-backward search-forward search-backward push-mark] 8) ((search-failed (byte-code " 	 eb
B%\" bA\"" [null-arg vip-search-wrap-around-t string forward com t start-point conditions vip-search 1 signal search-failed] 6))) (byte-code " 	$ 	$!" [vip-re-search string nil val start-point re-search-backward search-backward push-mark] 6) ((search-failed (byte-code " 	 db
B%\" bA\"" [null-arg vip-search-wrap-around-t string forward com t start-point conditions vip-search 1 signal search-failed] 6)))] 9))

(defun vip-search-next (arg) "\
Repeat previous search." (interactive "P") (byte-code "ƈ	!	!? !	#
(  \"
#*" [val arg com vip-s-string vip-s-forward vip-com-point nil vip-p-val vip-getcom error "No previous search string." vip-search move-marker mark vip-execute-com vip-search-next] 10))

(defun vip-search-Next (arg) "\
Repeat previous search in the reverse direction." (interactive "P") (byte-code "ƈ	!	!? !?	#
)  \"
#*" [val arg com vip-s-string vip-s-forward vip-com-point nil vip-p-val vip-getcom error "No previous search string." vip-search move-marker mark vip-execute-com vip-search-Next] 10))

(defun vip-buffer-search-enable (&optional c) (byte-code " 
	!#" [c vip-buffer-search-char vip-mode-map define-key char-to-string vip-command-argument] 5))

(defun vip-switch-to-buffer nil "\
Switch to buffer in the current window." (interactive) (byte-code "p!!\"!! )" [buffer nil read-buffer format "switch to buffer (%s): " buffer-name other-buffer switch-to-buffer vip-change-mode-to-vi] 7))

(defun vip-switch-to-buffer-other-window nil "\
Switch to buffer in another window." (interactive) (byte-code "p!!\"!! )" [buffer nil read-buffer format "Switch to buffer (%s): " buffer-name other-buffer switch-to-buffer-other-window vip-change-mode-to-vi] 7))

(defun vip-kill-buffer nil "\
Kill a buffer." (interactive) (byte-code "p!\"!	? p 	!?) 	\"!?4 != !@ !*" [buffer buffer-name nil read-buffer format "Kill buffer (%s): " get-buffer error "Buffer %s nonexistent." buffer-modified-p y-or-n-p "Buffer is modified, are you sure? " kill-buffer "Buffer not killed."] 10))

(defun vip-find-file nil "\
Visit file in the current window." (interactive) (byte-code "!!! )" [file nil read-file-name "visit file: " switch-to-buffer find-file-noselect vip-change-mode-to-vi] 5))

(defun vip-find-file-other-window nil "\
Visit file in another window." (interactive) (byte-code "!!! )" [file nil read-file-name "Visit file: " switch-to-buffer-other-window find-file-noselect vip-change-mode-to-vi] 5))

(defun vip-info-on-file nil "\
Give information of the file associated to the current buffer." (interactive) (byte-code "      ǂ e`\"n' T( )ed\"T%" [l nil message "\"%s\"%s line %d of %d" buffer-file-name "" buffer-modified-p " [Modified]" count-lines] 12))

(defun vip-yank (text) "\
yank TEXT silently." (byte-code "`!c )!" [text vip-push-mark-silent exchange-point-and-mark skip-chars-forward " 	"] 4))

(defun vip-put-back (arg) "\
Put back after point/below line." (interactive "P") (byte-code "ƈ	!% X X Z8\" !!' @
?C @ Ɖ\")C !Ɖ
!W ! c l?^ m?c  FV 
!Sp )*" [val arg text vip-use-register kill-ring-yank-pointer reg nil vip-d-com count vip-p-val 49 57 get-register downcase error "Nothing in register %c" "" vip-end-with-a-newline-p next-line 1 beginning-of-line forward-char vip-put-back 0 vip-yank] 13))

(defun vip-Put-back (arg) "\
Put back at point/above line." (interactive "P") (byte-code "ƈ	!% X X Z8\" !!' @
?C @ Ɖ\")C !Ɖ
!P  FVr 
!S] )*" [val arg text vip-use-register kill-ring-yank-pointer reg nil vip-d-com count vip-p-val 49 57 get-register downcase error "Nothing in register %c" "" vip-end-with-a-newline-p beginning-of-line vip-Put-back 0 vip-yank] 11))

(defun vip-delete-char (arg) "\
Delete character." (interactive "P") (byte-code "È	!EV( ` `ZV& `Z))=2 ʉ\\ X@ XP \\``Z$X ``Z$Év \"lm n?s ! l \" \")" [val arg vip-d-com nil here vip-use-register vip-ex-style-motion t vip-p-val vip-delete-char 1 end-of-line 0 65 90 vip-append-to-register 32 copy-to-register delete-char backward-char delete-backward-char] 10))

(defun vip-delete-backward-char (arg) "\
Delete previous character." (interactive "P") (byte-code "È	!EV( ` `ZV& `Z))R X6 XF \\``\\$N ``\\$Én\\  ` \")" [val arg vip-d-com nil here vip-use-register t vip-p-val vip-delete-backward-char 1 beginning-of-line 65 90 vip-append-to-register 32 copy-to-register ding delete-backward-char] 8))

(defun vip-join-lines (arg) "\
Join this line to next, if ARG is nil.  Otherwise, join ARG lines" (interactive "*P") (byte-code "È	!E? ǂ SV<  m?3 !``S\" S ))" [val arg vip-d-com nil count vip-P-val vip-join-lines 1 0 end-of-line forward-line delete-region fixup-whitespace] 8))

(defun vip-finish-change nil (byte-code "	`\"	
\"U `	Y `
W  `
\"ĉ" [c-string vip-change-beg-point vip-change-end-point vip-need-to-finish-change nil buffer-substring count-lines 1 kill-region] 5))

(defun vip-change (beg end) (byte-code " 	
$É	
X! 	\"
\"* 
\"	\"ǉ\"US b!c b#Z \" " [vip-use-register beg end nil vip-change-beg-point vip-change-end-point vip-need-to-finish-change t copy-to-register move-marker count-lines 1 delete-backward-char "$" point-marker vip-change-mode-to-overwrite kill-region vip-change-mode-to-insert] 12))

(defun vip-change-subr (beg end) (byte-code " 	
$É	
\"ȉc" [vip-use-register beg end nil this-command c-string copy-to-register kill-region vip-change] 5))

(defun vip-toggle-case (arg) "\
toggle character case." (interactive "P") (byte-code "È	!EV> g\"

!=/ 
!\"5 
!\"S *" [val arg c nil vip-d-com vip-p-val vip-toggle-case 0 delete-char 1 upcase insert-char downcase] 10))

(defun vip-query-replace nil "\
Query replace.  If you supply null string as the string to be replaced,
the query replace mode will toggle between string replace and regexp replace." (interactive) (byte-code "	 Ă !\"- 	?	( ʂ) \"F 	= \"!\"F \"!\")" [str vip-re-query-replace nil vip-read-string "Query replace regexp: " "Query replace: " string= "" message "Query replace mode changed to %s." "regexp replace" "string replace" query-replace-regexp format "Query replace regexp \"%s\" with: " query-replace "Query replace \"%s\" with: "] 12))

(defun vip-mark-beginning-of-buffer nil (interactive) (byte-code "`!eb !" [nil set-mark exchange-point-and-mark message "mark set at the beginning of buffer"] 4))

(defun vip-mark-end-of-buffer nil (interactive) (byte-code "`!db !" [nil set-mark exchange-point-and-mark message "mark set at the end of buffer"] 4))

(defun vip-mark-point (char) (interactive "c") (byte-code "X X ZZ!S U#  S U.  S U9  S UE !S UP  S !" [char t nil 97 122 point-to-register 1 60 vip-mark-beginning-of-buffer 62 vip-mark-end-of-buffer 46 push-mark 44 set-mark-command 68 mark-defun error ""] 8))

(defun vip-goto-mark (arg) "\
Go to mark." (interactive "P") (byte-code "Èr
!	#*" [char com arg nil vip-getcom vip-goto-mark-subr] 5))

(defun vip-goto-mark-and-skip-white (arg) "\
Go to mark and skip to first non-white on line." (interactive "P") (byte-code "Ĉr
!	#*" [char com arg t nil vip-getCom vip-goto-mark-subr] 5))

(defun vip-goto-mark-subr (char com skip-white) (byte-code "X	 XV p
 `\"ZZ!b&   
R 	p\"E > Ђ? 
#R 	!b !) ?^ Uy 
i `\" 
v 
#  U 
 `\"  
 
# !" [char buff com vip-com-point skip-white nil t 97 122 move-marker register-to-point 1 back-to-indentation vip-change-mode-to-vi equal vip-execute-com vip-goto-mark-and-skip-white vip-goto-mark switch-to-buffer error "" 96 exchange-point-and-mark 39] 19))

(defun vip-exchange-point-and-mark nil (interactive) (byte-code "  " [nil exchange-point-and-mark back-to-indentation] 3))

(defun vip-forward-indent nil "\
Indent forward - C-d in VI" (interactive) (byte-code "Èi
\\j" [vip-cted t vip-shift-width nil] 2))

(defun vip-backward-indent nil "\
Backtab, C-t in VI" (interactive) (byte-code "ǈ\\ `i!* hU ŉ!`ǉ `)#>  `	\"M 
ZjnU ![ ǉ," [vip-cted p c bol indent t vip-preserve-indent nil vip-shift-width vip-looking-back "[0^]" 94 delete-backward-char 1 beginning-of-line re-search-backward "[^ 	]" forward-char delete-region] 9))

(defun vip-autoindent nil "\
Auto Indentation, VI style" (interactive) (byte-code "È 	?  É!\" Ɖ
j)" [col vip-preserve-indent vip-current-indent nil vip-auto-indent vip-cted t current-indentation newline 1] 4))

(defun vip-register-macro (count) "\
Keyboard macros in registers - a modified @ command" (interactive "P") (byte-code "ƈr!X X> 
5  !- !?- !\"; !\" UM UM UY 	!\" Ue ! U r!Xz X ! !? !\" \"!)" [reg vip-last-macro-reg defining-kbd-macro last-kbd-macro count t nil downcase 97 122 end-kbd-macro get-register y-or-n-p "Register contains data. Overwrite?" error "Keyboard macro defined but not written" set-register execute-kbd-macro 64 10 13 35 start-kbd-macro 33 format "Unknown register %c"] 20))

(defun vip-ket-function (arg) "\
Function called by ], the ket. View registers and call ]]" (interactive "P") (byte-code "ƈrX X !X X XG Z
8!qed\"\"c	ceb)!)X US !X #)" [reg text kill-ring-yank-pointer arg t last-command-char nil 97 122 view-register 49 57 get-buffer-create "*Output*" delete-region format "Register %c contains the string:
" display-buffer 93 vip-next-heading error "Invalid Command %c%c"] 10))

(defun vip-brac-function (arg) "\
Function called by [, the brac. View textmarkers and call [[" (interactive "P") (byte-code "ɈrU 	! U 	! X% X ZZ!
?> \"!A 
!
!!qed\"a  qe
\"Tb #  `b!#  `\"ZOZO$)!$c#c \"ceb)!. #!)" [reg arg val buf pos line-no text s e nil t last-command-char 91 vip-prev-heading 93 vip-heading-end 97 122 get-register 1 error format "Textmarker %c does not point anywhere" marker-buffer marker-position get-buffer-create "*Output*" delete-region count-lines beginning-of-line re-search-backward "[^ 	]" forward-line re-search-forward end-of-line buffer-substring "%s<%c>%s" 0 "Textmarker %c is in buffer %s at line %d.
" buffer-name "Here is some text around %c:

 %s" "Textmarker %c not set anywhere" display-buffer "Invalid Command %c%c"] 28))

(defun vip-keyboard-quit nil "\
Abort partially formed or running command." (interactive) (byte-code " " [vip-use-register nil keyboard-quit] 2))

(defun vip-ctl-c-equivalent (arg) "\
Emulate C-c in Emacs mode." (interactive "P") (byte-code "\"" [arg nil vip-ctl-key-equivalent ""] 3))

(defun vip-ctl-x-equivalent (arg) "\
Emulate C-x in Emacs mode." (interactive "P") (byte-code "\"" [arg nil vip-ctl-key-equivalent ""] 3))

(defun vip-ctl-key-equivalent (key arg) (byte-code "rX X ZZ
!##!)" [char prefix-arg arg vip-emacs-local-map global-map key 65 90 1 command-execute vip-get-editor-command format "%s%s" char-to-string] 9))

(defun vip-delete-backward-word (arg) "\
Delete previous word." (interactive "p") (byte-code "`!!` \")" [arg nil set-mark backward-word delete-region mark] 6))

(set (quote vip-mode-map) (make-keymap))

(define-key vip-mode-map "" (function (lambda nil (interactive) (vip-ex "e#"))))

(define-key vip-mode-map "" (quote vip-scroll-back))

(define-key vip-mode-map "" (quote vip-scroll-up))

(define-key vip-mode-map "" (quote vip-scroll-up-one))

(define-key vip-mode-map "" (quote vip-scroll))

(define-key vip-mode-map "" (quote help-command))

(define-key vip-mode-map "" (quote vip-next-line-at-bol))

(define-key vip-mode-map "" (quote vip-scroll-down))

(define-key vip-mode-map "" (quote vip-ctl-x))

(define-key vip-mode-map "" (quote vip-scroll-down-one))

(define-key vip-mode-map vip-toggle-key (quote vip-change-mode-to-emacs))

(define-key vip-mode-map vip-ESC-key (quote vip-ESC))

(defun vip-make-emacs-keys-invisible (&optional map) (byte-code "? 	###############" [map vip-mode-map define-key "" vip-nil "" vip-keyboard-quit "" vip-info-on-file "	" "" "" redraw-display "" vip-next-line "" "" vip-previous-line "" "" "" "" "" ""] 18))

(vip-make-emacs-keys-invisible)

(defun vip-rebind-emacs-keys (&optional map fun) "\
Unsuppress emacs key bindings that were hidden for strict vi compatitibilty" (byte-code "? 	
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#" [map vip-mode-map fun define-key "" "" "" "	" "" "" "" "" "" "" "" "" "" "" ""] 18))

(defun vip-rebind-other-keys (&optional map fun) "\
Rebind" (byte-code "? 	
#
#
#
#
#
#
#
#
#" [map vip-mode-map fun define-key "" "" "" "" "" "" "" "" ""] 12))

(defun vip-make-emacs-keys-visible nil (byte-code "\" 
#
#" [vip-insert-mode-vi-map nil vip-mode-map set-default vip-rebind-emacs-keys define-key "" vip-ctl-c "" vip-keyboard-quit] 8))

(defun vip-become-vi nil (byte-code "########\"" [vip-mode-map vip-is-vi t define-key "@" vip-nil "*" "#" "" "" suspend-emacs "" vip-backward-char "" "" global-set-key "" keyboard-quit] 11))

(define-key vip-mode-map " " (quote vip-forward-char))

(define-key vip-mode-map "!" (quote vip-command-argument))

(define-key vip-mode-map "\"" (quote vip-command-argument))

(define-key vip-mode-map "#" (quote vip-command-argument))

(define-key vip-mode-map "$" (quote vip-goto-eol))

(define-key vip-mode-map "%" (quote vip-paren-match))

(define-key vip-mode-map "&" (function (lambda nil (interactive) (vip-ex "&"))))

(define-key vip-mode-map "'" (quote vip-goto-mark-and-skip-white))

(define-key vip-mode-map "(" (quote vip-backward-sentence))

(define-key vip-mode-map ")" (quote vip-forward-sentence))

(define-key vip-mode-map "*" (quote call-last-kbd-macro))

(define-key vip-mode-map "+" (quote vip-next-line-at-bol))

(define-key vip-mode-map "," (quote vip-repeat-find-opposite))

(define-key vip-mode-map "-" (quote vip-previous-line-at-bol))

(define-key vip-mode-map "." (quote vip-repeat))

(define-key vip-mode-map "/" (quote vip-search-forward))

(define-key vip-mode-map "0" (quote vip-beginning-of-line))

(define-key vip-mode-map "1" (quote vip-digit-argument))

(define-key vip-mode-map "2" (quote vip-digit-argument))

(define-key vip-mode-map "3" (quote vip-digit-argument))

(define-key vip-mode-map "4" (quote vip-digit-argument))

(define-key vip-mode-map "5" (quote vip-digit-argument))

(define-key vip-mode-map "6" (quote vip-digit-argument))

(define-key vip-mode-map "7" (quote vip-digit-argument))

(define-key vip-mode-map "8" (quote vip-digit-argument))

(define-key vip-mode-map "9" (quote vip-digit-argument))

(define-key vip-mode-map ":" (quote vip-ex))

(define-key vip-mode-map ";" (quote vip-repeat-find))

(define-key vip-mode-map "<" (quote vip-command-argument))

(define-key vip-mode-map "=" (quote vip-command-argument))

(define-key vip-mode-map ">" (quote vip-command-argument))

(define-key vip-mode-map "?" (quote vip-search-backward))

(define-key vip-mode-map "@" (quote vip-register-macro))

(define-key vip-mode-map "A" (quote vip-Append))

(define-key vip-mode-map "B" (quote vip-backward-Word))

(define-key vip-mode-map "C" (quote vip-change-to-eol))

(define-key vip-mode-map "D" (quote vip-kill-line))

(define-key vip-mode-map "E" (quote vip-end-of-Word))

(define-key vip-mode-map "F" (quote vip-find-char-backward))

(define-key vip-mode-map "G" (quote vip-goto-line))

(define-key vip-mode-map "H" (quote vip-window-top))

(define-key vip-mode-map "I" (quote vip-Insert))

(define-key vip-mode-map "J" (quote vip-join-lines))

(define-key vip-mode-map "K" (quote vip-nil))

(define-key vip-mode-map "L" (quote vip-window-bottom))

(define-key vip-mode-map "M" (quote vip-window-middle))

(define-key vip-mode-map "N" (quote vip-search-Next))

(define-key vip-mode-map "O" (quote vip-Open-line))

(define-key vip-mode-map "P" (quote vip-Put-back))

(define-key vip-mode-map "Q" (quote vip-query-replace))

(define-key vip-mode-map "R" (quote vip-overwrite))

(define-key vip-mode-map "S" (quote vip-substitute-line))

(define-key vip-mode-map "T" (quote vip-goto-char-backward))

(define-key vip-mode-map "U" (quote vip-undo))

(define-key vip-mode-map "V" (quote vip-find-file-other-window))

(define-key vip-mode-map "W" (quote vip-forward-Word))

(define-key vip-mode-map "X" (quote vip-delete-backward-char))

(define-key vip-mode-map "Y" (quote vip-yank-line))

(define-key vip-mode-map "ZZ" (quote save-buffers-kill-emacs))

(define-key vip-mode-map "\\" (quote vip-nil))

(define-key vip-mode-map "[" (quote vip-brac-function))

(define-key vip-mode-map "]" (quote vip-ket-function))

(define-key vip-mode-map "_" (quote vip-alternate-ESC))

(define-key vip-mode-map "^" (quote vip-bol-and-skip-white))

(define-key vip-mode-map "`" (quote vip-goto-mark))

(define-key vip-mode-map "a" (quote vip-append))

(define-key vip-mode-map "b" (quote vip-backward-word))

(define-key vip-mode-map "c" (quote vip-command-argument))

(define-key vip-mode-map "d" (quote vip-command-argument))

(define-key vip-mode-map "e" (quote vip-end-of-word))

(define-key vip-mode-map "f" (quote vip-find-char-forward))

(define-key vip-mode-map "g" (quote vip-nil))

(define-key vip-mode-map "h" (quote vip-backward-char))

(define-key vip-mode-map "i" (quote vip-insert))

(define-key vip-mode-map "j" (quote vip-next-line))

(define-key vip-mode-map "k" (quote vip-previous-line))

(define-key vip-mode-map "l" (quote vip-forward-char))

(define-key vip-mode-map "m" (quote vip-mark-point))

(define-key vip-mode-map "n" (quote vip-search-next))

(define-key vip-mode-map "o" (quote vip-open-line))

(define-key vip-mode-map "p" (quote vip-put-back))

(define-key vip-mode-map "q" (quote vip-nil))

(define-key vip-mode-map "r" (quote vip-replace-char))

(define-key vip-mode-map "s" (quote vip-substitute))

(define-key vip-mode-map "t" (quote vip-goto-char-forward))

(define-key vip-mode-map "u" (quote vip-undo))

(define-key vip-mode-map "v" (quote vip-find-file))

(define-key vip-mode-map "w" (quote vip-forward-word))

(define-key vip-mode-map "x" (quote vip-delete-char))

(define-key vip-mode-map "y" (quote vip-command-argument))

(define-key vip-mode-map "zH" (quote vip-line-to-top))

(define-key vip-mode-map "zM" (quote vip-line-to-middle))

(define-key vip-mode-map "zL" (quote vip-line-to-bottom))

(define-key vip-mode-map "z" (quote vip-line-to-top))

(define-key vip-mode-map "z." (quote vip-line-to-middle))

(define-key vip-mode-map "z-" (quote vip-line-to-bottom))

(define-key vip-mode-map "{" (quote vip-backward-paragraph))

(define-key vip-mode-map "|" (quote vip-goto-col))

(define-key vip-mode-map "}" (quote vip-forward-paragraph))

(define-key vip-mode-map "~" (quote vip-toggle-case))

(define-key vip-mode-map "" (quote vip-delete-backward-char))

(defun vip-get-history nil (byte-code "! ! M!" [vip-want-history t fboundp gmhist-define-keys message "WARNING: gmhist already loaded - cannot change mappings" (lambda (map) "Bind the standard history commands in MAP, a key map." (byte-code "############	T #Y #
#" [map vip-filename-complete vip-ESC-key define-key "" gmhist-previous "" gmhist-next "" gmhist-search-backward "" gmhist-search-forward "" gmhist-beginning "" gmhist-end "" gmhist-show "" delete-backward-char "" delete-backward-word "" vip-erase-line "" abort-recursive-edit "" quoted-insert "	" vip-read-string-complete "?" vip-read-string-help exit-minibuffer] 18)) require gmhist] 5))

(defun vip-version nil (interactive) (byte-code "!" [nil message "VIP version 4.3 of October 1, 1991"] 2))

(defvar ex-token-type nil "\
type of token.  if non-nil, gives type of address.  if nil, it
is a command.")

(defvar ex-token nil "\
value of token.")

(defvar ex-addresses nil "\
list of ex addresses")

(defvar ex-flag nil "\
flag for ex flag")

(defvar ex-buffer nil "\
name of ex buffer")

(defvar ex-count nil "\
value of ex count")

(defvar ex-g-flag nil "\
flag for global command")

(defvar ex-g-variant nil "\
if t global command is executed on lines not matching ex-g-pat")

(defvar ex-reg-exp nil "\
save reg-exp used in substitute")

(defvar ex-repl nil "\
replace pattern for substitute")

(defvar ex-g-pat nil "\
pattern for global command")

(defvar ex-map (make-sparse-keymap) "\
save commands for mapped keys")

(defvar ex-ins-map (make-sparse-keymap) "\
save commands for map!ped keys")

(defconst ex-find-file-shell "csh" "\
Shell in which to interpret wildcards")

(defvar ex-tag nil "\
save ex tag")

(defvar ex-file nil)

(defvar ex-variant nil)

(defvar ex-offset nil)

(defvar ex-append nil)

(defvar ex-cmdfile nil)

(defconst ex-cycle-other-window t "\
* :n cycles through files in other window")

(defconst ex-cycle-through-non-files nil "\
* cycle through *scratch* etc.")

(defun vip-nil nil (interactive) (byte-code "!" [nil error ""] 2))

(defun vip-looking-back (str) "\
returns t if looking back reg-exp STR before point." (byte-code "#) `!U" [str nil t re-search-backward match-end 0] 4))

(defun vip-check-sub (str) "\
check if ex-token is an initial segment of STR" (byte-code "	G
GX 	
O\" 
 Ɖ)" [length ex-token str ex-token-type string= 0 "non-command"] 5))

(defun vip-get-ex-com-subr nil "\
get a complete ex command" (byte-code "`!!Ɖ` \" !; !) !8 !5 !8 !!G Ӊ!w !Y !t !e !t !q !t !! !! ! ! !! !! !! !! !! !! ! ! ! ! !!!!!!!!O!1!L!=!L!I!L!![!!ʁ@ !q́A !ʁB !́C !́D !ʁE !ʁF !́G !ʁH !́I !ʁJ !́K !ʁL !́L !ʁM !́N !ʁO !́P !́Q !ʁR !ʁS !́T !́R !ʁU !IʁV !1́W !FʁX !A́Y !F́Z !ʁ[ !yʁ\\ !a́] !vʁ^ !q́_ !v́[ !ʁ` !ʁa !́a !́b !ʁc !́d !ʁe !́f !ʁg !́g ! " [ex-token-type ex-token t set-mark re-search-forward "[a-z][a-z]*" "command" buffer-substring mark exchange-point-and-mark looking-at "a" "ab" vip-check-sub "abbreviate" "ar" "args" "append" "[bh]" "non-command" "c" "cd" "ch" "chdir" "co" "copy" "change" "d" "delete" "e" "ex" "edit" "f" "file" "g" "global" "i" "insert" "j" "join" "l" "list" "m" "map" "mar" "mark" "move" "n" "nu" "number" "next" "o" "open" "p" "pre" "preserve" "pu" "put" "pw" "pwd" "print" "q" "quit" "r" "rec" "recover" "rew" "rewind" "read" "s" "se" "set" "sh" "shell" "so" "source" "sr" "st" "stop" "sus" "suspend" "substitute" "t" "ta" "tag" "u" "una" "unabbreviate" "unm" "unmap" "undo" "v" "ve" "version" "vi" "visual" "w" "wq" "write" "x" "xit" "y" "yank" "z"] 106))

(defun vip-get-ex-token nil "\
get an ex-token which is either an address or a command.
a token has type (command, address, end-mark) and value." (byte-code "ŋ" [ex-token-type ex-token t cont nil ((byte-code "q!! ʉg!!!(  !8 !щ!l `!!\"Q ؂] \"\\ ڂ] ۉ` \"!!| !! !! ! ! !c!׉ ! !׉ !! ! ! !c!ى ! !ى !!G!`!l?)!!?%ĉ)!` \"!@!!!`!l?]!!?nĉ!!?}!W)`S \"!!!!!ʉg!!!!!ĉ!g@ !!!A B C !" [ex-token-type ex-token t cont nil " *ex-working-space*" skip-chars-forward " 	|" looking-at "[k#]" "command" char-to-string forward-char 1 "[a-z]" vip-get-ex-com-subr "\\." "dot" "[0-9]" set-mark re-search-forward "[0-9]*" string= "plus" "add-number" "minus" "sub-number" "abs-number" string-to-int buffer-substring mark "\\$" "end" "%" "whole" "+" "+[-+]" "+[
|]" "1" backward-char "+[0-9]" error "Badly formed address" "-" "-[-+]" "-[
|]" "-[0-9]" "/" "[^/]*\\(/\\|
\\)" vip-looking-back "[^\\\\]\\(\\\\\\\\\\)*\\\\/" "search-forward" "\\?" "[^\\?]*\\(\\?\\|
\\)" "[^\\\\]\\(\\\\\\\\\\)*\\\\\\?" "
" "search-backward" "," "comma" ";" "semi-colon" "[!=><&~]" "'" "goto-mark" "Marks are ' and a-z" "end-mark" "goto" "illegal token"] 72))] 1))

(defun vip-ex (&optional string) "\
ex commands within VIP." (interactive) (byte-code "  #`ыω	
  	\"@ 	\"} N 
B
\"b !z \"u !z  ڋ 	\" \"! 	\" de
BB
 	\" ? ` 
B
 	\"  ? ` 
B
 \" )+ ," [string ex-g-flag nil ex-g-variant com-str address cont t dot ex-token-type ex-addresses ex-token ans vip-read-string ":" "" vip-ex-history ((byte-code "!qed\"\"eb" [com-str get-buffer-create " *ex-working-space*" delete-region insert "
"] 5)) vip-get-ex-token string= "command" "end-mark" "global" ex-global "v" vip-execute-ex-command ((byte-code "q!! !\" ! \" !" [cont nil t " *ex-working-space*" skip-chars-forward " 	" looking-at "|" forward-char 1 "
" error "Extra character at end of a command"] 6)) "non-command" error format "%s: Not an editor command" "whole" "comma" "semi-colon" vip-get-ex-address-subr] 19))

(defun vip-get-ex-pat nil "\
get a regular expression and set ex-variant if found" (byte-code "ǋ" [ex-g-variant ex-g-flag c cont t nil ex-token ((byte-code "q!! ?	?!!g!n !`!l?5 Q 

#!
\"!?M ŉ/ ) `U^ ւd `S \"!r ŉ
)" [ex-g-variant ex-g-flag c cont t nil ex-token " *ex-working-space*" skip-chars-forward " 	" looking-at "!" forward-char 1 "[^\\\\
]" set-mark re-search-forward format "[^%c]*\\(%c\\|
\\)" vip-looking-back "[^\\\\]\\(\\\\\\\\\\)*\\\\%c" mark "" buffer-substring backward-char] 17))] 1))

(defun vip-get-ex-command nil "\
get an ex command" (byte-code "Ë" [ex-token-type ex-token t ((byte-code "q! !!!(  \"% 	\"= !: g!!= !" [ex-token-type ex-token t " *ex-working-space*" looking-at "/" forward-char 1 skip-chars-forward " 	" "[a-z]" vip-get-ex-com-subr string= "non-command" error "%s: not an editor command" "[!=><&~]" char-to-string "Could not find an ex command"] 12))] 1))

(defun vip-get-ex-opt-gc (c) "\
get an ex option g or c" (byte-code "ċ" [c ex-token t nil ((byte-code "q\"! !!!& ̉!9 !8 ͉!9 Ç" [c ex-token t nil " *ex-working-space*" looking-at format "%c" forward-char 1 skip-chars-forward " 	" "g" "c"] 9))] 1))

(defun vip-default-ex-addresses (&optional whole-flag) "\
compute default addresses.  whole-flag means whole buffer." (byte-code "? 	 deBB ``BB' A?' @B" [ex-addresses whole-flag nil] 3))

(defun vip-get-ex-address nil "\
get an ex-address as a marker and set ex-flag if a flag is found" (byte-code " ɉŉ	  \"A \". \". \"; ŉ> !| \"O ŉ| \"] !| \"k !|  \"{ ) *" [address cont t ex-token ex-flag nil ex-token-type ans point-marker "" vip-get-ex-token string= "command" "print" "list" "#" error "address expected" "end-mark" "whole" "a trailing address is expected" "comma" "Extra characters after an address" vip-get-ex-address-subr] 17))

(defun vip-get-ex-address-subr (old-address dot) "\
returns an address as a point" (byte-code "
?
 \"  \": 
b
U/ S0 ! ) \"R 
b[! ) \"v ebUi ˉr S! ) \"   \" Ƃ \" Ƃ \" ! ) \" ! ) \" ?   ZZ!b ))" [address nil old-address dot ex-token-type ex-token t string= "dot" "add-number" forward-line 0 point-marker "sub-number" "abs-number" "end" point-max-marker "plus" "minus" "search-forward" ex-search-address "search-backward" "goto-mark" exchange-point-and-mark register-to-point 97 1] 26))

(defun ex-search-address (forward) "\
search pattern and set address" (byte-code "\" 	? ! 	 
* !!1 !!" [ex-token vip-s-string forward string= "" error "No previous search string" forward-line 1 re-search-forward -1 re-search-backward] 7))

(defun vip-get-ex-buffer nil "\
get a buffer name and set ex-count and ex-flag if found" (byte-code "ŋ" [ex-buffer nil ex-count ex-flag t ((byte-code "q!! g!!!4 `!!` \"!!!B É!!?M !" [ex-buffer ex-count ex-flag t " *ex-working-space*" skip-chars-forward " 	" looking-at "[a-zA-Z]" forward-char 1 "[0-9]" set-mark re-search-forward "[0-9][0-9]*" string-to-int buffer-substring mark "[pl#]" "[
|]" error "Illegal extra characters"] 16))] 2))

(defun vip-get-ex-count nil (byte-code "ŋ" [ex-variant nil ex-count ex-flag t ((byte-code "q!! !!!4 `!!` \"!!!B !!?M !" [ex-variant t ex-count ex-flag " *ex-working-space*" skip-chars-forward " 	" looking-at "!" forward-char 1 "[0-9]" set-mark re-search-forward "[0-9][0-9]*" string-to-int buffer-substring mark "[pl#]" "[
|]" error "Illegal extra characters"] 16))] 2))

(defun ex-expand-filsyms (cmd buf) "\
expand % and # in ex command" (byte-code "q!)? \"% !	?0 \"6 !!qceb#  !!\"		P!j 	! !	\"} ! 	!*D  e`\"p!
\")
+" [cf pf ret buf buffer-file-name t cmd nil data char ex-next string-match "[^\\]%\\|\\`%" error "No current file to substitute for %" "[^\\]#\\|\\`#" "No alternate file to substitute for #" get-buffer-create " ex-tmp" re-search-forward "%\\|#" match-data buffer-substring match-beginning 0 match-end vip-looking-back "\\\\" replace-match store-match-data string= "%" end-of-line kill-buffer message "%s"] 23))

(defun vip-get-ex-file nil "\
get a file name and set ex-variant, ex-append and ex-offset if found" (byte-code "pȋ)" [file-buf ex-file nil ex-variant ex-append ex-offset ex-cmdfile t ((byte-code "q!!5 !? !!). !!5 !!I !!!o !`!!!` \"!!`!!!` \"\"" [ex-variant t ex-cmdfile ex-append ex-offset ex-file file-buf " *ex-working-space*" skip-chars-forward " 	" looking-at "!" vip-looking-back "[ 	]" forward-char 1 ">>" 2 "+" set-mark re-search-forward "[ 	
]" backward-char buffer-substring mark "[ 	
|]" ex-expand-filsyms] 28))] 2))

(defun vip-execute-ex-command nil "\
execute ex command using the value of addresses." (byte-code "\"  \" !\"%  \"1  \"=  \"I  \"U  \"a  \"n !\"z  \"  \"  \" !\"  \"  \"  \"  \"  \"  \"  \"  \" \" \"# \"1\"\"= \"I \"U \"b!\"n \"z \" \" @ \" A \"B !C \"B !D \"B !E \"F  G \"H  I \"J  K \"ԁL !M \"%ԁN !O \"4!P \"D\"Q \"eR \"eS \"eT \"wU V W \"!X \"Y \"Z \"[ \"\\ \"U V ] \"!U V ^ \"!" [ex-token nil t string= "args" ex-args "copy" ex-copy "cd" ex-cd "chdir" "delete" ex-delete "edit" ex-edit "file" vip-info-on-file "goto" ex-goto "join" ex-line "k" ex-mark "mark" "map" ex-map "move" "next" ex-next "put" ex-put "pwd" ex-pwd "preserve" ex-preserve "quit" ex-quit "read" ex-read "recover" ex-recover "rewind" ex-rewind "set" ex-set "shell" ex-shell "source" ex-source "sr" ex-substitute "substitute" "suspend" suspend-emacs "stop" "t" "tag" ex-tag "undo" vip-undo "unmap" ex-unmap "version" vip-version "visual" "write" ex-write "wq" "xit" "yank" ex-yank "!" ex-command "=" ex-line-no ">" "right" "<" "left" "&" "~" "append" "change" "insert" "open" error format "%s: no such command from VIP" "abbreviate" "list" "print" "unabbreviate" "z" "%s: not implemented in VIP" "%s: Not an editor command"] 105))

(defun vip-undisplayed-files nil (byte-code " \"" [mapcar (lambda (b) (byte-code "!?3 !	 	/ 
. !O\") Ă* )/ )4 ć" [b f ex-cycle-through-non-files s nil get-buffer-window buffer-file-name buffer-name string= " " 0 1] 8)) buffer-list] 4))

(defun ex-args nil (byte-code " ` ??. @% 	@$TA 	\"< !Y Ўc	#cc!`r))." [l args insert-point end-point file-count modified vip-undisplayed-files "" nil 1 buffer-modified-p format "%s %d) %s" string= message "All files are displayed" ((byte-code "	\"
!" [insert-point end-point modified delete-region set-buffer-modified-p] 3)) "

These files are not displayed in any window." insert "
=============
" "The numbers can be given as counts to :next. " "Press any key to continue.

" "Undisplayed files. Press any key to continue"] 9))

(defun ex-cd nil "\
ex cd. Default directory of this buffer changes" (byte-code " \" ŉ!!" [ex-file default-directory vip-get-ex-file string= "" "~" file-name-as-directory expand-file-name] 6))

(defun ex-copy (del-flag) "\
ex copy and move command.  DEL-FLAG means delete." (byte-code "  
@
A@	b! `\"' ` \", ` \"T А? ? H @M ` \"!Տ)Ua ebg b!@c+" [address end ex-addresses beg del-flag ex-flag ex-g-flag ex-g-variant kill-ring-yank-pointer vip-default-ex-addresses vip-get-ex-address set-mark vip-enlarge-region mark kill-region copy-region-as-kill "*copy text*" princ buffer-substring nil (byte-code "!!)" [vip-read-string "[Hit return to continue] " kill-buffer "*copy text*"] 3) ((quit (byte-code "!)\"" [nil kill-buffer "*copy text*" signal quit] 4))) 0 forward-line 1] 15))

(defun ex-delete nil "\
ex delete" (byte-code "  	@	A@
V !
\" / `!S!2 !` \"U А` \"!Տ!)~ x Xb Xq \\` $x ` $` \")*" [end ex-addresses beg ex-count ex-flag ex-buffer nil vip-default-ex-addresses vip-get-ex-buffer error "First address exceeds second" vip-enlarge-region exchange-point-and-mark set-mark forward-line mark " *delete text*" princ buffer-substring conditions (byte-code "!" [vip-read-string "[Hit return to continue] "] 2) ((quit (byte-code "!)!" [kill-buffer " *delete text*" error ""] 3))) kill-buffer 65 90 vip-append-to-register 32 copy-to-register delete-region] 22))

(defun vip-ex-find-buf (buf) (byte-code "	 Â
 	\"" [running-epoch buf funcall find-buffer-other-screen switch-to-buffer] 3))

(defun vip-ex-kill-buf (buf) (byte-code " 	!!\"	!" [running-epoch buf mapcar epoch::delete-screen epoch::screens-of-buffer get-buffer kill-buffer] 5))

(defun ex-edit (&optional file) "\
ex-edit" (byte-code "?  	?   
 !\"F 	4  !p!F \"!C F !!?V !Y ! ebn ֋ b " [file ex-variant buffer-file-name ex-file nil default-directory ex-offset vip-get-ex-file buffer-modified-p error "No write since last change (:e! overrides)" string= "" set-buffer-modified-p vip-ex-kill-buf y-or-n-p format "No file specified. Dired %s ?" get-file-buffer ex-find-file vip-ex-find-buf vip-change-mode-to-vi ((byte-code "qed\"\"eb" [ex-offset " *ex-working-space*" delete-region insert "
"] 4)) vip-get-ex-address beginning-of-line] 17))

(defun ex-find-file (filespec) (byte-code "
\"G !q
\"&ebm?? ` `\"	!!! p!)L 
!	!?Z 	] 	!!!*" [s f filespec ex-find-file-shell nil t string-match "[^a-zA-Z0-9_.-/]" get-buffer-create " ex-tmp" call-process "-c" format "echo %s | tr ' ' '\\012'" end-of-line buffer-substring find-file-noselect forward-to-indentation 1 kill-buffer vip-ex-find-buf file-name-nondirectory file-directory-p directory-file-name] 15))

(defun ex-global (variant) "\
ex global command" (byte-code " 	 ! 
 ĉ É ?+ !\"G ?? !D N ?[ deD@A@
	V{ !\"    m o? ! o? `Y `!  #  	 ?  
T
 	B	) o É !  *)拈	*	@b!
S
	A	
-" [ex-g-flag ex-g-variant variant nil t ex-token vip-s-string ex-g-pat ex-addresses marks mark-count com-str end beg cont limit found error "Global within global not allowed" vip-get-ex-pat "Missing regular expression for global command" string= "" "No previous search string" 0 "First address exceeds second" vip-enlarge-region exchange-point-and-mark point-marker beginning-of-line backward-char 1 set-mark end-of-line re-search-backward mark forward-line -1 ((byte-code "q`TdS\"" [com-str " *ex-working-space*" buffer-substring] 3)) vip-ex] 26))

(defun ex-goto nil "\
ex goto command" (byte-code "?
 `B`!@b " [ex-addresses nil push-mark beginning-of-line] 3))

(defun ex-line (com) "\
ex line commands.  COM is join, shift-right or shift-left." (byte-code "  	@	A@
V !
\" - `!!J А` \"!֏!)Q ` #`)Sb +" [end ex-addresses beg point ex-count ex-flag com vip-default-ex-addresses vip-get-ex-count nil error "First address exceeds second" vip-enlarge-region exchange-point-and-mark set-mark forward-line " *text*" princ buffer-substring mark conditions (byte-code "!` #" [com vip-read-string "[Hit return to continue] " ex-line-subr mark] 6) ((quit (byte-code " " [ding] 2))) kill-buffer ex-line-subr beginning-of-line] 16))

(defun ex-line-subr (com beg end) (byte-code "\"A 	
^bm? `	
]W>  `	
]X& m?: !``S\"?:   p \"L \"p 	
^	
]\"a c [#	
]b !" [com beg end ex-variant vip-shift-width string= "join" end-of-line forward-line 1 delete-region fixup-whitespace "right" "left" indent-rigidly forward-char] 13))

(defun ex-mark nil "\
ex mark" (byte-code "	? `BË	@bZZ!))" [char ex-addresses nil ((byte-code "q!!& g!!!?# !5 !2 !5 !" [char " *ex-working-space*" skip-chars-forward " 	" looking-at "[a-z]" forward-char 1 "[
|]" error "Extra characters at end of \"k\" command" "\"k\" requires a following letter" "Mark must specify a letter"] 10)) point-to-register 97 1] 4))

(defun ex-map nil "\
ex map" (byte-code "ɋ
6 \"?! \"  #	EEBD!#` \"?M \"L #	EEBD!#+" [char string ins t ex-ins-map vip-insert-mode-map ex-map vip-mode-map nil ((byte-code "q! !!g!!!?) !!!7 !`! ! `\"" [ins t char string " *ex-working-space*" looking-at "!" forward-char 1 skip-chars-forward " 	" char-to-string "[ 	]" error "Usage: :map char string" "[
|]" "Missing rhs" set-mark end-of-buffer backward-char buffer-substring mark] 17)) lookup-key define-key vip-nil eval quote lambda (count) (interactive "p") execute-kbd-macro count (count) (interactive "p")] 19))

(defun ex-unmap nil "\
ex unmap" (byte-code "ȋ	( \"? !\"###C \"?3 !\"##*" [char ins t ex-ins-map vip-insert-mode-map ex-map nil vip-mode-map ((byte-code "q! !!g!!!!?- !" [ins t char " *ex-working-space*" looking-at "!" forward-char 1 skip-chars-forward " 	" char-to-string "[
|]" error "Macro must be a character"] 9)) prog lookup-key error "That macro wasn't mapped" define-key] 14))

(defun ex-next (&optional previous) (byte-code "" [ex-edit (byte-code "
?I  ! \"? \"?- !\"F !U< ՉWF !L Չ V 	??a 	@?l 	AX SV| 	AR 
 	@ 	@     	!
	@!\"
!+ !*" [count l previous ex-offset ex-file t nil w ex-cycle-other-window k b vip-get-ex-file char-or-string-p string= "" string-match "[0-9]+" ex-edit throw string-to-int 0 1 error "Usage: next (count >= 0)" vip-undisplayed-files get-lru-window selected-window window-buffer set-window-buffer get-file-buffer bury-buffer "Not that many undisplayed files"] 17)] 2))

(defun ex-preserve nil "\
Force auto save" (byte-code "!!" [t message "Autosaving all buffers that need to be saved..." do-auto-save] 3))

(defun ex-put nil "\
ex put" (byte-code "	?	 ` 	@ bU\" !% !)" [point ex-addresses vip-use-register ex-buffer vip-get-ex-buffer 0 vip-Put-back 1 vip-put-back] 4))

(defun ex-pwd nil "\
ex print working directory" (byte-code "!" [default-directory message] 2))

(defun ex-quit nil "\
ex quit" (byte-code "ËU !
   p!)" [char nil vip-is-vi ((byte-code "q!g" [char " *ex-working-space*" skip-chars-forward " 	"] 3)) 33 set-buffer-modified-p save-buffers-kill-emacs vip-ex-kill-buf] 4))

(defun ex-read nil "\
ex read" (byte-code " 	? ` 	@bU? ! 
?) \"8 ?4 !D \"G !)" [point ex-addresses ex-variant ex-file buffer-file-name ex-cmdfile t vip-get-ex-file 0 next-line 1 beginning-of-line string= "" error "No file specified" shell-command insert-file] 8))

(defun ex-recover nil "\
ex recover from emacs #file#" (byte-code "  	 !
\"% ? !* 
!
 \"?;  ; ?A !
!" [ex-append ex-offset ex-file buffer-file-name ex-variant vip-get-ex-file error "Illegal extra characters" string= "" "No file associated with this buffer" expand-file-name buffer-modified-p "No write since last change (:rec! overrides)" recover-file] 11))

(defun ex-rewind nil "\
No rewind really. Instead tell about :next count" (byte-code "!" [message ":n can count the :args list now. :rewind is obsolete"] 2))

(defun ex-set nil (byte-code "p!ȋ," [var val b s nil 0 buffer-name "setq" ((byte-code "q!! !`!! `\"\", \"9 щ҉>\"D \"Q щՉ>\"\\ \"i ؉҉>\"t \" ؉Չ>\" \" ݉҉>\" \" ݉Չ>\" \" ҉>\" \" Չ>\" \" ҉>\"\"Չ>\"\")҉>\"4\">Չ	=!N!!!!`!`! ! `\"\"\"\"\"\"\"@ 	\"A \"B \"C D 	\"E F 
	$!G H I 
	$!@!" [var val s " *ex-working-space*" skip-chars-forward " 	" looking-at "[
|]" error "Usage: set variable[= 	]value" set-mark "^ 	=
|" buffer-substring mark string= "ai" "autoindent" "vip-auto-indent" "t" "noai" "noautoindent" "nil" "ic" "ignorecase" "vip-case-fold-search" "noic" "noignorecase" "ma" "magic" "vip-re-search" "noma" "nomagic" "ro" "readonly" "buffer-read-only" "noro" "noreadonly" "sm" "showmatch" "blink-matching-paren" "nosm" "noshowmatch" "ws" "wrapscan" "vip-search-wrap-around-t" "nows" "nowrapscan" 0 forward-char 1 "Missing rhs" end-of-buffer backward-char "sw" "shiftwidth" "vip-shift-width" "ts" "tabstop" "tab-width" "setq-default" "wm" "wrapmargin" "fill-column" format "(- (window-width) %s)" "sh" "shell" "explicit-shell-file-name" "\"%s\"" message "%s %s %s" eval read-from-string "(%s %s %s)"] 61))] 5))

(defun ex-shell nil "\
ex shell" (byte-code " " [shell] 2))

(defun ex-source nil "\
ex-source - just load the file or ~/.vip" (byte-code " \" 	! !" [ex-file vip-custom-file-name vip-get-ex-file string= "" load] 5))

(defun ex-substitute (&optional repeat r-flag) "\
ex substitute. if REPEAT use previous reg-exp which is ex-reg-exp or
vip-s-string" (byte-code " ĉ  ?8 	. 
0 o \"E 
G 	
	 ?g ׉o ! \" ͉ ͉p    @b`!S!` BB) ? ``BB A? @B@A@\"` ]b )` ^b`Wn   Hl?%	#??0!;`
!  j	#Y?Y!d`
!  )),zb !." [delim pat repl opt-g nil opt-c matched-pos repeat ex-token r-flag vip-s-string ex-reg-exp ex-repl t ex-count ex-addresses beg end cont eol-mark limit vip-get-ex-pat string= "" vip-get-ex-opt-gc "g" vip-get-ex-count set-mark forward-line mark vip-enlarge-region point-marker end-of-line dot-marker beginning-of-line re-search-forward y-or-n-p "Replace? " replace-match forward-char message "done"] 29))

(defun ex-tag nil "\
ex tag" (byte-code "Ë\"?  ɏ)" [tag ex-tag nil ((byte-code "q!`!! `\"" [tag " *ex-working-space*" skip-chars-forward " 	" set-mark "^ |	
" buffer-substring mark] 7)) string= "" vip-change-mode-to-emacs conditions (byte-code "\" 	\" 	! " [tag ex-tag t string= "" find-tag find-tag-other-window vip-change-mode-to-vi] 5) ((error (byte-code " !" [conditions vip-change-mode-to-vi vip-message-conditions] 3)))] 5))

(defun ex-write (q-flag) "\
ex write" (byte-code "! 
@
A@	V! !6 	\"` 	# 	\"P 
?G !
	W 	!		 \"?l 	!l ?v 	\"!	\"` 	%` Z
	\" !  )	!	#
? 	
    p!." [t end ex-addresses beg size old-point ret ex-write-cmd ex-cmdfile ex-file buffer-file-name ex-variant ex-append nil q-flag vip-is-vi vip-default-ex-addresses vip-get-ex-file error "First address exceeds second" vip-enlarge-region shell-command-on-region mark string= "" "No file associated with this buffer" expand-file-name file-exists-p format "\"%s\" File exists - use w! to override" write-region 1 set-buffer-modified-p clear-visited-file-modtime delete-auto-save-file-if-necessary ex-write-info save-buffers-kill-emacs kill-buffer] 27))

(defun ex-write-info (exists file-name size) (byte-code "	 ǂ 
\"%" [file-name exists beg end size message "\"%s\"%s %d lines, %d characters" "" " [New file]" count-lines] 7))

(defun ex-yank nil "\
ex yank" (byte-code "  	@	A@
V !
\" % + !; `!S!> !` \"M ![ ` $` \")*" [end ex-addresses beg ex-g-flag ex-g-variant ex-count ex-flag ex-buffer nil vip-default-ex-addresses vip-get-ex-buffer error "First address exceeds second" vip-enlarge-region exchange-point-and-mark "Can't yank within global" set-mark forward-line mark "Extra chacters at end of command" copy-to-register copy-region-as-kill] 18))

(defun ex-command nil "\
execute shell command" (byte-code "ǋp\"O\"( 	% 	OP( !
?8 !b 
@
A@?G b!` \"` $)b*)" [command vip-ex-last-shell-com ex-addresses end beg t nil ((byte-code "q!`d\" " [command " *ex-working-space*" skip-chars-forward " 	" buffer-substring end-of-line] 4)) ex-expand-filsyms string= "!" 0 1 error "No previous shell command" shell-command set-mark vip-enlarge-region mark shell-command-on-region] 13))

(defun ex-line-no nil "\
print line number" (byte-code "e? d @\"T\"" [ex-addresses message "%d" count-lines] 5))

(if (file-exists-p vip-custom-file-name) (load vip-custom-file-name))

(if vip-want-history (vip-get-history))

(if vip-always (progn (setq term-setup-hook (quote vip-mode)) (setq default-major-mode (quote vip-mode)) (defun vip-tmp-hook nil (vip-mode)) (defun vip-set-hook (h) (if (or (not (listp h)) (and h (equal (car h) (quote lambda)))) (setq h (list h))) (or (memq (quote vip-tmp-hook) h) (setq h (cons (quote vip-tmp-hook) h)))) (defvar emacs-lisp-mode-hook nil) (setq emacs-lisp-mode-hook (vip-set-hook emacs-lisp-mode-hook)) (defvar TeX-mode-hook nil) (setq TeX-mode-hook (vip-set-hook TeX-mode-hook)) (defvar c-mode-hook nil) (setq c-mode-hook (vip-set-hook c-mode-hook)) (defvar c++-mode-hook nil) (setq c++-mode-hook (vip-set-hook c++-mode-hook)) (defvar lisp-interaction-mode-hook nil) (setq lisp-interaction-mode-hook (vip-set-hook lisp-interaction-mode-hook)) (defvar text-mode-hook nil) (setq text-mode-hook (vip-set-hook text-mode-hook))))
