Function: vip-change-mode

vip-change-mode is a byte-compiled function defined in vip.el.gz.

Signature

(vip-change-mode NEW-MODE)

Documentation

Change mode to NEW-MODE---either emacs-mode, vi-mode, or insert-mode.

Source Code

;; Defined in /usr/src/emacs/lisp/obsolete/vip.el.gz
;; changing mode

(defun vip-change-mode (new-mode)
  "Change mode to NEW-MODE---either emacs-mode, vi-mode, or insert-mode."
  (or (eq new-mode vip-current-mode)
      (progn
	(cond ((eq new-mode 'vi-mode)
	       (if (eq vip-current-mode 'insert-mode)
		   (progn
		     (vip-copy-region-as-kill (point) vip-insert-point)
		     (vip-repeat-insert-command))
		 (setq vip-emacs-local-map (current-local-map)
		       vip-emacs-mode-line-buffer-identification
		       mode-line-buffer-identification
		       vip-insert-local-map (vip-copy-keymap
					     (current-local-map))))
	       (vip-change-mode-line "Vi:   ")
	       (use-local-map vip-mode-map))
	      ((eq new-mode 'insert-mode)
	       (move-marker vip-insert-point (point))
	       (if (eq vip-current-mode 'emacs-mode)
		   (setq vip-emacs-local-map (current-local-map)
			 vip-emacs-mode-line-buffer-identification
			 mode-line-buffer-identification
			 vip-insert-local-map (vip-copy-keymap
					       (current-local-map)))
		 (setq vip-insert-local-map (vip-copy-keymap
					     vip-emacs-local-map)))
	       (vip-change-mode-line "Insert")
	       (use-local-map vip-insert-local-map)
	       (define-key vip-insert-local-map "\e" #'vip-change-mode-to-vi)
	       (define-key vip-insert-local-map "\C-z" #'vip-ESC)
	       (define-key vip-insert-local-map "\C-h"
		 (if vip-help-in-insert-mode #'help-command
		   #'delete-backward-char))
	       (define-key vip-insert-local-map "\C-w"
		 #'vip-delete-backward-word))
	      ((eq new-mode 'emacs-mode)
	       (vip-change-mode-line "Emacs:")
	       (use-local-map vip-emacs-local-map)))
	(setq vip-current-mode new-mode)
	(force-mode-line-update))))