(makefile-mode-syntax-table): "]" is a close-paren.
[bpt/emacs.git] / lisp / double.el
index e0e3071..810babd 100644 (file)
@@ -42,8 +42,6 @@
 ;; The default mapping is for getting Danish/Norwegian keyboard layout
 ;; using ISO Latin 1 on a US keyboard.
 ;;
-;; Requires FSF Emacs 19.20 or later.
-;;
 ;; Imprtant node: While I would like to hear comments, bug reports,
 ;; suggestions, please do @strong{not} expect me to put other mappings
 ;; that the default into this file.  There are billions and billions
 
 ;;; ChangeLog: 
 
+;; * 1994-06-21         Per Abrahamsen
+;;      Added `double-prefix-only'.
+;; * 1994-02-28         Per Abrahamsen
+;;      Use 127 instead of 'delete to delete a character.
 ;; * 1994-02-03                Per Abrahamsen
 ;;     Created.
 
@@ -71,6 +73,11 @@ Each entry is a list with three elements:
 2. The string to be inserted when the key is pressed once.
 3. The string to be inserted when the key is pressed twice.")
 
+(defvar double-prefix-only t
+  "*Non-nil means that Double mode mapping only works for prefix keys.
+That is, for any key `X' in `double-map',  `X' alone will be mapped
+but not `C-u X' or `ESC X' since the X is not the prefix key.")
+
 ;;; Read Event
 
 (defvar double-last-event nil)
@@ -85,12 +92,12 @@ Each entry is a list with three elements:
        (message ""))
     (read-event)))
 
-(global-set-key [ ignore ] '(lambda () (interactive)))
+(global-set-key [ignore] '(lambda () (interactive)))
 
 (or (boundp 'isearch-mode-map)
     (load-library "isearch"))
 
-(define-key isearch-mode-map [ ignore 
+(define-key isearch-mode-map [ignore
   (function (lambda () (interactive) (isearch-update))))
 
 (defun double-translate-key (prompt)
@@ -99,6 +106,10 @@ Each entry is a list with three elements:
     (cond (unread-command-events
           ;; Artificial event, ignore it.
           (vector key))
+         ((and double-prefix-only
+               (> (length (this-command-keys)) 1))
+          ;; This is not a prefix key, ignore it.
+          (vector key))
          ((eq key 'magic-start)
           ;; End of generated event.  See if he will repeat it...
           (let ((new (double-read-event prompt))
@@ -107,15 +118,15 @@ Each entry is a list with three elements:
                 (progn 
                   (setq unread-command-events
                         (append (make-list (1- (length (nth 1 entry)))
-                                           'delete)
+                                           127)
                                 (nth 2 entry)
                                 '(magic-end)))
                   (vector 127))
               (setq unread-command-events (list new))
-              [ ignore ])))
+              [ignore])))
          ((eq key 'magic-end)
           ;; End of double event.  Ignore.
-          [ ignore ])
+          [ignore])
          (t
           ;; New key.
           (let ((exp (nth 1 (assoc key double-map))))
@@ -128,8 +139,8 @@ Each entry is a list with three elements:
 
 (defvar default-key-translation-map
   (or key-translation-map (make-sparse-keymap))
-  "Key translation you want to have effect, regardless of double mode.
-This will default to the value of `key-translation-map' when double was
+  "Key translation you want to have effect, regardless of Double mode.
+This defaults to the value of `key-translation-map' when double was
 first loaded.")
 
 (make-variable-buffer-local 'key-translation-map)
@@ -150,19 +161,21 @@ first loaded.")
 
 (or (assq 'double-mode minor-mode-alist)
     (setq minor-mode-alist
-         (cons '(double-mode (" " double-mode-name)) minor-mode-alist)))
+         (cons '(double-mode " Double") minor-mode-alist)))
 
-(defvar double-mode-name "Double")
-;; Name of current double mode.
-  (make-variable-buffer-local 'double-mode-name)
+;; This feature seemed useless and it confused describe-mode,
+;;  so I deleted it.
+;;;(defvar double-mode-name "Double")
+;;;;; Name of current double mode.
+;;; (make-variable-buffer-local 'double-mode-name)
 
 ;;;###autoload
 (defun double-mode (arg)
-  "Toggle double mode.
-With prefix arg, turn double mode on iff arg is positive.
+  "Toggle Double mode.
+With prefix arg, turn Double mode on iff arg is positive.
 
-When double mode is on, some keys will insert will insert different
-strings when pressed twice.  See variable `double-map' for details."
+When Double mode is on, some keys will insert different strings
+when pressed twice.  See variable `double-map' for details."
   (interactive "P")
   (if (or (and (null arg) double-mode)
          (<= (prefix-numeric-value arg) 0))
@@ -172,13 +185,13 @@ strings when pressed twice.  See variable `double-map' for details."
            (let ((double-map))
              (double-setup))
            (setq double-mode nil)
-           (set-buffer-modified-p (buffer-modified-p))))
+           (force-mode-line-update)))
     ;;Turn it on
     (if double-mode
        ()
       (double-setup)
       (setq double-mode t)
-      (set-buffer-modified-p (buffer-modified-p)))))
+      (force-mode-line-update))))
 
 (provide 'double)