Function: viper-ask-level
viper-ask-level is a byte-compiled function defined in
viper-cmd.el.gz.
Signature
(viper-ask-level DONT-CHANGE-UNLESS)
Source Code
;; Defined in /usr/src/emacs/lisp/emulation/viper-cmd.el.gz
;; Ask user expert level.
(defun viper-ask-level (dont-change-unless)
(let ((ask-buffer " *viper-ask-level*")
level-changed repeated)
(save-window-excursion
(switch-to-buffer ask-buffer)
(while (or (> viper-expert-level viper-max-expert-level)
(< viper-expert-level 1)
(null dont-change-unless))
(erase-buffer)
(if repeated
(progn
(message "Invalid user level")
(beep 1))
(setq repeated t))
(setq dont-change-unless t
level-changed t)
(insert (substitute-command-keys "
Please specify your level of familiarity with the venomous VI PERil
\(and the VI Plan for Emacs Rescue).
You can change it at any time by typing `\\[viper-set-expert-level]'
1 -- BEGINNER: Almost all Emacs features are suppressed.
Feels almost like straight Vi. File name completion and
command history in the minibuffer are thrown in as a bonus.
To use Emacs productively, you must reach level 3 or higher.
2 -- MASTER: C-c now has its standard Emacs meaning in Vi command state,
so most Emacs commands can be used when Viper is in Vi state.
Good progress---you are well on the way to level 3!
3 -- GRAND MASTER: Like 2, but most Emacs commands are available also
in Viper's insert state.
4 -- GURU: Like 3, but user settings are respected for viper-no-multiple-ESC,
viper-ex-style-motion, viper-ex-style-editing, and
viper-re-search variables. Adjust these settings to your taste.
5 -- WIZARD: Like 4, but user settings are also respected for viper-always,
viper-electric-mode, viper-want-ctl-h-help, viper-want-emacs-keys-in-vi,
and viper-want-emacs-keys-in-insert. Adjust these to your taste.
Please, specify your level now: "))
(setq viper-expert-level (- (viper-read-char-exclusive) ?0))
) ; end while
;; tell the user if level was changed
(and level-changed
(progn
(insert
(format "\n\n\n\n\n\t\tYou have selected user level %d"
viper-expert-level))
(if (y-or-n-p "Do you wish to make this change permanent? ")
;; save the setting for viper-expert-level
(viper-save-setting
'viper-expert-level
(format "Saving user level %d ..." viper-expert-level)
viper-custom-file-name))
))
(bury-buffer) ; remove ask-buffer from screen
(message "")
)))