1 (setq-default ;; viper-always nil
3 viper-ex-style-editing nil
4 viper-ex-style-motion nil
6 viper-inhibit-startup-message t
8 viper-want-ctl-h-help t
9 viper-want-emacs-keys-in-insert t
10 viper-want-emacs-keys-in-vi t
11 viper-vi-style-in-minibuffer nil
12 viper-no-multiple-ESC t
13 viper-case-fold-search t
15 viper-re-query-replace t
16 viper-syntax-preference
'emacs
17 viper-delete-backwards-in-replace t
18 viper-parse-sexp-ignore-comments nil
19 viper-ESC-moves-cursor-back nil
)
21 (custom-set-variables '(viper-toggle-key [(control escape
)]))
23 (defface viper-insert-face nil
"Viper insert face")
25 (defun viper-add-mode-to-state (mode state
)
26 (let* ((state-alist '((vi viper-vi-state-mode-list
)
27 (emacs viper-emacs-state-mode-list
)
28 (insert viper-insert-state-mode-list
)))
29 (state-mode-list (assoc state state-alist
)))
30 (add-to-list (cadr state-mode-list
) mode
)
32 (set (cadr x
) (remove mode
(symbol-value (cadr x
)))))
33 (remove state-mode-list state-alist
))))
35 (put 'viper-add-local-keys
'lisp-indent-function
1)
37 (and (fboundp 'viper-buffer-search-enable
)
38 (viper-buffer-search-enable))
40 (set 'viper-read-buffer-function
42 ((featurep 'ido
) 'ido-read-buffer
)
43 ((featurep 'iswitchb
) 'iswitchb-read-buffer
)
48 (setq viper-minibuffer-insert-face
'viper-insert-face
49 viper-vi-state-cursor-color
"cyan"))
51 (add-hook 'viper-load-hook
'viper-define-aditional-bindings
)
53 (defun viper-esc-command-lambda (command)
54 `(lambda nil
(interactive)
55 (call-interactively (cond ((eq viper-current-state
'vi-state
)
57 ((eq viper-current-state
'insert-state
)
58 'viper-exit-insert-state
)
59 ((eq viper-current-state
'replace-state
)
60 'viper-replace-state-exit-cmd
)
61 (t 'viper-change-state-to-vi
)))
62 (call-interactively ',(or (and (symbolp command
)
63 (command-remapping command
)) command
))))
65 (defun viper-define-aditional-bindings nil
66 (define-key viper-vi-global-user-map
[(meta ?
#)] 'comment-or-uncomment-line-or-region
)
67 (define-key viper-vi-global-user-map
[(control ??
)] 'help
)
68 (define-key viper-vi-global-user-map
"q" 'kill-buffer
)
69 (define-key viper-vi-global-user-map
"\M-[" 'backward-paragraph
)
70 (define-key viper-vi-global-user-map
"\M-]" 'forward-paragraph
)
71 (define-key viper-vi-global-user-map
"\C-f" 'forward-char
)
72 (define-key viper-vi-global-user-map
"\C-b" 'backward-char
)
73 (define-key viper-vi-global-user-map
"\M-v" 'scroll-down
)
74 (define-key viper-vi-global-user-map
"\C-v" 'scroll-up
)
75 (define-key viper-vi-global-user-map
"\C-y" 'yank
)
76 (define-key viper-vi-global-user-map
"\C-h" 'backward-word
)
77 (define-key viper-vi-global-user-map
"\C-l" 'forward-word
)
78 ;;(define-key viper-vi-global-user-map " " 'scroll-up)
79 ;;(define-key viper-vi-global-user-map [(backspace)] 'scroll-down)
80 (define-key viper-vi-global-user-map
"\C-j" 'forward-paragraph
)
81 (define-key viper-vi-global-user-map
"\C-k" 'backward-paragraph
)
82 (define-key viper-vi-global-user-map
"\C-xp"
83 (lambda nil
(interactive) (other-window -
1)))
84 (define-key viper-vi-global-user-map
"\C-e"
85 (or (command-remapping 'move-end-of-line
) 'move-end-of-line
))
86 (define-key viper-insert-global-user-map
"\C-xo"
87 (viper-esc-command-lambda 'other-window
))
88 (define-key viper-insert-global-user-map
"\C-xp"
89 (viper-esc-command-lambda (lambda nil
(interactive) (other-window -
1))))
90 (define-key viper-insert-global-user-map
[(control return
)]
91 (viper-esc-command-lambda 'viper-nil
))
92 (define-key viper-insert-global-user-map
"\C-x\C-s"
93 (viper-esc-command-lambda 'save-buffer
))
94 (define-key viper-insert-global-user-map
"\C-g"
95 (viper-esc-command-lambda 'keyboard-quit
))
96 (define-key viper-insert-global-user-map
"\C-]"
97 (viper-esc-command-lambda 'abort-recursive-edit
))
98 (define-key viper-insert-global-user-map
"\C-x\C-f"
99 (viper-esc-command-lambda 'find-file
)))
101 (defun viper-show-current-state nil
102 (unless (window-minibuffer-p)
104 (let ((str (buffer-name nil
)))
108 (cond ((eq viper-current-state
'vi-state
)
110 ((eq viper-current-state
'insert-state
)
112 ((eq viper-current-state
'replace-state
)
113 'viper-replace-overlay-face
)
114 ((eq viper-current-state
'emacs-state
)
119 (cond ((eq viper-current-state
'vi-state
)
122 0 1 (face widget-inactive-face
)
125 10 11 (face widget-inactive-face
))
127 ((eq viper-current-state
'insert-state
)
130 0 1 (face widget-inactive-face
)
131 2 7 (face viper-insert-face
)
132 8 9 (face widget-inactive-face
))
134 ((eq viper-current-state
'replace-state
)
137 0 1 (face widget-inactive-face
)
138 2 7 (face query-replace
)
139 8 9 (face widget-inactive-face
))
141 ((eq viper-current-state
'emacs-state
)
144 0 1 (face widget-inactive-face
)
145 2 11 (face secondary-selection
)
146 12 13 (face widget-inactive-face
))
147 "[ E M A C S ]"))))))
149 (add-hook 'viper-vi-state-hook
'viper-show-current-state
)
150 (add-hook 'viper-insert-state-hook
'viper-show-current-state
)
151 (add-hook 'viper-replace-state-hook
'viper-show-current-state
)
152 (add-hook 'viper-emacs-state-hook
'viper-show-current-state
)