;ELC   
;;; compiled by kwzh@hal.gnu.ai.mit.edu on Thu Jun  8 20:41:48 1995
;;; from file /gd/gnu/emacs/19.0/lisp/viper-keym.el
;;; emacs version 19.28.93.6.
;;; 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-keym.el' was compiled for Emacs 19.29 or later"))


(byte-code "ÀÁ!ˆÂÃ!„ Ä ÃBÂÆ!„ Ä ÆBÂÇ!„) Ä ÇBÀ‡" [require viper-util boundp vip-vi-intercept-map make-sparse-keymap current-load-list vip-insert-intercept-map vip-emacs-intercept-map] 2)
#@304 Keymap for user-defined local bindings.
Useful for changing bindings such as ZZ in certain major modes.
For instance, in letter-mode, one may want to bind ZZ to
mh-send-letter. In a newsreader such as gnus, tin, or rn, ZZ could be bound
to save-buffers-kill-emacs then post article, etc.
(buffer local)
(defvar vip-vi-local-user-map (make-sparse-keymap) (#$ . 682))
(byte-code "ÀÁ!ˆÂÁÃÄ#‡" [make-variable-buffer-local vip-vi-local-user-map put permanent-local t] 4)
#@88 Keymap for user-defined global bindings.
These bindings are seen in all Viper buffers.
(defvar vip-vi-global-user-map (make-sparse-keymap) (#$ . 1154))
#@99 This is the main keymap in effect in Viper's Vi state.
This map is global, shared by all buffers.
(defvar vip-vi-basic-map (make-keymap) (#$ . 1312))
#@65 This keymap keeps keyboard macros defined via the :map command.
(defvar vip-vi-kbd-map (make-sparse-keymap) (#$ . 1468))
#@149 This keymap is in use when the user asks Viper to simulate Vi very closely.
This happens when vip-expert-level is 1 or 2. See vip-set-expert-level.
(defvar vip-vi-diehard-map (make-sparse-keymap) (#$ . 1596))
#@87 Auxiliary map for per-buffer user-defined keybindings in Insert state.
(buffer local)
(defvar vip-insert-local-user-map (make-sparse-keymap) (#$ . 1811))
(byte-code "ÀÁ!ˆÂÁÃÄ#‡" [make-variable-buffer-local vip-insert-local-user-map put permanent-local t] 4)
#@65 Auxiliary map for global user-defined bindings in Insert state.
(defvar vip-insert-global-user-map (make-sparse-keymap) (#$ . 2075))
#@31 The basic insert-mode keymap.
(defvar vip-insert-basic-map (make-sparse-keymap) (#$ . 2214))
#@180 Map used when user wants vi-style keys in insert mode.
Most of the Emacs keys are suppressed. This map overshadows
vip-insert-basic-map. Not recommended, except for novice users.
(defvar vip-insert-diehard-map (make-keymap) (#$ . 2314))
#@56 This keymap keeps VI-style kbd macros for insert mode.
(defvar vip-insert-kbd-map (make-sparse-keymap) (#$ . 2557))
#@36 Map used in Viper's replace state.
(defvar vip-replace-map (make-sparse-keymap) (#$ . 2679))
#@64 Auxiliary map for global user-defined bindings in Emacs state.
(defvar vip-emacs-global-user-map (make-sparse-keymap) (#$ . 2778))
#@55 This keymap keeps Vi-style kbd macros for emacs mode.
(defvar vip-emacs-kbd-map (make-sparse-keymap) (#$ . 2915))
#@78 Auxiliary map for local user-defined bindings in Emacs state.
(buffer local)
(defvar vip-emacs-local-user-map (make-sparse-keymap) (#$ . 3035))
(byte-code "ÀÁ!ˆÂÁÃÄ#ˆÅÆ!„ Ç ÆBÅÉ!„$ Ç 	ÉBÅÊ!„3 Ë\nÊBÅÌ!„B Ë\fÌBÅÍ!„Q ËÍBË‡" [make-variable-buffer-local vip-emacs-local-user-map put permanent-local t boundp vip-empty-keymap make-sparse-keymap current-load-list vip-mode-map vip-vi-state-modifier-alist nil vip-insert-state-modifier-alist vip-emacs-state-modifier-alist] 4)
#@17 
(buffer local)
(defvar vip-need-new-vi-local-map t (#$ . 3538))
(byte-code "ÀÁ!ˆÂÁÃÄ#‡" [make-variable-buffer-local vip-need-new-vi-local-map put permanent-local t] 4)
#@17 
(buffer local)
(defvar vip-need-new-insert-local-map t (#$ . 3713))
(byte-code "ÀÁ!ˆÂÁÃÄ#‡" [make-variable-buffer-local vip-need-new-insert-local-map put permanent-local t] 4)
#@17 
(buffer local)
(defvar vip-need-new-emacs-local-map t (#$ . 3896))
(byte-code "ÀÁ!ˆÂÁÃÄ#ˆÅÇÈ#ˆÅÉÊ#ˆÅËÊ#ˆÅÌÍ#ˆÅÎÊ#ˆÅÏÊ#ˆÅÐÊ#ˆÅÇÊ#ˆÅÑÊ#ˆÅÒÊ#ˆÅÓÊ#ˆÅÔÊ#ˆÅÕÊ#ˆÅÖÊ#ˆÅ×Ê#ˆÅØÊ#ˆÅÙÚ#ˆÅÛÊ#ˆÅÜÊ#ˆÅÝÊ#ˆÅÞÊ#ˆÅßÊ#ˆà!àâXƒÁ Åãä!\"Ê#ˆ!T‰!‚¨ )Å%æç#ˆÅ%èé#ˆÅ%êë#ˆÅ%,ƒã í‚ä îÈ#ˆÅ%ïð#ˆÅ%ñò#ˆÅ%óô#ˆÅ%õö#ˆÅ7êë#ˆÅ7øù#ˆÅ7úù#ˆÅ7ñû#ˆÅ<ýþ#ˆÅ<Ëÿ#ˆÅ<æ�@ #ˆÅ<Î�A #ˆÅ<Ï�B #ˆÅ<ú�C #ˆÅ<Ù�D #ˆÅ<Ü�E #ˆÅ<Ø�F #ˆÅ<×�G #ˆÅ<�H �I #ˆÅ<�J �K #ˆÅ<ó�L #ˆÅ<õ�M #ˆÅ<�N �O #ˆÅ<�P �Q #ˆÅ<�R �Q #ˆÅ<�S �Q #ˆÅ<�T �U #ˆÅ<�V �W #ˆÅ<�X �Y #ˆÅ<�Z �[ #ˆÅ<�\\ �] #ˆÅ<�^ �_ #ˆÅ<�` �a #ˆÅ<�b �C #ˆÅ<�c �d #ˆÅ<�e �f #ˆÅ<�g �h #ˆÅ<�i �j #ˆÅ<�k �l #ˆÅ<�m �n #ˆÅ<�o �n #ˆÅ<�p �n #ˆÅ<�q �n #ˆÅ<�r �n #ˆÅ<�s �n #ˆÅ<�t �n #ˆÅ<�u �n #ˆÅ<�v �n #ˆÅ<�w �x #ˆÅ<�y �z #ˆÅ<�{ �Q #ˆÅ<�| �Q #ˆÅ<�} �Q #ˆÅ<�~ � #ˆÅ<�€ �� #ˆÅ<�‚ �ƒ #ˆÅ<�„ �… #ˆÅ<�† �‡ #ˆÅ<�ˆ �‰ #ˆÅ<�Š �‹ #ˆÅ<�Œ �� #ˆÅ<�Ž �� #ˆÅ<�� �‘ #ˆÅ<�’ �“ #ˆÅ<�” �• #ˆÅ<�– �— #ˆÅ<�˜ �™ #ˆÅ<�š �› #ˆÅ<�œ �� #ˆÅ<�ž �Ÿ #ˆÅ<�  �¡ #ˆÅ<�¢ �£ #ˆÅ<�¤ �¥ #ˆÅ<�¦ �§ #ˆÅ<�¨ �© #ˆÅ<�ª �« #ˆÅ<�¬ �­ #ˆÅ<�® �¯ #ˆÅ<�° �± #ˆÅ<�² �³ #ˆÅ<�´ �µ #ˆÅ<�¶ �· #ˆÅ<�¸ �¹ #ˆÅ<�º �» #ˆÅ<�¼ �½ #ˆÅ<�¾ �¿ #ˆÅ<�À �Á #ˆÅ<�Â �Ã #ˆÅ<�Ä �Å #ˆÅ<�Æ �Q #ˆÅ<�Ç �Q #ˆÅ<�È �É #ˆÅ<�Ê �Ë #ˆÅ<�Ì �— #ˆÅ<�Í �Î #ˆÅ<�Ï �Ð #ˆÅ<�Ñ �Ò #ˆÅ<�Ó �Ô #ˆÅ<�Õ �O #ˆÅ<�Ö �× #ˆÅ<�Ø �Ù #ˆÅ<�Ú �Û #ˆÅ<�Ü �Ý #ˆÅ<�Þ �— #ˆÅ<�ß �à #ˆÅ<�á �â #ˆÅ<�ã �ä #ˆÅ<�å �« #ˆÅ<�æ �ç #ˆÅ<ï�è #ˆÅ<�é �ê #ˆÅ<�ë �ì #ˆÅ<�í �Q #ˆÅ<�î �ï #ˆÅ<�ð �ñ #ˆÅ<�ò �ó #ˆÅ<�ô �ï #ˆÅ<�õ �ñ #ˆÅ<�ö �ó #ˆÅ<�÷ �ø #ˆÅ<�ù �ú #ˆÅ<�û �ü #ˆÅ<�ý �þ #ˆÅ<ñ�Î #ˆ�ÿ � �\"ˆÅÉ�— #ˆÅÌ�— #ˆÅÐ�K #ˆÅÇ�— #ˆÅÑ�— #ˆÅÒ�#ˆÅÓ�Ò #ˆÅÔ�— #ˆÅÕ�Ô #ˆÅÖ�— #ˆÅ×�#ˆÅØ�— #ˆÅê�— #ˆÅï�— #ˆÅè�— #ˆÅ�€ �— #ˆÅ�` �— #ˆÅ�S �— #ˆÅß�— #ˆÅÞ�— #‡" [make-variable-buffer-local vip-need-new-emacs-local-map put permanent-local t define-key vip-insert-diehard-map "	" vip-insert-tab "" self-insert-command "" "" vip-change-state-to-vi "" "" "" "" "\f" "" "" "" "" "" "" "" vip-erase-line "" "" "" "" "" 32 i 126 make-string 1 vip-insert-basic-map "" vip-backward-indent "" vip-delete-backward-word "" vip-forward-indent vip-xemacs-p [(shift tab)] [S-tab] "" quoted-insert "" vip-del-backward-char-in-insert "ð" vip-insert-prev-from-insertion-ring "î" vip-insert-next-from-insertion-ring vip-replace-map "\n" vip-replace-state-exit-cmd "" vip-del-backward-char-in-replace vip-vi-basic-map "" #[nil "ÀÁ!‡" [vip-ex "e#"] 2 nil nil] vip-scroll-back vip-scroll-up vip-scroll-up-one vip-scroll vip-next-line-at-bol vip-scroll-down vip-scroll-down-one vip-isearch-forward vip-isearch-backward "/" vip-toggle-search-style "g" vip-info-on-file vip-prev-destructive-command vip-next-destructive-command " " vip-forward-char "!" vip-command-argument "\"" "#" "$" vip-goto-eol "%" vip-paren-match "&" #[nil "ÀÁ!‡" [vip-ex "&"] 2 nil nil] "'" vip-goto-mark-and-skip-white "(" vip-backward-sentence ")" vip-forward-sentence "*" call-last-kbd-macro "+" "," vip-repeat-find-opposite "-" vip-previous-line-at-bol "." vip-repeat "/" vip-search-forward "0" vip-beginning-of-line "1" vip-digit-argument "2" "3" "4" "5" "6" "7" "8" "9" ":" vip-ex ";" vip-repeat-find "<" "=" ">" "?" vip-search-backward "@" vip-register-macro "A" vip-Append "B" vip-backward-Word "C" vip-change-to-eol "D" vip-kill-line "E" vip-end-of-Word "F" vip-find-char-backward "G" vip-goto-line "H" vip-window-top "I" vip-Insert "J" vip-join-lines "K" vip-nil "L" vip-window-bottom "M" vip-window-middle "N" vip-search-Next "O" vip-Open-line "P" vip-Put-back "Q" vip-query-replace "R" vip-overwrite "S" vip-substitute-line "T" vip-goto-char-backward "U" vip-undo "V" find-file-other-window "W" vip-forward-Word "X" vip-delete-backward-char "Y" vip-yank-line "ZZ" vip-save-kill-buffer "\\" vip-escape-to-emacs "[" vip-brac-function "]" vip-ket-function "_" vip-alternate-ESC "^" vip-bol-and-skip-white "`" vip-goto-mark "a" vip-append "b" vip-backward-word "c" "d" "e" vip-end-of-word "f" vip-find-char-forward "g" "h" vip-backward-char "i" vip-insert "j" vip-next-line "k" vip-previous-line "l" "m" vip-mark-point "n" vip-search-next "o" vip-open-line "p" vip-put-back "q" "r" vip-replace-char "s" vip-substitute "t" vip-goto-char-forward "u" "v" find-file find-file-other-frame "w" vip-forward-word "x" vip-delete-char "y" "zH" vip-line-to-top "zM" vip-line-to-middle "zL" vip-line-to-bottom "z" "z." "z-" "{" vip-backward-paragraph "|" vip-goto-col "}" vip-forward-paragraph "~" vip-toggle-case global-set-key "š" vip-escape-to-vi vip-vi-diehard-map redraw-display] 6)
#@64 Keymap used to modify keys when Minibuffer is in Insert state.
(defvar vip-minibuffer-map (make-sparse-keymap) (#$ . 8538))
(byte-code "À	ÂÃ#ˆÀ	ÄÃ#ˆÅÆ!„ Ç ÆBÀÉÊ#ˆÀËÌ#ˆÅÍ!„4 Ç ÍBÀÉÎ#‡" [define-key vip-minibuffer-map "" vip-exit-minibuffer "\n" boundp vip-ex-cmd-map make-sparse-keymap current-load-list " " ex-cmd-read-exit "	" ex-cmd-complete ex-read-filename-map vip-complete-filename-or-exit] 4)
#@442 Override some vi-state or insert-state bindings in the current buffer.
The effect is seen in the current buffer only.
Useful for customizing  mailer buffers, gnus, etc.
STATE is 'vi-state, 'insert-state, or 'emacs-state
ALIST is of the form ((key . func) (key . func) ...)
Normally, this would be called from a hook to a major mode or
on a per buffer basis.
Usage:
      (vip-add-local-keys state '((key-str . func) (key-str . func)...))   
(defalias 'vip-add-local-keys #[(state alist) "À\nÃ=ƒ \fƒ Å À‚M \nÇ=ƒ0 ƒ' Å 	À	‚M \nÊ=ƒH ƒ? Å \fÀ\f‚M ÍÎ\n\"ˆÏ	\"ˆÑ ˆÒ!)‡" [nil map state vi-state vip-need-new-vi-local-map make-sparse-keymap vip-vi-local-user-map insert-state vip-need-new-insert-local-map vip-insert-local-user-map emacs-state vip-need-new-emacs-local-map vip-emacs-local-user-map error "Invalid state in vip-add-local-keys: %S. Valid states: vi-state, insert-state or emacs-state" vip-modify-keymap alist vip-normalize-minor-mode-map-alist vip-set-mode-vars-for vip-current-state] 3 (#$ . 8963)])
#@572 Modify key bindings in a major-mode in a Viper state using a keymap.

If the default for a major mode is emacs-state, then modifications to this
major mode may not take effect until the buffer switches state to Vi,
Insert or Emacs. If this happens, add vip-change-state-to-emacs to this
major mode's hook. If no such hook exists, you may have to put an advice on
the function that invokes the major mode. See vip-set-hooks for hints.

The above needs not to be done for major modes that come up in Vi or Insert
state by default.

Arguments: (major-mode vip-state keymap)
(defalias 'vip-modify-major-mode #[(mode state keymap) "Á=ƒ\n Â‚ Ã=ƒ Ä‚ Å=… ÆÇ	ÊÌ	!\"‰ƒ: 	ÍÌ	!\"Lˆ	BÌ	!BLˆÏ ˆÐ!*‡" [state vi-state vip-vi-state-modifier-alist insert-state vip-insert-state-modifier-alist emacs-state vip-emacs-state-modifier-alist nil elt alist assoc mode eval delq keymap vip-normalize-minor-mode-map-alist vip-set-mode-vars-for vip-current-state] 5 (#$ . 10004)])
(defalias 'vip-debug-keymaps #[nil "À�ÁÂÃÄ \"!ˆÁÅ!ˆÁÂÆ\"!ˆÁÂÈ	\"!ˆÁÂÊ\"!ˆÁÂÌ\"!ˆÁÂÎ\"!ˆÁÂÐ\"!ˆÁÂÒ\"!ˆÁÂÔ\"!ˆÁÂÖ\"!ˆÁÂØ\"!ˆÁÂÚ\"!ˆÁÂÜ\"!ˆÁÂÞ\"!ˆÁÂà!\"!ˆÁÂâ#\"!ˆÁÂä%\"!ˆÁÂæ'\"!ˆÁÂè)\"!ˆÁÂê+\"!ˆÁÂì-\"!ˆÁÂî/\"!ˆÁÂð1\"!ˆÁÂò3\"!ˆÁÂô5\"!ˆÁÂö7\"!ˆÁÂø9\"!ˆÁÂú;\"!ˆÁÂü=\"!ˆÁÂþ?\"!ˆÁÂ�@ A\"!ˆÁÂ�B C\"!ˆÁÂ�D E\"!ˆÁÂ�F G\"!ˆÁ�H !ˆÁÂ�I �J �K !\"!ˆÁÂ�L K\"!‘‡" [" *vip-debug*" princ format "Buffer name:  %s\n\n" buffer-name "Variables:  \n" "major-mode:  %S\n" major-mode "vip-current-state:  %S\n" vip-current-state "vip-mode-string:  %S\n\n" vip-mode-string "vip-vi-intercept-minor-mode:  %S\n" vip-vi-intercept-minor-mode "vip-insert-intercept-minor-mode:  %S\n" vip-insert-intercept-minor-mode "vip-emacs-intercept-minor-mode:  %S\n" vip-emacs-intercept-minor-mode "vip-vi-minibuffer-minor-mode:  %S\n" vip-vi-minibuffer-minor-mode "vip-insert-minibuffer-minor-mode:  %S\n\n" vip-insert-minibuffer-minor-mode "vip-vi-local-user-minor-mode:  %S\n" vip-vi-local-user-minor-mode "vip-vi-global-user-minor-mode:  %S\n" vip-vi-global-user-minor-mode "vip-vi-kbd-minor-mode:  %S\n" vip-vi-kbd-minor-mode "vip-vi-state-modifier-minor-mode:  %S\n" vip-vi-state-modifier-minor-mode "vip-vi-diehard-minor-mode:  %S\n" vip-vi-diehard-minor-mode "vip-vi-basic-minor-mode:  %S\n" vip-vi-basic-minor-mode "vip-replace-minor-mode:  %S\n" vip-replace-minor-mode "vip-insert-local-user-minor-mode:  %S\n" vip-insert-local-user-minor-mode "vip-insert-global-user-minor-mode:  %S\n" vip-insert-global-user-minor-mode "vip-insert-kbd-minor-mode:  %S\n" vip-insert-kbd-minor-mode "vip-insert-state-modifier-minor-mode:  %S\n" vip-insert-state-modifier-minor-mode "vip-insert-diehard-minor-mode:  %S\n" vip-insert-diehard-minor-mode "vip-insert-basic-minor-mode:  %S\n" vip-insert-basic-minor-mode "vip-emacs-local-user-minor-mode:  %S\n" vip-emacs-local-user-minor-mode "vip-emacs-kbd-minor-mode:  %S\n" vip-emacs-kbd-minor-mode "vip-emacs-global-user-minor-mode:  %S\n" vip-emacs-global-user-minor-mode "vip-emacs-state-modifier-minor-mode:  %S\n" vip-emacs-state-modifier-minor-mode "\nvip-expert-level  %S\n" vip-expert-level "vip-no-multiple-ESC  %S\n" vip-no-multiple-ESC "vip-always  %S\n" vip-always "vip-ex-style-motion  %S\n" vip-ex-style-motion "vip-ex-style-editing-in-insert  %S\n" vip-ex-style-editing-in-insert "vip-want-emacs-keys-in-vi  %S\n" vip-want-emacs-keys-in-vi "vip-want-emacs-keys-in-insert  %S\n" vip-want-emacs-keys-in-insert "vip-want-ctl-h-help  %S\n" vip-want-ctl-h-help "\n\n\n" "Default value for minor-mode-map-alist:  \n%S\n\n" default-value minor-mode-map-alist "Actual value for minor-mode-map-alist:  \n%S\n"] 6 nil nil])
#@72 Add contents of mapsrc to mapdst. It is assumed that mapsrc is sparse.
(defalias 'vip-add-keymap #[(mapsrc mapdst) "ƒ	 ÁÂ\"‡ÄÅA\"‡" [vip-xemacs-p map-keymap #[(key binding) "À	\n#‡" [define-key mapdst key binding] 4] mapsrc mapcar #[(p) "À	Â@!A#‡" [define-key mapdst vector p] 4]] 3 (#$ . 13664)])
#@117 Modifies MAP with bindings specified in the ALIST. The alist has the
form ((key . function) (key . function) ... ).
(defalias 'vip-modify-keymap #[(map alist) "ÀÁ\n\"‡" [mapcar #[(p) "À	Â@!A#‡" [define-key map eval p] 4] alist] 3 (#$ . 13975)])
(provide (quote viper-keym))
