[COMMIT] Don't sanity-check commands with (define-key KEYMAP [remap COMMAND1] COMMAND2).
12 years, 3 months
Aidan Kehoe
Hi Robert,
Ar an cúigiú lá de mí Méan Fómhair, scríobh Robert Pluim:
> did this [remap] syntax in define-key do anything before? Because after
> this commit eg the latest gnus message.el is failing, since that does a
> [remap] using a function that has not been defined yet:
>
> (define-key message-mode-map [remap split-line] 'message-split-line)
>
> with message-split-line defined later in the file. This causes 'commandp'
> to throw an error.
Right. My implementation isn’t entirely compatible with GNU’s, but it
certainly needs to be compatible with it in the common stuff; thanks for the
pointer, I’ve committed the below to address it.
APPROVE COMMIT
NOTE: This patch has been committed
# HG changeset patch
# User Aidan Kehoe <kehoea(a)parhasard.net>
# Date 1346873878 -3600
# Node ID 4af5a3435c94358798bcd2e56c51eaebbc5f36d2
# Parent 8a2ac78cb97d31a39208d1c6c5081477daac61eb
Don't sanity-check commands with (define-key KEYMAP [remap COMMAND1] COMMAND2).
lisp/ChangeLog addition:
2012-09-05 Aidan Kehoe <kehoea(a)parhasard.net>
* keymap.c:
* keymap.c (Fdefine_key):
* keymap.c (remap_command):
* keymap.c (Fremap_command):
Don't sanity-check commands to be remapped with the (define-key
KEYMAP [remap COMMAND1] COMMAND2) syntax, for better compatibility
with GNU Emacs. Thank you Robert Pluim!
diff -r 8a2ac78cb97d -r 4af5a3435c94 src/ChangeLog
--- a/src/ChangeLog Sun Sep 02 17:36:47 2012 +0100
+++ b/src/ChangeLog Wed Sep 05 20:37:58 2012 +0100
@@ -1,3 +1,13 @@
+2012-09-05 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * keymap.c:
+ * keymap.c (Fdefine_key):
+ * keymap.c (remap_command):
+ * keymap.c (Fremap_command):
+ Don't sanity-check commands to be remapped with the (define-key
+ KEYMAP [remap COMMAND1] COMMAND2) syntax, for better compatibility
+ with GNU Emacs. Thank you Robert Pluim!
+
2012-09-02 Aidan Kehoe <kehoea(a)parhasard.net>
* regex.c (re_search_2):
diff -r 8a2ac78cb97d -r 4af5a3435c94 src/keymap.c
--- a/src/keymap.c Sun Sep 02 17:36:47 2012 +0100
+++ b/src/keymap.c Wed Sep 05 20:37:58 2012 +0100
@@ -195,8 +195,9 @@
EXFUN (Fkeymap_fullness, 1);
EXFUN (Fset_keymap_name, 2);
EXFUN (Fsingle_key_description, 1);
-EXFUN (Fremap_command, 3);
-
+
+static Lisp_Object remap_command (Lisp_Object keymap, Lisp_Object old,
+ Lisp_Object new_);
static void describe_command (Lisp_Object definition, Lisp_Object buffer);
static void describe_map (Lisp_Object keymap, Lisp_Object elt_prefix,
void (*elt_describer) (Lisp_Object, Lisp_Object),
@@ -1939,12 +1940,6 @@
GCPRO3 (keymap, keys, def);
- /* Allow access to any keys named remap, use our uninterned symbol. */
- if (2 == len && VECTORP (keys) && EQ (Qremap, XVECTOR_DATA (keys) [0]))
- {
- return Fremap_command (keymap, XVECTOR_DATA (keys) [1], def);
- }
-
/* ASCII grunge.
When the user defines a key which, in a strictly ASCII world, would be
produced by two different keys (^J and linefeed, or ^H and backspace,
@@ -1958,6 +1953,13 @@
keymap = get_keymap (keymap, 1, 1);
+ /* Allow access to any keys named remap, use our uninterned symbol. For
+ compatibility, don't sanity-check (aref KEYS 1) or DEF. */
+ if (2 == len && VECTORP (keys) && EQ (Qremap, XVECTOR_DATA (keys) [0]))
+ {
+ RETURN_UNGCPRO (remap_command (keymap, XVECTOR_DATA (keys) [1], def));
+ }
+
idx = 0;
while (1)
{
@@ -2066,22 +2068,11 @@
}
}
-DEFUN ("remap-command", Fremap_command, 3, 3, 0, /*
-Ensure that NEW is called when previously OLD would be, in KEYMAP.
-
-NEW and OLD are both command symbols. KEYMAP is a keymap object.
-
-This is equivalent to `(define-key KEYMAP [remap OLD] NEW])'. See also
-`substitute-key-definition', an older way of doing a similar thing.
-*/
- (keymap, old, new_))
+static Lisp_Object
+remap_command (Lisp_Object keymap, Lisp_Object old, Lisp_Object new_)
{
+ Lisp_Key_Data parsed;
Lisp_Object cmd;
- Lisp_Key_Data parsed;
-
- keymap = get_keymap (keymap, 1, 1);
- CHECK_COMMAND (old);
- CHECK_COMMAND (new_);
define_key_parser (Qxemacs_command_remapping, &parsed);
cmd = keymap_lookup_1 (keymap, &parsed, 0);
@@ -2099,6 +2090,24 @@
return new_;
}
+
+DEFUN ("remap-command", Fremap_command, 3, 3, 0, /*
+Ensure that NEW is called when previously OLD would be, in KEYMAP.
+
+NEW and OLD are both command symbols. KEYMAP is a keymap object.
+
+This is equivalent to `(define-key KEYMAP [remap OLD] NEW])'. See also
+`substitute-key-definition', an older way of doing a similar thing.
+*/
+ (keymap, old, new_))
+{
+ keymap = get_keymap (keymap, 1, 1);
+ CHECK_COMMAND (old);
+ CHECK_COMMAND (new_);
+
+ return remap_command (keymap, old, new_);
+}
+
static Lisp_Object
command_remapping (Lisp_Object definition, int nmaps, Lisp_Object *maps)
{
--
‘Liston operated so fast that he once accidentally amputated an assistant’s
fingers along with a patient’s leg, […] The patient and the assistant both
died of sepsis, and a spectator reportedly died of shock, resulting in the
only known procedure with a 300% mortality.’ (Atul Gawande, NEJM, 2012)
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches
commit/XEmacs: kehoea: Don't sanity-check commands with (define-key KEYMAP [remap COMMAND1] COMMAND2).
12 years, 3 months
Bitbucket
1 new commit in XEmacs:
https://bitbucket.org/xemacs/xemacs/changeset/4af5a3435c94/
changeset: 4af5a3435c94
user: kehoea
date: 2012-09-05 21:37:58
summary: Don't sanity-check commands with (define-key KEYMAP [remap COMMAND1] COMMAND2).
lisp/ChangeLog addition:
2012-09-05 Aidan Kehoe <kehoea(a)parhasard.net>
* keymap.c:
* keymap.c (Fdefine_key):
* keymap.c (remap_command):
* keymap.c (Fremap_command):
Don't sanity-check commands to be remapped with the (define-key
KEYMAP [remap COMMAND1] COMMAND2) syntax, for better compatibility
with GNU Emacs. Thank you Robert Pluim!
affected #: 2 files
diff -r 8a2ac78cb97d31a39208d1c6c5081477daac61eb -r 4af5a3435c94358798bcd2e56c51eaebbc5f36d2 src/ChangeLog
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,13 @@
+2012-09-05 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * keymap.c:
+ * keymap.c (Fdefine_key):
+ * keymap.c (remap_command):
+ * keymap.c (Fremap_command):
+ Don't sanity-check commands to be remapped with the (define-key
+ KEYMAP [remap COMMAND1] COMMAND2) syntax, for better compatibility
+ with GNU Emacs. Thank you Robert Pluim!
+
2012-09-02 Aidan Kehoe <kehoea(a)parhasard.net>
* regex.c (re_search_2):
diff -r 8a2ac78cb97d31a39208d1c6c5081477daac61eb -r 4af5a3435c94358798bcd2e56c51eaebbc5f36d2 src/keymap.c
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -195,8 +195,9 @@
EXFUN (Fkeymap_fullness, 1);
EXFUN (Fset_keymap_name, 2);
EXFUN (Fsingle_key_description, 1);
-EXFUN (Fremap_command, 3);
-
+
+static Lisp_Object remap_command (Lisp_Object keymap, Lisp_Object old,
+ Lisp_Object new_);
static void describe_command (Lisp_Object definition, Lisp_Object buffer);
static void describe_map (Lisp_Object keymap, Lisp_Object elt_prefix,
void (*elt_describer) (Lisp_Object, Lisp_Object),
@@ -1939,12 +1940,6 @@
GCPRO3 (keymap, keys, def);
- /* Allow access to any keys named remap, use our uninterned symbol. */
- if (2 == len && VECTORP (keys) && EQ (Qremap, XVECTOR_DATA (keys) [0]))
- {
- return Fremap_command (keymap, XVECTOR_DATA (keys) [1], def);
- }
-
/* ASCII grunge.
When the user defines a key which, in a strictly ASCII world, would be
produced by two different keys (^J and linefeed, or ^H and backspace,
@@ -1958,6 +1953,13 @@
keymap = get_keymap (keymap, 1, 1);
+ /* Allow access to any keys named remap, use our uninterned symbol. For
+ compatibility, don't sanity-check (aref KEYS 1) or DEF. */
+ if (2 == len && VECTORP (keys) && EQ (Qremap, XVECTOR_DATA (keys) [0]))
+ {
+ RETURN_UNGCPRO (remap_command (keymap, XVECTOR_DATA (keys) [1], def));
+ }
+
idx = 0;
while (1)
{
@@ -2066,22 +2068,11 @@
}
}
-DEFUN ("remap-command", Fremap_command, 3, 3, 0, /*
-Ensure that NEW is called when previously OLD would be, in KEYMAP.
-
-NEW and OLD are both command symbols. KEYMAP is a keymap object.
-
-This is equivalent to `(define-key KEYMAP [remap OLD] NEW])'. See also
-`substitute-key-definition', an older way of doing a similar thing.
-*/
- (keymap, old, new_))
+static Lisp_Object
+remap_command (Lisp_Object keymap, Lisp_Object old, Lisp_Object new_)
{
+ Lisp_Key_Data parsed;
Lisp_Object cmd;
- Lisp_Key_Data parsed;
-
- keymap = get_keymap (keymap, 1, 1);
- CHECK_COMMAND (old);
- CHECK_COMMAND (new_);
define_key_parser (Qxemacs_command_remapping, &parsed);
cmd = keymap_lookup_1 (keymap, &parsed, 0);
@@ -2099,6 +2090,24 @@
return new_;
}
+
+DEFUN ("remap-command", Fremap_command, 3, 3, 0, /*
+Ensure that NEW is called when previously OLD would be, in KEYMAP.
+
+NEW and OLD are both command symbols. KEYMAP is a keymap object.
+
+This is equivalent to `(define-key KEYMAP [remap OLD] NEW])'. See also
+`substitute-key-definition', an older way of doing a similar thing.
+*/
+ (keymap, old, new_))
+{
+ keymap = get_keymap (keymap, 1, 1);
+ CHECK_COMMAND (old);
+ CHECK_COMMAND (new_);
+
+ return remap_command (keymap, old, new_);
+}
+
static Lisp_Object
command_remapping (Lisp_Object definition, int nmaps, Lisp_Object *maps)
{
Repository URL: https://bitbucket.org/xemacs/xemacs/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches
commit/xemacs-packages: 6 new changesets
12 years, 3 months
Bitbucket
6 new commits in xemacs-packages:
https://bitbucket.org/xemacs/xemacs-packages/changeset/0beb79649a6f/
changeset: 0beb79649a6f
user: Norbert Koch
date: 2012-06-26 09:38:27
summary: Update gnus
affected #: 1 file
diff -r 16356f011e86851cdd8d8b07d96c7d2171cc5929 -r 0beb79649a6fea0181d08274d2d4f014d216d50e .hgsubstate
--- a/.hgsubstate
+++ b/.hgsubstate
@@ -54,7 +54,7 @@
d53a8387757746cc6c55bd754be1a2848e04aa29 xemacs-packages/games
61ebe6c6b1bf84bf0fe5685ef66fed734bd00679 xemacs-packages/general-docs
f649d3209420d89482731b7f3d290314f20b1923 xemacs-packages/gnats
-356c7699e548257d82bba037c92b81684de971f0 xemacs-packages/gnus
+db294f70eef13cf94a326b9a1a9be02f9e5e85fe xemacs-packages/gnus
a72a46dbb57f5454673cdace404d40be6d41d555 xemacs-packages/guided-tour
475c1c54240ae796e80e8222cf0177c038566dc4 xemacs-packages/haskell-mode
9cc3f88c82e0c1f98b9c348e9c1c59634c2997d4 xemacs-packages/hm--html-menus
https://bitbucket.org/xemacs/xemacs-packages/changeset/adb9d97922a2/
changeset: adb9d97922a2
user: Norbert Koch
date: 2012-06-26 09:40:47
summary: XEmacs Package Release
affected #: 1 file
diff -r 0beb79649a6fea0181d08274d2d4f014d216d50e -r adb9d97922a2d87492a221f0056139374e84c0a7 ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2012-06-26 Norbert Koch <viteno(a)xemacs.org>
+
+ * Packages released: gnus.
+
2012-05-15 Norbert Koch <viteno(a)xemacs.org>
* Packages released: w3.
https://bitbucket.org/xemacs/xemacs-packages/changeset/618960137f5b/
changeset: 618960137f5b
user: Norbert Koch
date: 2012-06-26 09:59:55
summary: pre-release gnus-1.95
affected #: 1 file
diff -r adb9d97922a2d87492a221f0056139374e84c0a7 -r 618960137f5be06d2235598a05792981d2245b8f .hgsubstate
--- a/.hgsubstate
+++ b/.hgsubstate
@@ -54,7 +54,7 @@
d53a8387757746cc6c55bd754be1a2848e04aa29 xemacs-packages/games
61ebe6c6b1bf84bf0fe5685ef66fed734bd00679 xemacs-packages/general-docs
f649d3209420d89482731b7f3d290314f20b1923 xemacs-packages/gnats
-db294f70eef13cf94a326b9a1a9be02f9e5e85fe xemacs-packages/gnus
+7d50551fdfac9b9ffaea2ca6d40e8a95424b08cc xemacs-packages/gnus
a72a46dbb57f5454673cdace404d40be6d41d555 xemacs-packages/guided-tour
475c1c54240ae796e80e8222cf0177c038566dc4 xemacs-packages/haskell-mode
9cc3f88c82e0c1f98b9c348e9c1c59634c2997d4 xemacs-packages/hm--html-menus
https://bitbucket.org/xemacs/xemacs-packages/changeset/a38be1401df1/
changeset: a38be1401df1
user: Norbert Koch
date: 2012-09-03 09:20:50
summary: Update package source
affected #: 1 file
diff -r 618960137f5be06d2235598a05792981d2245b8f -r a38be1401df19d0dee85c74b6e4d179f0c873aa5 .hgsubstate
--- a/.hgsubstate
+++ b/.hgsubstate
@@ -17,7 +17,7 @@
da4e7d4a51c502e5ac05a224cb756f382f0ba4d7 xemacs-packages/c-support
11074b3808d1e349f3fddb3c4d50f8be7c0f859e xemacs-packages/calc
7524e4fb9de45d77812090a724fac4ebd7549d6e xemacs-packages/calendar
-391069c9f2803b7f8e5c844ea4ef72dfbd7ca510 xemacs-packages/cc-mode
+cd3113d05415cfe28cc304211b980b191c78f8ec xemacs-packages/cc-mode
a7ae1cfb2376bcd32617c1c88afe08872b11d298 xemacs-packages/cedet-common
87dd21fac17ea98219267b1378b4696698d6c4ff xemacs-packages/clearcase
e18acdbfcd36295d052cd56fa2e6d78c68b4b7d4 xemacs-packages/cogre
@@ -83,7 +83,7 @@
bb764ada03558fbbb5453138c6437513fdea84bf xemacs-packages/pcomplete
be87a7f039ffe86a1129c8e37633de2d45c484c5 xemacs-packages/perl-modes
f937cd3de668adac94e4969c606c6bb90c750ac0 xemacs-packages/pgg
-2ced404880d95a9bcbd996948643136770cfd8fb xemacs-packages/prog-modes
+5d9b54ff1f9bc42f15b132d86837ba32b820692a xemacs-packages/prog-modes
a4fa5060de96681c204e05aa56c8b6c39d55055f xemacs-packages/ps-print
d0a307d344ea9cf04d68284fcb68be2f7686866a xemacs-packages/ps-print-nomule
3e112e0ce8588d4e0631f32692ae169f19ee4b42 xemacs-packages/psgml
https://bitbucket.org/xemacs/xemacs-packages/changeset/85c6761c5b04/
changeset: 85c6761c5b04
user: Norbert Koch
date: 2012-09-03 09:21:34
summary: XEmacs Package Release
affected #: 1 file
diff -r a38be1401df19d0dee85c74b6e4d179f0c873aa5 -r 85c6761c5b04669551b31f31aaf091e141cb7935 ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2012-09-03 Norbert Koch <viteno(a)xemacs.org>
+
+ * Packages released: cc-mode, prog-modes.
+
2012-06-26 Norbert Koch <viteno(a)xemacs.org>
* Packages released: gnus.
https://bitbucket.org/xemacs/xemacs-packages/changeset/cb2797da1659/
changeset: cb2797da1659
user: Norbert Koch
date: 2012-09-03 10:32:36
summary: cc-mode prog-modes
affected #: 1 file
diff -r 85c6761c5b04669551b31f31aaf091e141cb7935 -r cb2797da16590d16e75c3cb00e2265a1a3503fbf .hgsubstate
--- a/.hgsubstate
+++ b/.hgsubstate
@@ -17,7 +17,7 @@
da4e7d4a51c502e5ac05a224cb756f382f0ba4d7 xemacs-packages/c-support
11074b3808d1e349f3fddb3c4d50f8be7c0f859e xemacs-packages/calc
7524e4fb9de45d77812090a724fac4ebd7549d6e xemacs-packages/calendar
-cd3113d05415cfe28cc304211b980b191c78f8ec xemacs-packages/cc-mode
+7555921b9b7ccb9ae5c43024699be78ecfacd136 xemacs-packages/cc-mode
a7ae1cfb2376bcd32617c1c88afe08872b11d298 xemacs-packages/cedet-common
87dd21fac17ea98219267b1378b4696698d6c4ff xemacs-packages/clearcase
e18acdbfcd36295d052cd56fa2e6d78c68b4b7d4 xemacs-packages/cogre
@@ -83,7 +83,7 @@
bb764ada03558fbbb5453138c6437513fdea84bf xemacs-packages/pcomplete
be87a7f039ffe86a1129c8e37633de2d45c484c5 xemacs-packages/perl-modes
f937cd3de668adac94e4969c606c6bb90c750ac0 xemacs-packages/pgg
-5d9b54ff1f9bc42f15b132d86837ba32b820692a xemacs-packages/prog-modes
+eacc4cb30d0cac7eab6d454237ffc2f85ea249f1 xemacs-packages/prog-modes
a4fa5060de96681c204e05aa56c8b6c39d55055f xemacs-packages/ps-print
d0a307d344ea9cf04d68284fcb68be2f7686866a xemacs-packages/ps-print-nomule
3e112e0ce8588d4e0631f32692ae169f19ee4b42 xemacs-packages/psgml
Repository URL: https://bitbucket.org/xemacs/xemacs-packages/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches
commit/prog-modes: 2 new changesets
12 years, 3 months
Bitbucket
2 new commits in prog-modes:
https://bitbucket.org/xemacs/prog-modes/changeset/dddf809f0baa/
changeset: dddf809f0baa
user: Norbert Koch
date: 2012-09-03 09:21:33
summary: XEmacs Package Release 2.27
affected #: 2 files
diff -r 5d9b54ff1f9bc42f15b132d86837ba32b820692a -r dddf809f0baae66ff68e9e72208451080815bc54 ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2012-09-03 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 2.27 released.
+
2012-08-17 Mats Lidell <matsl(a)xemacs.org>
* go-mode.el: Sync with upstream version 13677
diff -r 5d9b54ff1f9bc42f15b132d86837ba32b820692a -r dddf809f0baae66ff68e9e72208451080815bc54 Makefile
--- a/Makefile
+++ b/Makefile
@@ -17,7 +17,7 @@
# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
-VERSION = 2.26
+VERSION = 2.27
AUTHOR_VERSION =
MAINTAINER = XEmacs Development Team <xemacs-beta(a)xemacs.org>
PACKAGE = prog-modes
https://bitbucket.org/xemacs/prog-modes/changeset/eacc4cb30d0c/
changeset: eacc4cb30d0c
user: Norbert Koch
date: 2012-09-03 09:21:33
summary: Added tag prog-modes-2_27 for changeset dddf809f0baa
affected #: 1 file
diff -r dddf809f0baae66ff68e9e72208451080815bc54 -r eacc4cb30d0cac7eab6d454237ffc2f85ea249f1 .hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -149,3 +149,4 @@
4e19e6180dde2e12620a3f810c614505e8b5a437 sumo-2003-02-05
c67d1a294c973add2253898c2c675215d847bb2e sumo-2006-05-10
367ebc30d2921dbb5f56367f8febbdfb7828489b prog-modes-2_26
+dddf809f0baae66ff68e9e72208451080815bc54 prog-modes-2_27
Repository URL: https://bitbucket.org/xemacs/prog-modes/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches
commit/gnus: 2 new changesets
12 years, 3 months
Bitbucket
2 new commits in gnus:
https://bitbucket.org/xemacs/gnus/changeset/72a23154472d/
changeset: 72a23154472d
user: Norbert Koch
date: 2012-06-26 09:40:47
summary: XEmacs Package Release 1.95
affected #: 2 files
diff -r db294f70eef13cf94a326b9a1a9be02f9e5e85fe -r 72a23154472dfdbd3bba9b28bcdd4bcf6400760f ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2012-06-26 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.95 released.
+
2012-06-18 Mike Kupfer <mike.kupfer(a)xemacs.org>
* lisp/smiley.el (smiley-nosey-regexp-alist):
diff -r db294f70eef13cf94a326b9a1a9be02f9e5e85fe -r 72a23154472dfdbd3bba9b28bcdd4bcf6400760f Makefile
--- a/Makefile
+++ b/Makefile
@@ -17,7 +17,7 @@
# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
-VERSION = 1.94
+VERSION = 1.95
AUTHOR_VERSION = 5.10.10
MAINTAINER = Mike Kupfer <mike.kupfer(a)xemacs.org>
PACKAGE = gnus
https://bitbucket.org/xemacs/gnus/changeset/7d50551fdfac/
changeset: 7d50551fdfac
user: Norbert Koch
date: 2012-06-26 09:40:47
summary: Added tag gnus-1_95 for changeset 72a23154472d
affected #: 1 file
diff -r 72a23154472dfdbd3bba9b28bcdd4bcf6400760f -r 7d50551fdfac9b9ffaea2ca6d40e8a95424b08cc .hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -103,3 +103,4 @@
e076ecf3ee2ead7c2830be562b4394a6fd502f94 xemacs-sumo-2001-07-08
3c2eeaf5f30a55ba4976a42e712b1c42dfd9be35 sumo-2003-02-05
4a70ad5f147e5edddd1c6e3386bf4aae41d34995 sumo-2006-05-10
+72a23154472dfdbd3bba9b28bcdd4bcf6400760f gnus-1_95
Repository URL: https://bitbucket.org/xemacs/gnus/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches
commit/cc-mode: 2 new changesets
12 years, 3 months
Bitbucket
2 new commits in cc-mode:
https://bitbucket.org/xemacs/cc-mode/changeset/2475272d8bae/
changeset: 2475272d8bae
user: Norbert Koch
date: 2012-09-03 09:21:25
summary: XEmacs Package Release 1.56
affected #: 2 files
diff -r cd3113d05415cfe28cc304211b980b191c78f8ec -r 2475272d8bae991446e6b5fe927fb9a489b6df5d ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2012-09-03 Norbert Koch <viteno(a)xemacs.org>
+
+ * Makefile (VERSION): XEmacs package 1.56 released.
+
2012-04-23 Norbert Koch <viteno(a)xemacs.org>
* Makefile (VERSION): XEmacs package 1.55 released.
diff -r cd3113d05415cfe28cc304211b980b191c78f8ec -r 2475272d8bae991446e6b5fe927fb9a489b6df5d Makefile
--- a/Makefile
+++ b/Makefile
@@ -17,7 +17,7 @@
# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
-VERSION = 1.55
+VERSION = 1.56
AUTHOR_VERSION = 5.32.2
MAINTAINER = Alan Mackenzie <bug-cc-mode(a)gnu.org>
PACKAGE = cc-mode
https://bitbucket.org/xemacs/cc-mode/changeset/7555921b9b7c/
changeset: 7555921b9b7c
user: Norbert Koch
date: 2012-09-03 09:21:25
summary: Added tag cc-mode-1_56 for changeset 2475272d8bae
affected #: 1 file
diff -r 2475272d8bae991446e6b5fe927fb9a489b6df5d -r 7555921b9b7ccb9ae5c43024699be78ecfacd136 .hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -88,3 +88,4 @@
39ad7f53a7def58a7d0e58eb58d1a6a0f22f710d cc-mode-1_53
f1a6c0e647399eba8c3511db89520f0efc63d535 cc-mode-1_54
c6a1f4bc808ef2c7d08ba5147537e99b40c78ce4 cc-mode-1_55
+2475272d8bae991446e6b5fe927fb9a489b6df5d cc-mode-1_56
Repository URL: https://bitbucket.org/xemacs/cc-mode/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches
[COMMIT] Pre-emptively update any dirty mirror syntax table before searching
12 years, 3 months
Aidan Kehoe
Ar an t-aonú lá is triochad de mí Lúnasa, scríobh Henry S. Thompson:
> OK, last message on this topic -- it's not wildly implausible that
> this is a new, previously undetected, bug, as the relevant code was
> only added 4 months ago:
>
> changeset: 5648:3f4a234f4672
> user: Aidan Kehoe <kehoea(a)parhasard.net>
> date: Sat Apr 21 18:58:28 2012 +0100
> summary: Support non-ASCII correctly in character classes, test this.
>
It was indeed. Thank you Henry!
APPROVE COMMIT
NOTE: This patch has been committed.
# HG changeset patch
# User Aidan Kehoe <kehoea(a)parhasard.net>
# Date 1346603807 -3600
# Node ID 8a2ac78cb97d31a39208d1c6c5081477daac61eb
# Parent a81a739181dce8c6705bddd92047b210b95abb0c
Pre-emptively update any dirty mirror syntax table before searching
src/ChangeLog addition:
2012-09-02 Aidan Kehoe <kehoea(a)parhasard.net>
* regex.c (re_search_2):
* regex.c (re_match_2):
If the mirror syntax table is dirty, update it before the search,
preventing a malloc() inside the search code, something which
isn't allowed. Thank you Henry Thompson!
tests/ChangeLog addition:
2012-09-02 Aidan Kehoe <kehoea(a)parhasard.net>
* automated/regexp-tests.el:
Make sure we can search for character ranges successfully when the
syntax table is dirty.
diff -r a81a739181dc -r 8a2ac78cb97d src/ChangeLog
--- a/src/ChangeLog Sun Sep 02 14:31:40 2012 +0100
+++ b/src/ChangeLog Sun Sep 02 17:36:47 2012 +0100
@@ -1,3 +1,11 @@
+2012-09-02 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * regex.c (re_search_2):
+ * regex.c (re_match_2):
+ If the mirror syntax table is dirty, update it before the search,
+ preventing a malloc() inside the search code, something which
+ isn't allowed. Thank you Henry Thompson!
+
2012-08-12 Aidan Kehoe <kehoea(a)parhasard.net>
* specifier.c (define_specifier_tag):
diff -r a81a739181dc -r 8a2ac78cb97d src/regex.c
--- a/src/regex.c Sun Sep 02 14:31:40 2012 +0100
+++ b/src/regex.c Sun Sep 02 17:36:47 2012 +0100
@@ -4663,6 +4663,7 @@
#ifdef emacs
BEGIN_REGEX_MALLOC_OK ();
+ update_mirror_syntax_if_dirty (BUFFER_MIRROR_SYNTAX_TABLE (lispbuf));
scache = setup_syntax_cache (scache, lispobj, lispbuf,
offset_to_charxpos (lispobj, startpos),
1);
@@ -5052,6 +5053,10 @@
int result;
#ifdef emacs
+ /* Update the mirror syntax table if it's dirty now, this would otherwise
+ cause a malloc() in charset_mule in re_match_2_internal() when checking
+ characters' syntax. */
+ update_mirror_syntax_if_dirty (BUFFER_MIRROR_SYNTAX_TABLE (lispbuf));
scache = setup_syntax_cache (scache, lispobj, lispbuf,
offset_to_charxpos (lispobj, pos),
1);
diff -r a81a739181dc -r 8a2ac78cb97d tests/ChangeLog
--- a/tests/ChangeLog Sun Sep 02 14:31:40 2012 +0100
+++ b/tests/ChangeLog Sun Sep 02 17:36:47 2012 +0100
@@ -1,3 +1,9 @@
+2012-09-02 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * automated/regexp-tests.el:
+ Make sure we can search for character ranges successfully when the
+ syntax table is dirty.
+
2012-08-02 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.32 "habanero" is released.
diff -r a81a739181dc -r 8a2ac78cb97d tests/automated/regexp-tests.el
--- a/tests/automated/regexp-tests.el Sun Sep 02 14:31:40 2012 +0100
+++ b/tests/automated/regexp-tests.el Sun Sep 02 17:36:47 2012 +0100
@@ -1109,3 +1109,11 @@
(decode-char 'ucs #x2116) ;; NUMERO SIGN
(decode-char 'ucs #x5357))) ;; kDefinition south; southern part; southward
+(with-temp-buffer
+ (insert "hi there")
+ (goto-char 1)
+ (set-syntax-table (copy-syntax-table))
+ (modify-syntax-entry 'ascii "<")
+ (Assert (null (re-search-forward "[[:alnum:]]" nil t))
+ "checking that a bug with dirty syntax table caches has been fixed"))
+
--
‘Liston operated so fast that he once accidentally amputated an assistant’s
fingers along with a patient’s leg, […] The patient and the assistant both
died of sepsis, and a spectator reportedly died of shock, resulting in the
only known procedure with a 300% mortality.’ (Atul Gawande, NEJM, 2012)
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches
commit/XEmacs: kehoea: Pre-emptively update any dirty mirror syntax table before searching
12 years, 3 months
Bitbucket
1 new commit in XEmacs:
https://bitbucket.org/xemacs/xemacs/changeset/8a2ac78cb97d/
changeset: 8a2ac78cb97d
user: kehoea
date: 2012-09-02 18:36:47
summary: Pre-emptively update any dirty mirror syntax table before searching
src/ChangeLog addition:
2012-09-02 Aidan Kehoe <kehoea(a)parhasard.net>
* regex.c (re_search_2):
* regex.c (re_match_2):
If the mirror syntax table is dirty, update it before the search,
preventing a malloc() inside the search code, something which
isn't allowed. Thank you Henry Thompson!
tests/ChangeLog addition:
2012-09-02 Aidan Kehoe <kehoea(a)parhasard.net>
* automated/regexp-tests.el:
Make sure we can search for character ranges successfully when the
syntax table is dirty.
affected #: 4 files
diff -r a81a739181dce8c6705bddd92047b210b95abb0c -r 8a2ac78cb97d31a39208d1c6c5081477daac61eb src/ChangeLog
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,11 @@
+2012-09-02 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * regex.c (re_search_2):
+ * regex.c (re_match_2):
+ If the mirror syntax table is dirty, update it before the search,
+ preventing a malloc() inside the search code, something which
+ isn't allowed. Thank you Henry Thompson!
+
2012-08-12 Aidan Kehoe <kehoea(a)parhasard.net>
* specifier.c (define_specifier_tag):
diff -r a81a739181dce8c6705bddd92047b210b95abb0c -r 8a2ac78cb97d31a39208d1c6c5081477daac61eb src/regex.c
--- a/src/regex.c
+++ b/src/regex.c
@@ -4663,6 +4663,7 @@
#ifdef emacs
BEGIN_REGEX_MALLOC_OK ();
+ update_mirror_syntax_if_dirty (BUFFER_MIRROR_SYNTAX_TABLE (lispbuf));
scache = setup_syntax_cache (scache, lispobj, lispbuf,
offset_to_charxpos (lispobj, startpos),
1);
@@ -5052,6 +5053,10 @@
int result;
#ifdef emacs
+ /* Update the mirror syntax table if it's dirty now, this would otherwise
+ cause a malloc() in charset_mule in re_match_2_internal() when checking
+ characters' syntax. */
+ update_mirror_syntax_if_dirty (BUFFER_MIRROR_SYNTAX_TABLE (lispbuf));
scache = setup_syntax_cache (scache, lispobj, lispbuf,
offset_to_charxpos (lispobj, pos),
1);
diff -r a81a739181dce8c6705bddd92047b210b95abb0c -r 8a2ac78cb97d31a39208d1c6c5081477daac61eb tests/ChangeLog
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,9 @@
+2012-09-02 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * automated/regexp-tests.el:
+ Make sure we can search for character ranges successfully when the
+ syntax table is dirty.
+
2012-08-02 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.32 "habanero" is released.
diff -r a81a739181dce8c6705bddd92047b210b95abb0c -r 8a2ac78cb97d31a39208d1c6c5081477daac61eb tests/automated/regexp-tests.el
--- a/tests/automated/regexp-tests.el
+++ b/tests/automated/regexp-tests.el
@@ -1109,3 +1109,11 @@
(decode-char 'ucs #x2116) ;; NUMERO SIGN
(decode-char 'ucs #x5357))) ;; kDefinition south; southern part; southward
+(with-temp-buffer
+ (insert "hi there")
+ (goto-char 1)
+ (set-syntax-table (copy-syntax-table))
+ (modify-syntax-entry 'ascii "<")
+ (Assert (null (re-search-forward "[[:alnum:]]" nil t))
+ "checking that a bug with dirty syntax table caches has been fixed"))
+
Repository URL: https://bitbucket.org/xemacs/xemacs/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches
Re: [PATCH] Remapping support in keymap.c
12 years, 3 months
Aidan Kehoe
Ar an triú lá déag de mí Lúnasa, scríobh Stephen J. Turnbull:
> Sorry, I don't understand the rest of your post. I can figure it out,
> but it would be faster if you'd annotate the code rather than refer to
> "the first (second ...) result".
No, I don’t think so. The bad design makes it basically difficult to
understand in detail. There’s no way that I can see to explain it
succinctly. Code samples (and my code was annotated, at least its results
were) are about as good as it gets.
--
‘Liston operated so fast that he once accidentally amputated an assistant’s
fingers along with a patient’s leg, […] The patient and the assistant both
died of sepsis, and a spectator reportedly died of shock, resulting in the
only known procedure with a 300% mortality.’ (Atul Gawande, NEJM, 2012)
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches
commit/XEmacs: kehoea: Add command remapping, a more robust alternative to #'substitute-key-definition
12 years, 3 months
Bitbucket
1 new commit in XEmacs:
https://bitbucket.org/xemacs/xemacs/changeset/a81a739181dc/
changeset: a81a739181dc
user: kehoea
date: 2012-09-02 15:31:40
summary: Add command remapping, a more robust alternative to #'substitute-key-definition
src/ChangeLog addition:
2012-09-02 Aidan Kehoe <kehoea(a)parhasard.net>
* keymap.c:
Add command remapping, a more robust equivalent to
#'substitute-key-definition.
* keymap.c (CHECK_REMAPPING_POSITION): New.
* keymap.c (keymap_equal): Correct a comment here.
* keymap.c (Fdefine_key): Document the command remapping syntax.
* keymap.c (Fremap_command): New.
* keymap.c (command_remapping): New.
* keymap.c (Fcommand_remapping): New.
* keymap.c (commands_remapped_to_mapper): New.
* keymap.c (commands_remapped_to_traverser): New.
* keymap.c (Fcommands_remapped_to): New.
* keymap.c (get_relevant_keymaps): Take a new POSITION argument.
* keymap.c (Fcurrent_keymaps, event_binding):
Supply the new POSITION argument to get_relevant_keymaps.
* keymap.c (Fkey_binding):
Add new arguments, NO-REMAP and POSITION.
* keymap.c (map_keymap_mapper):
* keymap.c (Fwhere_is_internal):
* keymap.c (where_is_to_char):
* keymap.c (where_is_recursive_mapper):
Don't expose the key remapping in these functions. This conflicts
with GNU, but is more sane for our callers. Access to command
remapping is with the functions #'command-remapping,
#'commands-remapped-to, and #'remap-command, not with the general
keymap functions, apart from the compatibility hack in #'define-key.
* keymap.c (syms_of_keymap):
* keymap.c (vars_of_keymap):
* keymap.c (complex_vars_of_keymap):
* lisp.h: New CHECK_COMMAND macro.
man/ChangeLog addition:
2012-09-02 Aidan Kehoe <kehoea(a)parhasard.net>
* lispref/keymaps.texi (Keymaps):
* lispref/keymaps.texi (Changing Key Bindings):
* lispref/keymaps.texi (Scanning Keymaps):
* lispref/keymaps.texi (Remapping commands):
* lispref/keymaps.texi (XEmacs): New.
* lispref/keymaps.texi (Other Keymap Functions):
Document the new command remapping functionality in this file.
lisp/ChangeLog addition:
2012-09-02 Aidan Kehoe <kehoea(a)parhasard.net>
* help.el (describe-function-1):
Document any command remapping that has been done in this function.
tests/ChangeLog addition:
2012-09-02 Aidan Kehoe <kehoea(a)parhasard.net>
* automated/keymap-tests.el:
Test the new command remapping functionality.
affected #: 9 files
diff -r b0d40183ac7959bf1c6f5fe0df678f83b5c8b0ec -r a81a739181dce8c6705bddd92047b210b95abb0c lisp/ChangeLog
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -2,6 +2,11 @@
* XEmacs 21.5.32 "habanero" is released.
+2012-09-02 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * help.el (describe-function-1):
+ Document any command remapping that has been done in this function.
+
2012-05-14 Aidan Kehoe <kehoea(a)parhasard.net>
* byte-optimize.el (byte-optimize-letX):
diff -r b0d40183ac7959bf1c6f5fe0df678f83b5c8b0ec -r a81a739181dce8c6705bddd92047b210b95abb0c lisp/help.el
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -1497,7 +1497,9 @@
(global-tty-binding
(where-is-internal function global-tty-map))
(global-window-system-binding
- (where-is-internal function global-window-system-map)))
+ (where-is-internal function global-window-system-map))
+ (command-remapping (command-remapping function))
+ (commands-remapped-to (commands-remapped-to function)))
(if (or global-binding global-tty-binding
global-window-system-binding)
(if (and (equal global-binding
@@ -1531,11 +1533,23 @@
"\n%s\n -- generally (that is, unless\
overridden by TTY- or
window-system-specific mappings)\n"
- (mapconcat #'key-description
- global-binding
+ (mapconcat #'key-description global-binding
", ")))))
- (princ (substitute-command-keys
- (format "\n\\[%s]" function))))))))))))
+ (if command-remapping
+ (progn
+ (princ "Its keys are remapped to `")
+ (princ (symbol-name command-remapping))
+ (princ "'.\n"))
+ (princ (substitute-command-keys
+ (format "\n\\[%s]" function))))
+ (when commands-remapped-to
+ (if (cdr commands-remapped-to)
+ (princ (format "The following functions are \
+remapped to it:\n`%s'" (mapconcat #'prin1-to-string commands-remapped-to
+ "', `")))
+ (princ (format "`%s' is remapped to it.\n"
+ (car
+ commands-remapped-to))))))))))))))
;;; [Obnoxious, whining people who complain very LOUDLY on Usenet
;;; are binding this to keys.]
diff -r b0d40183ac7959bf1c6f5fe0df678f83b5c8b0ec -r a81a739181dce8c6705bddd92047b210b95abb0c man/ChangeLog
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -8,6 +8,16 @@
* XEmacs 21.5.32 "habanero" is released.
+2012-09-02 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * lispref/keymaps.texi (Keymaps):
+ * lispref/keymaps.texi (Changing Key Bindings):
+ * lispref/keymaps.texi (Scanning Keymaps):
+ * lispref/keymaps.texi (Remapping commands):
+ * lispref/keymaps.texi (XEmacs): New.
+ * lispref/keymaps.texi (Other Keymap Functions):
+ Document the new command remapping functionality in this file.
+
2012-05-06 Aidan Kehoe <kehoea(a)parhasard.net>
* lispref/macros.texi (Expansion):
diff -r b0d40183ac7959bf1c6f5fe0df678f83b5c8b0ec -r a81a739181dce8c6705bddd92047b210b95abb0c man/lispref/keymaps.texi
--- a/man/lispref/keymaps.texi
+++ b/man/lispref/keymaps.texi
@@ -33,6 +33,8 @@
* Changing Key Bindings:: Redefining a key in a keymap.
* Key Binding Commands:: Interactive interfaces for redefining keys.
* Scanning Keymaps:: Looking through all keymaps, for printing help.
+* Remapping commands:: Specifying that one command should override
+ another.
* Other Keymap Functions:: Miscellaneous keymap functions.
@end menu
@@ -1168,7 +1170,8 @@
@var{olddef} is replaced with @var{newdef} wherever it appears. Prefix
keymaps are checked recursively.
-The function returns @code{nil}.
+The function returns @code{nil}. @pxref{Remapping commands} for a more
+robust way of doing the same thing.
For example, this redefines @kbd{C-x C-f}, if you do it in an XEmacs with
standard bindings:
@@ -1581,6 +1584,37 @@
displayed.
@end deffn
+@node Remapping commands
+@section Remapping commands
+
+This section describes some functionality to allow commands to be
+remapped, e.g. when providing workalike commands.
+
+@defun remap-command keymap old new
+This function ensures that in @var{keymap} any command lookups that
+would previously have given @var{old} now give @var{new}. This is
+equivalent to the following GNU-compatible code, which also works in
+XEmacs:
+
+@smallexample
+(define-key KEYMAP [remap OLD] NEW)
+@end smallexample
+@end defun
+
+@defun command-remapping command &optional position keymaps
+If @var{command} has a remapping in @var{keymaps}, this function returns
+that remapping. Otherwise it returns @var{nil}. @var{keymaps} defaults
+to the currently active keymaps. @var{position} specifies the relevant buffer
+position where keymaps should be searched for, and overrides
+@var{keymaps}. It can also be a marker or an event.
+@end defun
+
+@defun commands-remapped-to command &optional position keymaps
+This is the inverse operation of @code{command-remapping}; it returns a
+list of the commands that will never be executed in @var{keymaps}
+because @var{command} will be execute instead.
+@end defun
+
@node Other Keymap Functions
@section Other Keymap Functions
diff -r b0d40183ac7959bf1c6f5fe0df678f83b5c8b0ec -r a81a739181dce8c6705bddd92047b210b95abb0c src/ChangeLog
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -21,6 +21,41 @@
* XEmacs 21.5.32 "habanero" is released.
+2012-09-02 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * keymap.c:
+ Add command remapping, a more robust equivalent to
+ #'substitute-key-definition.
+ * keymap.c (CHECK_REMAPPING_POSITION): New.
+ * keymap.c (keymap_equal): Correct a comment here.
+ * keymap.c (Fdefine_key): Document the command remapping syntax.
+ * keymap.c (Fremap_command): New.
+ * keymap.c (command_remapping): New.
+ * keymap.c (Fcommand_remapping): New.
+ * keymap.c (commands_remapped_to_mapper): New.
+ * keymap.c (commands_remapped_to_traverser): New.
+ * keymap.c (Fcommands_remapped_to): New.
+ * keymap.c (get_relevant_keymaps): Take a new POSITION argument.
+ * keymap.c (Fcurrent_keymaps, event_binding):
+ Supply the new POSITION argument to get_relevant_keymaps.
+ * keymap.c (Fkey_binding):
+ Add new arguments, NO-REMAP and POSITION.
+
+ * keymap.c (map_keymap_mapper):
+ * keymap.c (Fwhere_is_internal):
+ * keymap.c (where_is_to_char):
+ * keymap.c (where_is_recursive_mapper):
+ Don't expose the key remapping in these functions. This conflicts
+ with GNU, but is more sane for our callers. Access to command
+ remapping is with the functions #'command-remapping,
+ #'commands-remapped-to, and #'remap-command, not with the general
+ keymap functions, apart from the compatibility hack in #'define-key.
+
+ * keymap.c (syms_of_keymap):
+ * keymap.c (vars_of_keymap):
+ * keymap.c (complex_vars_of_keymap):
+ * lisp.h: New CHECK_COMMAND macro.
+
2012-05-14 Aidan Kehoe <kehoea(a)parhasard.net>
* minibuf.c (Ftest_completion):
diff -r b0d40183ac7959bf1c6f5fe0df678f83b5c8b0ec -r a81a739181dce8c6705bddd92047b210b95abb0c src/keymap.c
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -188,9 +188,14 @@
Lisp_Object Qmodeline_map;
Lisp_Object Qtoolbar_map;
+Lisp_Object Qremap;
+Lisp_Object Qxemacs_command_remapping; /* Uninterned, so there's no conflict
+ with any key named remap. */
+
EXFUN (Fkeymap_fullness, 1);
EXFUN (Fset_keymap_name, 2);
EXFUN (Fsingle_key_description, 1);
+EXFUN (Fremap_command, 3);
static void describe_command (Lisp_Object definition, Lisp_Object buffer);
static void describe_map (Lisp_Object keymap, Lisp_Object elt_prefix,
@@ -200,6 +205,14 @@
int mice_only_p,
Lisp_Object buffer);
static Lisp_Object keymap_submaps (Lisp_Object keymap);
+static int get_relevant_keymaps (Lisp_Object, Lisp_Object, int,
+ Lisp_Object maps[]);
+static Lisp_Object lookup_keys (Lisp_Object, int, Lisp_Object *, int);
+static void map_keymap (Lisp_Object keymap_table, int sort_first,
+ void (*function) (const Lisp_Key_Data *key,
+ Lisp_Object binding,
+ void *fn_arg),
+ void *fn_arg);
Lisp_Object Qcontrol, Qctrl, Qmeta, Qsuper, Qhyper, Qalt, Qshift;
@@ -220,17 +233,21 @@
/* Kludge kludge kludge */
Lisp_Object QLFD, QTAB, QRET, QESC, QDEL, QSPC, QBS;
+#define CHECK_REMAPPING_POSITION(object) do \
+ { \
+ if (!(NILP (object) || FIXNUMP (object) || MARKERP (object) \
+ || EVENTP (object))) \
+ { \
+ wtaerror ("Not a valid POSITION", object); \
+ } \
+ } while (0)
+
/************************************************************************/
/* The keymap Lisp object */
/************************************************************************/
-/* Keymaps are equal if Faces are equal if all of their display attributes are equal. We
- don't compare names or doc-strings, because that would make equal
- be eq.
-
- This isn't concerned with "unspecified" attributes, that's what
- #'face-differs-from-default-p is for. */
+/* Keymaps are equal if all of their attributes are equal. */
static int
keymap_equal (Lisp_Object obj1, Lisp_Object obj2, int depth,
int UNUSED (foldcase))
@@ -1826,6 +1843,12 @@
`define-key' also accepts a number of abbreviations, aliases, and variants
for convenience, compatibility, and internal use.
+A key sequence can also be the vector [remap COMMAND]; this shadows any
+bindings for COMMAND in KEYMAP, using DEF instead of COMMAND. See
+`command-remapping' and `remap-command'. Specify [(remap) KEYSTROKE] if
+your keyboard has a key with the name `remap' and you'd like to use it as a
+prefix.
+
A keystroke may be represented by a key; this is treated as though it were a
list containing that key as the only element. A keystroke may also be
represented by an event object, as returned by the `next-command-event' and
@@ -1916,6 +1939,12 @@
GCPRO3 (keymap, keys, def);
+ /* Allow access to any keys named remap, use our uninterned symbol. */
+ if (2 == len && VECTORP (keys) && EQ (Qremap, XVECTOR_DATA (keys) [0]))
+ {
+ return Fremap_command (keymap, XVECTOR_DATA (keys) [1], def);
+ }
+
/* ASCII grunge.
When the user defines a key which, in a strictly ASCII world, would be
produced by two different keys (^J and linefeed, or ^H and backspace,
@@ -2036,7 +2065,206 @@
}
}
}
-
+
+DEFUN ("remap-command", Fremap_command, 3, 3, 0, /*
+Ensure that NEW is called when previously OLD would be, in KEYMAP.
+
+NEW and OLD are both command symbols. KEYMAP is a keymap object.
+
+This is equivalent to `(define-key KEYMAP [remap OLD] NEW])'. See also
+`substitute-key-definition', an older way of doing a similar thing.
+*/
+ (keymap, old, new_))
+{
+ Lisp_Object cmd;
+ Lisp_Key_Data parsed;
+
+ keymap = get_keymap (keymap, 1, 1);
+ CHECK_COMMAND (old);
+ CHECK_COMMAND (new_);
+
+ define_key_parser (Qxemacs_command_remapping, &parsed);
+ cmd = keymap_lookup_1 (keymap, &parsed, 0);
+ if (NILP (cmd))
+ {
+ cmd = Fmake_sparse_keymap (Qnil);
+ XKEYMAP (cmd)->name /* for debugging */
+ = list2 (make_key_description (&parsed, 1), keymap);
+ keymap_store (keymap, &parsed, cmd);
+ }
+
+ assert (!NILP (Fkeymapp (cmd)));
+ define_key_parser (old, &parsed);
+ keymap_store (cmd, &parsed, new_);
+ return new_;
+}
+
+static Lisp_Object
+command_remapping (Lisp_Object definition, int nmaps, Lisp_Object *maps)
+{
+ Lisp_Object remapping = Qnil;
+ Lisp_Object keys[2] = { Qxemacs_command_remapping, definition };
+ int jj;
+
+ for (jj = 0; jj < nmaps; jj++)
+ {
+ remapping = lookup_keys (maps[jj], countof (keys), keys, 0);
+ if (!NILP (remapping) && !FIXNUMP (remapping))
+ {
+ return remapping;
+ }
+ }
+
+ return Qnil;
+}
+
+DEFUN ("command-remapping", Fcommand_remapping, 1, 3, 0, /*
+Return the remapping for command COMMAND.
+
+Return nil if COMMAND is not remapped (or not a symbol). The remapping is
+the command that is executed when some key sequence in the relevant keymaps
+would normally execute COMMAND, but this has been intercepted by
+`remap-command' or the [remap COMMAND] syntax for KEYS in `define-key'.
+
+If the optional argument POSITION is non-nil, it specifies an event, and the
+remapping occurs in the keymaps associated with it. It can also be a number
+or marker, in which case the keymap properties at the specified buffer
+position instead of point are used. The KEYMAPS argument is ignored if
+POSITION is non-nil.
+
+If the optional argument KEYMAPS is non-nil, it should be a list of
+keymaps to search for command remapping. Otherwise, search for the
+remapping in all currently active keymaps.
+*/
+ (command, position, keymaps))
+{
+ Lisp_Object maps[100];
+ Lisp_Object *gubbish = maps;
+ int nmaps, maps_count = countof (maps);
+
+ CHECK_COMMAND (command);
+ CHECK_LIST (keymaps);
+ CHECK_REMAPPING_POSITION (position);
+
+ /* Get keymaps as an array */
+ if (NILP (keymaps) || !NILP (position))
+ {
+ nmaps = get_relevant_keymaps (Qnil, position, maps_count, gubbish);
+ }
+ else
+ {
+ Elemcount jj = 0;
+ nmaps = XFIXNUM (Flength (keymaps));
+ if (nmaps > maps_count)
+ {
+ gubbish = alloca_array (Lisp_Object, nmaps);
+ }
+
+ {
+ LIST_LOOP_2 (elt, keymaps)
+ {
+ gubbish[jj++] = elt;
+ }
+ }
+ }
+
+ if (nmaps > maps_count)
+ {
+ gubbish = alloca_array (Lisp_Object, nmaps);
+ nmaps = get_relevant_keymaps (Qnil, position, nmaps, gubbish);
+ }
+
+ return command_remapping (command, nmaps, gubbish);
+}
+
+struct commands_remapped_to_closure
+{
+ Lisp_Object command;
+ Lisp_Object result;
+};
+
+static void
+commands_remapped_to_mapper (const Lisp_Key_Data *key, Lisp_Object binding,
+ void *data)
+{
+ struct commands_remapped_to_closure *crtc
+ = (struct commands_remapped_to_closure *) data;
+
+ if (EQ (binding, crtc->command))
+ {
+ crtc->result = Fcons (key->keysym, crtc->result);
+ }
+}
+
+static Lisp_Object
+commands_remapped_to_traverser (Lisp_Object k, void *arg)
+{
+ Lisp_Object remapping
+ = lookup_keys (k, 1, &Qxemacs_command_remapping, 0);
+ if (KEYMAPP (remapping))
+ {
+ map_keymap (XKEYMAP (remapping)->table, 0, commands_remapped_to_mapper,
+ arg);
+ }
+
+ return Qnil;
+}
+
+DEFUN ("commands-remapped-to", Fcommands_remapped_to, 1, 3, 0, /*
+Return a list of symbols for which COMMAND is their remapping in KEYMAPS.
+
+This is the inverse operation of `command-remapping', which see.
+*/
+ (command, keymaps, position))
+{
+ Lisp_Object maps[100];
+ Lisp_Object *gubbish = maps;
+ int nmaps, maps_count = countof (maps), jj;
+ struct commands_remapped_to_closure closure = { command, Qnil };
+ struct gcpro gcpro1;
+
+ CHECK_COMMAND (command);
+ CHECK_LIST (keymaps);
+ CHECK_REMAPPING_POSITION (position);
+
+ /* Get keymaps as an array */
+ if (NILP (keymaps) || !NILP (position))
+ {
+ nmaps = get_relevant_keymaps (Qnil, position, maps_count, gubbish);
+ }
+ else
+ {
+ jj = 0;
+ nmaps = XFIXNUM (Flength (keymaps));
+ if (nmaps > maps_count)
+ {
+ gubbish = alloca_array (Lisp_Object, nmaps);
+ }
+
+ {
+ LIST_LOOP_2 (elt, keymaps)
+ {
+ gubbish[jj++] = elt;
+ }
+ }
+ }
+
+ if (nmaps > maps_count)
+ {
+ gubbish = alloca_array (Lisp_Object, nmaps);
+ nmaps = get_relevant_keymaps (Qnil, position, nmaps, gubbish);
+ }
+
+ GCPRO1 (closure.result);
+
+ for (jj = 0; jj < nmaps; jj++)
+ {
+ traverse_keymaps (maps[jj], Qnil, commands_remapped_to_traverser,
+ (void *) (&closure));
+ }
+
+ RETURN_UNGCPRO (closure.result);
+}
/************************************************************************/
/* Looking up keys in keymaps */
@@ -2318,8 +2546,8 @@
}
static int
-get_relevant_keymaps (Lisp_Object keys,
- int max_maps, Lisp_Object maps[])
+get_relevant_keymaps (Lisp_Object keys, Lisp_Object position, int max_maps,
+ Lisp_Object maps[])
{
/* This function can GC */
Lisp_Object terminal = Qnil;
@@ -2464,6 +2692,31 @@
}
#endif /* HAVE_WINDOW_SYSTEM */
+ if (FIXNUMP (position))
+ {
+ get_relevant_extent_keymaps (position, wrap_buffer (current_buffer),
+ Qnil, &closure);
+ }
+ else if (MARKERP (position) && !NILP (Fmarker_buffer (position)))
+ {
+ get_relevant_extent_keymaps (Fmarker_position (position),
+ Fmarker_buffer (position),
+ Qnil, &closure);
+ }
+ else if (EVENTP (position))
+ {
+ Lisp_Object ew = Fevent_window (position);
+
+ get_relevant_extent_keymaps (Fevent_point (position),
+ WINDOWP (ew) ?
+ Fwindow_buffer (Fevent_window (position))
+: Qnil, Qnil, &closure);
+ }
+ else
+ {
+ assert (NILP (position));
+ }
+
if (CONSOLE_TTY_P (con))
relevant_map_push (Vglobal_tty_map, &closure);
else
@@ -2580,23 +2833,34 @@
int nmaps;
GCPRO1 (event_or_keys);
- nmaps = get_relevant_keymaps (event_or_keys, countof (maps),
+ nmaps = get_relevant_keymaps (event_or_keys, Qnil, countof (maps),
gubbish);
if (nmaps > countof (maps))
{
gubbish = alloca_array (Lisp_Object, nmaps);
- nmaps = get_relevant_keymaps (event_or_keys, nmaps, gubbish);
+ nmaps = get_relevant_keymaps (event_or_keys, Qnil, nmaps, gubbish);
}
UNGCPRO;
return Flist (nmaps, gubbish);
}
-DEFUN ("key-binding", Fkey_binding, 1, 2, 0, /*
+DEFUN ("key-binding", Fkey_binding, 1, 4, 0, /*
Return the binding for command KEYS in current keymaps.
+
KEYS is a string, a vector of events, or a vector of key-description lists
as described in the documentation for the `define-key' function.
-The binding is probably a symbol with a function definition; see
-the documentation for `lookup-key' for more information.
+
+NO-REMAP, if non-nil, specifies that any substitutions that have been
+specified by `remap-command' (or, equivalently, by `(define-key KEYMAP
+\[remap OLD] NEW)') should be ignored.
+
+POSITION, if non-nil, specifies a marker (and its associated buffer) or an
+integer position (in the current buffer) to examine for relevant keymaps.
+It can also be an event, in which case the associated buffer and position of
+that event will be used.
+
+The binding is probably a symbol with a function definition; see the
+documentation for `lookup-key' for more information.
For key-presses, the order of keymaps searched is:
- the `keymap' property of any extent(s) at point;
@@ -2650,7 +2914,7 @@
generate and display a list of possible key sequences and bindings
given the prefix so far generated.
*/
- (keys, accept_default))
+ (keys, accept_default, no_remap, position))
{
/* This function can GC */
int i;
@@ -2659,7 +2923,7 @@
struct gcpro gcpro1, gcpro2;
GCPRO2 (keys, accept_default); /* get_relevant_keymaps may autoload */
- nmaps = get_relevant_keymaps (keys, countof (maps), maps);
+ nmaps = get_relevant_keymaps (keys, position, countof (maps), maps);
UNGCPRO;
@@ -2668,15 +2932,19 @@
for (i = 0; i < nmaps; i++)
{
- Lisp_Object tem = Flookup_key (maps[i], keys,
- accept_default);
+ Lisp_Object tem = Flookup_key (maps[i], keys, accept_default);
+
if (FIXNUMP (tem))
{
/* Too long in some local map means don't look at global map */
return Qnil;
}
- else if (!NILP (tem))
- return tem;
+
+ if (!NILP (tem) && NILP (no_remap) && SYMBOLP (tem))
+ {
+ Lisp_Object remap = command_remapping (tem, nmaps, maps);
+ return NILP (remap) ? tem : remap;
+ }
}
return Qnil;
}
@@ -2724,7 +2992,7 @@
assert (EVENTP (event0));
- nmaps = get_relevant_keymaps (event0, countof (maps), maps);
+ nmaps = get_relevant_keymaps (event0, Qnil, countof (maps), maps);
if (nmaps > countof (maps))
nmaps = countof (maps);
return process_event_binding_result (lookup_events (event0, nmaps, maps,
@@ -3024,6 +3292,13 @@
/* This function can GC */
Lisp_Object fn;
fn = GET_LISP_FROM_VOID (function);
+
+ /* Don't expose our remapping here. */
+ if (EQ (KEY_DATA_KEYSYM (key), Qxemacs_command_remapping))
+ {
+ return;
+ }
+
call2 (fn, make_key_description (key, 1), binding);
}
@@ -3483,12 +3758,12 @@
/* Get keymaps as an array */
if (NILP (keymaps))
{
- nmaps = get_relevant_keymaps (event_or_keys, countof (maps),
- gubbish);
+ nmaps = get_relevant_keymaps (event_or_keys, Qnil, countof (maps),
+ gubbish);
if (nmaps > countof (maps))
{
gubbish = alloca_array (Lisp_Object, nmaps);
- nmaps = get_relevant_keymaps (event_or_keys, nmaps, gubbish);
+ nmaps = get_relevant_keymaps (event_or_keys, Qnil, nmaps, gubbish);
}
}
else if (CONSP (keymaps))
@@ -3518,6 +3793,11 @@
}
}
+ if (!NILP (command_remapping (definition, nmaps, gubbish)))
+ {
+ return Qnil;
+ }
+
return where_is_internal (definition, gubbish, nmaps, firstonly, 0);
}
@@ -3536,11 +3816,11 @@
int nmaps;
/* Get keymaps as an array */
- nmaps = get_relevant_keymaps (Qnil, countof (maps), gubbish);
+ nmaps = get_relevant_keymaps (Qnil, Qnil, countof (maps), gubbish);
if (nmaps > countof (maps))
{
gubbish = alloca_array (Lisp_Object, nmaps);
- nmaps = get_relevant_keymaps (Qnil, nmaps, gubbish);
+ nmaps = get_relevant_keymaps (Qnil, Qnil, nmaps, gubbish);
}
where_is_internal (definition, maps, nmaps, Qt, buffer);
@@ -3714,6 +3994,12 @@
continue;
}
+ /* Don't expose the command remapping to #'where-is-internal */
+ if (EQ (key, Qxemacs_command_remapping))
+ {
+ continue;
+ }
+
/* If the map is a "bucky" map, then add a bit to the
modifiers_so_far list.
Otherwise, add a new raw_key onto the end of keys_so_far.
@@ -4307,6 +4593,7 @@
DEFSYMBOL (Qmodeline_map);
DEFSYMBOL (Qtoolbar_map);
+ DEFSYMBOL (Qremap);
DEFSUBR (Fkeymap_parents);
DEFSUBR (Fset_keymap_parents);
@@ -4326,6 +4613,9 @@
DEFSUBR (Fmap_keymap);
DEFSUBR (Fevent_matches_key_specifier_p);
DEFSUBR (Fdefine_key);
+ DEFSUBR (Fremap_command);
+ DEFSUBR (Fcommands_remapped_to);
+ DEFSUBR (Fcommand_remapping);
DEFSUBR (Flookup_key);
DEFSUBR (Fkey_binding);
DEFSUBR (Fuse_global_map);
@@ -4455,6 +4745,10 @@
Vsingle_space_string = make_string ((const Ibyte *) " ", 1);
staticpro (&Vsingle_space_string);
+
+ Qxemacs_command_remapping
+ = Fmake_symbol (build_ascstring ("xemacs-command-remapping"));
+ staticpro (&Qxemacs_command_remapping);
}
void
diff -r b0d40183ac7959bf1c6f5fe0df678f83b5c8b0ec -r a81a739181dce8c6705bddd92047b210b95abb0c src/lisp.h
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -3521,6 +3521,13 @@
while (NILP (Ffunctionp (fun))) \
signal_invalid_function_error (fun); \
} while (0)
+
+#define CHECK_COMMAND(x) do { \
+ if (NILP (Fcommandp (x))) \
+ { \
+ dead_wrong_type_argument (Qcommandp, x); \
+ } \
+ } while (0)
/************************************************************************/
/* Parsing keyword arguments */
diff -r b0d40183ac7959bf1c6f5fe0df678f83b5c8b0ec -r a81a739181dce8c6705bddd92047b210b95abb0c tests/ChangeLog
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -2,6 +2,11 @@
* XEmacs 21.5.32 "habanero" is released.
+2012-09-02 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * automated/keymap-tests.el:
+ Test the new command remapping functionality.
+
2012-05-12 Aidan Kehoe <kehoea(a)parhasard.net>
* automated/mule-tests.el:
diff -r b0d40183ac7959bf1c6f5fe0df678f83b5c8b0ec -r a81a739181dce8c6705bddd92047b210b95abb0c tests/automated/keymap-tests.el
--- /dev/null
+++ b/tests/automated/keymap-tests.el
@@ -0,0 +1,104 @@
+;; Copyright (C) 2012 Free Software Foundation, Inc.
+
+;; Author: Aidan Kehoe <kehoea(a)parhasard.net>
+;; Maintainers: Aidan Kehoe <kehoea(a)parhasard.net>
+;; Created: 2012
+;; Keywords: tests
+
+;; This file is part of XEmacs.
+
+;; XEmacs 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 3 of the License, or (at your
+;; option) any later version.
+
+;; XEmacs is distributed in the hope that it will be useful, but WITHOUT
+;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+;; for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with XEmacs. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Synched up with: Not in FSF.
+
+(let* ((map (make-keymap 'help-map-copy))
+ (parent-map (make-keymap 'help-map-copy-parent))
+ (help-map-copy t)
+ (minor-mode-map-alist (acons 'help-map-copy map minor-mode-map-alist)))
+ (set-keymap-parent map parent-map)
+ (loop for (keys def) on '((shift tab) help-prev-symbol tab
+ help-next-symbol c customize-variable V
+ find-variable-at-point q
+ help-mode-quit f find-function-at-point d
+ describe-function-at-point v
+ describe-variable-at-point i Info-elisp-ref F
+ find-function-at-point Q help-mode-bury button2
+ help-mouse-find-source-or-track p
+ help-prev-section n help-next-section return
+ help-find-source-or-scroll-up)
+ by #'cddr
+ do (define-key map (vector keys) def))
+ (loop for (keys def) on '(u view-scroll-some-lines-down % view-goto-percent
+ \2 digit-argument p view-goto-percent \?
+ view-search-backward - negative-argument k
+ view-scroll-lines-down backspace scroll-down G
+ view-last-windowful f scroll-up \5
+ digit-argument s view-repeat-search \0
+ digit-argument n view-repeat-search = what-line
+ \\ view-search-backward delete scroll-down \8
+ digit-argument E view-file d
+ view-scroll-some-lines-up \3 digit-argument q
+ view-quit ! shell-command (control j)
+ view-scroll-lines-up (control m)
+ view-scroll-lines-up y view-scroll-lines-down
+ linefeed view-scroll-lines-up g view-goto-line
+ \6 digit-argument t toggle-truncate-lines C
+ view-cleanup-backspaces b scroll-down \1
+ digit-argument P view-buffer return
+ view-scroll-lines-up | shell-command-on-region j
+ view-scroll-lines-up \9 digit-argument \'
+ register-to-point e view-scroll-lines-up \4
+ digit-argument r recenter space scroll-up /
+ view-search-forward N view-buffer m
+ point-to-register h view-mode-describe \7
+ digit-argument
+ find-function-at-point view-mode-describe)
+ by #'cddr
+ do (define-key parent-map (vector keys) def))
+ (Assert (eq (key-binding [F]) 'find-function-at-point)
+ "checking normal key lookup works, F")
+ (Assert (eq (key-binding [c]) 'customize-variable)
+ "checking normal key lookup works, c")
+ (Assert (eq (key-binding [\2]) 'digit-argument)
+ "checking normal key parent lookup works, \\2")
+ (Assert (eq (key-binding [|]) 'shell-command-on-region)
+ "checking normal key parent lookup works, |")
+ (define-key map [remap find-function-at-point] #'find-file)
+ (Assert (eq (key-binding [F]) 'find-file)
+ "checking remapped key lookup works, F")
+ (Assert (eq (key-binding [f]) 'find-file)
+ "checking remapped key lookup works, f")
+ (Assert (eq (key-binding [\2]) 'digit-argument)
+ "checking normal key parent lookup works, \\2")
+ (Assert (eq (key-binding [|]) 'shell-command-on-region)
+ "checking normal key parent lookup works, |")
+ (Assert (eq (key-binding [find-function-at-point]) 'view-mode-describe)
+ "checking remapped function doesn't affect key name mapping")
+ (define-key parent-map [remap help-next-symbol] #'find-file)
+ (Assert (eq (key-binding [tab]) 'find-file)
+ "checking remapping in parent extends to child")
+ (Assert (equal (commands-remapped-to 'find-file)
+ '(help-next-symbol find-function-at-point))
+ "checking #'commands-remapped-to is sane")
+ (Check-Error wrong-type-argument (commands-remapped-to pi))
+ (Check-Error wrong-type-argument (commands-remapped-to 'find-file pi))
+ (Check-Error wrong-type-argument (commands-remapped-to 'find-file nil pi))
+ (Assert (eq (command-remapping 'find-function-at-point) 'find-file)
+ "checking #'command-remapping is sane")
+ (Check-Error wrong-type-argument (command-remapping pi))
+ (Check-Error wrong-type-argument (command-remapping 'find-function-at-point
+ pi))
+ (Check-Error wrong-type-argument (command-remapping 'find-function-at-point
+ nil pi)))
+
Repository URL: https://bitbucket.org/xemacs/xemacs/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches