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