@@ -592,8 +592,10 @@ This startup message appears whenever you load Viper, unless you type `y' now."
592
592
))
593
593
(viper-set-expert-level 'dont-change-unless )))
594
594
595
- (or (memq major-mode viper-emacs-state-mode-list) ; don't switch to Vi
596
- (memq major-mode viper-insert-state-mode-list) ; don't switch
595
+ (or (cl-member-if #'derived-mode-p
596
+ viper-emacs-state-mode-list) ; don't switch to Vi
597
+ (cl-member-if #'derived-mode-p
598
+ viper-insert-state-mode-list) ; don't switch
597
599
(viper-change-state-to-vi ))
598
600
))
599
601
@@ -605,11 +607,15 @@ This startup message appears whenever you load Viper, unless you type `y' now."
605
607
; ; Apply a little heuristic to invoke vi state on major-modes
606
608
; ; that are not listed in viper-vi-state-mode-list
607
609
(defun this-major-mode-requires-vi-state (mode )
608
- (cond ((memq mode viper-vi-state-mode-list) t )
609
- ((memq mode viper-emacs-state-mode-list) nil )
610
- ((memq mode viper-insert-state-mode-list) nil )
611
- (t (and (eq (key-binding " a" ) 'self-insert-command )
612
- (eq (key-binding " " ) 'self-insert-command )))))
610
+ (let ((check (lambda (one-mode )
611
+ (provided-mode-derived-p mode one-mode))))
612
+ (cond ((cl-member-if check viper-vi-state-mode-list) t )
613
+ ((cl-member-if check viper-emacs-state-mode-list)
614
+ nil )
615
+ ((cl-member-if check viper-insert-state-mode-list)
616
+ nil )
617
+ (t (and (eq (key-binding " a" ) 'self-insert-command )
618
+ (eq (key-binding " " ) 'self-insert-command ))))))
613
619
614
620
615
621
; ; This hook designed to enable Vi-style editing in comint-based modes."
@@ -802,13 +808,14 @@ It also can't undo some Viper settings."
802
808
(cond ((and (this-major-mode-requires-vi-state major-mode)
803
809
(eq viper-current-state 'emacs-state ))
804
810
(viper-mode ))
805
- ((memq major -mode viper-emacs-state-mode-list)
811
+ ((cl-member-if # 'derived -mode-p viper-emacs-state-mode-list)
806
812
; ; not checking (eq viper-current-state 'emacs-state)
807
813
; ; because viper-current-state could have gotten it by
808
814
; ; default. We need viper-change-state-to-emacs here to have
809
815
; ; the keymaps take effect.
810
816
(viper-change-state-to-emacs ))
811
- ((and (memq major-mode viper-insert-state-mode-list)
817
+ ((and (cl-member-if #'derived-mode-p
818
+ viper-insert-state-mode-list)
812
819
(not (eq viper-current-state 'insert-state )))
813
820
(viper-change-state-to-insert ))
814
821
)) ; with-current-buffer
0 commit comments