aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/emulation/viper-ex.el11
-rw-r--r--lisp/emulation/viper-keym.el4
-rw-r--r--lisp/emulation/viper-macs.el6
-rw-r--r--lisp/emulation/viper-mous.el9
-rw-r--r--lisp/emulation/viper-util.el87
-rw-r--r--lisp/emulation/viper.el26
6 files changed, 101 insertions, 42 deletions
diff --git a/lisp/emulation/viper-ex.el b/lisp/emulation/viper-ex.el
index b0d671f8dfa..4720fcf2494 100644
--- a/lisp/emulation/viper-ex.el
+++ b/lisp/emulation/viper-ex.el
@@ -1,6 +1,6 @@
1;;; viper-ex.el --- functions implementing the Ex commands for Viper 1;;; viper-ex.el --- functions implementing the Ex commands for Viper
2 2
3;; Copyright (C) 1994, 1995 Free Software Foundation, Inc. 3;; Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
4 4
5;; This file is part of GNU Emacs. 5;; This file is part of GNU Emacs.
6 6
@@ -19,8 +19,15 @@
19;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, 19;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20;; Boston, MA 02111-1307, USA. 20;; Boston, MA 02111-1307, USA.
21 21
22
23;; Code
24
22(require 'viper-util) 25(require 'viper-util)
23 26
27;; Compiler pacifier
28(defvar read-file-name-map)
29;; end compiler pacifier
30
24;;; Variables 31;;; Variables
25 32
26(defconst vip-ex-work-buf-name " *ex-working-space*") 33(defconst vip-ex-work-buf-name " *ex-working-space*")
@@ -1340,7 +1347,7 @@ reversed.")
1340 (setq l (cdr l)))) 1347 (setq l (cdr l))))
1341 (if find-alt-file (car l) 1348 (if find-alt-file (car l)
1342 (progn 1349 (progn
1343 (if (car l) 1350 (if (and (car l) (get-file-buffer (car l)))
1344 (let* ((w (if cycle-other-window 1351 (let* ((w (if cycle-other-window
1345 (get-lru-window) (selected-window))) 1352 (get-lru-window) (selected-window)))
1346 (b (window-buffer w))) 1353 (b (window-buffer w)))
diff --git a/lisp/emulation/viper-keym.el b/lisp/emulation/viper-keym.el
index 714c49c7b6f..06d0fe559d2 100644
--- a/lisp/emulation/viper-keym.el
+++ b/lisp/emulation/viper-keym.el
@@ -1,6 +1,6 @@
1;;; viper-keym.el --- Viper keymaps 1;;; viper-keym.el --- Viper keymaps
2 2
3;; Copyright (C) 1994, 1995 Free Software Foundation, Inc. 3;; Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
4 4
5;; This file is part of GNU Emacs. 5;; This file is part of GNU Emacs.
6 6
@@ -19,6 +19,8 @@
19;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, 19;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20;; Boston, MA 02111-1307, USA. 20;; Boston, MA 02111-1307, USA.
21 21
22;; Code
23
22(require 'viper-util) 24(require 'viper-util)
23 25
24;;; Variables 26;;; Variables
diff --git a/lisp/emulation/viper-macs.el b/lisp/emulation/viper-macs.el
index 9434ca2002d..9788c3f27c4 100644
--- a/lisp/emulation/viper-macs.el
+++ b/lisp/emulation/viper-macs.el
@@ -1,6 +1,6 @@
1;;; viper-macs.el --- functions implementing keyboard macros for Viper 1;;; viper-macs.el --- functions implementing keyboard macros for Viper
2 2
3;; Copyright (C) 1994, 1995 Free Software Foundation, Inc. 3;; Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
4 4
5;; This file is part of GNU Emacs. 5;; This file is part of GNU Emacs.
6 6
@@ -19,7 +19,11 @@
19;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, 19;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20;; Boston, MA 02111-1307, USA. 20;; Boston, MA 02111-1307, USA.
21 21
22;; Code
23
22(require 'viper-util) 24(require 'viper-util)
25(require 'viper-keym)
26
23 27
24;;; Variables 28;;; Variables
25 29
diff --git a/lisp/emulation/viper-mous.el b/lisp/emulation/viper-mous.el
index 257c2c2cbd1..25e8b934c46 100644
--- a/lisp/emulation/viper-mous.el
+++ b/lisp/emulation/viper-mous.el
@@ -1,6 +1,6 @@
1;;; viper-mous.el --- mouse support for Viper 1;;; viper-mous.el --- mouse support for Viper
2 2
3;; Copyright (C) 1994, 1995 Free Software Foundation, Inc. 3;; Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
4 4
5;; This file is part of GNU Emacs. 5;; This file is part of GNU Emacs.
6 6
@@ -19,8 +19,15 @@
19;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, 19;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20;; Boston, MA 02111-1307, USA. 20;; Boston, MA 02111-1307, USA.
21 21
22;; Code
23
22(require 'viper-util) 24(require 'viper-util)
23 25
26;; compiler pacifier
27(defvar double-click-time)
28(defvar mouse-track-multi-click-time)
29;; end compiler pacifier
30
24 31
25;;; Variables 32;;; Variables
26 33
diff --git a/lisp/emulation/viper-util.el b/lisp/emulation/viper-util.el
index af76f07b1ca..31950d4d986 100644
--- a/lisp/emulation/viper-util.el
+++ b/lisp/emulation/viper-util.el
@@ -1,6 +1,6 @@
1;;; viper-util.el --- Utilities used by viper.el 1;;; viper-util.el --- Utilities used by viper.el
2 2
3;; Copyright (C) 1994, 1995 Free Software Foundation, Inc. 3;; Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
4 4
5;; This file is part of GNU Emacs. 5;; This file is part of GNU Emacs.
6 6
@@ -19,11 +19,34 @@
19;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, 19;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20;; Boston, MA 02111-1307, USA. 20;; Boston, MA 02111-1307, USA.
21 21
22
23;; Code
24
22(require 'ring) 25(require 'ring)
23 26
24;; Whether it is XEmacs or not 27;; Compiler pacifier
28(defvar vip-overriding-map)
29(defvar pm-color-alist)
30(defvar zmacs-region-stays)
31(defvar vip-search-face)
32(defvar vip-minibuffer-current-face)
33(defvar vip-minibuffer-insert-face)
34(defvar vip-minibuffer-vi-face)
35(defvar vip-minibuffer-emacs-face)
36(defvar vip-replace-overlay-face)
37(defvar vip-minibuffer-overlay)
38(defvar vip-replace-overlay)
39(defvar vip-search-overlay)
40(defvar vip-replace-overlay-cursor-color)
41(defvar vip-intermediate-command)
42(defvar vip-use-replace-region-delimiters)
43(defvar vip-fast-keyseq-timeout)
44(defvar vip-related-files-and-buffers-ring)
45;; end compiler pacifier
46
47;; Is it XEmacs?
25(defconst vip-xemacs-p (string-match "\\(Lucid\\|XEmacs\\)" emacs-version)) 48(defconst vip-xemacs-p (string-match "\\(Lucid\\|XEmacs\\)" emacs-version))
26;; Whether it is Emacs or not 49;; Is it Emacs?
27(defconst vip-emacs-p (not vip-xemacs-p)) 50(defconst vip-emacs-p (not vip-xemacs-p))
28;; Tell whether we are running as a window application or on a TTY 51;; Tell whether we are running as a window application or on a TTY
29(defsubst vip-device-type () 52(defsubst vip-device-type ()
@@ -165,6 +188,9 @@ that Viper doesn't know about.")
165 (if vip-emacs-p 188 (if vip-emacs-p
166 (x-display-color-p) 189 (x-display-color-p)
167 (eq (device-class (selected-device)) 'color))) 190 (eq (device-class (selected-device)) 'color)))
191
192(defsubst vip-get-cursor-color ()
193 (cdr (assoc 'cursor-color (frame-parameters))))
168 194
169;; OS/2 195;; OS/2
170(cond ((eq (vip-device-type) 'pm) 196(cond ((eq (vip-device-type) 'pm)
@@ -205,9 +231,6 @@ that Viper doesn't know about.")
205(defsubst vip-restore-cursor-color () 231(defsubst vip-restore-cursor-color ()
206 (vip-change-cursor-color 232 (vip-change-cursor-color
207 (vip-overlay-get vip-replace-overlay 'vip-cursor-color))) 233 (vip-overlay-get vip-replace-overlay 'vip-cursor-color)))
208
209(defsubst vip-get-cursor-color ()
210 (cdr (assoc 'cursor-color (frame-parameters))))
211 234
212 235
213;; Check the current version against the major and minor version numbers 236;; Check the current version against the major and minor version numbers
@@ -574,10 +597,16 @@ that Viper doesn't know about.")
574 597
575;; Replace state 598;; Replace state
576 599
600(defsubst vip-move-replace-overlay (beg end)
601 (vip-move-overlay vip-replace-overlay beg end))
602
577(defun vip-set-replace-overlay (beg end) 603(defun vip-set-replace-overlay (beg end)
578 (if (vip-overlay-p vip-replace-overlay) 604 (if (vip-overlay-p vip-replace-overlay)
579 (vip-move-replace-overlay beg end) 605 (vip-move-replace-overlay beg end)
580 (setq vip-replace-overlay (vip-make-overlay beg end (current-buffer))) 606 (setq vip-replace-overlay (vip-make-overlay beg end (current-buffer)))
607 ;; never detach
608 (vip-overlay-put
609 vip-replace-overlay (if vip-emacs-p 'evaporate 'detachable) nil)
581 (vip-overlay-put 610 (vip-overlay-put
582 vip-replace-overlay 'priority vip-replace-overlay-priority)) 611 vip-replace-overlay 'priority vip-replace-overlay-priority))
583 (if (vip-has-face-support-p) 612 (if (vip-has-face-support-p)
@@ -586,12 +615,6 @@ that Viper doesn't know about.")
586 (vip-change-cursor-color vip-replace-overlay-cursor-color) 615 (vip-change-cursor-color vip-replace-overlay-cursor-color)
587 ) 616 )
588 617
589
590(defsubst vip-hide-replace-overlay ()
591 (vip-set-replace-overlay-glyphs nil nil)
592 (vip-restore-cursor-color)
593 (if (vip-has-face-support-p)
594 (vip-overlay-put vip-replace-overlay 'face nil)))
595 618
596(defsubst vip-set-replace-overlay-glyphs (before-glyph after-glyph) 619(defsubst vip-set-replace-overlay-glyphs (before-glyph after-glyph)
597 (if (or (not (vip-has-face-support-p)) 620 (if (or (not (vip-has-face-support-p))
@@ -600,16 +623,18 @@ that Viper doesn't know about.")
600 (after-name (if vip-xemacs-p 'end-glyph 'after-string))) 623 (after-name (if vip-xemacs-p 'end-glyph 'after-string)))
601 (vip-overlay-put vip-replace-overlay before-name before-glyph) 624 (vip-overlay-put vip-replace-overlay before-name before-glyph)
602 (vip-overlay-put vip-replace-overlay after-name after-glyph)))) 625 (vip-overlay-put vip-replace-overlay after-name after-glyph))))
626
627(defsubst vip-hide-replace-overlay ()
628 (vip-set-replace-overlay-glyphs nil nil)
629 (vip-restore-cursor-color)
630 (if (vip-has-face-support-p)
631 (vip-overlay-put vip-replace-overlay 'face nil)))
603 632
604 633
605(defsubst vip-replace-start () 634(defsubst vip-replace-start ()
606 (vip-overlay-start vip-replace-overlay)) 635 (vip-overlay-start vip-replace-overlay))
607(defsubst vip-replace-end () 636(defsubst vip-replace-end ()
608 (vip-overlay-end vip-replace-overlay)) 637 (vip-overlay-end vip-replace-overlay))
609
610(defsubst vip-move-replace-overlay (beg end)
611 (vip-move-overlay vip-replace-overlay beg end)
612 )
613 638
614 639
615;; Minibuffer 640;; Minibuffer
@@ -622,13 +647,15 @@ that Viper doesn't know about.")
622 vip-minibuffer-overlay 'face vip-minibuffer-current-face) 647 vip-minibuffer-overlay 'face vip-minibuffer-current-face)
623 (vip-overlay-put 648 (vip-overlay-put
624 vip-minibuffer-overlay 'priority vip-minibuffer-overlay-priority) 649 vip-minibuffer-overlay 'priority vip-minibuffer-overlay-priority)
625 ;; prevent detachment and make vip-minibuffer-overlay open-ended 650 ;; never detach
651 (vip-overlay-put
652 vip-minibuffer-overlay (if vip-emacs-p 'evaporate 'detachable) nil)
653 ;; make vip-minibuffer-overlay open-ended
626 ;; In emacs, it is made open ended at creation time 654 ;; In emacs, it is made open ended at creation time
627 (if vip-emacs-p 655 (if vip-xemacs-p
628 (vip-overlay-put vip-minibuffer-overlay 'evaporate nil) 656 (progn
629 (vip-overlay-put vip-minibuffer-overlay 'detachable nil) 657 (vip-overlay-put vip-minibuffer-overlay 'start-open nil)
630 (vip-overlay-put vip-minibuffer-overlay 'start-open nil) 658 (vip-overlay-put vip-minibuffer-overlay 'end-open nil)))
631 (vip-overlay-put vip-minibuffer-overlay 'end-open nil))
632 ))) 659 )))
633 660
634(defun vip-check-minibuffer-overlay () 661(defun vip-check-minibuffer-overlay ()
@@ -636,8 +663,9 @@ that Viper doesn't know about.")
636 (setq vip-minibuffer-overlay 663 (setq vip-minibuffer-overlay
637 (if vip-xemacs-p 664 (if vip-xemacs-p
638 (vip-make-overlay 1 (1+ (buffer-size)) (current-buffer)) 665 (vip-make-overlay 1 (1+ (buffer-size)) (current-buffer))
639 ;; don't move front, move rear 666 ;; make overlay open-ended
640 (vip-make-overlay 1 (1+ (buffer-size)) (current-buffer) nil t))) 667 (vip-make-overlay
668 1 (1+ (buffer-size)) (current-buffer) nil 'rear-advance)))
641 )) 669 ))
642 670
643 671
@@ -667,16 +695,17 @@ that Viper doesn't know about.")
667 (key (vip-event-key event))) 695 (key (vip-event-key event)))
668 (member key ESC-keys))) 696 (member key ESC-keys)))
669 697
670;; like (set-mark-command nil) but doesn't push twice, if (car mark-ring)
671;; is the same as (mark t).
672(defsubst vip-set-mark-if-necessary ()
673 (setq mark-ring (delete (vip-mark-marker) mark-ring))
674 (set-mark-command nil))
675 698
676(defsubst vip-mark-marker () 699(defsubst vip-mark-marker ()
677 (if vip-xemacs-p 700 (if vip-xemacs-p
678 (mark-marker t) 701 (mark-marker t)
679 (mark-marker))) 702 (mark-marker)))
703
704;; like (set-mark-command nil) but doesn't push twice, if (car mark-ring)
705;; is the same as (mark t).
706(defsubst vip-set-mark-if-necessary ()
707 (setq mark-ring (delete (vip-mark-marker) mark-ring))
708 (set-mark-command nil))
680 709
681;; In transient mark mode (zmacs mode), it is annoying when regions become 710;; In transient mark mode (zmacs mode), it is annoying when regions become
682;; highlighted due to Viper's pushing marks. So, we deactivate marks, unless 711;; highlighted due to Viper's pushing marks. So, we deactivate marks, unless
diff --git a/lisp/emulation/viper.el b/lisp/emulation/viper.el
index 0d88858fe88..9d0ec982d37 100644
--- a/lisp/emulation/viper.el
+++ b/lisp/emulation/viper.el
@@ -6,11 +6,11 @@
6;; Keywords: emulations 6;; Keywords: emulations
7;; Author: Michael Kifer <kifer@cs.sunysb.edu> 7;; Author: Michael Kifer <kifer@cs.sunysb.edu>
8 8
9(defconst viper-version "2.85 of February 14, 1996"
10 "The current version of Viper")
11
12;; Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. 9;; Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
13 10
11(defconst viper-version "2.86 of March 14, 1996"
12 "The current version of Viper")
13
14;; This file is part of GNU Emacs. 14;; This file is part of GNU Emacs.
15 15
16;; GNU Emacs is free software; you can redistribute it and/or modify 16;; GNU Emacs is free software; you can redistribute it and/or modify
@@ -293,6 +293,7 @@
293;; much easier. 293;; much easier.
294;; 294;;
295 295
296;; Code
296 297
297(require 'advice) 298(require 'advice)
298(require 'cl) 299(require 'cl)
@@ -300,6 +301,15 @@
300 301
301(require 'viper-util) 302(require 'viper-util)
302 303
304;; Compiler pacifier
305(defvar vip-minibuffer-current-face)
306(defvar vip-minibuffer-insert-face)
307(defvar vip-minibuffer-vi-face)
308(defvar vip-minibuffer-emacs-face)
309(defvar iso-accents-mode)
310(defvar zmacs-region-stays)
311;; end pacifier
312
303 313
304;;; Variables 314;;; Variables
305 315
@@ -2417,11 +2427,11 @@ Undo previous insertion and inserts new."
2417 (end-of-line) 2427 (end-of-line)
2418 ;; make sure all lines end with newline, unless in the minibuffer or 2428 ;; make sure all lines end with newline, unless in the minibuffer or
2419 ;; when requested otherwise (require-final-newline is nil) 2429 ;; when requested otherwise (require-final-newline is nil)
2420 (if (and 2430 (if (and (eobp)
2421 (eobp) 2431 (not (bolp))
2422 (not (bolp)) 2432 require-final-newline
2423 require-final-newline 2433 (not (vip-is-in-minibuffer))
2424 (not (vip-is-in-minibuffer))) 2434 (not buffer-read-only))
2425 (insert "\n")))) 2435 (insert "\n"))))
2426 2436
2427(defun vip-yank-defun () 2437(defun vip-yank-defun ()