annotate lisp/double.el @ 66573:e65b759c6906

Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-630 Merge from gnus--rel--5.10 Patches applied: * gnus--rel--5.10 (patch 149-151) - Merge from emacs--cvs-trunk--0 - Update from CVS 2005-10-27 Reiner Steib <Reiner.Steib@gmx.de> * lisp/gnus/flow-fill.el (fill-flowed-encode-tests): Restore trailing whitespace removed in revision 7.8. Use concatenated string to protect trailing whitespace. 2005-10-27 Jouni K Seppanen <jks@iki.fi> (tiny change) * lisp/gnus/nnimap.el (nnimap-search-uids-not-since-is-evil): Add variable. (nnimap-request-expire-articles): Use it to avoid sending 'UID SEARCH UID ... NOT SINCE' queries, for inefficient servers like Courier IMAP ("some version from 2004"). Mostly based on similar code in the same function. 2005-10-26 Katsumi Yamaoka <yamaoka@jpl.org> * lisp/gnus/message.el (message-display-completion-list): New function. (message-expand-group): Use it; make sure the Completions buffer is modifiable.
author Miles Bader <miles@gnu.org>
date Mon, 31 Oct 2005 07:07:28 +0000
parents 41bb365f41c4
children 3bd95f4f2941 532e0a9335a9 2d92f5c9d6ae
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 25531
diff changeset
1 ;;; double.el --- support for keyboard remapping with double clicking
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2
64762
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64091
diff changeset
3 ;; Copyright (C) 1994, 1997, 1998, 2002, 2003, 2004,
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64091
diff changeset
4 ;; 2005 Free Software Foundation, Inc.
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5
17982
24b81a90c347 Updated address.
Per Abrahamsen <abraham@dina.kvl.dk>
parents: 14169
diff changeset
6 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 ;; Keywords: i18n
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8
6001
7caad7f2269a Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 6000
diff changeset
9 ;; This file is part of GNU Emacs.
7caad7f2269a Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 6000
diff changeset
10
7caad7f2269a Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 6000
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 ;; any later version.
6001
7caad7f2269a Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 6000
diff changeset
15
7caad7f2269a Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 6000
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 ;; GNU General Public License for more details.
6001
7caad7f2269a Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 6000
diff changeset
20
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64091
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 60312
diff changeset
23 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 60312
diff changeset
24 ;; Boston, MA 02110-1301, USA.
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 ;;; Commentary:
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 ;; This mode is intended for use with languages that adds a small
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 ;; number of extra letters not available on the keyboard.
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47253
diff changeset
30 ;;
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 ;; Examples includes Scandinavian and German with an US keyboard.
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 ;;
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 ;; The idea is that certain keys are overloaded. When you press it
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 ;; once it will insert one string, and when you press it twice the
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 ;; string will be replaced by another. This can be used for mapping
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 ;; keys on a US keyboard to generate characters according to the local
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 ;; keyboard convention when pressed once, and according to US keyboard
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47253
diff changeset
38 ;; convention when pressed twice.
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 ;;
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 ;; To use this mode, you must define the variable `double-map' and
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 ;; then enable double mode with `M-x double-mode'. Read the
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 ;; documentation for both of them.
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43 ;;
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 ;; The default mapping is for getting Danish/Norwegian keyboard layout
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 ;; using ISO Latin 1 on a US keyboard.
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 ;;
14040
187735b53d52 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
47 ;; Important node: While I would like to hear comments, bug reports,
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 ;; suggestions, please do @strong{not} expect me to put other mappings
14040
187735b53d52 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 13337
diff changeset
49 ;; than the default into this file. There are billions and billions
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 ;; of such mappings, and just supporting the most common would
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 ;; increase the size of this nice small file manyfold.
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 ;;; Code:
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54
20083
280dcaeeede3 Removed changelog comment section.
Karl Heuer <kwzh@gnu.org>
parents: 17982
diff changeset
55 (defgroup double nil
280dcaeeede3 Removed changelog comment section.
Karl Heuer <kwzh@gnu.org>
parents: 17982
diff changeset
56 "Remap keyboard, but get original by typing the same key twice."
280dcaeeede3 Removed changelog comment section.
Karl Heuer <kwzh@gnu.org>
parents: 17982
diff changeset
57 :group 'i18n)
280dcaeeede3 Removed changelog comment section.
Karl Heuer <kwzh@gnu.org>
parents: 17982
diff changeset
58
280dcaeeede3 Removed changelog comment section.
Karl Heuer <kwzh@gnu.org>
parents: 17982
diff changeset
59 (defcustom double-map
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60 '((?\; "\346" ";")
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 (?\' "\370" "'")
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 (?\[ "\345" "[")
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 (?\: "\306" ":")
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 (?\" "\330" "\"")
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 (?\{ "\305" "{"))
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66 "Alist of key translations activated by double mode.
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 Each entry is a list with three elements:
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 1. The key activating the translation.
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 2. The string to be inserted when the key is pressed once.
20083
280dcaeeede3 Removed changelog comment section.
Karl Heuer <kwzh@gnu.org>
parents: 17982
diff changeset
71 3. The string to be inserted when the key is pressed twice."
280dcaeeede3 Removed changelog comment section.
Karl Heuer <kwzh@gnu.org>
parents: 17982
diff changeset
72 :group 'double
280dcaeeede3 Removed changelog comment section.
Karl Heuer <kwzh@gnu.org>
parents: 17982
diff changeset
73 :type '(repeat (list (character :tag "Key")
280dcaeeede3 Removed changelog comment section.
Karl Heuer <kwzh@gnu.org>
parents: 17982
diff changeset
74 (string :tag "Once")
280dcaeeede3 Removed changelog comment section.
Karl Heuer <kwzh@gnu.org>
parents: 17982
diff changeset
75 (string :tag "Twice"))))
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
76
20083
280dcaeeede3 Removed changelog comment section.
Karl Heuer <kwzh@gnu.org>
parents: 17982
diff changeset
77 (defcustom double-prefix-only t
10067
8ab32ff7b97c (double-mode-name): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8008
diff changeset
78 "*Non-nil means that Double mode mapping only works for prefix keys.
47253
d09547c3e778 (double-prefix-only): Fix spacing.
Juanma Barranquero <lekktu@gmail.com>
parents: 38436
diff changeset
79 That is, for any key `X' in `double-map', `X' alone will be mapped
20083
280dcaeeede3 Removed changelog comment section.
Karl Heuer <kwzh@gnu.org>
parents: 17982
diff changeset
80 but not `C-u X' or `ESC X' since the X is not the prefix key."
280dcaeeede3 Removed changelog comment section.
Karl Heuer <kwzh@gnu.org>
parents: 17982
diff changeset
81 :group 'double
280dcaeeede3 Removed changelog comment section.
Karl Heuer <kwzh@gnu.org>
parents: 17982
diff changeset
82 :type 'boolean)
8008
049bc48732d6 (double-prefix-only): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7279
diff changeset
83
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 ;;; Read Event
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86 (defvar double-last-event nil)
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 ;; The last key that generated a double key event.
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 (defun double-read-event (prompt)
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 ;; Read an event
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 (if isearch-mode (isearch-update))
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 (if prompt
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 (prog2 (message "%s%c" prompt double-last-event)
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 (read-event)
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95 (message ""))
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 (read-event)))
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97
7279
89ed0051e237 (double-translate-key): Changed 'delete to 127 to make
Richard M. Stallman <rms@gnu.org>
parents: 6001
diff changeset
98 (global-set-key [ignore] '(lambda () (interactive)))
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 (or (boundp 'isearch-mode-map)
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101 (load-library "isearch"))
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47253
diff changeset
103 (define-key isearch-mode-map [ignore]
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104 (function (lambda () (interactive) (isearch-update))))
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
106 (defun double-translate-key (prompt)
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
107 ;; Translate input events using double map.
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
108 (let ((key last-input-char))
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109 (cond (unread-command-events
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110 ;; Artificial event, ignore it.
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 (vector key))
8008
049bc48732d6 (double-prefix-only): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7279
diff changeset
112 ((and double-prefix-only
049bc48732d6 (double-prefix-only): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7279
diff changeset
113 (> (length (this-command-keys)) 1))
049bc48732d6 (double-prefix-only): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7279
diff changeset
114 ;; This is not a prefix key, ignore it.
049bc48732d6 (double-prefix-only): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 7279
diff changeset
115 (vector key))
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116 ((eq key 'magic-start)
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 ;; End of generated event. See if he will repeat it...
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118 (let ((new (double-read-event prompt))
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119 (entry (assoc double-last-event double-map)))
60312
789a36c2bc56 (double-translate-key): Call force-window-update after
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
120 (force-window-update (selected-window))
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
121 (if (eq new double-last-event)
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47253
diff changeset
122 (progn
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123 (setq unread-command-events
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124 (append (make-list (1- (length (nth 1 entry)))
7279
89ed0051e237 (double-translate-key): Changed 'delete to 127 to make
Richard M. Stallman <rms@gnu.org>
parents: 6001
diff changeset
125 127)
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126 (nth 2 entry)
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127 '(magic-end)))
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128 (vector 127))
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
129 (setq unread-command-events (list new))
7279
89ed0051e237 (double-translate-key): Changed 'delete to 127 to make
Richard M. Stallman <rms@gnu.org>
parents: 6001
diff changeset
130 [ignore])))
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
131 ((eq key 'magic-end)
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132 ;; End of double event. Ignore.
7279
89ed0051e237 (double-translate-key): Changed 'delete to 127 to make
Richard M. Stallman <rms@gnu.org>
parents: 6001
diff changeset
133 [ignore])
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
134 (t
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135 ;; New key.
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136 (let ((exp (nth 1 (assoc key double-map))))
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137 (setq double-last-event key)
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
138 (setq unread-command-events
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139 (append (substring exp 1) '(magic-start)))
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 (vector (aref exp 0)))))))
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142 ;;; Key Translation Map
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143
22861
49e731d1ddb6 (default-key-translation-map): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 20083
diff changeset
144 (defun double-setup (enable-flag)
49e731d1ddb6 (default-key-translation-map): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 20083
diff changeset
145 (if enable-flag
49e731d1ddb6 (default-key-translation-map): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 20083
diff changeset
146 (progn
49e731d1ddb6 (default-key-translation-map): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 20083
diff changeset
147 ;; Set up key-translation-map as indicated by `double-map'.
49e731d1ddb6 (default-key-translation-map): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 20083
diff changeset
148 (kill-local-variable 'key-translation-map)
49e731d1ddb6 (default-key-translation-map): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 20083
diff changeset
149 (make-local-variable 'key-translation-map)
23003
95c97e05a03e (double-setup): Only copy `key-translation-map' if it is a keymap.
Richard M. Stallman <rms@gnu.org>
parents: 22861
diff changeset
150 (setq key-translation-map (if (keymapp key-translation-map)
95c97e05a03e (double-setup): Only copy `key-translation-map' if it is a keymap.
Richard M. Stallman <rms@gnu.org>
parents: 22861
diff changeset
151 (copy-keymap key-translation-map)
95c97e05a03e (double-setup): Only copy `key-translation-map' if it is a keymap.
Richard M. Stallman <rms@gnu.org>
parents: 22861
diff changeset
152 (make-sparse-keymap)))
22861
49e731d1ddb6 (default-key-translation-map): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 20083
diff changeset
153 (mapcar (function (lambda (entry)
49e731d1ddb6 (default-key-translation-map): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 20083
diff changeset
154 (define-key key-translation-map
49e731d1ddb6 (default-key-translation-map): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 20083
diff changeset
155 (vector (nth 0 entry))
49e731d1ddb6 (default-key-translation-map): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 20083
diff changeset
156 'double-translate-key)))
49e731d1ddb6 (default-key-translation-map): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 20083
diff changeset
157 (append double-map '((magic-start) (magic-end)))))
49e731d1ddb6 (default-key-translation-map): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 20083
diff changeset
158 (kill-local-variable 'key-translation-map)))
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160 ;;; Mode
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161
25531
e42d6599cade (double-mode): Customize the variable.
Dave Love <fx@gnu.org>
parents: 23003
diff changeset
162 ;;;###autoload
e42d6599cade (double-mode): Customize the variable.
Dave Love <fx@gnu.org>
parents: 23003
diff changeset
163 (defcustom double-mode nil
e42d6599cade (double-mode): Customize the variable.
Dave Love <fx@gnu.org>
parents: 23003
diff changeset
164 "Toggle Double mode.
e42d6599cade (double-mode): Customize the variable.
Dave Love <fx@gnu.org>
parents: 23003
diff changeset
165 Setting this variable directly does not take effect;
e42d6599cade (double-mode): Customize the variable.
Dave Love <fx@gnu.org>
parents: 23003
diff changeset
166 use either \\[customize] or the function `double-mode'."
e42d6599cade (double-mode): Customize the variable.
Dave Love <fx@gnu.org>
parents: 23003
diff changeset
167 :set (lambda (symbol value)
e42d6599cade (double-mode): Customize the variable.
Dave Love <fx@gnu.org>
parents: 23003
diff changeset
168 (double-mode (if value 1 0)))
e42d6599cade (double-mode): Customize the variable.
Dave Love <fx@gnu.org>
parents: 23003
diff changeset
169 :initialize 'custom-initialize-default
e42d6599cade (double-mode): Customize the variable.
Dave Love <fx@gnu.org>
parents: 23003
diff changeset
170 :link '(emacs-commentary-link "double")
e42d6599cade (double-mode): Customize the variable.
Dave Love <fx@gnu.org>
parents: 23003
diff changeset
171 :type 'boolean
e42d6599cade (double-mode): Customize the variable.
Dave Love <fx@gnu.org>
parents: 23003
diff changeset
172 :require 'double
e42d6599cade (double-mode): Customize the variable.
Dave Love <fx@gnu.org>
parents: 23003
diff changeset
173 :group 'double)
e42d6599cade (double-mode): Customize the variable.
Dave Love <fx@gnu.org>
parents: 23003
diff changeset
174 (make-variable-buffer-local 'double-mode)
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176 (or (assq 'double-mode minor-mode-alist)
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177 (setq minor-mode-alist
10067
8ab32ff7b97c (double-mode-name): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8008
diff changeset
178 (cons '(double-mode " Double") minor-mode-alist)))
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179
10067
8ab32ff7b97c (double-mode-name): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8008
diff changeset
180 ;; This feature seemed useless and it confused describe-mode,
8ab32ff7b97c (double-mode-name): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8008
diff changeset
181 ;; so I deleted it.
8ab32ff7b97c (double-mode-name): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8008
diff changeset
182 ;;;(defvar double-mode-name "Double")
8ab32ff7b97c (double-mode-name): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8008
diff changeset
183 ;;;;; Name of current double mode.
8ab32ff7b97c (double-mode-name): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8008
diff changeset
184 ;;; (make-variable-buffer-local 'double-mode-name)
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
185
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186 ;;;###autoload
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 (defun double-mode (arg)
10067
8ab32ff7b97c (double-mode-name): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8008
diff changeset
188 "Toggle Double mode.
8ab32ff7b97c (double-mode-name): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8008
diff changeset
189 With prefix arg, turn Double mode on iff arg is positive.
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190
11561
56399c411b8b (double-mode): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents: 10067
diff changeset
191 When Double mode is on, some keys will insert different strings
56399c411b8b (double-mode): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents: 10067
diff changeset
192 when pressed twice. See variable `double-map' for details."
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
193 (interactive "P")
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194 (if (or (and (null arg) double-mode)
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195 (<= (prefix-numeric-value arg) 0))
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196 ;; Turn it off
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197 (if double-mode
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
198 (progn
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 (let ((double-map))
22861
49e731d1ddb6 (default-key-translation-map): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 20083
diff changeset
200 (double-setup nil))
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 (setq double-mode nil)
11561
56399c411b8b (double-mode): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents: 10067
diff changeset
202 (force-mode-line-update)))
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203 ;;Turn it on
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
204 (if double-mode
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205 ()
22861
49e731d1ddb6 (default-key-translation-map): Variable deleted.
Richard M. Stallman <rms@gnu.org>
parents: 20083
diff changeset
206 (double-setup t)
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
207 (setq double-mode t)
11561
56399c411b8b (double-mode): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents: 10067
diff changeset
208 (force-mode-line-update))))
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210 (provide 'double)
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49588
diff changeset
212 ;;; arch-tag: 2e170036-44cb-4493-bc32-ada0a4395221
6000
03f32cdd842a Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
213 ;;; double.el ends here