Function: viper-go-away

viper-go-away is an interactive and byte-compiled function defined in viper.el.gz.

Signature

(viper-go-away)

Documentation

De-Viperize Emacs.

This function tries to do as good a job as possible. However, it may undo some user customization, unrelated to Viper. For instance, if the user advised read-file-name, describe-key, and some others, then this advice will be undone. It also can't undo some Viper settings.

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/emulation/viper.el.gz
(defun viper-go-away ()
  "De-Viperize Emacs.
This function tries to do as good a job as possible.  However, it may undo some
user customization, unrelated to Viper.  For instance, if the user advised
`read-file-name', `describe-key', and some others, then this advice will be
undone.
It also can't undo some Viper settings."
  (interactive)
  (viper-setup-ESC-to-escape nil)
  ;; restore non-viper vars
  (setq-default
   next-line-add-newlines
   (viper-standard-value
    'next-line-add-newlines viper-saved-non-viper-variables)
   require-final-newline
   (viper-standard-value
    'require-final-newline viper-saved-non-viper-variables)
   scroll-step
   (viper-standard-value 'scroll-step viper-saved-non-viper-variables)
   mode-line-buffer-identification
   (viper-standard-value
    'mode-line-buffer-identification viper-saved-non-viper-variables)
   global-mode-string
   (delq 'viper-mode-string global-mode-string))

  (setq-default major-mode
                (viper-standard-value 'major-mode
                                      viper-saved-non-viper-variables))

  (setq-default
   mark-even-if-inactive
   (viper-standard-value
    'mark-even-if-inactive viper-saved-non-viper-variables))

  ;; Ideally, we would like to be able to de-localize local variables
  (viper-delocalize-var 'require-final-newline)

  ;; deactivate all advices done by Viper.
  (viper--deactivate-advice-list)

  (setq viper-mode nil)

  (setq emulation-mode-map-alists
	(delq 'viper--intercept-key-maps
	      (delq 'viper--key-maps emulation-mode-map-alists)))

  (viper-delocalize-var 'viper-vi-minibuffer-minor-mode)
  (viper-delocalize-var 'viper-insert-minibuffer-minor-mode)
  (viper-delocalize-var 'viper-vi-intercept-minor-mode)
  (viper-delocalize-var 'viper-insert-intercept-minor-mode)

  (viper-delocalize-var 'viper-vi-local-user-minor-mode)
  (viper-delocalize-var 'viper-vi-kbd-minor-mode)
  (viper-delocalize-var 'viper-vi-global-user-minor-mode)
  (viper-delocalize-var 'viper-vi-state-modifier-minor-mode)
  (viper-delocalize-var 'viper-vi-diehard-minor-mode)
  (viper-delocalize-var 'viper-vi-basic-minor-mode)

  (viper-delocalize-var 'viper-replace-minor-mode)

  (viper-delocalize-var 'viper-insert-local-user-minor-mode)
  (viper-delocalize-var 'viper-insert-kbd-minor-mode)
  (viper-delocalize-var 'viper-insert-global-user-minor-mode)
  (viper-delocalize-var 'viper-insert-state-modifier-minor-mode)
  (viper-delocalize-var 'viper-insert-diehard-minor-mode)
  (viper-delocalize-var 'viper-insert-basic-minor-mode)

  (viper-delocalize-var 'viper-emacs-intercept-minor-mode)
  (viper-delocalize-var 'viper-emacs-local-user-minor-mode)
  (viper-delocalize-var 'viper-emacs-kbd-minor-mode)
  (viper-delocalize-var 'viper-emacs-global-user-minor-mode)
  (viper-delocalize-var 'viper-emacs-state-modifier-minor-mode)

  (viper-delocalize-var 'viper-current-state)
  (viper-delocalize-var 'viper-mode-string)

  (setq-default viper-vi-minibuffer-minor-mode	       nil
		viper-insert-minibuffer-minor-mode     nil
		viper-vi-intercept-minor-mode	       nil
		viper-insert-intercept-minor-mode      nil

		viper-vi-local-user-minor-mode         nil
		viper-vi-kbd-minor-mode                nil
		viper-vi-global-user-minor-mode        nil
		viper-vi-state-modifier-minor-mode     nil
		viper-vi-diehard-minor-mode            nil
		viper-vi-basic-minor-mode              nil

		viper-replace-minor-mode               nil

		viper-insert-local-user-minor-mode     nil
		viper-insert-kbd-minor-mode            nil
		viper-insert-global-user-minor-mode    nil
		viper-insert-state-modifier-minor-mode nil
		viper-insert-diehard-minor-mode        nil
		viper-insert-basic-minor-mode          nil

		viper-emacs-intercept-minor-mode       nil
		viper-emacs-local-user-minor-mode      nil
		viper-emacs-kbd-minor-mode             nil
		viper-emacs-global-user-minor-mode     nil
		viper-emacs-state-modifier-minor-mode  nil

		viper-current-state		       'emacs-state
		viper-mode-string		       viper-emacs-state-id
		)

  ;; remove all hooks set by viper
  (mapatoms #'viper-remove-hooks)
  (remove-hook 'comint-mode-hook #'viper-comint-mode-hook)
  (remove-hook 'erc-mode-hook #'viper-comint-mode-hook)
  (remove-hook 'change-major-mode-hook #'viper-major-mode-change-sentinel)

  ;; unbind Viper mouse bindings
  (viper-unbind-mouse-search-key)
  (viper-unbind-mouse-insert-key)
  ;; In emacs, we have to advice handle-switch-frame
  ;; This advice is undone earlier, when all advices matching "viper-" are
  ;; deactivated.
  ) ; end viper-go-away