;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))
