;ELC ;;; compiled by rms@mole.gnu.ai.mit.edu on Mon Jun 19 20:13:50 1995 ;;; from file /home/fsf/rms/e19/lisp/viper.el ;;; emacs version 19.28.95.2. ;;; bytecomp version FSF 2.10 ;;; optimization is on. ;;; this file uses opcodes which do not exist in Emacs 18. (if (and (boundp 'emacs-version) (or (and (boundp 'epoch::version) epoch::version) (string-lessp emacs-version "19.28.90"))) (error "`viper.el' was compiled for Emacs 19.29 or later")) #@30 The current version of Viper (defconst viper-version "2.76 of June 9, 1995" (#$ . 471)) (byte-code "!!!!!B" [require advice cl ring viper-util boundp vip-first-time t current-load-list] 2) #@327 User's expert level. The minor mode vip-vi-diehard-minor-mode is in effect when vip-expert-level is 1 or 2 or when vip-want-emacs-keys-in-vi is t. The minor mode vip-insert-diehard-minor-mode is in effect when vip-expert-level is 1 or 2 or if vip-want-emacs-keys-in-insert is t. Use `M-x vip-set-expert-level' to change this. (defvar vip-expert-level 0 (#$ . 694)) (byte-code "\nB!\nB!" [5 vip-max-expert-level current-load-list boundp vip-saved-user-settings nil make-variable-buffer-local minor-mode-map-alist] 2) #@20 nil (buffer local) (defvar vip-vi-intercept-minor-mode nil (#$ . 1232)) (make-variable-buffer-local (quote vip-vi-intercept-minor-mode)) #@52 Viper's minor mode for Vi bindings. (buffer local) (defvar vip-vi-basic-minor-mode nil (#$ . 1375)) (make-variable-buffer-local (quote vip-vi-basic-minor-mode)) #@82 Auxiliary minor mode for user-defined local bindings in Vi state. (buffer local) (defvar vip-vi-local-user-minor-mode nil (#$ . 1542)) (make-variable-buffer-local (quote vip-vi-local-user-minor-mode)) #@83 Auxiliary minor mode for user-defined global bindings in Vi state. (buffer local) (defvar vip-vi-global-user-minor-mode nil (#$ . 1749)) (make-variable-buffer-local (quote vip-vi-global-user-minor-mode)) #@86 Minor mode used to make major-mode-specific modification to Vi state. (buffer local) (defvar vip-vi-state-modifier-minor-mode nil (#$ . 1959)) (make-variable-buffer-local (quote vip-vi-state-modifier-minor-mode)) #@81 This minor mode is in effect when the user wants Viper to be Vi. (buffer local) (defvar vip-vi-diehard-minor-mode nil (#$ . 2178)) (make-variable-buffer-local (quote vip-vi-diehard-minor-mode)) #@154 Minor mode for Ex command macros in Vi state. The corresponding keymap stores key bindings of Vi macros defined with the Ex command :map. (buffer local) (defvar vip-vi-kbd-minor-mode nil (#$ . 2379)) (make-variable-buffer-local (quote vip-vi-kbd-minor-mode)) #@20 nil (buffer local) (defvar vip-insert-intercept-minor-mode nil (#$ . 2644)) (make-variable-buffer-local (quote vip-insert-intercept-minor-mode)) #@64 Viper's minor mode for bindings in Insert mode. (buffer local) (defvar vip-insert-basic-minor-mode nil (#$ . 2795)) (make-variable-buffer-local (quote vip-insert-basic-minor-mode)) #@188 Auxiliary minor mode for buffer-local user-defined bindings in Insert state. This is a way to overshadow normal Insert mode bindings locally to certain designated buffers. (buffer local) (defvar vip-insert-local-user-minor-mode nil (#$ . 2983)) (make-variable-buffer-local (quote vip-insert-local-user-minor-mode)) #@87 Auxiliary minor mode for global user-defined bindings in Insert state. (buffer local) (defvar vip-insert-global-user-minor-mode nil (#$ . 3304)) (make-variable-buffer-local (quote vip-insert-global-user-minor-mode)) #@90 Minor mode used to make major-mode-specific modification to Insert state. (buffer local) (defvar vip-insert-state-modifier-minor-mode nil (#$ . 3526)) (make-variable-buffer-local (quote vip-insert-state-modifier-minor-mode)) #@103 Minor mode that simulates Vi very closely. Not recommened, except for the novice user. (buffer local) (defvar vip-insert-diehard-minor-mode nil (#$ . 3758)) (make-variable-buffer-local (quote vip-insert-diehard-minor-mode)) #@156 Minor mode for Ex command macros Insert state. The corresponding keymap stores key bindings of Vi macros defined with the Ex command :map!. (buffer local) (defvar vip-insert-kbd-minor-mode nil (#$ . 3989)) (make-variable-buffer-local (quote vip-insert-kbd-minor-mode)) #@86 Minor mode in effect in replace state (cw, C, and the like commands). (buffer local) (defvar vip-replace-minor-mode nil (#$ . 4264)) (make-variable-buffer-local (quote vip-replace-minor-mode)) #@20 nil (buffer local) (defvar vip-emacs-intercept-minor-mode t (#$ . 4463)) (make-variable-buffer-local (quote vip-emacs-intercept-minor-mode)) #@155 Minor mode for local user bindings effective in Emacs state. Users can use it to override Emacs bindings when Viper is in its Emacs state. (buffer local) (defvar vip-emacs-local-user-minor-mode t (#$ . 4611)) (make-variable-buffer-local (quote vip-emacs-local-user-minor-mode)) #@156 Minor mode for global user bindings in effect in Emacs state. Users can use it to override Emacs bindings when Viper is in its Emacs state. (buffer local) (defvar vip-emacs-global-user-minor-mode t (#$ . 4896)) (make-variable-buffer-local (quote vip-emacs-global-user-minor-mode)) #@221 Minor mode for Vi style macros in Emacs state. The corresponding keymap stores key bindings of Vi macros defined with `vip-record-kbd-macro' command. There is no Ex-level command to do this interactively. (buffer local) (defvar vip-emacs-kbd-minor-mode t (#$ . 5184)) (make-variable-buffer-local (quote vip-emacs-kbd-minor-mode)) #@186 Minor mode used to make major-mode-specific modification to Emacs state. For instance, a Vi purist may want to bind `dd' in Dired mode to a function that deletes a file. (buffer local) (defvar vip-emacs-state-modifier-minor-mode t (#$ . 5521)) (make-variable-buffer-local (quote vip-emacs-state-modifier-minor-mode)) #@203 *If non-nil, ISO accents will be turned on in insert/replace emacs states and turned off in vi-state. For some users, this behavior may be too primitive. In this case, use insert/emacs/vi state hooks. (defvar vip-automatic-iso-accents nil (#$ . -5845)) #@141 *Set to nil if you want complete Vi compatibility in insert mode. Complete compatibility with Vi is not recommended for power use of Viper. (defvar vip-want-emacs-keys-in-insert t (#$ . -6106)) #@128 *Set to nil if you want complete Vi compatibility in Vi mode. Full Vi compatibility is not recommended for power use of Viper. (defvar vip-want-emacs-keys-in-vi t (#$ . -6307)) #@20 nil (buffer local) (defvar vip-undo-needs-adjustment nil (#$ . 6490)) (byte-code "!#B" [make-variable-buffer-local vip-undo-needs-adjustment put permanent-local t viper vip-buffer-undo-list-mark current-load-list] 4) #@153 *Non-nil means not to move point while undoing commands. This style is different from Emacs and Vi. Try it to see if it better fits your working style. (defvar vip-keep-point-on-undo nil (#$ . -6732)) #@17 (buffer local) (defvar vip-after-change-functions nil (#$ . 6939)) (make-variable-buffer-local (quote vip-after-change-functions)) #@17 (buffer local) (defvar vip-before-change-functions nil (#$ . 7077)) (make-variable-buffer-local (quote vip-before-change-functions)) #@17 (buffer local) (defvar vip-post-command-hooks nil (#$ . 7217)) (make-variable-buffer-local (quote vip-post-command-hooks)) #@17 (buffer local) (defvar vip-pre-command-hooks nil (#$ . 7347)) (make-variable-buffer-local (quote vip-pre-command-hooks)) #@17 (buffer local) (defvar vip-intermediate-command nil (#$ . 7475)) (make-variable-buffer-local (quote vip-intermediate-command)) #@17 (buffer local) (defvar vip-began-as-replace nil (#$ . 7609)) (make-variable-buffer-local (quote vip-began-as-replace)) #@39 *Cursor color to use in Replace state (defvar vip-replace-overlay-cursor-color "Red" (#$ . -7735)) #@17 (buffer local) (defvar vip-replace-overlay nil (#$ . 7840)) (byte-code "!#  !h #' !>h!!hD D J !=U\">?)c\"\"\"Ӈ" [make-variable-buffer-local vip-replace-overlay put permanent-local t vip-emacs-p window-system device-type selected-device (tty stream) make-face vip-replace-overlay-face face-differs-from-default-p "darkseagreen2" "Black" colors x-display-color-p device-class color nil mapcar vip-color-defined-p set-face-background set-face-foreground set-face-underline-p] 4) #@61 *Face for highlighting replace regions on a window display. (defvar vip-replace-overlay-face (quote vip-replace-overlay-face) (#$ . -8395)) #@130 A string marking the end of replacement regions. It is used only with TTYs or if `vip-use-replace-region-delimiters' is non-nil. (defvar vip-replace-region-end-delimiter "$" (#$ . 8542)) #@136 A string marking the beginning of replacement regions. It is used only with TTYs or if `vip-use-replace-region-delimiters' is non-nil. (defvar vip-replace-region-start-delimiter "" (#$ . 8736)) #@241 *If non-nil, Viper will always use `vip-replace-region-end-delimiter' and `vip-replace-region-start-delimiter' to delimit replacement regions, even on color displays. By default, the delimiters are used only on TTYs or monochrome displays. (defvar vip-use-replace-region-delimiters (byte-code " \f !  !>??2+ 1 !=?" [vip-emacs-p window-system device-type selected-device (tty stream) x-display-color-p device-class color] 2) (#$ . -8937)) (byte-code "\n!\n!\f!\f!" [vip-xemacs-p glyphp vip-replace-region-end-delimiter make-glyph vip-replace-region-start-delimiter] 2) #@20 nil (buffer local) (defvar vip-last-posn-in-replace-region nil (#$ . 9562)) (make-variable-buffer-local (quote vip-last-posn-in-replace-region)) #@20 nil (buffer local) (defvar vip-last-posn-while-in-insert-state nil (#$ . 9713)) (byte-code "!##" [make-variable-buffer-local vip-last-posn-while-in-insert-state put vip-last-posn-in-replace-region permanent-local t] 4) #@17 (buffer local) (defvar vip-sitting-in-replace nil (#$ . 9951)) (byte-code "!#" [make-variable-buffer-local vip-sitting-in-replace put permanent-local t] 4) #@17 (buffer local) (defvar vip-replace-chars-to-delete 0 (#$ . 10122)) (make-variable-buffer-local (quote vip-replace-chars-to-delete)) #@17 (buffer local) (defvar vip-replace-chars-deleted 0 (#$ . 10261)) (make-variable-buffer-local (quote vip-replace-chars-deleted)) #@33 The size of the insertion ring. (defvar vip-insertion-ring-size 14 (#$ . 10396)) (byte-code "! B! B!  B‡" [boundp vip-insertion-ring nil current-load-list vip-temp-insertion-ring vip-last-inserted-string-from-insertion-ring ""] 2) #@31 The size of the command ring. (defvar vip-command-ring-size 14 (#$ . 10660)) (byte-code "! B! B‡" [boundp vip-command-ring nil current-load-list vip-temp-command-ring] 2) #@20 nil (buffer local) (defvar vip-current-state (quote emacs-state) (#$ . 10856)) (make-variable-buffer-local (quote vip-current-state)) #@206 The key used to change states from emacs to Vi and back. In insert mode, this key also functions as Meta. Must be set in .vip file or prior to loading Viper. This setting cannot be changed interactively. (defvar vip-toggle-key "" (#$ . 10997)) #@117 Key used to ESC. Must be set in .vip file or prior to loading Viper. This setting cannot be changed interactively. (defvar vip-ESC-key "" (#$ . 11250)) #@444 *If true, multiple ESC in Vi mode will cause bell to ring. _ is then mapped to Meta. This is set to t on a windowing terminal and to 'twice on a dumb terminal (unless the user level is 1, 2, or 5). On a dumb terminal, this enables cursor keys and is generally more convenient, as terminals usually don't have a convenient Meta key. Setting vip-no-multiple-ESC to nil will allow as many multiple ESC, as is allowed by the major mode in effect. (defvar vip-no-multiple-ESC t (#$ . -11411)) #@106 *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-want-ctl-h-help nil (#$ . -11906)) #@17 (buffer local) (defvar vip-cted nil (#$ . 12064)) (make-variable-buffer-local (quote vip-cted)) #@20 nil (buffer local) (defvar vip-current-indent 0 (#$ . 12167)) (make-variable-buffer-local (quote vip-current-indent)) #@20 nil (buffer local) (defvar vip-preserve-indent nil (#$ . 12291)) (make-variable-buffer-local (quote vip-preserve-indent)) #@19 *Autoindent if t. (defconst vip-auto-indent nil (#$ . -12419)) #@27 *The shiftwidth variable. (defconst vip-shift-width 8 (#$ . -12488)) #@238 *If t, don't move point when repeating previous command. This is useful for doing repeated changes with the '.' key. The user can change this to nil, if she likes when the cursor moves to a new place after repeating previous Vi command. (defconst vip-keep-point-on-repeat t (#$ . -12564)) #@20 nil (buffer local) (defvar vip-insert-point nil (#$ . 12859)) (byte-code "!#" [make-variable-buffer-local vip-insert-point put permanent-local t] 4) #@20 nil (buffer local) (defvar vip-pre-command-point nil (#$ . 13022)) (byte-code "!#!B!\" BLJ" [make-variable-buffer-local vip-pre-command-point put permanent-local t boundp vip-last-insertion nil current-load-list vip-last-replace-region ""] 4) #@20 nil (buffer local) (defvar vip-com-point nil (#$ . 13303)) (byte-code "!!\f B! B!& B!3 B!@ B!M\n B!Z B!g\f Bć" [make-variable-buffer-local vip-com-point boundp vip-d-com nil current-load-list vip-d-char vip-use-register vip-f-char vip-F-char vip-f-forward vip-f-offset vip-s-string ""] 2) #@52 String inserted at the beginning of quoted region. (defvar vip-quote-string "> " (#$ . 13672)) (byte-code "! B‡" [boundp vip-s-forward nil current-load-list] 2) #@30 *If t, search ignores cases. (defconst vip-case-fold-search nil (#$ . -13849)) #@60 *If t, search is reg-exp search, otherwise vanilla search. (defconst vip-re-search t (#$ . -13934)) #@62 *If t then do regexp replace, if nil then do string replace. (defconst vip-re-query-replace t (#$ . -14040)) #@56 *If t, do regexp replace. nil means do string replace. (defconst vip-re-replace t (#$ . -14155)) #@69 *Ex-style: the commands l,h do not cross lines, etc. (buffer local) (defvar vip-ex-style-motion t (#$ . -14258)) (make-variable-buffer-local (quote vip-ex-style-motion)) #@219 *The keys ^H, ^? don't jump lines in insert, ESC moves cursor back, etc. Note: this doesn't preclude ^H and ^? from deleting characters by moving past the insertion point. This is a feature, not a bug. (buffer local) (defvar vip-ex-style-editing-in-insert t (#$ . -14435)) (make-variable-buffer-local (quote vip-ex-style-editing-in-insert)) #@155 *If t, DEL key will delete characters while moving the cursor backwards. If nil, the cursor will move backwards without deleting anything. (buffer local) (defvar vip-delete-backwards-in-replace nil (#$ . -14784)) (make-variable-buffer-local (quote vip-delete-backwards-in-replace)) #@34 *Key bound for buffer-searching. (defconst vip-buffer-search-char nil (#$ . -15072)) #@29 *If t, search wraps around. (defconst vip-search-wrap-around-t t (#$ . -15163)) #@164 *Ring of file and buffer names that are considered to be related to the current buffer. These buffers can be cycled through via :R and :P commands. (buffer local) (defvar vip-related-files-and-buffers-ring nil (#$ . -15250)) (byte-code "!#" [make-variable-buffer-local vip-related-files-and-buffers-ring put permanent-local t] 4) #@20 nil (buffer local) (defvar vip-local-search-start-marker nil (#$ . 15594)) (byte-code "!!  B" [make-variable-buffer-local vip-local-search-start-marker boundp vip-search-start-marker make-marker current-load-list] 2) #@20 nil (buffer local) (defvar vip-search-overlay nil (#$ . 15831)) (make-variable-buffer-local (quote vip-search-overlay)) #@43 *Regexps for Headings. Used by [[ and ]]. (defvar 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\\|" "^.+:-") (#$ . -15957)) #@48 *Regexps to end Headings/Sections. Used by []. (defvar vip-heading-end (concat "^}\\|" "^\\\\end{\\|" "^@end \\|" ")\n\n[ \n]*\\|" "\\.\\s-*$") (#$ . -16271)) #@20 nil (buffer local) (defvar vip-last-jump nil (#$ . 16437)) (make-variable-buffer-local (quote vip-last-jump)) #@20 nil (buffer local) (defvar vip-last-jump-ignore 0 (#$ . 16553)) (make-variable-buffer-local (quote vip-last-jump-ignore)) #@2  (defconst vip-SpuriousText "Spurious text after command" (#$ . 16680)) #@2  (defconst vip-BadExCommand "Not an editor command" (#$ . 16757)) #@2  (defconst vip-InvalidCommandArgument "Invalid command argument" (#$ . 16828)) #@2  (defconst vip-NoPrevSearch "No previous search string" (#$ . 16912)) #@2  (defconst vip-EmptyRegister "`%c': Nothing in this register" (#$ . 16987)) #@2  (defconst vip-InvalidRegister "`%c': Invalid register" (#$ . 17068)) #@2  (defconst vip-EmptyTextmarker "`%c': Text marker doesn't point anywhere" (#$ . 17143)) #@2  (defconst vip-InvalidTextmarker "`%c': Invalid text marker" (#$ . 17236)) #@2  (defconst vip-InvalidViCommand "Invalid command" (#$ . 17316)) #@2  (defconst vip-BadAddress "Ill-formed address" (#$ . 17385)) #@2  (defconst vip-FirstAddrExceedsSecond "First address exceeds second" (#$ . 17451)) #@2  (defconst vip-NoFileSpecified "No file specified" (#$ . 17539)) (byte-code "! C B! B!\" B!1C B!> B!K\n B!X B Ň" [boundp vip-search-history "" current-load-list vip-replace1-history nil vip-replace2-history vip-quote-region-history vip-quote-string vip-ex-history vip-shell-history vip-last-shell-com t mark-even-if-inactive next-line-add-newlines require-final-newline] 2) #@52 Whether Viper startup message should be inhibited. (defvar vip-inhibit-startup-message nil (#$ . 17990)) #@51 t means, arrange that vi-state will be a default. (defvar vip-always t (#$ . 18101)) #@77 Viper customisation file. This variable must be set _before_ loading Viper. (defvar vip-custom-file-name "~/.vip" (#$ . 18192)) #@39 The name prefix for Viper Info files. (defvar vip-info-file-name "viper" (#$ . 18326)) #@51 Spell function used by #s command to spell. (defvar vip-spell-function (quote ispell-region) (#$ . 18419)) #@30 The tags file used by Viper. (defvar vip-tags-file-name "TAGS" (#$ . 18538)) #@75 If t, use vi-style editing in minibuffer. Should be set in `~/.vip' file. (defvar vip-vi-style-in-minibuffer t (#$ . 18621)) #@20 nil (buffer local) (defvar vip-minibuffer-overlay nil (#$ . 18752)) (byte-code "!!\f Bć" [make-variable-buffer-local vip-minibuffer-overlay boundp vip-minibuffer-exit-hook nil current-load-list] 2) #@84 Minor mode that forces Vi-style when the Minibuffer is in Vi state. (buffer local) (defvar vip-vi-minibuffer-minor-mode nil (#$ . 18968)) (make-variable-buffer-local (quote vip-vi-minibuffer-minor-mode)) #@88 Minor mode that forces Vi-style when the Minibuffer is in Insert state. (buffer local) (defvar vip-insert-minibuffer-minor-mode nil (#$ . 19178)) (make-variable-buffer-local (quote vip-insert-minibuffer-minor-mode)) #@273 If t, always add a newline at the end of buffer. Usually, Viper adds a newline character at the end of the last line in a buffer, if it's missing. In some major modes, however, like shell-mode, this is undesirable and must be set to nil. See vip-set-hooks. (buffer local) (defvar vip-add-newline-at-eob t (#$ . 19401)) (make-variable-buffer-local (quote vip-add-newline-at-eob)) #@49 Mode line tag identifying the Vi mode of Viper. (defconst vip-vi-state-id " " (#$ . 19786)) #@52 Mode line tag identifying the Emacs mode of Viper. (defconst vip-emacs-state-id " " (#$ . 19887)) #@53 Mode line tag identifying the Insert mode of Viper. (defconst vip-insert-state-id " " (#$ . 19994)) #@54 Mode line tag identifying the Replace mode of Viper. (defconst vip-replace-state-id " " (#$ . 20103)) (set-default (quote mode-line-buffer-identification) (quote (" %b"))) #@20 nil (buffer local) (defvar vip-mode-string vip-emacs-state-id (#$ . 20284)) (byte-code "!\n>\nA\"" [make-variable-buffer-local vip-mode-string global-mode-string append ("" vip-mode-string)] 3) #@60 *Hooks run just before the switch to Vi mode is completed. (defvar vip-vi-state-hooks nil (#$ . -20496)) #@64 *Hooks run just before the switch to Insert mode is completed. (defvar vip-insert-state-hooks nil (#$ . -20607)) #@65 *Hooks run just before the switch to Replace mode is completed. (defvar vip-replace-state-hooks nil (#$ . -20726)) #@63 *Hooks run just before the switch to Emacs mode is completed. (defvar vip-emacs-state-hooks nil (#$ . -20847)) #@37 Hooks run just after loading Viper. (defvar vip-load-hooks nil (#$ . 20964)) (defalias 'vip-test-com-defun '(macro . #[(name) " !\nP!\nP! EDF+" [symbol-name name snm intern "-p" nm-p "s" nms defun (com) consp memq (if (< com 0) (- com) com)] 7])) (byte-code "\nB" [(99 100 121 33 61 35 60 62 34) vip-prefix-commands current-load-list] 2) (defalias 'vip-prefix-command-p #[(com) "W [\f\n>:" [com 0 vip-prefix-commands] 2]) (byte-code "\nB" [(99 100 121 33 61 60 62 114 82) vip-charpair-commands current-load-list] 2) (defalias 'vip-charpair-command-p #[(com) "W [\f\n>:" [com 0 vip-charpair-commands] 2]) #@19 Movement commands (defconst vip-movement-commands (quote (98 66 101 69 102 70 71 104 72 106 107 108 72 77 110 116 84 119 87 36 37 94 40 41 45 43 124 123 125 91 93 39 96 59 44 48 63 47)) (#$ . 21621)) (defalias 'vip-movement-command-p #[(com) "W [\f\n>:" [com 0 vip-movement-commands] 2]) (byte-code "\nB" [(99 100 67 68 62 60) vip-dotable-commands current-load-list] 2) (defalias 'vip-dotable-command-p #[(com) "W [\f\n>:" [com 0 vip-dotable-commands] 2]) (byte-code "\nB" [(99 67 103 113 83) vip-hash-cmds current-load-list] 2) (defalias 'vip-hash-cmd-p #[(com) "W [\f\n>:" [com 0 vip-hash-cmds] 2]) (byte-code "\nB" [(100 121 89 68 112 80 120 88) vip-regsuffix-commands current-load-list] 2) (defalias 'vip-regsuffix-command-p #[(com) "W [\f\n>:" [com 0 vip-regsuffix-commands] 2]) (require (quote viper-keym)) (defalias 'vip-change-state #[(new-state) "\"\"\"#\"\" =S Νw яGVC\"wnw!w >w >f`\"`\"##   ! ! " [remove-hook post-command-hook vip-post-command-sentinel add-hook pre-command-hook vip-pre-command-sentinel t vip-post-command-hooks vip-insert-state-post-command-sentinel vip-pre-command-hooks vip-insert-state-pre-command-sentinel new-state vi-state vip-current-state (insert-state replace-state) conds (byte-code " \n\"  )ć" [vip-save-last-insertion vip-insert-point vip-last-posn-while-in-insert-state vip-began-as-replace nil vip-repeat-insert-command] 3) ((error (vip-message-conditions conds))) vip-last-insertion 0 vip-push-onto-ring vip-insertion-ring vip-ex-style-editing-in-insert backward-char 1 (insert-state replace-state) (emacs-state vi-state) vip-move-marker-locally vip-insert-point vip-last-posn-while-in-insert-state vip-normalize-minor-mode-map-alist vip-adjust-keys-for vip-set-mode-vars-for vip-refresh-mode-line] 4]) #@62 Make necessary adjustments to keymaps before entering STATE. (defalias 'vip-adjust-keys-for #[(state) ">H\n$\f#\f#$\f#?\n ;\f##\f##? Y##" [state (insert-state replace-state) vip-auto-indent define-key vip-insert-basic-map " " vip-autoindent vip-want-emacs-keys-in-insert "\n" nil vip-insert-diehard-minor-mode vip-want-ctl-h-help "" help-command vip-replace-map vip-del-backward-char-in-insert vip-del-backward-char-in-replace vip-want-emacs-keys-in-vi vip-vi-diehard-minor-mode vip-vi-basic-map vip-backward-char] 4 (#$ . 23540)]) (defalias 'vip-normalize-minor-mode-map-alist #[nil "\nB\fBBB\nB\"A!*\"A,BBBBB\fBBBB!\"A!c!\"AeB#B%B'B)B+B-B/\"A!/\"AB0\"0" [vip-append-filter-alist vip-vi-intercept-minor-mode vip-vi-intercept-map vip-vi-minibuffer-minor-mode vip-minibuffer-map vip-vi-local-user-minor-mode vip-vi-local-user-map vip-vi-kbd-minor-mode vip-vi-kbd-map vip-vi-global-user-minor-mode vip-vi-global-user-map vip-vi-state-modifier-minor-mode keymapp assoc major-mode vip-vi-state-modifier-alist vip-empty-keymap vip-vi-diehard-minor-mode vip-vi-diehard-map vip-vi-basic-minor-mode vip-vi-basic-map vip-insert-intercept-minor-mode vip-insert-intercept-map vip-replace-minor-mode vip-replace-map vip-insert-minibuffer-minor-mode vip-insert-local-user-minor-mode vip-insert-local-user-map vip-insert-kbd-minor-mode vip-insert-kbd-map vip-insert-global-user-minor-mode vip-insert-global-user-map vip-insert-state-modifier-minor-mode vip-insert-state-modifier-alist vip-insert-diehard-minor-mode vip-insert-diehard-map vip-insert-basic-minor-mode vip-insert-basic-map vip-emacs-intercept-minor-mode vip-emacs-intercept-map vip-emacs-local-user-minor-mode vip-emacs-local-user-map vip-emacs-kbd-minor-mode vip-emacs-kbd-map vip-emacs-global-user-minor-mode vip-emacs-global-user-map vip-emacs-state-modifier-minor-mode vip-emacs-state-modifier-alist minor-mode-map-alist] 27]) (defalias 'vip-refresh-mode-line #[nil "=\n\n'=\f'='=' " [vip-current-state emacs-state vip-emacs-state-id vi-state vip-vi-state-id replace-state vip-replace-state-id insert-state vip-insert-state-id vip-mode-string force-mode-line-update] 2]) #@32 Turn on Viper emulation of Vi. (defalias 'viper-mode #[nil "?  ċ!! " [noninteractive vip-first-time nil vip-inhibit-startup-message ((byte-code " ! !ceb!\"\f$p!" [t vip-inhibit-startup-message delete-other-windows switch-to-buffer "Viper Startup Message" erase-buffer substitute-command-keys "Viper Is a Package for Emacs Rebels.\nIt is also a VI Plan for Emacs Rescue and a venomous VI PERil.\n\nTechnically speaking, Viper is a Vi emulation package for GNU Emacs 19 and\nXEmacs 19. It supports virtually all of Vi and Ex functionality, extending\nand improving upon much of it.\n\n 1. Viper supports Vi at several levels. Level 1 is the closest to\n Vi, level 5 provides the most flexibility to depart from many Vi\n conventions.\n \n You will be asked to specify your user level in a following screen.\n \n If you select user level 1 then the keys ^X, ^C, ^Z, and ^G will\n behave as in VI, to smooth transition to Viper for the beginners. \n However, to use Emacs productively, you are advised to reach user\n level 3 or higher. \n \n If your user level is 2 or higher, ^X and ^C will invoke Emacs\n functions,as usual in Emacs; ^Z will toggle vi/emacs modes, and\n ^G will be the usual Emacs's keyboard-quit (something like ^C in VI).\n \n 2. Vi exit functions (e.g., :wq, ZZ) work on INDIVIDUAL files -- they\n do not cause Emacs to quit, except at user level 1 (a novice).\n 3. ^X^C EXITS EMACS.\n 4. Viper supports multiple undo: `u' will undo. Typing `.' will repeat\n undo. Another `u' changes direction.\n \n 6. Emacs Meta functions are invoked by typing `_' or `\\ ESC'.\n On a window system, the best way is to use the Meta-key.\n 7. Try \\[keyboard-quit] and \\[abort-recursive-edit] repeatedly,\n if something funny happens. This would abort the current editing\n command. \n \nYou can get more information on Viper by:\n\n a. Typing `:help' in Vi state\n b. Printing Viper manual, found in ./etc/viper.dvi\n c. Printing ViperCard, the Quick Reference, found in ./etc/viperCard.dvi\n \nThis startup message appears whenever you load Viper, unless you type `y' now." y-or-n-p "Inhibit Viper startup message? " vip-save-setting "Viper startup message inhibited" vip-custom-file-name kill-buffer] 5)) message " " vip-set-expert-level dont-change-unless vip-change-state-to-vi] 2 (#$ . 25877) nil]) (defalias (quote vip-mode) (quote viper-mode)) (defalias 'vip-exit-insert-state #[nil " " [vip-change-state-to-vi] 1 nil nil]) #@71 Sets Viper minor mode variables to put Viper's state STATE in effect. (defalias 'vip-set-mode-vars-for #[(state) " \n \f  \"?= \" \"?k \"? \nޝ= \"\f \"?  \"?!\" !\f!\" !>\f='\n=(\n>\n*+ \" " [nil vip-vi-minibuffer-minor-mode vip-insert-minibuffer-minor-mode vip-vi-intercept-minor-mode vip-insert-intercept-minor-mode vip-vi-local-user-minor-mode vip-vi-kbd-minor-mode vip-vi-global-user-minor-mode vip-vi-state-modifier-minor-mode vip-vi-diehard-minor-mode vip-vi-basic-minor-mode vip-replace-minor-mode vip-insert-local-user-minor-mode vip-insert-kbd-minor-mode vip-insert-global-user-minor-mode vip-insert-state-modifier-minor-mode vip-insert-diehard-minor-mode vip-insert-basic-minor-mode t vip-emacs-intercept-minor-mode vip-emacs-local-user-minor-mode string-match "*Minibuf-" buffer-name vip-emacs-kbd-minor-mode vip-emacs-global-user-minor-mode vip-emacs-state-modifier-minor-mode state vi-state vip-want-emacs-keys-in-vi (insert-state replace-state) replace-state vip-want-emacs-keys-in-insert vip-emacs-p window-system device-type selected-device (tty stream) emacs-state vip-minibuffer-emacs-face vip-minibuffer-vi-face (insert-state replace-state) vip-minibuffer-insert-face vip-minibuffer-current-face vip-set-minibuffer-overlay] 3 (#$ . 28487)]) #@27 Change Viper state to Vi. (defalias 'vip-change-state-to-vi #[nil " \" !  /i\nV/  >Dy!)D O !b!b!܏" [vip-first-time string-match "*Minibuf-" buffer-name viper-mode overwrite-mode nil abbrev-mode expand-abbrev auto-fill-function fill-column last-command (vip-autoindent vip-open-line vip-Open-line) 0 looking-at "^[ ]*$" indent-to-left-margin vip-add-newline-at-eob-if-necessary vip-undo-needs-adjustment vip-adjust-undo vip-change-state vi-state vip-automatic-iso-accents fboundp iso-accents-mode -1 conds (byte-code "!" [run-hooks vip-vi-state-hooks] 2) ((error (vip-message-conditions conds)))] 3 (#$ . 29976) nil]) #@31 Change Viper state to Insert. (defalias 'vip-change-state-to-insert #[nil "!\n!!ȏ" [vip-change-state insert-state vip-automatic-iso-accents fboundp iso-accents-mode 1 conds (byte-code "!" [run-hooks vip-insert-state-hooks] 2) ((error (vip-message-conditions conds)))] 3 (#$ . 30678) nil]) (defalias 'vip-downgrade-to-insert #[nil "‰" [insert-state vip-current-state nil vip-replace-minor-mode] 2]) (put (quote vip-downgrade-to-insert) (quote byte-optimizer) (quote byte-compile-inline-expand)) (defalias 'vip-change-state-to-replace #[(&optional non-R-cmd) "!\n!!ȏ  " [vip-change-state replace-state vip-automatic-iso-accents fboundp iso-accents-mode 1 conds (byte-code "\"" [run-hooks vip-insert-state-hooks vip-replace-state-hooks] 3) ((error (vip-message-conditions conds))) non-R-cmd vip-start-replace vip-start-R-mode] 3]) #@30 Change Viper state to Emacs. (defalias 'vip-change-state-to-emacs #[nil "!\n!!ȏ" [vip-change-state emacs-state vip-automatic-iso-accents fboundp iso-accents-mode 1 conds (byte-code "!" [run-hooks vip-emacs-state-hooks] 2) ((error (vip-message-conditions conds)))] 3 (#$ . 31569) nil]) #@193 Escape to Emacs state from Vi state for one Emacs command. ARG is used as the prefix value for the executed command. If EVENTS is a list of events, which become the beginning of the command. (defalias 'vip-escape-to-emacs #[(arg &optional events) " \n#" [vip-escape-to-state arg events emacs-state] 4 (#$ . 31882) "P"]) #@217 Escape from Emacs state to Vi state for one Vi 1-character command. This doesn't work with prefix arguments or most complex commands like cw, dw, etc. But it does work with some 2-character commands, like dd or dr. (defalias 'vip-escape-to-vi #[nil "#" [vip-escape-to-state nil vi-state] 4 (#$ . 32213) nil]) (defalias 'vip-escape-to-state #[(arg events state) " ! !ʏ+ !" [nil prefix-arg key com vip-set-mode-vars-for state vip-normalize-minor-mode-map-alist events vip-set-unread-command-events (byte-code "\n !\"!!&!) !\n\nH  GS)\f\f!V  GS)\f!f!" [nil key-binding vip-xemacs-p read-key-sequence t key com vectorp vip-set-mode-vars-for vip-current-state this-command seq last-command-event event-to-character last-command-char commandp arg prefix-arg command-execute] 5) ((quit (ding)) (error (beep 1))) vip-current-state] 3]) #@141 Execute FORM in Emacs, temporarily disabling Viper's minor modes. Similar to vip-escape-to-emacs, but accepts forms rather than keystrokes. (defalias 'vip-exec-form-in-emacs #[(form) "p!!\np\nq!)! *" [nil result buff vip-set-mode-vars-for emacs-state eval form vip-current-state] 2 (#$ . 33152)]) #@391 Familiarize Viper with a minor mode defined in LOAD_FILE. Minor modes that have their own keymaps may overshadow Viper keymaps. This function is designed to make Viper aware of the packages that define such minor modes. Usage: (vip-harness-minor-mode load-file) LOAD-FILE is a name of the file where the specific minor mode is defined. Suffixes such as .el or .elc should be stripped. (defalias 'vip-harness-minor-mode #[(load-file) " \" \"" [vip-eval-after-load load-file (vip-normalize-minor-mode-map-alist) (setq-default minor-mode-map-alist minor-mode-map-alist)] 3 (#$ . 33481) "sEnter name of the load file: "]) #@528 Emulate ESC key in Emacs. Prevents multiple escape keystrokes if vip-no-multiple-ESC is true. In that case @ will be bound to ESC. If vip-no-multiple-ESC is 'twice double ESC would dings in vi-state. Other ESC sequences are emulated via the current Emacs's major mode keymap. This is more convenient on dumb terminals and in Emacs -nw, since this won't block functional keys such as up,down, etc. Meta key also will work. When vip-no-multiple-ESC is nil, ESC key behaves as in Emacs, any number of multiple escapes is allowed. (defalias 'vip-ESC #[(arg) "\n =  D\"B\n=@ =@  !U6 B D\"B )" [nil char vip-no-multiple-ESC vip-current-state vi-state vip-read-char-exclusive vip-escape-to-emacs arg 27 twice string-to-char vip-ESC-key ding] 5 (#$ . 34117) "P"]) #@51 ESC key without checking for multiple keystrokes. (defalias 'vip-alternate-ESC #[(arg) " \"" [vip-escape-to-emacs arg (27)] 3 (#$ . 34920) "P"]) (defalias 'vip-envelop-ESC-key #[nil " !  +8\n\f 0 Х\f\"7 \f#*‰ !NA  !x K)!. \fќ$$!&$ !  +\f\"! )ꂴ!!$!&$!!!\f\"\"! !!$2292N2:2@92@N)$4*< !NA  !1 K)!< !\f+" [last-input-event [nil] nil inhibit-quit keyseq event (27 (control \[) escape) vip-event-key key ESC-keys vip-fast-keyseq-timeout t nodisp val vip-xemacs-p sit-for 1000.0 0 vip-emacs-local-user-minor-mode vip-emacs-global-user-minor-mode vip-emacs-state-modifier-minor-mode vip-insert-local-user-minor-mode vip-insert-global-user-minor-mode vip-insert-state-modifier-minor-mode vip-replace-minor-mode vip-vi-local-user-minor-mode vip-vi-global-user-minor-mode vip-vi-state-modifier-minor-mode vip-emacs-intercept-minor-mode vip-insert-intercept-minor-mode vip-vi-intercept-minor-mode vip-set-unread-command-events origname read-key-sequence ad-advice-info fboundp first-key event-modifiers key-mod subseq 1 vip-emacs-p "" vector character-to-event 27 key-press-event-p (meta) vconcat event-key obj event-symbol-elements last-command-event] 14]) (byte-code "$\"$\"$\"" [ad-add-advice read-key-sequence (vip-read-keyseq-ad nil t (advice lambda nil "Harness to work for Viper. This advice is harmless---don't panic!" (let (inhibit-quit event keyseq) (setq keyseq ad-do-it) (setq event (if vip-xemacs-p (elt keyseq 0) (elt (listify-key-sequence keyseq) 0))) (if (vip-ESC-event-p event) (let (unread-command-events) (vip-set-unread-command-events keyseq) (if (vip-fast-keysequence-p) (let ((vip-vi-global-user-minor-mode nil) (vip-vi-local-user-minor-mode nil) (vip-replace-minor-mode nil) (vip-insert-global-user-minor-mode nil) (vip-insert-local-user-minor-mode nil)) (setq keyseq ad-do-it)) (setq keyseq ad-do-it)))) keyseq))) around nil ad-activate-on describe-key (vip-read-keyseq-ad (protect activate) t (advice lambda nil "Force to read key via `read-key-sequence'." (interactive (list (vip-events-to-keys (read-key-sequence "Describe key: ")))))) before describe-key-briefly (vip-read-keyseq-ad (protect activate) t (advice lambda nil "Force to read key via `read-key-sequence'." (interactive (list (vip-events-to-keys (read-key-sequence "Describe key briefly: "))))))] 5) #@60 Function that implements ESC key in Viper emulation of Vi. (defalias 'vip-intercept-ESC-key #[nil " !‰=/ =ǂ. =#ɂ. =-˂. !)" [key-binding vip-envelop-ESC-key (lambda nil (interactive) (error "")) cmd vip-intercept-ESC-key vip-current-state vi-state vip-ESC insert-state vip-exit-insert-state replace-state vip-replace-state-exit-cmd vip-change-state-to-vi call-interactively] 3 (#$ . 37452) nil]) (defalias 'vip-prefix-arg-value #[(event com) "\n+\nY+\nX+  _\nZ\\   : B\n=L! ;\n!)" [nil value event 48 57 0 10 vip-read-event-convert-to-char prefix-arg com 85 vip-describe-arg vip-set-unread-command-events] 4]) (defalias 'vip-prefix-arg-com #[(char value com) " \n\f>5\n>)!\nBӉ\n>G\n Ӊ\nUY \\ \nU| !qu! )\n ):B\nU! \n!@>@AB\nU!!Ӊ*䚃B!皃B!隃 뚃B!횃,B!:B!HB!VB!!" [t cont char 99 100 121 33 60 62 61 35 114 82 34 vip-buffer-search-char com (35 34) error "" nil (33 61) read-char 128 reg vip-valid-register vip-use-register vip-read-char-exclusive value prefix-arg 85 vip-describe-arg vip-set-unread-command-events (114 82) vip-region vip-Region 1 (99 . 99) vip-line 67 (100 . 100) 68 (100 . 121) vip-yank-defun (121 . 121) 89 (60 . 60) (62 . 62) (33 . 33) (61 . 61)] 14]) (defalias 'vip-describe-arg #[(arg) "\f!\f!\n! !1 \"1 ,\n\"1\n #*" [nil com val vip-P-val arg vip-getcom message "Value is nil, and command is nil" "Value is nil, and command is `%c'" "Value is `%d', and command is nil" "Value is `%d', and command is `%c'"] 4]) #@46 Begin numeric argument for the next command. (defalias 'vip-digit-argument #[(arg) " \n: \nA\"" [vip-prefix-arg-value last-command-char arg] 3 (#$ . 39260) "P"]) #@41 Accept a motion command as an argument. (defalias 'vip-command-argument #[(arg) " " [nil (byte-code " \n\n \n:\n@ \n\n !\n(Â>\n:2\nA>\n;Â> !#" [vip-prefix-arg-com last-command-char arg nil error vip-InvalidCommandArgument] 5) ((quit (byte-code "\"" [nil vip-use-register signal quit] 3))) vip-deactivate-mark] 3 (#$ . 39432) "P"]) (defalias 'vip-p-val #[(arg) ":@@" [arg 1] 1]) (put (quote vip-p-val) (quote byte-optimizer) (quote byte-compile-inline-expand)) (defalias 'vip-P-val #[(arg) ":@" [arg] 1]) (put (quote vip-P-val) (quote byte-optimizer) (quote byte-compile-inline-expand)) (defalias 'vip-getcom #[(arg) ":A" [arg nil] 1]) (put (quote vip-getcom) (quote byte-optimizer) (quote byte-compile-inline-expand)) (defalias 'vip-getCom #[(arg) "\n:A)Ú!Ă6\nŚ+Ƃ6\nǚ5Ȃ6\n)" [arg nil com 99 67 100 68 121 89] 3]) (defalias 'vip-append-to-register #[(reg start end) " !; !\f {P\"" [set-register reg get-register "" start end] 5]) (put (quote vip-append-to-register) (quote byte-optimizer) (quote byte-compile-inline-expand)) (defalias 'vip-exec-change #[(m-com com) "l\n`UdUc!`U U+`\"`\"" [vip-com-point " " backward-char 1 vip-forward-char-carefully com 99 vip-change vip-change-subr] 3]) (defalias 'vip-exec-Change #[(m-com com) " !!`\" _ \"# !`$] \"U !` \f   !;H !I\f {P\"+] \"!`|)!Ut " [set-mark vip-com-point vip-enlarge-region mark t vip-use-register vip-valid-register (letter digit) copy-to-register nil (Letter) end start reg set-register get-register "" error vip-InvalidRegister open-line 1 com 67 vip-change-mode-to-insert vip-yank-last-insertion] 5]) (defalias 'vip-exec-delete #[(m-com com) "O\"\f`$M\"E\f`   !;8 !9{P\"+M\"=W\f`\"rlrn?r!" [vip-use-register vip-valid-register (letter digit) copy-to-register vip-com-point nil (Letter) end start reg set-register get-register "" error vip-InvalidRegister last-command d-command kill-region this-command vip-ex-style-motion backward-char 1] 5]) (defalias 'vip-exec-Delete #[(m-com com) " !!`\" _ \"# !`$] \"U !` \f   !;H !I\f {P\"+] \"=g!`\"=z) " [set-mark vip-com-point vip-enlarge-region mark t vip-use-register vip-valid-register (letter digit) copy-to-register nil (Letter) end start reg set-register get-register "" error vip-InvalidRegister last-command D-command kill-region m-com vip-line this-command back-to-indentation] 5]) (defalias 'vip-exec-yank #[(m-com com) "O\"\f`$M\"E\f`   !;8 !9{P\"+M\"\f`\"\fb" [vip-use-register vip-valid-register (letter digit) copy-to-register vip-com-point nil (Letter) end start reg set-register get-register "" error vip-InvalidRegister last-command copy-region-as-kill] 5]) (defalias 'vip-exec-Yank #[(m-com com) " !!`\" _ \"# !`$] \"U !` \f   !;H !I\f {P\"+] \"!`\") b" [set-mark vip-com-point vip-enlarge-region mark t vip-use-register vip-valid-register (letter digit) copy-to-register nil (Letter) end start reg set-register get-register "" error vip-InvalidRegister last-command copy-region-as-kill] 5]) (defalias 'vip-exec-bang #[(m-com com) " !!`\"!`U& @$\f(\f$)" [set-mark vip-com-point vip-enlarge-region mark t shell-command-on-region com 33 vip-read-string-with-history "!" nil vip-shell-history vip-last-shell-com] 8]) (defalias 'vip-exec-equals #[(m-com com) " !!`\"!`V !`#)" [set-mark vip-com-point vip-enlarge-region mark t exchange-point-and-mark indent-region nil] 4]) (defalias 'vip-exec-shift #[(m-com com) " !!`\"!`V !`U( + [#) b" [set-mark vip-com-point vip-enlarge-region mark t exchange-point-and-mark indent-rigidly com 62 vip-shift-width] 5]) (defalias 'vip-exec-dummy #[(m-com com) "" [nil] 1]) (put (quote vip-exec-dummy) (quote byte-optimizer) (quote byte-compile-inline-expand)) (defalias 'vip-exec-buffer-search #[(m-com com) "`{ \fB #" [vip-com-point vip-s-string t vip-s-forward vip-search-history vip-search 1] 4]) (byte-code "! \" B I I I I I I I I I I I" [boundp vip-exec-array make-vector 128 nil current-load-list 99 vip-exec-change 67 vip-exec-Change 100 vip-exec-delete 68 vip-exec-Delete 121 vip-exec-yank 89 vip-exec-Yank 114 vip-exec-dummy 33 vip-exec-bang 60 vip-exec-shift 62 61 vip-exec-equals] 3) (defalias 'vip-execute-com #[(m-com val com) "\nV\nZ!7 \nW\n[\nH/\n\n#6 \n\")\n!W \nE>P\n[Q\n ҉!)" [vip-use-register reg com 128 vip-special-prefix-com vip-exec-array 0 fn error "%c: %s" vip-InvalidViCommand m-com vip-dotable-command-p vip-set-destructive-command val 99 67 33 nil] 8]) #@383 Re-execute last destructive command. Use the info in vip-d-com, which has the form (com val ch reg inserted-text command-keys), where `com' is the command to be re-executed, `val' is the argument to `com', `ch' is a flag for repeat, and `reg' is optional; if it exists, it is the name of the register for `com'. If the prefix argument, ARG, is non-nil, it is used instead of `val'. (defalias 'vip-repeat #[(arg) "` = @:\"@$)88\n \f \f@A@\f I!\n8`88 \f B!w\n`Ww\nbln!, =\" *" [vip-repeat vip-intermediate-command save-point last-command vip-undo vip-undo-more vip-d-com arg 2 3 reg com val m-com error "No previous command to repeat." vip-use-register 4 vip-last-insertion vip-d-char vip-keep-point-on-repeat backward-char 1 vip-undo-needs-adjustment vip-adjust-undo vip-display-current-destructive-command vip-push-onto-ring vip-command-ring vip-deactivate-mark] 6 (#$ . 44467) "P"]) #@384 Repeat a destructive command from history. Doesn't change vip-command-ring in any way, so `.' will work as before executing this command. This command is supposed to be bound to a two-character Vi macro where the second character is a digit 0 to 9. The digit indicates which history command to execute. `0' is equivalent to `.', `1' invokes the command before that, etc. (defalias 'vip-repeat-from-history #[nil "\n\nŜ!!Ɖ  .X.X<Ɖ<!WR\" S<!Vl\"TV," [repeating-display-destructive-command vip-intermediate-command vip-this-kbd-macro string-to-number symbol-name 1 0 idx num vip-d-com 9 message "`vip-repeat-from-history' must be invoked as a Vi macro bound to `'" vip-special-ring-rotate1 vip-command-ring -1 vip-repeat nil] 5 (#$ . 45464) nil]) (defalias 'vip-special-prefix-com #[(char) "U `^ `]\"U `^ `]\"U, \" U: \" UF `\"#" [char 99 downcase-region vip-com-point 67 upcase-region 103 push-mark t vip-global-execute 113 vip-quote-region 115 vip-spell-function error "#%c: %s" vip-InvalidViCommand] 4]) #@23 Undo previous change. (defalias 'vip-undo #[nil "! \fʼn \" !'0b!! \"b٥\"i#*b٥\"#*Z!VZ!Vbb\"ln! !-މ" [message "undo!" buffer-modified-p point-marker after-change-functions nil undo-end-posn undo-beg-posn before-undo-pt modified add-hook (lambda (beg end len) (setq undo-beg-posn beg undo-end-posn (or end beg))) undo-start undo-more 2 sit-for 0 vip-keep-point-on-undo pos-visible-in-window-p push-mark t 300 nodisp val vip-xemacs-p 1000.0 abs 1 backward-char set-buffer-modified-p vip-undo this-command] 5 (#$ . 46624) nil]) (defalias 'vip-undo-more #[nil "!ďln!lj" [message "undo more!" nil (undo-more 1) ((error (byte-code " !" [beep message "No further undo information in this buffer"] 2))) backward-char 1 vip-undo this-command] 3]) (defalias 'vip-adjust-undo #[nil "7 A \"\"\n?\"+" [t nil tmp2 tmp inhibit-quit vip-undo-needs-adjustment buffer-undo-list vip-buffer-undo-list-mark delq] 4]) (defalias 'vip-set-complex-command-for-undo #[nil "< ?\fB‰)" [buffer-undo-list vip-undo-needs-adjustment t inhibit-quit vip-buffer-undo-list-mark] 2]) (defalias 'vip-display-current-destructive-command #[nil " 8 8 !Q\f%#+" [4 vip-d-com 5 30 max-text-len keys text vip-display-current-destructive-command this-command message " `.' runs %s%s" "`" vip-array-to-string "'" vip-abbreviate-string " inserting `" " ......."] 9]) (defalias 'vip-set-destructive-command #[(list) "=\n ! \"" [vip-intermediate-command vip-repeat list vip-d-com 5 vip-array-to-string this-command-keys vip-push-onto-ring vip-command-ring] 3]) #@128 Find previous destructive command in the history of destructive commands. With prefix argument, find next destructive command. (defalias 'vip-prev-destructive-command #[(next) " =! \"\"'\"/\n *" [nil vip-intermediate-command cmd last-command vip-display-current-destructive-command repeating-display-destructive-command copy-list vip-command-ring vip-temp-command-ring next vip-special-ring-rotate1 1 -1 vip-d-com] 4 (#$ . 48448) "P"]) #@71 Find next destructive command in the history of destructive commands. (defalias 'vip-next-destructive-command #[nil "!" [vip-prev-destructive-command next] 2 (#$ . 48929) nil]) #@319 Cycle through insertion ring in the direction of older insertions. Undoes previous insertion and inserts new. With prefix argument, cycles in the direction of newer elements. In minibuffer, this command executes whatever the invocation key is bound to in the global map, instead of cycling through the insertion ring. (defalias 'vip-insert-prev-from-insertion-ring #[(arg) "\n=% =!+ + G!+\f! B @ȂA\"  N c)" [nil vip-intermediate-command last-command vip-insert-from-insertion-ring repeating-insertion-from-ring vip-current-state replace-state undo 1 vip-last-inserted-string-from-insertion-ring backward-delete-char copy-list vip-insertion-ring vip-temp-insertion-ring this-command buffer-undo-list vip-special-ring-rotate1 arg -1] 3 (#$ . 49116) "P"]) #@109 Cycle through insertion ring in the direction of older insertions. Undo previous insertion and inserts new. (defalias 'vip-insert-next-from-insertion-ring #[nil "!" [vip-insert-prev-from-insertion-ring next] 2 (#$ . 49928) nil]) (defalias 'vip-add-newline-at-eob-if-necessary #[nil "mn?  \"?c)" [nil vip-add-newline-at-eob string-match "*Minibuf-" buffer-name "\n"] 3]) (defalias 'vip-yank-defun #[nil " `!\"" [mark-defun copy-region-as-kill mark t] 4]) (defalias 'vip-enlarge-region #[(beg end) "  \f Wb !# b!y m1n4ym;y VC " [beg end set-mark 0 exchange-point-and-mark 1] 2]) (defalias 'vip-quote-region #[nil "\f$`!\"`!V \fcyy`!W:n:\fcyy\"" [vip-read-string-with-history "Quote string: " nil vip-quote-region-history vip-quote-string vip-enlarge-region mark t exchange-point-and-mark 0 1] 5]) (defalias 'vip-same-line #[(beg end) "\nF F\ndV dV?G \nV*! U* Td^\n V=!\nU=\nTd^\n \"XG)" [nil selective-display beg end vip-line-pos start count-lines 1] 3]) (defalias 'vip-end-with-a-newline-p #[(string) "GS)U" [string "" seq 10] 3]) (defalias 'vip-tmp-insert-at-eob #[(msg) "db c!b`d|)" [savemax msg sit-for 2] 3]) (defalias 'vip-set-minibuffer-style #[nil "\"" [add-hook minibuffer-setup-hook vip-minibuffer-setup-sentinel] 3]) (put (quote vip-set-minibuffer-style) (quote byte-optimizer) (quote byte-compile-inline-expand)) (defalias 'vip-minibuffer-setup-sentinel #[nil " ‰ \")" [vip-vi-style-in-minibuffer vip-change-state-to-insert vip-change-state-to-emacs hook add-hook vip-post-command-hooks vip-move-minibuffer-overlay] 4]) (defalias 'vip-exit-minibuffer #[nil "\f!! ! )" [nil command local-key-binding char-to-string last-command-char command-execute exit-minibuffer] 4 nil nil]) (defalias 'vip-set-search-face #[nil " \f !  !>???}!p!!mD A G !=R \">?)c\"\"m\"\"B#Ƈ" [vip-emacs-p window-system device-type selected-device (tty stream) boundp vip-search-face make-face face-differs-from-default-p "Black" "khaki" colors x-display-color-p device-class color nil mapcar vip-color-defined-p set-face-background set-face-foreground copy-face italic set-face-underline-p t current-load-list put variable-documentation "*Face used to flash out the search pattern."] 4]) (defalias 'vip-set-minibuffer-faces #[nil " \f !  !>???!!! pD\fF L !=W\f\">?)h\"\"\"D\f~ !=\f\">?)\"\"\"B#!P!!M D\f !=\f\">?)\"\"M\"MD\f  != \f\">?)1\"\"6\"E!K#)B#!!! D\f  !=\f\">?)\"\"\"\"!#B#!(B#!" [vip-emacs-p window-system device-type selected-device (tty stream) boundp vip-minibuffer-emacs-face make-face face-differs-from-default-p vip-vi-style-in-minibuffer "darkseagreen2" "Black" colors x-display-color-p device-class color nil mapcar vip-color-defined-p set-face-background set-face-foreground copy-face highlight "pink" italic current-load-list put variable-documentation "Face used in the Minibuffer when it is in Emacs state." vip-minibuffer-insert-face face vip-xemacs-p make-face-italic noerror "Face used in the Minibuffer when it is in Insert state." vip-minibuffer-vi-face "grey" bold invert-face "Face used in the Minibuffer when it is in Vi state." vip-minibuffer-current-face "\n(buffer local)" make-variable-buffer-local] 4]) (defalias 'vip-read-string-with-history #[(prompt &optional initial history-var default keymap) "  \n'\n\"(   \fR% ! !@Z !BL!@!A@s!@|!AL E> \n ," [(lambda nil (if (stringp initial) (progn (sit-for 840) (erase-buffer) (insert initial))) (vip-minibuffer-setup-sentinel)) "" nil temp-msg padding val minibuffer-setup-hook keymap minibuffer-local-map initial default format "(default: %s) " vip-incomplete-ex-cmd read-from-minibuffer prompt history-var vip-array-to-string this-command-keys eval last-command vip-ex vip-command-argument t] 6]) (defalias 'vip-repeat-insert-command #[nil "@A@8 - V-\f Slj!\f \nlj+" [vip-d-com 2 char val i-com 1 114 nil vip-repeat] 6]) #@22 Insert before point. (defalias 'vip-insert #[(arg) "  ‚! : @‚! @! ) ,Â7 :6 A7) É!\fb  V^  S M)d *" [vip-set-complex-command-for-undo arg 1 nil com val vip-set-destructive-command vip-insert 114 count 0 vip-yank-last-insertion vip-change-state-to-insert] 8 (#$ . 54495) "P"]) #@21 Append after point. (defalias 'vip-append #[(arg) "  ‚! : @‚! @! ) ,Â7 :6 A7) É!lLu\fȚk  Vg  S V)m *" [vip-set-complex-command-for-undo arg 1 nil com val vip-set-destructive-command vip-append 114 count 0 vip-yank-last-insertion vip-change-state-to-insert] 8 (#$ . 54834) "P"]) #@24 Append at end of line. (defalias 'vip-Append #[(arg) "  ‚! : @‚! @! ) ,Â7 :6 A7) É!\fȚg  Vc  S R)i *" [vip-set-complex-command-for-undo arg 1 nil com val vip-set-destructive-command vip-Append 114 count 0 vip-yank-last-insertion vip-change-state-to-insert] 8 (#$ . 55181) "P"]) #@32 Insert before first non-white. (defalias 'vip-Insert #[(arg) "  ‚! : @‚! @! ) ,Â7 :6 A7) É! \fȚg \nVc \nS\nR)i *" [vip-set-complex-command-for-undo arg 1 nil com val vip-set-destructive-command vip-Insert 114 back-to-indentation count 0 vip-yank-last-insertion vip-change-state-to-insert] 8 (#$ . 55527) "P"]) #@18 Open line below. (defalias 'vip-open-line #[(arg) "  ‚! : @‚! @! ) ,Â7 :6 A7) É! \n\fȚ{  Vw!k\nj  S S)!\nj +" [vip-set-complex-command-for-undo arg 1 nil com val vip-set-destructive-command vip-open-line 114 current-indentation col count 0 newline vip-auto-indent t vip-cted vip-yank-last-insertion vip-change-state-to-insert] 8 (#$ . 55904) "P"]) #@18 Open line above. (defalias 'vip-Open-line #[(arg) "  ‚! : @‚! @! ) ,Â7 :6 A7) É! \n\fȚ{  Vwy!k\nj  S S)y!\nj +" [vip-set-complex-command-for-undo arg 1 nil com val vip-set-destructive-command vip-Open-line 114 current-indentation col count 0 open-line vip-auto-indent t vip-cted vip-yank-last-insertion vip-change-state-to-insert] 8 (#$ . 56351) "P"]) #@21 Open line at point. (defalias 'vip-open-line-at-point #[(arg) "  ‚! : @‚! @! ) ,Â7 :6 A7) É!\fȚh  Vd!  S O)n! *" [vip-set-complex-command-for-undo arg 1 nil com val vip-set-destructive-command vip-open-line-at-point 114 count 0 open-line vip-yank-last-insertion vip-change-state-to-insert] 8 (#$ . 56800) "P"]) #@24 Substitute characters. (defalias 'vip-substitute #[(arg) "\n:@@))‚4:3A4)\"\fu ǚO!`\"V!`\"\f‰!*" [arg 1 nil com val push-mark t 114 vip-change-subr mark vip-change vip-set-destructive-command vip-substitute] 8 (#$ . 57182) "P"]) #@19 Substitute lines. (defalias 'vip-substitute-line #[(arg) " \nB!" [vip-set-complex-command-for-undo vip-line arg 67] 3 (#$ . 57484) "p"]) (defalias 'vip-start-replace #[nil "####\"\"##" [t vip-began-as-replace vip-sitting-in-replace 0 vip-replace-chars-to-delete vip-replace-chars-deleted add-hook vip-after-change-functions vip-replace-mode-spy-after vip-before-change-functions vip-replace-mode-spy-before after-change-functions vip-after-change-sentinel before-change-functions vip-before-change-sentinel vip-move-marker-locally vip-last-posn-in-replace-region vip-overlay-get vip-replace-overlay vip-start vip-post-command-hooks vip-replace-state-post-command-sentinel vip-pre-command-hooks vip-replace-state-pre-command-sentinel] 5]) (defalias 'vip-after-change-sentinel #[(beg end len) " @\n \f# A)" [vip-after-change-functions list beg end len nil] 5]) (defalias 'vip-before-change-sentinel #[(beg end) " @\n \" A)" [vip-before-change-functions list beg end nil] 4]) (defalias 'vip-post-command-sentinel #[nil "!" [run-hooks vip-post-command-hooks] 2]) (defalias 'vip-pre-command-sentinel #[nil "!" [run-hooks vip-pre-command-hooks] 2]) (defalias 'vip-insert-state-post-command-sentinel #[nil ">\n`\nY  =++\nV+\nȓ" [vip-current-state (insert-state replace-state) vip-insert-point point-marker vip-last-posn-while-in-insert-state this-command dabbrev-expand vip-pre-command-point nil] 3]) (defalias 'vip-insert-state-pre-command-sentinel #[nil "= ! ! !" [this-command dabbrev-expand markerp vip-insert-point marker-position vip-pre-command-point] 2]) (defalias 'vip-R-state-post-command-sentinel #[nil " \"`X` \"X ! \"!" [vip-overlay-get vip-replace-overlay vip-start vip-end vip-change-cursor-color vip-replace-overlay-cursor-color vip-cursor-color] 4]) (defalias 'vip-replace-state-pre-command-sentinel #[nil "> !>\"!" [this-command (self-insert-command) vip-event-key last-command-event (up down left right (meta f) (meta b) (control n) (control p) (control f) (control b)) vip-change-cursor-color vip-overlay-get vip-replace-overlay vip-cursor-color] 4]) (defalias 'vip-replace-state-post-command-sentinel #[nil "\n\"!\f=U\n\"b\n!\n\f\n\"U2!)\n\"`XS`XS\f=N! )!" [vip-change-cursor-color vip-overlay-get vip-replace-overlay vip-cursor-color vip-current-state replace-state vip-end replace-boundary vip-last-posn-in-replace-region delete-char vip-replace-chars-to-delete 0 vip-replace-chars-deleted vip-finish-change vip-start vip-replace-overlay-cursor-color point-marker] 4]) (defalias 'vip-replace-mode-spy-before #[(beg end) " Z\f\"Z]Z\f\" Z]Z" [end beg 0 vip-overlay-get vip-replace-overlay vip-end vip-start vip-replace-chars-deleted] 6]) (defalias 'vip-replace-mode-spy-after #[(beg end length) "> `\"Ɖ \n  \"^bi\nbi ) \"XI \"XWUi=i \nZZ]]l !U \\Z  \"V \" ! \"]\"  \" Z^]," [vip-intermediate-command (repeating-insertion-from-ring) 0 vip-replace-chars-to-delete vip-move-marker-locally vip-last-posn-in-replace-region nil chars-to-delete real-end end-col beg-col end vip-overlay-get vip-replace-overlay vip-end beg vip-start length this-command dabbrev-expand marker-position vip-replace-chars-deleted] 6]) (defalias 'vip-finish-change #[(posn) "\"\"\"\" \"! D \"YD \"WD \"|)=R\"͉\" \"!nr ! !> # \"!" [remove-hook vip-after-change-functions vip-replace-mode-spy-after vip-before-change-functions vip-replace-mode-spy-before vip-post-command-hooks vip-replace-state-post-command-sentinel vip-pre-command-hooks vip-replace-state-pre-command-sentinel vip-change-cursor-color vip-overlay-get vip-replace-overlay vip-cursor-color nil vip-sitting-in-replace posn vip-start vip-end vip-current-state replace-state insert-state vip-replace-minor-mode vip-move-marker-locally vip-last-posn-in-replace-region vip-set-replace-overlay-glyphs vip-emacs-p window-system device-type selected-device (tty stream) vip-overlay-put face vip-refresh-mode-line vip-put-string-on-kill-ring vip-last-replace-region] 4]) (defalias 'vip-put-string-on-kill-ring #[(string) " BG\nV\nS á " [string kill-ring kill-ring-max nil kill-ring-yank-pointer] 3]) (defalias 'vip-finish-R-mode #[nil "\"\"lj" [remove-hook vip-post-command-hooks vip-R-state-post-command-sentinel vip-pre-command-hooks vip-replace-state-pre-command-sentinel insert-state vip-current-state nil vip-replace-minor-mode] 3]) (defalias 'vip-start-R-mode #[nil "!##" [overwrite-mode 1 add-hook vip-post-command-hooks vip-R-state-post-command-sentinel t vip-pre-command-hooks vip-replace-state-pre-command-sentinel] 4]) #@111 Binding for keys that cause Replace state to switch to Vi or to Insert. These keys are ESC, RET, and LineFeed (defalias 'vip-replace-state-exit-cmd #[nil "\n  !='\n!!!Ϗ)ĉ\"\"!DH !eUY !>?e#" [overwrite-mode vip-finish-R-mode vip-finish-change vip-last-posn-in-replace-region nil com this-command vip-intercept-ESC-key vip-exit-insert-state vip-set-unread-command-events last-input-char key-binding read-key-sequence conds (command-execute com) ((error (vip-message-conditions conds))) vip-set-replace-overlay-glyphs vip-change-cursor-color vip-overlay-get vip-replace-overlay vip-cursor-color vip-emacs-p window-system device-type selected-device (tty stream) vip-overlay-put face] 4 (#$ . 62460) nil]) #@23 Begin overwrite mode. (defalias 'vip-overwrite #[(arg) "\n:@@))‚4:3A4) ‰!\fi G !  Ve  S T)x `!\" +" [arg 1 nil len com val vip-set-destructive-command vip-overwrite 114 vip-last-insertion delete-char count 0 vip-yank-last-insertion last-command vip-set-complex-command-for-undo vip-set-replace-overlay vip-line-pos end vip-change-state-to-replace] 8 (#$ . 63241) "P"]) (defalias 'vip-line #[(arg) "@A`\"m\nS! \n #*m)o?)y" [arg com val vip-move-marker-locally vip-com-point vip-next-line-carefully vip-add-newline-at-eob-if-necessary vip-execute-com vip-line -1] 4]) #@33 Yank ARG lines (in Vi's sense). (defalias 'vip-yank-line #[(arg) "\n:@@)\nB!)" [arg 1 val vip-line 89] 4 (#$ . 63919) "P"]) #@30 Execute command on a region. (defalias 'vip-region #[(arg) ":\f@ )#:\"A#)`\" \n#*" [arg nil com val vip-move-marker-locally vip-com-point exchange-point-and-mark vip-execute-com vip-region] 5 (#$ . 64079) "P"]) #@30 Execute command on a Region. (defalias 'vip-Region #[(arg) ":\f@ )!`\" \n#*" [arg vip-getCom com val vip-move-marker-locally vip-com-point exchange-point-and-mark vip-execute-com vip-Region] 5 (#$ . 64332) "P"]) #@56 Replace the following ARG chars by the character read. (defalias 'vip-replace-char #[(arg) "l\fn\f!\nÂ*\n:)\n@$Â*\n@*\n)\n5Ă@\n:?\nA@) ȚP R \"lanau į!*" [error "I see no character to replace here" arg 1 nil com val vip-replace-char-subr 114 vip-d-char read-char vip-set-destructive-command vip-replace-char] 8 (#$ . 64572) "P"]) (defalias 'vip-replace-char-subr #[(char arg) " \"  V  [V3 ='c* cS) !" [delete-char arg t char vip-d-char 0 count 13 "\n" backward-char] 4]) #@105 Move point right ARG characters (left if ARG negative). On reaching end of line, stop and signal error. (defalias 'vip-forward-char #[(arg) "\n:@@))‚4:3A4) @`\"olTnT!W\fu a\f #l{!!{\fu {\f #*" [arg 1 nil com val vip-move-marker-locally vip-com-point vip-ex-style-motion error "" vip-execute-com vip-forward-char backward-char] 5 (#$ . 65147) "P"]) #@112 Move point left ARG characters (right if ARG negative). On reaching beginning of line, stop and signal error. (defalias 'vip-backward-char #[(arg) "\n:@@))‚4:3A4) @`\"`nP!T\f! m\f #m\f! m\f #*" [arg 1 nil com val vip-move-marker-locally vip-com-point vip-ex-style-motion error "" backward-char vip-execute-com vip-backward-char] 5 (#$ . 65583) "P"]) (defalias 'vip-forward-char-carefully #[(&optional arg) "d`\\Yudb" [arg 1] 3]) (defalias 'vip-backward-char-carefully #[(&optional arg) "e`ZX!eb" [arg 1 backward-char] 3]) (defalias 'vip-next-line-carefully #[(arg) "" [nil (next-line arg) ((error))] 3]) (defalias 'vip-skip-separators #[(forward) "w!(uwx !&xu" [forward " " nil looking-at "\n" backward-char] 2]) (byte-code "\nB Q\nB P\nBQ\nB\n\nB\nQ \nB\nP\f\nB\fQ \nB \nP\nBQ\nBP\nBQ\nB" ["a-zA-Z0-9_" vip-ALPHA current-load-list "[" "]" vip-ALPHA-B "^" vip-NONALPHA vip-NONALPHA-B " \n" vip-SEP vip-SEP-B vip-NONSEP vip-NONSEP-B vip-ALPHASEP vip-ALPHASEP-B vip-NONALPHASEP vip-NONALPHASEP-B] 3) (defalias 'vip-forward-word-kernel #[(val) "V< !\fw!5!%!5 !5\nw!S" [val 0 looking-at vip-ALPHA-B vip-ALPHA nil vip-skip-separators t vip-SEP-B vip-NONALPHASEP-B vip-NONALPHASEP] 3]) (defalias 'vip-fwd-skip #[(pat aux-pat lim) " \n#)`ĕUĔb \nx`\nU! " [re-search-backward pat lim t 0 aux-pat vip-forward-char-carefully] 4]) #@15 Forward word. (defalias 'vip-forward-word #[(arg) "\n:@@))‚4:3A4) @`\"\f! ~ D>Z#y D>l#y !y#\f #*" [arg 1 nil com val vip-move-marker-locally vip-com-point vip-forward-word-kernel 99 -99 vip-fwd-skip "\n[ ]*" " " 121 -121 "" vip-dotable-command-p vip-execute-com vip-forward-word] 5 (#$ . 67178) "P"]) #@45 Forward word delimited by white characters. (defalias 'vip-forward-Word #[(arg) "\n:@@))‚4:3A4) @`\"\fV[ w!SD) D>r# D># !#\f #*" [arg 1 nil com val vip-move-marker-locally vip-com-point count 0 vip-NONSEP vip-skip-separators t 99 -99 vip-fwd-skip "\n[ ]*" " " 121 -121 "" vip-dotable-command-p vip-execute-com vip-forward-Word] 5 (#$ . 67574) "P"]) (defalias 'vip-end-of-word-kernel #[nil " u!\fw ! w,!,w " [vip-end-of-word-p nil looking-at "[ \n]" vip-SEP vip-ALPHA-B vip-ALPHA vip-NONALPHASEP-B vip-NONALPHASEP vip-backward-char-carefully] 2]) (defalias 'vip-end-of-word-p #[nil "m\n!u\f!# !#u!)" [t looking-at vip-ALPHA-B nil vip-NONALPHA-B vip-NONALPHASEP-B vip-ALPHASEP-B] 2]) (defalias 'vip-one-char-word-p #[nil " !*o o !O u!O!Oo:= oH!O u!*" [2 step looking-at vip-ALPHA-B 1 backward-char vip-NONALPHA-B vip-NONALPHASEP-B vip-ALPHASEP-B] 2]) (defalias 'vip-one-char-Word-p #[nil " !%o‚ \f!)%um$\f!)" [looking-at vip-NONSEP-B t backward-char vip-SEP-B nil] 2]) #@36 Move point to end of current word. (defalias 'vip-end-of-word #[(arg &optional careful) "\n:@@))‚4:3A4) @`\"\fVU SD) bu\f #*" [arg 1 nil com val vip-move-marker-locally vip-com-point count 0 vip-end-of-word-kernel vip-execute-com vip-end-of-word] 5 (#$ . 68793) "P"]) #@54 Forward to end of word delimited by white character. (defalias 'vip-end-of-Word #[(arg) "\n:@@))‚4:3A4) @`\"\fVj  $Ydb x SD) wu\f #*" [arg 1 nil com val vip-move-marker-locally vip-com-point count 0 vip-end-of-word-kernel re-search-forward vip-SEP-B t vip-SEP backward-char vip-execute-com vip-end-of-Word] 6 (#$ . 69136) "P"]) (defalias 'vip-backward-word-kernel #[(val) "V\\ \f! xU!Iu! \f!4 xU !C\nxUuU !U\nxS" [val 0 backward-char looking-at vip-ALPHA-B vip-ALPHA nil vip-SEP-B vip-skip-separators vip-NONALPHASEP-B vip-NONALPHASEP] 3]) #@16 Backward word. (defalias 'vip-backward-word #[(arg) "\n:@@))‚4:3A4) Z !)M `\" Yu)\f! g\f #*" [arg 1 nil com val i backward-char looking-at "\n" vip-move-marker-locally vip-com-point vip-backward-word-kernel vip-execute-com vip-backward-word] 5 (#$ . 69824) "P"]) #@45 Backward word delimited by white character. (defalias 'vip-backward-Word #[(arg) "\n:@@))‚4:3A4) Z !)M `\" Yu)\f Vu!x S ^) \f #*" [arg 1 nil com val i backward-char looking-at "\n" vip-move-marker-locally vip-com-point count 0 vip-skip-separators vip-NONSEP vip-execute-com vip-backward-Word] 5 (#$ . 70164) "P"]) #@26 Go to beginning of line. (defalias 'vip-beginning-of-line #[(arg) "\n:@@))‚4:3A4) @`\"\f! M\f #*" [arg 1 nil com val vip-move-marker-locally vip-com-point beginning-of-line vip-execute-com vip-beginning-of-line] 5 (#$ . 70571) "P"]) #@49 Beginning of line at first non-white character. (defalias 'vip-bol-and-skip-white #[(arg) "\n:@@))‚4:3A4) @`\"\fS! N\f #*" [arg 1 nil com val vip-move-marker-locally vip-com-point forward-to-indentation vip-execute-com vip-bol-and-skip-white] 5 (#$ . 70864) "P"]) #@20 Go to end of line. (defalias 'vip-goto-eol #[(arg) "\n:@@))‚4:3A4) @`\"\f M\f # flfn?f\n˚?f!*" [arg 1 nil com val vip-move-marker-locally vip-com-point vip-execute-com vip-goto-eol vip-ex-style-motion vip-current-state insert-state backward-char] 5 (#$ . 71188) "P"]) #@21 Go to ARG's column. (defalias 'vip-goto-col #[(arg) "\n:@@))‚4:3A4)\fiTVF!) P`\"y\fSu `\f #*" [arg 1 nil com val error "" vip-move-marker-locally vip-com-point 0 vip-execute-com vip-goto-col] 5 (#$ . 71530) "P"]) #@18 Go to next line. (defalias 'vip-next-line #[(arg) "\n:@@)! -`\"\f!BlBnB!\n N\f #*" [arg 1 vip-getCom com val vip-move-marker-locally vip-com-point next-line vip-ex-style-motion backward-char this-command vip-execute-com vip-next-line] 5 (#$ . 71813) "P"]) #@33 Next line at beginning of line. (defalias 'vip-next-line-at-bol #[(arg) "m\f!) Ă+ :* @%Ă+ @+ ) !=`\"y P#*" [nil error "Last line in buffer" arg 1 vip-getCom com val vip-move-marker-locally vip-com-point back-to-indentation vip-execute-com vip-next-line-at-bol] 5 (#$ . 72130) "P"]) #@22 Go to previous line. (defalias 'vip-previous-line #[(arg) "\n:@@)! -`\"\f!BlBnB!\n N\f #*" [arg 1 vip-getCom com val vip-move-marker-locally vip-com-point previous-line vip-ex-style-motion backward-char this-command vip-execute-com vip-previous-line] 5 (#$ . 72470) "P"]) #@37 Previous line at beginning of line. (defalias 'vip-previous-line-at-bol #[(arg) "yo\f!) Ă+ :* @%Ă+ @+ ) !=`\"[y Q#*" [0 error "First line in buffer" arg 1 vip-getCom com val vip-move-marker-locally vip-com-point back-to-indentation vip-execute-com vip-previous-line] 5 (#$ . 72803) "P"]) #@24 Change to end of line. (defalias 'vip-change-to-eol #[(arg) " B!" [vip-goto-eol arg 99] 3 (#$ . 73148) "P"]) #@14 Delete line. (defalias 'vip-kill-line #[(arg) " B!" [vip-goto-eol arg 100] 3 (#$ . 73266) "P"]) #@13 Erase line. (defalias 'vip-erase-line #[(arg) " B!" [vip-beginning-of-line arg 100] 3 (#$ . 73371) "P"]) #@53 Go to ARG's line. Without ARG go to end of buffer. (defalias 'vip-goto-line #[(arg) ":\f@ )!`\" \" *db1eb Sym@n@o@y \nM \n#m\\n\\o\\y *" [arg vip-getCom com val vip-move-marker-locally vip-com-point vip-deactivate-mark push-mark nil t -1 back-to-indentation vip-execute-com vip-goto-line] 5 (#$ . 73485) "P"]) (defalias 'vip-find-char #[(arg char forward offset) " !\n!\f  [=\" 8& !  VJl@\"A``}]nV\"W`y`} VjeTbmdb ! $)`  #* Vׂ؂ق\\b+" [char-or-string-p char error "" forward arg vip-intermediate-command vip-repeat 5 vip-d-com vip-array-to-string this-command-keys nil point cmd 0 "Command `%s': At end of line" "Command `%s': At beginning of line" case-fold-search search-forward char-to-string "Command `%s': `%c' not found" offset -2 -1 1] 5]) #@216 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. (defalias 'vip-find-char-forward #[(arg) "\n:@@))‚4:3A4)VJ  \nk\f8;a\f8 GS)c\f[ t`\"\f:@@)V$\f[ u\f #*" [arg 1 nil com val 0 read-char vip-f-char t vip-f-forward vip-f-offset 5 vip-d-com seq vip-F-char vip-move-marker-locally vip-com-point vip-find-char vip-execute-com vip-find-char-forward] 6 (#$ . 74407) "P"]) #@36 Go up to char ARG forward on line. (defalias 'vip-goto-char-forward #[(arg) "\n:@@))‚4:3A4)VJ  \nk\f8;a\f8 GS)c\f[ t`\"\f:@@)Vȉ$\f[ u\f #*" [arg 1 nil com val 0 read-char vip-f-char t vip-f-forward vip-f-offset 5 vip-d-com seq vip-F-char vip-move-marker-locally vip-com-point vip-find-char vip-execute-com vip-goto-char-forward] 6 (#$ . 75077) "P"]) #@33 Find char ARG on line backward. (defalias 'vip-find-char-backward #[(arg) "\n:@@))‚4:3A4)VJ  k 8;a 8\fGS)c  \f[ t`\"\f:@@)V ‰$\f[  \f #*" [arg 1 nil com val 0 read-char vip-f-char vip-f-forward vip-f-offset 5 vip-d-com seq vip-F-char vip-move-marker-locally vip-com-point vip-find-char vip-execute-com vip-find-char-backward] 6 (#$ . 75567) "P"]) #@37 Go up to char ARG backward on line. (defalias 'vip-goto-char-backward #[(arg) "\n:@@))‚4:3A4)VJ \nk\f8;a\f8 GS)c\f[ t`\"\f:@@)V$\f[ \f #*" [arg 1 nil com val 0 read-char vip-f-char vip-f-forward t vip-f-offset 5 vip-d-com seq vip-F-char vip-move-marker-locally vip-com-point vip-find-char vip-execute-com vip-goto-char-backward] 6 (#$ . 76049) "P"]) #@31 Repeat previous find command. (defalias 'vip-repeat-find #[(arg) "\n:@@))‚4:3A4) C`\"\f \n $ ^\nYu\f #*" [arg 1 nil com val vip-deactivate-mark vip-move-marker-locally vip-com-point vip-find-char vip-f-char vip-f-forward vip-f-offset vip-execute-com vip-repeat-find] 6 (#$ . 76539) "P"]) #@57 Repeat previous find command in the opposite direction. (defalias 'vip-repeat-find-opposite #[(arg) "\n:@@))‚4:3A4) C`\"\f \n? $ _\nZu\f #*" [arg 1 nil com val vip-deactivate-mark vip-move-marker-locally vip-com-point vip-find-char vip-f-char vip-f-forward vip-f-offset vip-execute-com vip-repeat-find-opposite] 6 (#$ . 76898) "P"]) #@25 Switch to other window. (defalias 'vip-other-window #[(arg) " !\n=?p!Ř " [other-window arg vip-current-state emacs-state buffer-name " *Minibuf-1*" vip-change-state-to-vi] 2 (#$ . 77302) "p"]) #@25 Go to home window line. (defalias 'vip-window-top #[(arg) "\n:@@)! -`\"\"\fS!mFnFoFy S\f #mbnboby *" [arg 1 vip-getCom com val vip-move-marker-locally vip-com-point push-mark nil t move-to-window-line -1 back-to-indentation vip-execute-com vip-window-top] 5 (#$ . 77514) "P"]) #@27 Go to middle window line. (defalias 'vip-window-middle #[(arg) "\n:@@)! 0`\"\"d!J SΥS\\!Z d\"\fΥS\\!minioiy w #mnoy +" [arg 1 vip-getCom nil lines com val vip-move-marker-locally vip-com-point push-mark t pos-visible-in-window-p move-to-window-line window-height 2 count-lines window-start -1 back-to-indentation vip-execute-com vip-window-middle] 5 (#$ . 77864) "P"]) #@25 Go to last window line. (defalias 'vip-window-bottom #[(arg) "\n:@@)! -`\"\"\f[!mFnFoFy S\f #mbnboby *" [arg 1 vip-getCom com val vip-move-marker-locally vip-com-point push-mark nil t move-to-window-line -1 back-to-indentation vip-execute-com vip-window-bottom] 5 (#$ . 78331) "P"]) #@36 Put current line on the home line. (defalias 'vip-line-to-top #[(arg) " S!" [recenter arg] 2 (#$ . 78687) "p"]) #@38 Put current line on the middle line. (defalias 'vip-line-to-middle #[(arg) " S Så\\!" [recenter arg window-height 2] 4 (#$ . 78807) "p"]) #@36 Put current line on the last line. (defalias 'vip-line-to-bottom #[(arg) " \nTZ!" [recenter window-height arg] 3 (#$ . 78955) "p"]) #@33 Go to the matching parenthesis. (defalias 'vip-paren-match #[(arg) "\n:A)HV(W.!dV<dȥ_Ad_ȥb \nlVnVu`\n)\n#m q!)!\n`\"!\n\n# !u\n`\"!\n\n#!)" [arg nil com 99 1 error "Prefix must be between 1 and 99" 80000 100 back-to-indentation lim -1 re-search-forward "[][(){}]" t backward-char "No matching character on line" looking-at "[([{]" vip-move-marker-locally vip-com-point forward-sexp vip-execute-com vip-paren-match "[])}]" backward-sexp ""] 5 (#$ . 79096) "P"]) #@19 Forward sentence. (defalias 'vip-forward-sentence #[(arg) "\" Ă# :\" @Ă# @# ) .9 :8 A9) F`\"! T #*" [push-mark nil t arg 1 com val vip-move-marker-locally vip-com-point forward-sentence vip-execute-com vip-forward-sentence] 5 (#$ . 79694) "P"]) #@20 Backward sentence. (defalias 'vip-backward-sentence #[(arg) "\" Ă# :\" @Ă# @# ) .9 :8 A9) F`\"! T #*" [push-mark nil t arg 1 com val vip-move-marker-locally vip-com-point backward-sentence vip-execute-com vip-backward-sentence] 5 (#$ . 79995) "P"]) #@20 Forward paragraph. (defalias 'vip-forward-paragraph #[(arg) "\" Ă# :\" @Ă# @# ) !5`\"!E#*" [push-mark nil t arg 1 vip-getCom com val vip-move-marker-locally vip-com-point forward-paragraph vip-execute-com vip-forward-paragraph] 5 (#$ . 80300) "P"]) #@21 Backward paragraph. (defalias 'vip-backward-paragraph #[(arg) "\" Ă# :\" @Ă# @# ) !5`\"!E#*" [push-mark nil t arg 1 vip-getCom com val vip-move-marker-locally vip-com-point backward-paragraph vip-execute-com vip-backward-paragraph] 5 (#$ . 80601) "P"]) (defalias 'vip-prev-heading #[(arg) "\n:@@)! -`\"\f$˔b B #*" [arg 1 vip-getCom com val vip-move-marker-locally vip-com-point re-search-backward vip-heading-start nil t 0 vip-execute-com vip-prev-heading] 6 nil "P"]) (defalias 'vip-heading-end #[(arg) "\n:@@)! -`\"\f$˔b B #*" [arg 1 vip-getCom com val vip-move-marker-locally vip-com-point re-search-forward vip-heading-end nil t 0 vip-execute-com] 6 nil "P"]) (defalias 'vip-next-heading #[(arg) "\n:@@)! -`\" \f$˔b E #*" [arg 1 vip-getCom com val vip-move-marker-locally vip-com-point nil re-search-forward vip-heading-start t 0 vip-execute-com vip-next-heading] 6 nil "P"]) (byte-code "" [1 scroll-step] 1) #@24 Scroll to next screen. (defalias 'vip-scroll #[(arg) "VV% SV% T" [arg 0 scroll-up scroll-down] 3 (#$ . 81719) "p"]) #@28 Scroll to previous screen. (defalias 'vip-scroll-back #[(arg) " [!" [vip-scroll arg] 2 (#$ . 81870) "p"]) #@24 Pull down half screen. (defalias 'vip-scroll-down #[(arg) "" [nil (byte-code " å!!" [arg scroll-down window-height 2] 3) ((error (byte-code "!!eb" [beep 1 message "Beginning of buffer"] 2)))] 3 (#$ . 81984) "P"]) #@21 Scroll up one line. (defalias 'vip-scroll-down-one #[(arg) " !" [scroll-down arg] 2 (#$ . 82226) "p"]) #@22 Pull up half screen. (defalias 'vip-scroll-up #[(arg) "" [nil (byte-code " å!!" [arg scroll-up window-height 2] 3) ((error (byte-code "!!db" [beep 1 message "End of buffer"] 2)))] 3 (#$ . 82337) "P"]) #@23 Scroll down one line. (defalias 'vip-scroll-up-one #[(arg) " !" [scroll-up arg] 2 (#$ . 82567) "p"]) (defalias 'vip-if-string #[(prompt) " @$Ř?\f)" [vip-read-string-with-history prompt nil vip-search-history s "" vip-s-string] 6]) #@619 Toggle the value of vip-case-fold-search/vip-re-search. Without prefix argument, will ask which search style to toggle. With prefix arg 1,toggles vip-case-fold-search; with arg 2 toggles vip-re-search. Although this function is bound to \[vip-toggle-search-style], the most convenient way to use it is to bind `//' to the macro `1 M-x vip-toggle-search-style' and `///' to `2 M-x vip-toggle-search-style'. In this way, hitting `//' quickly will toggle case-fold-search and hitting `/' three times witth toggle regexp search. Macros are more convenient in this case because they don't affect the Emacs binding of `/'. (defalias 'vip-toggle-search-style #[(arg) "\n=(\n;Ȃ\"ɂ##!;?6vv\n=a\nt Q΂R [ς\\#!t ? ovv \")" [nil msg arg 1 y-or-n-p format "Search style: '%s'. Want '%s'? " vip-case-fold-search "case-insensitive" "case-sensitive" "Search becomes case-insensitive" "Search becomes case-sensitive" 2 vip-re-search "regexp-search" "vanilla-search" "Search becomes regexp-style" "Search becomes vanilla-style" "Search style remains unchanged" prin1 t] 6 (#$ . 82821) "P"]) #@124 Search a string forward. ARG is used to find the ARG's occurrence of the string. Null string will repeat previous search. (defalias 'vip-search-forward #[(arg) ":\f@ )#:\"A#)\n! \nC !C !G  \n #\f]!\" \f#+" [arg nil vip-s-string old-str com val t vip-s-forward vip-if-string "/" markerp vip-local-search-start-marker marker-buffer point-marker vip-search vip-move-marker-locally vip-com-point mark vip-execute-com vip-search-next] 5 (#$ . 83984) "P"]) #@125 Search a string backward. ARG is used to find the ARG's occurrence of the string. Null string will repeat previous search. (defalias 'vip-search-backward #[(arg) ":\f@ )#:\"A#)\n! \nC\n!C\n!G \n\n #\f]!\" \f#+" [arg nil vip-s-string old-str com val vip-s-forward vip-if-string "?" markerp vip-local-search-start-marker marker-buffer point-marker vip-search vip-move-marker-locally vip-com-point mark t vip-execute-com vip-search-next] 5 (#$ . 84503) "P"]) (defalias 'vip-search #[(string forward arg &optional no-offset init-point) "?v\nÂ%\n:$\n@Â%\n@%\n)\n0Ă;\n::\nA;)\n:H\n@I\n)? ?U` \n \f pяtӏ." [string "" arg 1 nil no-offset vip-case-fold-search init-point start-point case-fold-search offset null-arg com val vip-deactivate-mark forward (byte-code " \n\fʼn$\f!&\fʼn$\f!  `?6 \"" [offset vip-forward-char-carefully vip-re-search re-search-forward string nil val re-search-backward search-forward search-backward vip-flash-search-pattern start-point push-mark t] 5) ((search-failed (byte-code "$ $!eb B\n%!!\nb 4т5#" [null-arg vip-search-wrap-around-t message "Search wrapped around end of buffer" vip-search string forward 1 com t start-point sit-for 2 "" error "`%s': %s not found" vip-re-search "Pattern" "String"] 6))) (byte-code "\nÉ\f$\nÉ\f$ `?%\"" [vip-re-search re-search-backward string nil val search-backward vip-flash-search-pattern start-point push-mark t] 5) ((search-failed (byte-code "$ $!db B\n%!!\nb 4т5#" [null-arg vip-search-wrap-around-t message "Search wrapped around beginning of buffer" vip-search string forward 1 com t start-point sit-for 2 "" error "`%s': %s not found" vip-re-search "Pattern" "String"] 6)))] 7]) #@25 Repeat previous search. (defalias 'vip-search-next #[(arg) "\n:@@))‚4:3A4) @!  # W!\"\f #*" [arg 1 nil com val vip-s-string error vip-NoPrevSearch vip-search vip-s-forward vip-move-marker-locally vip-com-point mark t vip-execute-com vip-search-next] 5 (#$ . 86413) "P"]) #@50 Repeat previous search in the reverse direction. (defalias 'vip-search-Next #[(arg) "\n:@@))‚4:3A4) @!  ?# X!\"\f #*" [arg 1 nil com val vip-s-string error vip-NoPrevSearch vip-search vip-s-forward vip-move-marker-locally vip-com-point mark t vip-execute-com vip-search-Next] 5 (#$ . 86752) "P"]) (defalias 'vip-buffer-search-enable #[(&optional c) "  \f !# I  B " [c vip-buffer-search-char 103 define-key vip-vi-basic-map char-to-string vip-command-argument vip-exec-array vip-exec-buffer-search vip-prefix-commands] 4]) #@32 Do incremental search forward. (defalias 'vip-isearch-forward #[(arg) "<@D!" [arg vip-exec-form-in-emacs isearch-forward] 3 (#$ . 87367) "P"]) #@33 Do incremental search backward. (defalias 'vip-isearch-backward #[(arg) "<@D!" [arg vip-exec-form-in-emacs isearch-backward] 3 (#$ . 87526) "P"]) #@41 Switch to buffer in the current window. (defalias 'vip-switch-to-buffer #[nil "p!!\"! !)" [nil buffer read-buffer format "Switch to buffer in this window (%s): " buffer-name other-buffer switch-to-buffer] 6 (#$ . 87688) nil]) #@37 Switch to buffer in another window. (defalias 'vip-switch-to-buffer-other-window #[nil "p!!\"! !)" [nil buffer read-buffer format "Switch to buffer in another window (%s): " buffer-name other-buffer switch-to-buffer-other-window] 6 (#$ . 87930) nil]) #@16 Kill a buffer. (defalias 'vip-kill-buffer #[nil "p!\"!p !\" \"\n!1 \"!7\n!:!*" [nil buffer-name buffer read-buffer format "Kill buffer (%s): " get-buffer error "`%s': No such buffer" buffer-modified-p y-or-n-p "Buffer `%s' is modified, are you sure you want to kill it? " kill-buffer "Buffer not killed"] 6 (#$ . 88197) nil]) #@653 *List of suffixes that Viper automatically tries to append to filenames ending with a `.'. This is useful when you the current directory contains files with the same prefix and many different suffixes. Usually, only one of the suffixes represents an editable file. However, file completion will stop at the `.' The smart suffix feature lets you hit RET in such a case, and Viper will select the appropriate suffix. Suffixes are tried in the order given and the first suffix for which a corresponding file exists is selected. If no file exists for any of the suffixes, the user is asked to confirm. To turn this feature off, set this variable to nil. (defvar vip-smart-suffix-list (quote ("" "tex" "c" "cc" "el" "p")) (#$ . -88568)) (defalias 'vip-file-add-suffix #[nil " G É \ndb \"O\n WO\n 8\nT\n\f#!$\fc$?!Î >?!!=!c[c[ >[ ![)." [0 vip-smart-suffix-list buffer-string nil suff cmd key found file len count string-match "\\.$" file-exists-p format "%s%s" t vip-tmp-insert-at-eob " [Please complete file name]" (exit-minibuffer vip-exit-minibuffer) key-binding read-key-sequence self-insert-command vip-xemacs-p events-to-keys (exit-minibuffer vip-exit-minibuffer) command-execute] 8]) (byte-code "$\"$\"$\"$\"$\"" [ad-add-advice exit-minibuffer (vip-exit-minibuffer-advice nil t (advice lambda nil "Run `vip-minibuffer-exit-hook' just before exiting the minibuffer." (run-hooks (quote vip-minibuffer-exit-hook)))) before nil ad-activate-on find-file (vip-add-suffix-advice nil t (advice lambda nil "Use `read-file-name' for reading arguments." (interactive (list (read-file-name "Find file: " nil default-directory))))) find-file-other-window (vip-add-suffix-advice nil t (advice lambda nil "Use `read-file-name' for reading arguments." (interactive (list (read-file-name "Find file in other window: " nil default-directory))))) find-file-other-frame (vip-add-suffix-advice nil t (advice lambda nil "Use `read-file-name' for reading arguments." (interactive (list (read-file-name "Find file in other frame: " nil default-directory))))) read-file-name (vip-suffix-advice nil t (advice lambda nil "Tell `exit-minibuffer' to run `vip-file-add-suffix' as a hook." (let ((vip-minibuffer-exit-hook (quote vip-file-add-suffix))) ad-do-it))) around] 5) #@73 Yank TEXT silently. This works correctly with Emacs's yank-pop command. (defalias 'vip-yank #[(text) "c" [text yank this-command] 2 (#$ . 90972)]) (put (quote vip-yank) (quote byte-optimizer) (quote byte-compile-inline-expand)) #@34 Put back after point/below line. (defalias 'vip-put-back #[(arg) "\n:@@)\nH\n\"3\nZ\"K\n!@\n!K\n\n\"K!\f \fl\nh\n\")l!\f!mcyyl ! `p \nω! V\f\fc)S+` \"` U n " [arg 1 vip-use-register vip-valid-register (digit) current-kill 49 do-not-rotate get-register error vip-InvalidRegister 0 text val reg nil vip-EmptyRegister "" vip-end-with-a-newline-p "\n" vip-forward-char-carefully vip-xemacs-p mark-marker t vip-set-destructive-command vip-put-back count yank this-command vip-same-line mark vip-backward-char-carefully exchange-point-and-mark back-to-indentation vip-deactivate-mark] 8 (#$ . 91212) "P"]) #@31 Put back at point/above line. (defalias 'vip-Put-back #[(arg) "\n:@@)\nH\n\"3\nZ\"K\n!@\n!K\n\n\"K!\f \fl\nh\n\")l!\f!xy \nω!! `p V\f\fc)S+` \"` U n " [arg 1 vip-use-register vip-valid-register (digit) current-kill 49 do-not-rotate get-register error vip-InvalidRegister 0 text val reg nil vip-EmptyRegister "" vip-end-with-a-newline-p vip-set-destructive-command vip-Put-back vip-xemacs-p mark-marker t count yank this-command vip-same-line mark vip-backward-char-carefully exchange-point-and-mark back-to-indentation vip-deactivate-mark] 8 (#$ . 91986) "P"]) (defalias 'vip-copy-region-as-kill #[(beg end) "" [nil (copy-region-as-kill beg end) ((error (byte-code " \"" [copy-region-as-kill beg] 3)))] 3]) (defalias 'vip-save-last-insertion #[(beg end) " { GW \n?+!+!\n!" [beg end vip-last-insertion vip-d-com 5 4 vip-command-ring ring-empty-p vip-current-ring-item vip-cleanup-ring] 3]) #@73 Inserts the text saved by the previous vip-save-last-insertion command. (defalias 'vip-yank-last-insertion #[nil "" [nil (insert vip-last-insertion) ((error))] 3 (#$ . 93068)]) (put (quote vip-yank-last-insertion) (quote byte-optimizer) (quote byte-compile-inline-expand)) #@19 Delete character. (defalias 'vip-delete-char #[(arg) "\n:@@)\nʼn!\nVG`\n`ZVF`Z*\n=TTjljnh!j  \" ``\nZ!;!{P\"+ ! ``\nZ$ \" \n\"ln?!l\n\"\n\")" [arg 1 val vip-set-destructive-command vip-delete-char nil here 0 vip-ex-style-motion error "" vip-use-register vip-valid-register ((Letter)) end start reg set-register get-register copy-to-register vip-InvalidRegister delete-char t backward-char delete-backward-char] 8 (#$ . 93352) "P"]) #@74 Delete previous character. On reaching beginning of line, stop and beep. (defalias 'vip-delete-backward-char #[(arg) "\n:@@)\nʼn!\nVG`y\n`ZVF`Z*\"``\n\\ \f   !;s !t\f {P\"+!``\n\\$\"n \n\")" [arg 1 val vip-set-destructive-command vip-delete-backward-char nil here 0 vip-use-register vip-valid-register (Letter) end start reg set-register get-register "" copy-to-register error vip-InvalidRegister ding delete-backward-char t] 8 (#$ . 93955) "P"]) #@47 Delete 1 char backwards while in insert mode. (defalias 'vip-del-backward-char-in-insert #[nil "\fn\f!\"" [vip-ex-style-editing-in-insert beep 1 delete-backward-char t] 3 (#$ . 94525) nil]) #@302 Delete one character in replace mode. If `vip-delete-backwards-in-replace' is t, then DEL key actually deletes charecters. If it is nil, then the cursor just moves backwards, similarly to Vi. The variable `vip-ex-style-editing-in-insert', if t, doesn't let the cursor move past the beginning of line. (defalias 'vip-del-backward-char-in-replace #[nil "\"n \"\f!o!\"\f2n.!!!" [vip-delete-backwards-in-replace delete-backward-char 1 t vip-ex-style-editing-in-insert beep backward-char] 3 (#$ . 94734) nil]) #@68 Join this line to next, if ARG is nil. Otherwise, join ARG lines. (defalias 'vip-join-lines #[(arg) ":\f@ ) ĉ! \"ł$ SVGm>y``S| S'*" [arg val vip-set-destructive-command vip-join-lines nil 1 count 0 fixup-whitespace] 8 (#$ . 95283) "*P"]) (defalias 'vip-change #[(beg end) " !\n ! ! !   * $ \"  \"dU@! \" \"{ӏ" [markerp beg marker-position end vip-set-complex-command-for-undo vip-use-register copy-to-register nil vip-set-replace-overlay last-command vip-overlay-get vip-replace-overlay vip-start error "End of buffer" vip-end vip-last-replace-region conds (byte-code "\n\"\n\"\"\n\"b!\n\"`\"!\n \f 59 !TFJ !>T}]Ղ^gׂh\n #\n\f#**\n\"`\n#\n\"\n!\n\"\n!*\n\"b!\n\"\n\"\"\n\"! " [vip-same-line vip-overlay-get vip-replace-overlay vip-start vip-end insert-before-markers "@" untabify delete-backward-char 1 vip-replace-region-start-delimiter vip-replace-region-end-delimiter after-glyph before-glyph vip-emacs-p window-system device-type selected-device (tty stream) vip-use-replace-region-delimiters vip-xemacs-p begin-glyph before-string end-glyph after-string after-name before-name vip-overlay-put end beg vip-move-overlay vip-overlay-start nil vip-overlay-end vip-change-state-to-replace t kill-region vip-change-cursor-color vip-cursor-color vip-change-state-to-insert] 5) ((error (byte-code " \"bĉ\" \"! !<-1 !>< #!" [vip-overlay-get vip-replace-overlay vip-start vip-set-replace-overlay-glyphs nil vip-change-cursor-color vip-cursor-color vip-emacs-p window-system device-type selected-device (tty stream) vip-overlay-put face vip-message-conditions conds] 4)))] 5]) (defalias 'vip-change-subr #[(beg end) " \n\n $ \"ɏ" [beg end vip-use-register copy-to-register nil kill-region vip-change this-command (insert vip-last-insertion) ((error))] 5]) #@24 Toggle character case. (defalias 'vip-toggle-case #[(arg) "\n:@@)\f‰!\fV_g\" =J \"P \"lX!\fS.*" [arg 1 nil c val vip-set-destructive-command vip-toggle-case 0 delete-char insert-char backward-char] 8 (#$ . 97330) "P"]) #@153 Query replace. If a null string is suplied as the string to be replaced, the query replace mode will toggle between string replace and regexp replace. (defalias 'vip-query-replace #[nil " Ă\f@$ǘ+ ? &ʂ'\"N @ \"@$\"N \"@$\")" [nil str vip-read-string-with-history vip-re-query-replace "Query replace regexp: " "Query replace: " vip-replace1-history "" 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: "] 8 (#$ . 97625) nil]) #@27 Mark beginning of buffer. (defalias 'vip-mark-beginning-of-buffer #[nil "`!eb !" [push-mark exchange-point-and-mark message "Mark set at the beginning of buffer"] 2 (#$ . 98237) nil]) #@21 Mark end of buffer. (defalias 'vip-mark-end-of-buffer #[nil "`!db !" [push-mark exchange-point-and-mark message "Mark set at the end of buffer"] 2 (#$ . 98435) nil]) #@30 Set mark at point of buffer. (defalias 'vip-mark-point #[nil "  X X ZT![ U# [ U. [ UB \f\"\f![ UM [ UX [!)" [vip-read-char-exclusive char 97 122 point-to-register 60 vip-mark-beginning-of-buffer 62 vip-mark-end-of-buffer 46 delete vip-mark-marker mark-ring set-mark-command nil 44 vip-cycle-through-mark-ring 68 mark-defun error ""] 3 (#$ . 98615) nil]) #@99 Visit previous locations on the mark ring. One can use `` and '' to temporarily jump 1 step back. (defalias 'vip-cycle-through-mark-ring #[nil "` ='\f! \"!'!\" !\f9!; \"\" ‰)" [sv-pt last-command vip-cycle-through-mark-ring delete vip-xemacs-p mark-marker t mark-ring mark push-mark pop-mark set-mark-command 1 vip-deactivate-mark this-command] 3 (#$ . 99027)]) #@13 Go to mark. (defalias 'vip-goto-mark #[(arg) " \f‚ : A)\f #*" [read-char arg nil com char vip-goto-mark-subr] 5 (#$ . 99449) "P"]) #@59 Go to mark and skip to first non-white character on line. (defalias 'vip-goto-mark-and-skip-white #[(arg) " \n!\f #*" [read-char vip-getCom arg com char vip-goto-mark-subr t] 4 (#$ . 99607) "P"]) (defalias 'vip-goto-mark-subr #[(char com skip-white) "mo!! \"p ZT  ! \f3`\" !B \"!`\"Z`UZ\"_\" ! s `\fp݂\f#!b !+ U\f`\"`\"`Ub`!U \f;\f#6 U6\f`\"`\"`Ub`!U ` `\f;\f#( \"" [error "Empty buffer" backward-char 1 vip-valid-register char (letter) buff 97 reg get-register text-marker com vip-move-marker-locally vip-com-point vip-valid-marker format vip-EmptyTextmarker vip-same-line vip-last-jump vip-last-jump-ignore push-mark t nil vip-register-to-point point-marker skip-white back-to-indentation vip-execute-com vip-goto-mark-and-skip-white vip-goto-mark switch-to-buffer vip-change-state-to-vi "" 96 mark pop-mark exchange-point-and-mark 0 39 vip-InvalidTextmarker] 4]) (defalias 'vip-insert-tab #[nil " " [insert-tab] 1 nil nil]) (defalias 'vip-exchange-point-and-mark #[nil " " [exchange-point-and-mark back-to-indentation] 1 nil nil]) #@32 Indent forward -- `C-t' in Vi. (defalias 'vip-forward-indent #[nil "i\n\\j" [t vip-cted vip-shift-width] 2 (#$ . 100884) nil]) #@20 Backtab, C-d in VI (defalias 'vip-backward-indent #[nil "T`i!%hU\n!`y`)\f#7u`| F ZjnP!S," [vip-cted nil t indent bol c p vip-looking-back "[0^]" 94 vip-preserve-indent delete-backward-char 1 0 re-search-backward "[^ ]" vip-shift-width] 4 (#$ . 101020) nil]) #@29 Auto Indentation, Vi-style. (defalias 'vip-autoindent #[nil " \n\f  > !\n%\f j)" [current-indentation col vip-preserve-indent vip-current-indent nil last-command (vip-autoindent vip-open-line vip-Open-line) indent-to-left-margin newline 1 vip-auto-indent t vip-cted] 2 (#$ . 101341) nil]) #@60 Function called by ], the ket. View registers and call ]]. (defalias 'vip-ket-function #[(arg) "  \" !Q \"? Z\" !qed| \"c ceb)!)Q UL!Q \")" [read-char reg vip-valid-register (letter Letter) view-register (digit) current-kill 49 do-not-rotate text get-buffer-create "*Output*" format "Register %c contains the string:\n" display-buffer 93 vip-next-heading arg error vip-InvalidRegister] 3 (#$ . 101661) "P"]) #@62 Function called by [, the brac. View textmarkers and call [[ (defalias 'vip-brac-function #[(arg) " U\f! U\f! \" ZT! 8 \"!< ! !!qed|qe \"Tby#y`by#`{ZO ZO$) !$c #c \"ceb)!.& \")" [read-char reg 91 vip-prev-heading arg 93 vip-heading-end vip-valid-register (letter) get-register 97 val error format vip-EmptyTextmarker marker-buffer buf marker-position pos nil line-no text s e get-buffer-create "*Output*" count-lines 0 re-search-backward "[^ ]" t 1 re-search-forward "%s<%c>%s" "Textmarker `%c' is in buffer `%s' at line %d.\n" buffer-name "Here is some text around %c:\n\n %s" display-buffer vip-InvalidTextmarker] 8 (#$ . 102121) "P"]) #@23 Delete previous word. (defalias 'vip-delete-backward-word #[(arg) "\"\f!`!| )" [push-mark nil t backward-word arg mark pop-mark] 3 (#$ . 102934) "p"]) #@407 Sets the expert level for a Viper user. Can be called interactively to change (temporarily or permanently) the current expert level. The optional argument DONT-CHANGE-UNLESS if not nil, says that the level should not be changed, unless its current value is meaningless (i.e., not one of 1,2,3,4,5). User level determines the setting of Viper variables that are most sensitive for VI-style look-and-feel. (defalias 'vip-set-expert-level #[(&optional dont-change-unless) "‹=] \f' + !E\f8 < !>EтF\"*VW\fs w !\f !>ÂV=*\"A\"\"A\"\"A\"A\"A\"A*\"A\"\"A\"\"A\"A\"A\"A\"A\"A\"A\"A!!\f?VAVA " [vip-expert-level 0 ((byte-code " \n!" [delete-other-windows vip-ask-level dont-change-unless] 2)) t vip-always vip-ex-style-motion vip-ex-style-editing-in-insert nil vip-want-ctl-h-help 1 global-set-key vip-toggle-key vip-emacs-p window-system device-type selected-device (tty stream) vip-iconify suspend-emacs vip-no-multiple-ESC vip-re-search vip-vi-style-in-minibuffer vip-search-wrap-around-t vip-want-emacs-keys-in-vi vip-want-emacs-keys-in-insert 5 twice 2 4 set-default assoc vip-saved-user-settings vip-set-mode-vars-for vip-current-state vip-set-hooks] 5 (#$ . 103104) nil]) (defalias 'vip-ask-level #[(dont-change-unless) "ŋ+" [" *vip-ask-level*" nil repeated level-changed ask-buffer ((byte-code " !\n=\f X\fYc \f V0\fW0\nX  C!!F \nc Z s\f\"c!s\f\"# !" [switch-to-buffer ask-buffer this-command vip-set-expert-level vip-expert-level vip-max-expert-level 1 "\n \n *** Important Notice for VIP users***\n \n This is VIPER\n \n@joke\nViper Is a Package for Emacs Rebels,\na VI Plan for Emacs Rescue,\nand a venomous VI PERil.\n@end joke\n\nTechnically speaking, Viper is a new Vi emulator that replaces\nthe old VIP package.\n\nViper emulates Vi much better than VIP. It also significantly\nextends and improves upon Vi in many useful ways.\n\nAlthough many VIP settings in your ~/.vip are compatible with Viper,\nyou may have to change some of them. Please refer to the documentation,\nwhich can be obtained by executing\n\n:help\n\nwhen Viper is in Vi state.\n\nIf you will be so lucky as to find a bug, report it via the command\n\n:submitReport\n\nType any key to continue... " read-char erase-buffer dont-change-unless repeated message "Invalid user level" beep t level-changed "\nPlease specify your level of familiarity with the venomous VI PERil\n(and the VI Plan for Emacs Rescue).\nYou can change it at any time by typing `M-x vip-set-expert-level RET'\n \n 1 -- BEGINNER: Almost all Emacs features are suppressed.\n Feels almost like straight Vi. File name completion and\n command history in the minibuffer are thrown in as a bonus. \n To use Emacs productively, you must reach level 3 or higher.\n 2 -- MASTER: C-c now has its standard Emacs meaning in Vi command state,\n so most Emacs commands can be used when Viper is in Vi state.\n Good progress---you are well on the way to level 3!\n 3 -- GRAND MASTER: Like 3, but most Emacs commands are available also\n in Viper's insert state.\n 4 -- GURU: Like 3, but user settings are respected for vip-no-multiple-ESC,\n vip-re-search, vip-ex-style-motion, & vip-ex-style-editing-in-insert\n variables. Adjust these settings to your taste.\n 5 -- WIZARD: Like 4, but user settings are also respected for vip-always,\n vip-want-ctl-h-help, vip-want-emacs-keys-in-vi, and \n vip-want-emacs-keys-in-insert. Adjust these to your taste.\n \nPlease, specify your level now: " vip-read-char-exclusive 48 format "\n\n\n\n\n You have selected user level %d" y-or-n-p "Do you wish to make this change permanent? " vip-save-setting "Saving user level %d ..." vip-custom-file-name bury-buffer ""] 6))] 3]) (defalias 'viper-version #[nil "\n\"" [message "Viper version is %s" viper-version] 3 nil nil]) (defalias (quote vip-version) (quote viper-version)) (defalias 'vip-nil #[nil "!" [beep 1] 2 nil nil]) (defalias 'vip-looking-back #[(str) " #)`ĕU" [re-search-backward str nil t 0] 4]) (put (quote vip-looking-back) (quote byte-optimizer) (quote byte-compile-inline-expand)) #@74 Like jump-to-register, but switches to another buffer in another window. (defalias 'vip-register-to-point #[(char &optional enforce-buffer) " !!\n!\n!f\n!\"\n!f\n!K @p\n!@\fP \\S\"\n!!\nbf\n:^\n@=^\nA!f\f \\S\")" [get-register char val fboundp frame-configuration-p set-frame-configuration window-configuration-p set-window-configuration vip-valid-marker enforce-buffer marker-buffer error vip-EmptyTextmarker " in this buffer" 97 pop-to-buffer file find-file] 4 (#$ . 107554) "cViper register to point: "]) #@33 Save then kill current buffer.  (defalias 'vip-save-kill-buffer #[nil "W p!" [vip-expert-level 2 save-buffers-kill-emacs save-buffer kill-buffer] 2 (#$ . 108120) nil]) #@29 Submit bug report on Viper. (defalias 'vip-submit-report #[nil " \n !ʼn \n \f  1\n5 ![ @\nD !>[ R \\ !=\\ f\nj ! u\ny !>!\n \n ! \n !>! \n ! \n !>! ! !\f@AB˯.CD EFE!G HI!JK!?]L!MN!OP!L!QRS ŁG&.\n" [t vip-emacs-p window-system device-type selected-device nil window-config salutation varlist minibuffer-insert-face minibuffer-vi-face minibuffer-emacs-face frame-parameters color-display-p vip-device-type reporter-prompt-for-summary-p (tty stream) x-display-color-p device-class color non-x vip-get-face vip-minibuffer-vi-face vip-minibuffer-insert-face vip-minibuffer-emacs-face fboundp selected-frame vip-vi-minibuffer-minor-mode vip-insert-minibuffer-minor-mode vip-vi-intercept-minor-mode vip-vi-local-user-minor-mode vip-vi-kbd-minor-mode vip-vi-global-user-minor-mode vip-vi-state-modifier-minor-mode vip-vi-diehard-minor-mode vip-vi-basic-minor-mode vip-replace-minor-mode vip-insert-intercept-minor-mode vip-insert-local-user-minor-mode vip-insert-kbd-minor-mode vip-insert-global-user-minor-mode vip-insert-state-modifier-minor-mode vip-insert-diehard-minor-mode vip-insert-basic-minor-mode vip-emacs-intercept-minor-mode vip-emacs-local-user-minor-mode vip-emacs-kbd-minor-mode vip-emacs-global-user-minor-mode vip-emacs-state-modifier-minor-mode vip-automatic-iso-accents vip-want-emacs-keys-in-insert vip-want-emacs-keys-in-vi vip-keep-point-on-undo vip-no-multiple-ESC vip-ESC-key vip-want-ctl-h-help vip-ex-style-editing-in-insert vip-delete-backwards-in-replace vip-vi-style-in-minibuffer vip-vi-state-hooks vip-insert-state-hooks vip-replace-state-hooks vip-emacs-state-hooks ex-cycle-other-window ex-cycle-through-non-files vip-expert-level major-mode "\nCongratulations! You may have unearthed a bug in Viper!\nPlease mail a concise, accurate summary of the problem to the address above.\n\n-------------------------------------------------------------------" current-window-configuration " *vip-info*" switch-to-buffer delete-other-windows princ "\nPLEASE FOLLOW THESE PROCEDURES\n------------------------------\n\nBefore reporting a bug, please verify that it is related to Viper, and is\nnot cause by other packages you are using.\n\nDon't report compilation warnings, unless you are certain that there is a\nproblem. These warnings are normal and unavoidable.\n\nPlease note that users should not modify variables and keymaps other than\nthose advertised in the manual. Such `customization' is likely to crash\nViper, as it would any other improperly customized Emacs package.\n\nIf you are reporting an error message received while executing one of the\nViper commands, type:\n\n M-x set-variable debug-on-error t \n \nThen reproduce the error. The above command will cause Emacs to produce a\nback trace of the execution that leads to the error. Please include this\ntrace in your bug report.\n\nIf you believe that one of Viper's commands goes into an infinite loop\n(e.g., Emacs freezes), type:\n\n M-x set-variable debug-on-quit t \n \nThen reproduce the problem. Wait for a few seconds, then type C-g to abort\nthe current command. Include the resulting back trace in the bug report.\n\nMail anyway (y or n)? " y-or-n-p "Mail anyway? " set-window-configuration error "Bug report aborted" require reporter reporter-submit-bug-report "kifer@cs.sunysb.edu" vip-version] 46 (#$ . 108306) nil]) (defalias 'vip-set-unread-command-events #[(arg) " %\n9\nN%\n:%\n@9%\n@N). CG <7 G !C !G \"ɨj\n9[\nNj\n:j\n@9j\n@N)u\"\f\")\f !C \n9\nN\n:\n@9\n@N) C ; \" ! \" < \"\f\"\f" [vip-emacs-p arg obj event-symbol-elements sequencep listify-key-sequence error "vip-set-unread-command-events: Invalid argument, %S" new-events nil delq append unread-command-events character-to-event mapcar vectorp] 5]) (byte-code "!!!\"\"\"" [require viper-mous viper-macs viper-ex defalias vip-change-mode-to-vi vip-change-state-to-vi vip-change-mode-to-insert vip-change-state-to-insert vip-change-mode-to-emacs vip-change-state-to-emacs] 3) (defalias 'vip-comint-mode-hook #[nil "\"\"" [nil vip-add-newline-at-eob vip-ex-style-editing-in-insert vip-ex-style-motion vip-add-local-keys vi-state ((" " . comint-send-input) ("" . comint-delchar-or-maybe-eof)) insert-state ((" " . comint-send-input) ("" . comint-delchar-or-maybe-eof))] 3]) (defalias 'vip-set-hooks #[nil "$\"! \nB\n\"!+\f\nB\n\"!? \nB\n\"!S\nB\n\"!g\nB\n\"!{\nB\n\"!\nB\n\"!\nB\n\"!\nB\n\"\"\"!\nB\n\"\"$\"\"\"!!\nB\n\"\"!$\nB\n\"\"!6&\nB\n#\"!P*\nB\n#!e,\nB\n#\"\"\"$\"" [viper-mode default-major-mode ad-add-advice fundamental-mode (vip-fundamental-mode-ad nil t (advice lambda nil "Run `vip-change-state-to-vi' on entry." (vip-change-state-to-vi))) after nil ad-activate-on boundp help-mode-hook current-load-list add-hook emacs-lisp-mode-hook lisp-mode-hook bibtex-mode-hook cc-mode-hook c-mode-hook c++-mode-hook lisp-interaction-mode-hook text-mode-hook completion-list-mode-hook compilation-mode-hook emerge-startup-hook vip-change-state-to-emacs vip-eval-after-load "emerge" (defadvice emerge-quit (after vip-emerge-advice activate) "Run `vip-change-state-to-vi' after quitting emerge." (vip-change-state-to-vi)) emerge-quit (vip-emerge-advice nil t (advice lambda nil "Run `vip-change-state-to-vi' after quitting emerge." (vip-change-state-to-vi))) "asm-mode" (defadvice asm-mode (after vip-asm-mode-ad activate) "Run `vip-change-state-to-vi' on entry." (vip-change-state-to-vi)) "passwd" (defadvice read-passwd-1 (before vip-passwd-ad activate) "Switch to emacs state while reading password." (vip-change-state-to-emacs)) comint-mode-hook vip-change-state-to-insert vip-comint-mode-hook sh-mode-hook dired-mode-hook view-hook put variable-documentation "View hook. Run after view mode." vm-mode-hooks "This hook is run after vm is started." vm-summary-mode-hooks "This hook is run after vm switches to summary mode." "rmailedit" (defadvice rmail-cease-edit (after vip-rmail-advice activate) "Switch to emacs state when done editing message." (vip-change-state-to-emacs)) rmail-cease-edit (vip-rmail-advice nil t (advice lambda nil "Switch to emacs state when done editing message." (vip-change-state-to-emacs)))] 5]) (byte-code " !\n ! \"BB B\nB B\fB BB\" !!!!!!!! #\" #\"####&##(W(V ,= 0\"3\"$3\"$$$!@A!@B!@C!" [file-exists-p vip-custom-file-name noninteractive load vip-add-keymap vip-mode-map vip-vi-global-user-map vip-want-ctl-h-help vip-always vip-no-multiple-ESC vip-ex-style-motion vip-ex-style-editing-in-insert vip-want-emacs-keys-in-vi vip-want-emacs-keys-in-insert vip-re-search vip-saved-user-settings add-hook minibuffer-setup-hook vip-minibuffer-setup-sentinel vip-set-minibuffer-faces vip-set-search-face vip-harness-minor-mode "compile" "outline" "allout" "xref" "lmenu" "vc" "ltx-math" "latex" define-key vip-vi-intercept-map vip-ESC-key vip-intercept-ESC-key vip-insert-intercept-map vip-toggle-key vip-alternate-ESC (lambda nil (interactive) (if (and (< vip-expert-level 2) (equal vip-toggle-key "")) (if (vip-window-display-p) (vip-iconify) (suspend-emacs)) (vip-change-state-to-emacs))) vip-emacs-intercept-map vip-change-state-to-vi vip-expert-level 5 0 vip-set-hooks vip-current-state emacs-state vip-change-state-to-emacs set-default minor-mode-map-alist vip-record-kbd-macro vector vip-repeat-from-history-key \1 vi-state [(meta x) v i p - r e p e a t - f r o m - h i s t o r y return] t \2 [(meta x) v i p - r e p e a t - f r o m - h i s t o r y return] "//" [1 (meta x) v i p - t o g g l e - s e a r c h - s t y l e return] "///" [2 (meta x) v i p - t o g g l e - s e a r c h - s t y l e return] run-hooks vip-load-hooks provide viper vip19 vip] 9)