X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/38db5c8d522cc1faa8190e77dbc932a5560e6aad..4a4bdfc7a62632566cce6fd4b4a2da24029bd6fe:/lisp/double.el diff --git a/lisp/double.el b/lisp/double.el index 01753342b4..28d3072d1f 100644 --- a/lisp/double.el +++ b/lisp/double.el @@ -1,7 +1,7 @@ ;;; double.el --- support for keyboard remapping with double clicking ;; Copyright (C) 1994, 1997, 1998, 2001, 2002, 2003, 2004, -;; 2005, 2006 Free Software Foundation, Inc. +;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc. ;; Author: Per Abrahamsen ;; Keywords: i18n @@ -10,7 +10,7 @@ ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) +;; the Free Software Foundation; either version 3, or (at your option) ;; any later version. ;; GNU Emacs is distributed in the hope that it will be useful, @@ -75,7 +75,7 @@ Each entry is a list with three elements: (string :tag "Twice")))) (defcustom double-prefix-only t - "*Non-nil means that Double mode mapping only works for prefix keys. + "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." :group 'double @@ -95,7 +95,7 @@ but not `C-u X' or `ESC X' since the X is not the prefix key." (message "")) (read-event))) -(global-set-key [ignore] '(lambda () (interactive))) +(global-set-key [ignore] 'ignore) (or (boundp 'isearch-mode-map) (load-library "isearch")) @@ -139,76 +139,37 @@ but not `C-u X' or `ESC X' since the X is not the prefix key." (append (substring exp 1) '(magic-start))) (vector (aref exp 0))))))) -;;; Key Translation Map - -(defun double-setup (enable-flag) - (if enable-flag - (progn - ;; Set up key-translation-map as indicated by `double-map'. - ;; XXX I don't think key-translation-map should be made local here. -- Lorentey - (kill-local-variable 'key-translation-map) - (make-local-variable 'key-translation-map) - (setq key-translation-map (if (keymapp key-translation-map) - (copy-keymap key-translation-map) - (make-sparse-keymap))) - (mapcar (function (lambda (entry) - (define-key key-translation-map - (vector (nth 0 entry)) - 'double-translate-key))) - (append double-map '((magic-start) (magic-end))))) - (kill-local-variable 'key-translation-map))) - ;;; Mode -;;;###autoload -(defcustom double-mode nil - "Toggle Double mode. -Setting this variable directly does not take effect; -use either \\[customize] or the function `double-mode'." - :set (lambda (symbol value) - (double-mode (if value 1 0))) - :initialize 'custom-initialize-default - :link '(emacs-commentary-link "double") - :type 'boolean - :require 'double - :group 'double) -(make-variable-buffer-local 'double-mode) - -(or (assq 'double-mode minor-mode-alist) - (setq minor-mode-alist - (cons '(double-mode " Double") minor-mode-alist))) - ;; 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) +;; 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) +(define-minor-mode double-mode "Toggle Double mode. -With prefix arg, turn Double mode on iff arg is positive. +With prefix argument ARG, turn Double mode on if ARG is positive, otherwise +turn it off. 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)) - ;; Turn it off - (if double-mode - (progn - (let ((double-map)) - (double-setup nil)) - (setq double-mode nil) - (force-mode-line-update))) - ;;Turn it on - (if double-mode - () - (double-setup t) - (setq double-mode t) - (force-mode-line-update)))) + :lighter " Double" + :link '(emacs-commentary-link "double") + (kill-local-variable 'key-translation-map) + (when double-mode + ;; Set up key-translation-map as indicated by `double-map'. + ;; XXX I don't think key-translation-map should be made local here. -- Lorentey + (make-local-variable 'key-translation-map) + (let ((map (make-sparse-keymap))) + (set-keymap-parent map key-translation-map) + (setq key-translation-map map) + (dolist (entry (append double-map '((magic-start) (magic-end)))) + (define-key map + (vector (nth 0 entry)) 'double-translate-key))))) (provide 'double) -;;; arch-tag: 2e170036-44cb-4493-bc32-ada0a4395221 +;; arch-tag: 2e170036-44cb-4493-bc32-ada0a4395221 ;;; double.el ends here