[COMMIT] Warn about non-string non-integer ARG to #'gensym, bytecomp.el.
11 years, 4 months
Aidan Kehoe
APPROVE COMMIT
NOTE: This patch has been committed.
# HG changeset patch
# User Aidan Kehoe <kehoea(a)parhasard.net>
# Date 1377108179 -3600
# Node ID dbd8305e13cb9a6c21902aab3214fb11fb15fb99
# Parent 70a3f4ff8da87bd643770856e4ef0e437abc056e
Warn about non-string non-integer ARG to #'gensym, bytecomp.el.
lisp/ChangeLog addition:
2013-08-21 Aidan Kehoe <kehoea(a)parhasard.net>
* bytecomp.el:
* bytecomp.el (gensym):
* bytecomp.el (byte-compile-gensym): New.
Warn that gensym called in a for-effect context is unlikely to be
useful.
Warn about non-string non-integer ARGs, this is incorrect.
Am not changing the function to error with same, most code that
makes the mistake is has no problems, which is why it has survived
so long.
* window-xemacs.el (save-window-excursion/mapping):
* window.el (save-window-excursion):
Call #'gensym with a string, not a symbol.
diff -r 70a3f4ff8da8 -r dbd8305e13cb lisp/ChangeLog
--- a/lisp/ChangeLog Mon Aug 05 17:20:16 2013 +0100
+++ b/lisp/ChangeLog Wed Aug 21 19:02:59 2013 +0100
@@ -1,3 +1,18 @@
+2013-08-21 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * bytecomp.el:
+ * bytecomp.el (gensym):
+ * bytecomp.el (byte-compile-gensym): New.
+ Warn that gensym called in a for-effect context is unlikely to be
+ useful.
+ Warn about non-string non-integer ARGs, this is incorrect.
+ Am not changing the function to error with same, most code that
+ makes the mistake is has no problems, which is why it has survived
+ so long.
+ * window-xemacs.el (save-window-excursion/mapping):
+ * window.el (save-window-excursion):
+ Call #'gensym with a string, not a symbol.
+
2013-08-05 Aidan Kehoe <kehoea(a)parhasard.net>
* isearch-mode.el (isearch-pre-command-hook):
diff -r 70a3f4ff8da8 -r dbd8305e13cb lisp/bytecomp.el
--- a/lisp/bytecomp.el Mon Aug 05 17:20:16 2013 +0100
+++ b/lisp/bytecomp.el Wed Aug 21 19:02:59 2013 +0100
@@ -4111,6 +4111,7 @@
(byte-defop-compiler-1 integerp)
(byte-defop-compiler-1 eql)
(byte-defop-compiler-1 fillarray)
+(byte-defop-compiler-1 gensym)
(defun byte-compile-progn (form)
(byte-compile-body-do-effect (cdr form)))
@@ -4399,6 +4400,19 @@
(byte-compile-out-tag donetag))
(byte-compile-subr-wrong-args form 2)))
+(defun byte-compile-gensym (form)
+ (when for-effect
+ (byte-compile-warn "%s: %S: called for-effect, unlikely to be useful"
+ (car form) form))
+ (when (and (cdr form) (cl-const-expr-p (nth 1 form))
+ (not (typep (cl-const-expr-val (nth 1 form) '#:not-constant)
+ '(or string integer))))
+ (byte-compile-warn "%s: %s: only strings and integers valid for ARG"
+ (car form)
+ (let ((print-readably t))
+ (prin1-to-string (nth 1 form)))))
+ (byte-compile-normal-call form))
+
;;(byte-defop-compiler-1 /= byte-compile-negated)
(byte-defop-compiler-1 atom byte-compile-negated)
(byte-defop-compiler-1 nlistp byte-compile-negated)
diff -r 70a3f4ff8da8 -r dbd8305e13cb lisp/window-xemacs.el
--- a/lisp/window-xemacs.el Mon Aug 05 17:20:16 2013 +0100
+++ b/lisp/window-xemacs.el Wed Aug 21 19:02:59 2013 +0100
@@ -355,8 +355,8 @@
to them in the restored configuration. It does not include entries for
windows that have not changed identity.
Does not restore the value of point in current buffer."
- (let ((window-config (gensym 'window-config))
- (mapping (gensym 'mapping)))
+ (let ((window-config (gensym "window-config"))
+ (mapping (gensym "mapping")))
`(let ((,window-config (current-window-configuration))
(,mapping))
(unwind-protect
diff -r 70a3f4ff8da8 -r dbd8305e13cb lisp/window.el
--- a/lisp/window.el Mon Aug 05 17:20:16 2013 +0100
+++ b/lisp/window.el Wed Aug 21 19:02:59 2013 +0100
@@ -202,7 +202,7 @@
Restores which buffer appears in which window, where display starts,
as well as the current buffer.
Does not restore the value of point in current buffer."
- (let ((window-config (gensym 'window-config)))
+ (let ((window-config (gensym "window-config")))
`(let ((,window-config (current-window-configuration)))
(unwind-protect
(progn ,@body)
--
‘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
[AC web] Various cleanups for the website.
11 years, 4 months
Stephen J. Turnbull
APPROVE COMMIT web
This is a bunch of cleanups for the website, some of which have
already made it to the primary site but not to the repo because the
commit trigger wasn't working for automatic updates.
All patches are given disposition "attachment" so you can unfold them
one at a time for review (if anybody really cares, you can always look
at the website to confirm they "work").
The patches labeled "GSoC" have mostly already been applied to the
site. They work on the index and the GSoC links from
http://www.xemacs.org/Develop/.
The patch labeled "hgignore" adds a bunch of build products and editor
detritus to .hgignore.
The most important patch is labeled "refactor", and it rearranges the
Makefiles quite a bit. Basically, I've moved everything but variable
definitions out of Local.rules.mk into the Makefile. Then I moved the
"sanity checks" into the rule with target "init", and renamed that
rule and a couple of others. Also some doc cleanups.
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches
[COMMIT] Improve coding style, variable names, data.c, sequence.c
11 years, 4 months
Aidan Kehoe
APPROVE COMMIT
NOTE: This patch has been committed.
# HG changeset patch
# User Aidan Kehoe <kehoea(a)parhasard.net>
# Date 1375719616 -3600
# Node ID 70a3f4ff8da87bd643770856e4ef0e437abc056e
# Parent 2b8edd304c2b820bddca2ede4e40cc6191ab2b84
Improve coding style, variable names, data.c, sequence.c
src/ChangeLog addition:
2013-08-05 Aidan Kehoe <kehoea(a)parhasard.net>
* data.c:
* data.c (Fcar):
* data.c (Fcdr):
* data.c (Fmake_weak_box):
* data.c (Fweak_box_ref):
* data.c (init_marking_ephemerons):
* data.c (continue_marking_ephemerons):
* data.c (finish_marking_ephemerons):
* data.c (prune_ephemerons):
* data.c (zap_finalize_list):
* data.c (ephemeron_equal):
* data.c (ephemeron_hash):
* data.c (Fmake_ephemeron):
* data.c (Fephemeron_ref):
* data.c (Fephemeronp):
* sequence.c:
* sequence.c (Fcopy_tree):
* sequence.c (Freplace):
Improve coding style here; #'car and #'cdr accept lists, not just
cons cells, update their argument names to reflect that.
Follow coding conventions in the weak box and ephemeron code.
Don't needlessly abbreviate in copy-tree, use argument names from
Common Lisp in #'merge and #'replace.
Document ALIST better in #'nsublis, #'sublis.
diff -r 2b8edd304c2b -r 70a3f4ff8da8 src/ChangeLog
--- a/src/ChangeLog Mon Aug 05 13:34:27 2013 +0100
+++ b/src/ChangeLog Mon Aug 05 17:20:16 2013 +0100
@@ -1,3 +1,30 @@
+2013-08-05 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * data.c:
+ * data.c (Fcar):
+ * data.c (Fcdr):
+ * data.c (Fmake_weak_box):
+ * data.c (Fweak_box_ref):
+ * data.c (init_marking_ephemerons):
+ * data.c (continue_marking_ephemerons):
+ * data.c (finish_marking_ephemerons):
+ * data.c (prune_ephemerons):
+ * data.c (zap_finalize_list):
+ * data.c (ephemeron_equal):
+ * data.c (ephemeron_hash):
+ * data.c (Fmake_ephemeron):
+ * data.c (Fephemeron_ref):
+ * data.c (Fephemeronp):
+ * sequence.c:
+ * sequence.c (Fcopy_tree):
+ * sequence.c (Freplace):
+ Improve coding style here; #'car and #'cdr accept lists, not just
+ cons cells, update their argument names to reflect that.
+ Follow coding conventions in the weak box and ephemeron code.
+ Don't needlessly abbreviate in copy-tree, use argument names from
+ Common Lisp in #'merge and #'replace.
+ Document ALIST better in #'nsublis, #'sublis.
+
2013-06-17 Jerry James <james(a)xemacs.org>
* Makefile.in.in: Support bignums with MPIR.
diff -r 2b8edd304c2b -r 70a3f4ff8da8 src/data.c
--- a/src/data.c Mon Aug 05 13:34:27 2013 +0100
+++ b/src/data.c Mon Aug 05 17:20:16 2013 +0100
@@ -572,21 +572,21 @@
/* Extract and set components of lists */
DEFUN ("car", Fcar, 1, 1, 0, /*
-Return the car of CONS. If CONS is nil, return nil.
+Return the car of LIST. If LIST is nil, return nil.
The car of a list or a dotted pair is its first element.
-Error if CONS is not nil and not a cons cell. See also `car-safe'.
+Error if LIST is not nil and not a cons cell. See also `car-safe'.
*/
- (cons))
+ (list))
{
while (1)
{
- if (CONSP (cons))
- return XCAR (cons);
- else if (NILP (cons))
+ if (CONSP (list))
+ return XCAR (list);
+ else if (NILP (list))
return Qnil;
else
- cons = wrong_type_argument (Qlistp, cons);
+ list = wrong_type_argument (Qlistp, list);
}
}
@@ -599,22 +599,22 @@
}
DEFUN ("cdr", Fcdr, 1, 1, 0, /*
-Return the cdr of CONS. If CONS is nil, return nil.
+Return the cdr of LIST. If LIST is nil, return nil.
The cdr of a list is the list without its first element. The cdr of a
dotted pair (A . B) is the second element, B.
Error if arg is not nil and not a cons cell. See also `cdr-safe'.
*/
- (cons))
+ (list))
{
while (1)
{
- if (CONSP (cons))
- return XCDR (cons);
- else if (NILP (cons))
+ if (CONSP (list))
+ return XCDR (list);
+ else if (NILP (list))
return Qnil;
else
- cons = wrong_type_argument (Qlistp, cons);
+ list = wrong_type_argument (Qlistp, list);
}
}
@@ -3121,16 +3121,16 @@
*/
(value))
{
- return make_weak_box(value);
+ return make_weak_box (value);
}
DEFUN ("weak-box-ref", Fweak_box_ref, 1, 1, 0, /*
Return the contents of weak box WEAK-BOX.
If the contents have been GCed, return NIL.
*/
- (wb))
+ (weak_box))
{
- return XWEAK_BOX (wb)->value;
+ return XWEAK_BOX (weak_box)->value;
}
DEFUN ("weak-box-p", Fweak_boxp, 1, 1, 0, /*
@@ -3161,7 +3161,7 @@
static Lisp_Object Vfinalize_list;
void
-init_marking_ephemerons(void)
+init_marking_ephemerons (void)
{
Vnew_all_ephemerons = Qnil;
}
@@ -3171,7 +3171,7 @@
* way. */
int
-continue_marking_ephemerons(void)
+continue_marking_ephemerons (void)
{
Lisp_Object rest = Vall_ephemerons, next, prev = Qnil;
int did_mark = 0;
@@ -3217,7 +3217,7 @@
*/
int
-finish_marking_ephemerons(void)
+finish_marking_ephemerons (void)
{
Lisp_Object rest = Vall_ephemerons, next, prev = Qnil;
int did_mark = 0;
@@ -3264,13 +3264,13 @@
}
void
-prune_ephemerons(void)
+prune_ephemerons (void)
{
Vall_ephemerons = Vnew_all_ephemerons;
}
Lisp_Object
-zap_finalize_list(void)
+zap_finalize_list (void)
{
Lisp_Object finalizers = Vfinalize_list;
@@ -3306,12 +3306,12 @@
ephemeron_equal (Lisp_Object obj1, Lisp_Object obj2, int depth, int foldcase)
{
return
- internal_equal_0 (XEPHEMERON_REF (obj1), XEPHEMERON_REF(obj2), depth + 1,
- foldcase);
+ internal_equal_0 (XEPHEMERON_REF (obj1), XEPHEMERON_REF (obj2),
+ depth + 1, foldcase);
}
static Hashcode
-ephemeron_hash(Lisp_Object obj, int depth, Boolint equalp)
+ephemeron_hash (Lisp_Object obj, int depth, Boolint equalp)
{
return internal_hash (XEPHEMERON_REF (obj), depth + 1, equalp);
}
@@ -3345,11 +3345,11 @@
/* Ephemerons are special cases in the KKCC mark algorithm, so nothing
is marked here. */
static const struct memory_description ephemeron_description[] = {
- { XD_LISP_OBJECT, offsetof(struct ephemeron, key),
+ { XD_LISP_OBJECT, offsetof (struct ephemeron, key),
0, { 0 }, XD_FLAG_NO_KKCC },
- { XD_LISP_OBJECT, offsetof(struct ephemeron, cons_chain),
+ { XD_LISP_OBJECT, offsetof (struct ephemeron, cons_chain),
0, { 0 }, XD_FLAG_NO_KKCC },
- { XD_LISP_OBJECT, offsetof(struct ephemeron, value),
+ { XD_LISP_OBJECT, offsetof (struct ephemeron, value),
0, { 0 }, XD_FLAG_NO_KKCC },
{ XD_END }
};
@@ -3372,16 +3372,16 @@
*/
(key, value, finalizer))
{
- return make_ephemeron(key, value, finalizer);
+ return make_ephemeron (key, value, finalizer);
}
DEFUN ("ephemeron-ref", Fephemeron_ref, 1, 1, 0, /*
Return the contents of ephemeron EPHEMERON.
If the contents have been GCed, return NIL.
*/
- (eph))
+ (ephemeron))
{
- return XEPHEMERON_REF (eph);
+ return XEPHEMERON_REF (ephemeron);
}
DEFUN ("ephemeron-p", Fephemeronp, 1, 1, 0, /*
diff -r 2b8edd304c2b -r 70a3f4ff8da8 src/sequence.c
--- a/src/sequence.c Mon Aug 05 13:34:27 2013 +0100
+++ b/src/sequence.c Mon Aug 05 17:20:16 2013 +0100
@@ -1161,12 +1161,12 @@
Return a copy of a list and substructures.
The argument is copied, and any lists contained within it are copied
recursively. Circularities and shared substructures are not preserved.
-Second arg VECP causes vectors to be copied, too. Strings and bit vectors
-are not copied.
+Second arg VECTORP causes vectors to be copied, too. Strings and bit
+vectors are not copied.
*/
- (arg, vecp))
-{
- return safe_copy_tree (arg, vecp, 0);
+ (arg, vectorp))
+{
+ return safe_copy_tree (arg, vectorp, 0);
}
Lisp_Object
@@ -3723,15 +3723,15 @@
} while (0)
DEFUN ("merge", Fmerge, 4, MANY, 0, /*
-Destructively merge SEQUENCE-ONE and SEQUENCE-TWO, producing a new sequence.
+Destructively merge SEQUENCE1 and SEQUENCE2, producing a new sequence.
TYPE is the type of sequence to return. PREDICATE is a `less-than'
predicate on the elements.
Optional keyword argument KEY is a function used to extract an object to be
-used for comparison from each element of SEQUENCE-ONE and SEQUENCE-TWO.
-
-arguments: (TYPE SEQUENCE-ONE SEQUENCE-TWO PREDICATE &key (KEY #'IDENTITY))
+used for comparison from each element of SEQUENCE1 and SEQUENCE2.
+
+arguments: (TYPE SEQUENCE1 SEQUENCE2 PREDICATE &key (KEY #'IDENTITY))
*/
(int nargs, Lisp_Object *args))
{
@@ -5270,16 +5270,16 @@
}
DEFUN ("replace", Freplace, 2, MANY, 0, /*
-Replace the elements of SEQUENCE-ONE with the elements of SEQUENCE-TWO.
-
-SEQUENCE-ONE is destructively modified, and returned. Its length is not
+Replace the elements of SEQUENCE1 with the elements of SEQUENCE2.
+
+SEQUENCE1 is destructively modified, and returned. Its length is not
changed.
-Keywords:start1 and :end1 specify a subsequence of SEQUENCE-ONE, and
-:start2 and :end2 a subsequence of SEQUENCE-TWO. See `search' for more
+Keywords:start1 and :end1 specify a subsequence of SEQUENCE1, and
+:start2 and :end2 a subsequence of SEQUENCE2. See `search' for more
information.
-arguments: (SEQUENCE-ONE SEQUENCE-TWO &key (START1 0) (END1 (length SEQUENCE-ONE)) (START2 0) (END2 (length SEQUENCE-TWO)))
+arguments: (SEQUENCE1 SEQUENCE2 &key (START1 0) (END1 (length SEQUENCE1)) (START2 0) (END2 (length SEQUENCE2)))
*/
(int nargs, Lisp_Object *args))
{
@@ -6234,6 +6234,9 @@
Perform substitutions indicated by ALIST in TREE (non-destructively).
Return a copy of TREE with all matching elements replaced.
+Each dotted pair in ALIST describes a map from an old value (the car) to be
+replaced by a new value (the cdr).
+
See `member*' for the meaning of :test, :test-not and :key.
arguments: (ALIST TREE &key (TEST #'eql) (KEY #'identity) TEST-NOT)
@@ -6362,6 +6365,9 @@
Perform substitutions indicated by ALIST in TREE (destructively).
Any matching element of TREE is changed via a call to `setcar'.
+Each dotted pair in ALIST describes a map from an old value (the car) to be
+replaced by a new value (the cdr).
+
See `member*' for the meaning of :test, :test-not and :key.
arguments: (ALIST TREE &key (TEST #'eql) (KEY #'identity) TEST-NOT)
--
‘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] Avoid throwing an error with misc-user events in isearch-pre-command-hook.
11 years, 4 months
Aidan Kehoe
APPROVE COMMIT
NOTE: This patch has been committed.
# HG changeset patch
# User Aidan Kehoe <kehoea(a)parhasard.net>
# Date 1375706067 -3600
# Node ID 2b8edd304c2b820bddca2ede4e40cc6191ab2b84
# Parent 66d2f63df75f970d8a4ee919c5fc612cc2501720
Avoid throwing an error with misc-user events in isearch-pre-command-hook.
lisp/ChangeLog addition:
2013-08-05 Aidan Kehoe <kehoea(a)parhasard.net>
* isearch-mode.el (isearch-pre-command-hook):
If this function is called and (this-command-keys) contains
misc-user events, #'key-binding throws an error.
Eddie Corns and Alex Belits describe this happening in tracker
issue 336, and we can avoid this by catching the error and
handling the misc-user event in the same way that #'dispatch-event
does.
I haven't reproduced the actual error they describe, and welcome
testing to make sure it's gone.
Thank you Eddie, thank you Alex!
diff -r 66d2f63df75f -r 2b8edd304c2b lisp/ChangeLog
--- a/lisp/ChangeLog Mon Aug 05 10:05:32 2013 +0100
+++ b/lisp/ChangeLog Mon Aug 05 13:34:27 2013 +0100
@@ -1,3 +1,16 @@
+2013-08-05 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * isearch-mode.el (isearch-pre-command-hook):
+ If this function is called and (this-command-keys) contains
+ misc-user events, #'key-binding throws an error.
+ Eddie Corns and Alex Belits describe this happening in tracker
+ issue 336, and we can avoid this by catching the error and
+ handling the misc-user event in the same way that #'dispatch-event
+ does.
+ I haven't reproduced the actual error they describe, and welcome
+ testing to make sure it's gone.
+ Thank you Eddie, thank you Alex!
+
2013-08-05 Aidan Kehoe <kehoea(a)parhasard.net>
* behavior.el:
diff -r 66d2f63df75f -r 2b8edd304c2b lisp/isearch-mode.el
--- a/lisp/isearch-mode.el Mon Aug 05 10:05:32 2013 +0100
+++ b/lisp/isearch-mode.el Mon Aug 05 13:34:27 2013 +0100
@@ -1579,7 +1579,28 @@
;; FSF does similar magic in `isearch-other-meta-char', which
;; is horribly complex. I *hope* what we do works in all
;; cases.
- (setq this-command (key-binding (this-command-keys))))
+ (setq this-command
+ (condition-case nil
+ (key-binding (this-command-keys))
+ (wrong-type-argument
+ ;; #'key-binding didn't like one of the events --> it's
+ ;; probably a misc-user object, repeat what
+ ;; #'dispatch-event does for this case.
+ (let ((this-command-keys (this-command-keys))
+ event-function)
+ (when (and (> (length this-command-keys) 0)
+ (misc-user-event-p (aref this-command-keys 0)))
+ (setq event-function
+ (event-function (aref this-command-keys 0)))
+ (case event-function
+ (call-interactively
+ (event-object (aref this-command-keys 0)))
+ (eval
+ `(lambda nil (interactive)
+ ,(event-object (aref this-command-keys 0))))
+ (otherwise
+ ;; Scrollbar command or the like.
+ (and (symbolp event-function) event-function)))))))))
(t
(labels
((isearch-maybe-frob-keyboard-macros ()
--
‘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: Avoid throwing an error with misc-user events in isearch-pre-command-hook.
11 years, 4 months
Bitbucket
1 new commit in XEmacs:
https://bitbucket.org/xemacs/xemacs/commits/2b8edd304c2b/
Changeset: 2b8edd304c2b
User: kehoea
Date: 2013-08-05 14:34:27
Summary: Avoid throwing an error with misc-user events in isearch-pre-command-hook.
lisp/ChangeLog addition:
2013-08-05 Aidan Kehoe <kehoea(a)parhasard.net>
* isearch-mode.el (isearch-pre-command-hook):
If this function is called and (this-command-keys) contains
misc-user events, #'key-binding throws an error.
Eddie Corns and Alex Belits describe this happening in tracker
issue 336, and we can avoid this by catching the error and
handling the misc-user event in the same way that #'dispatch-event
does.
I haven't reproduced the actual error they describe, and welcome
testing to make sure it's gone.
Thank you Eddie, thank you Alex!
Affected #: 2 files
diff -r 66d2f63df75f970d8a4ee919c5fc612cc2501720 -r 2b8edd304c2b820bddca2ede4e40cc6191ab2b84 lisp/ChangeLog
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,16 @@
+2013-08-05 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * isearch-mode.el (isearch-pre-command-hook):
+ If this function is called and (this-command-keys) contains
+ misc-user events, #'key-binding throws an error.
+ Eddie Corns and Alex Belits describe this happening in tracker
+ issue 336, and we can avoid this by catching the error and
+ handling the misc-user event in the same way that #'dispatch-event
+ does.
+ I haven't reproduced the actual error they describe, and welcome
+ testing to make sure it's gone.
+ Thank you Eddie, thank you Alex!
+
2013-08-05 Aidan Kehoe <kehoea(a)parhasard.net>
* behavior.el:
diff -r 66d2f63df75f970d8a4ee919c5fc612cc2501720 -r 2b8edd304c2b820bddca2ede4e40cc6191ab2b84 lisp/isearch-mode.el
--- a/lisp/isearch-mode.el
+++ b/lisp/isearch-mode.el
@@ -1579,7 +1579,28 @@
;; FSF does similar magic in `isearch-other-meta-char', which
;; is horribly complex. I *hope* what we do works in all
;; cases.
- (setq this-command (key-binding (this-command-keys))))
+ (setq this-command
+ (condition-case nil
+ (key-binding (this-command-keys))
+ (wrong-type-argument
+ ;; #'key-binding didn't like one of the events --> it's
+ ;; probably a misc-user object, repeat what
+ ;; #'dispatch-event does for this case.
+ (let ((this-command-keys (this-command-keys))
+ event-function)
+ (when (and (> (length this-command-keys) 0)
+ (misc-user-event-p (aref this-command-keys 0)))
+ (setq event-function
+ (event-function (aref this-command-keys 0)))
+ (case event-function
+ (call-interactively
+ (event-object (aref this-command-keys 0)))
+ (eval
+ `(lambda nil (interactive)
+ ,(event-object (aref this-command-keys 0))))
+ (otherwise
+ ;; Scrollbar command or the like.
+ (and (symbolp event-function) event-function)))))))))
(t
(labels
((isearch-maybe-frob-keyboard-macros ()
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] Add a language environment for Azeri.
11 years, 4 months
Aidan Kehoe
APPROVE COMMIT
NOTE: This patch has been committed.
# HG changeset patch
# User Aidan Kehoe <kehoea(a)parhasard.net>
# Date 1375692994 -3600
# Node ID 7b87bc73f79670c0031e74de94f619d6648756b4
# Parent 3ccb4aaf91c7e4331fc57f45688619824380dcc6
Add a language environment for Azeri.
lisp/ChangeLog addition:
2013-08-05 Aidan Kehoe <kehoea(a)parhasard.net>
* mule/latin.el:
Add a Latin-script Azeri language environment, with UTF-8 as the
encoding and case information for schwa.
diff -r 3ccb4aaf91c7 -r 7b87bc73f796 lisp/ChangeLog
--- a/lisp/ChangeLog Sun Jul 28 02:46:02 2013 +0900
+++ b/lisp/ChangeLog Mon Aug 05 09:56:34 2013 +0100
@@ -1,3 +1,9 @@
+2013-08-05 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * mule/latin.el:
+ Add a Latin-script Azeri language environment, with UTF-8 as the
+ encoding and case information for schwa.
+
2013-06-22 Stephen J. Turnbull <stephen(a)xemacs.org>
* paragraphs.el (sentence-end-base):
diff -r 3ccb4aaf91c7 -r 7b87bc73f796 lisp/mule/latin.el
--- a/lisp/mule/latin.el Sun Jul 28 02:46:02 2013 +0900
+++ b/lisp/mule/latin.el Mon Aug 05 09:56:34 2013 +0100
@@ -1778,7 +1778,20 @@
(lambda ()
;; Restore the normal case mappings for the characters.
(put-case-table-pair ?I ?i (standard-case-table))))
+
+;; Latin-script Azeri. This uses schwa, and has no non-Unicode encoding
+;; available. The Turkish case rules apply, though, so we can copy that
+;; language environment.
+(let* ((name (create-variant-language-environment "Turkish" 'utf-8))
+ (assoc (assoc name language-info-alist)))
+ (setf (car assoc) "Azeri")
+ (set-language-info "Azeri" 'locale "az")
+ (put-case-table-pair
+ (decode-char 'ucs #x018F) ;; LATIN CAPITAL LETTER SCHWA
+ (decode-char 'ucs #x0259) ;; LATIN SMALL LETTER SCHWA
+ (standard-case-table)))
+
(make-coding-system
'macintosh 'fixed-width "MacRoman"
'(unicode-map
--
‘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] Correct some spelling and formatting in behavior.el.
11 years, 4 months
Aidan Kehoe
APPROVE COMMIT
NOTE: This patch has been committed.
# HG changeset patch
# User Aidan Kehoe <kehoea(a)parhasard.net>
# Date 1375693532 -3600
# Node ID 66d2f63df75f970d8a4ee919c5fc612cc2501720
# Parent 7b87bc73f79670c0031e74de94f619d6648756b4
Correct some spelling and formatting in behavior.el.
Mentioned in tracker issue 826, the third thing mentioned there (the file
name at the bottom of the file) had already been fixed.
lisp/ChangeLog addition:
2013-08-05 Aidan Kehoe <kehoea(a)parhasard.net>
* behavior.el:
(override-behavior):
Correct some spelling and formatting here, thank you Steven
Mitchell in tracker issue 826.
diff -r 7b87bc73f796 -r 66d2f63df75f lisp/ChangeLog
--- a/lisp/ChangeLog Mon Aug 05 09:56:34 2013 +0100
+++ b/lisp/ChangeLog Mon Aug 05 10:05:32 2013 +0100
@@ -1,3 +1,10 @@
+2013-08-05 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * behavior.el:
+ (override-behavior):
+ Correct some spelling and formatting here, thank you Steven
+ Mitchell in tracker issue 826.
+
2013-08-05 Aidan Kehoe <kehoea(a)parhasard.net>
* mule/latin.el:
diff -r 7b87bc73f796 -r 66d2f63df75f lisp/behavior.el
--- a/lisp/behavior.el Mon Aug 05 09:56:34 2013 +0100
+++ b/lisp/behavior.el Mon Aug 05 10:05:32 2013 +0100
@@ -62,7 +62,7 @@
;; package is enabled, the user doesn't have to do anything specific for
;; the package to do its thing -- it happens automatically if the user is
;; using the area whose behavior has been changed. These include packages
-;; such as `avoid' (which makes the mouse poointer move when the cursor
+;; such as `avoid' (which makes the mouse pointer move when the cursor
;; gets too close), EFS (which adds the ability to treat an FTP site as
;; part of the local file system), the packages that supply the
;; mode-specific handling for various files, etc
@@ -285,7 +285,9 @@
Normally, groups are created and assigned properties by individual packages.
The resulting hierarchy may not make much sense globally. This function
allows the hierarchy and appearance of a group to be specified globally,
-and will take precendence over the properties assigned by `define-behavior-group'. This allows a global organization to be imposed on groups, while still allowing for graceful handling of new or unknown groups.
+and will take precendence over the properties assigned by
+`define-behavior-group'. This allows a global organization to be imposed on
+groups, while still allowing for graceful handling of new or unknown groups.
NAME can be a symbol specifying a group name, or a list of
\(PARENT [...] NAME), where a path from a particular parent is explicitly
--
‘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: 2 new changesets
11 years, 4 months
Bitbucket
2 new commits in XEmacs:
https://bitbucket.org/xemacs/xemacs/commits/7b87bc73f796/
Changeset: 7b87bc73f796
User: kehoea
Date: 2013-08-05 10:56:34
Summary: Add a language environment for Azeri.
lisp/ChangeLog addition:
2013-08-05 Aidan Kehoe <kehoea(a)parhasard.net>
* mule/latin.el:
Add a Latin-script Azeri language environment, with UTF-8 as the
encoding and case information for schwa.
Affected #: 2 files
diff -r 3ccb4aaf91c7e4331fc57f45688619824380dcc6 -r 7b87bc73f79670c0031e74de94f619d6648756b4 lisp/ChangeLog
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,9 @@
+2013-08-05 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * mule/latin.el:
+ Add a Latin-script Azeri language environment, with UTF-8 as the
+ encoding and case information for schwa.
+
2013-06-22 Stephen J. Turnbull <stephen(a)xemacs.org>
* paragraphs.el (sentence-end-base):
diff -r 3ccb4aaf91c7e4331fc57f45688619824380dcc6 -r 7b87bc73f79670c0031e74de94f619d6648756b4 lisp/mule/latin.el
--- a/lisp/mule/latin.el
+++ b/lisp/mule/latin.el
@@ -1778,7 +1778,20 @@
(lambda ()
;; Restore the normal case mappings for the characters.
(put-case-table-pair ?I ?i (standard-case-table))))
+
+;; Latin-script Azeri. This uses schwa, and has no non-Unicode encoding
+;; available. The Turkish case rules apply, though, so we can copy that
+;; language environment.
+(let* ((name (create-variant-language-environment "Turkish" 'utf-8))
+ (assoc (assoc name language-info-alist)))
+ (setf (car assoc) "Azeri")
+ (set-language-info "Azeri" 'locale "az")
+ (put-case-table-pair
+ (decode-char 'ucs #x018F) ;; LATIN CAPITAL LETTER SCHWA
+ (decode-char 'ucs #x0259) ;; LATIN SMALL LETTER SCHWA
+ (standard-case-table)))
+
(make-coding-system
'macintosh 'fixed-width "MacRoman"
'(unicode-map
https://bitbucket.org/xemacs/xemacs/commits/66d2f63df75f/
Changeset: 66d2f63df75f
User: kehoea
Date: 2013-08-05 11:05:32
Summary: Correct some spelling and formatting in behavior.el.
Mentioned in tracker issue 826, the third thing mentioned there (the file
name at the bottom of the file) had already been fixed.
lisp/ChangeLog addition:
2013-08-05 Aidan Kehoe <kehoea(a)parhasard.net>
* behavior.el:
(override-behavior):
Correct some spelling and formatting here, thank you Steven
Mitchell in tracker issue 826.
Affected #: 2 files
diff -r 7b87bc73f79670c0031e74de94f619d6648756b4 -r 66d2f63df75f970d8a4ee919c5fc612cc2501720 lisp/ChangeLog
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,10 @@
+2013-08-05 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * behavior.el:
+ (override-behavior):
+ Correct some spelling and formatting here, thank you Steven
+ Mitchell in tracker issue 826.
+
2013-08-05 Aidan Kehoe <kehoea(a)parhasard.net>
* mule/latin.el:
diff -r 7b87bc73f79670c0031e74de94f619d6648756b4 -r 66d2f63df75f970d8a4ee919c5fc612cc2501720 lisp/behavior.el
--- a/lisp/behavior.el
+++ b/lisp/behavior.el
@@ -62,7 +62,7 @@
;; package is enabled, the user doesn't have to do anything specific for
;; the package to do its thing -- it happens automatically if the user is
;; using the area whose behavior has been changed. These include packages
-;; such as `avoid' (which makes the mouse poointer move when the cursor
+;; such as `avoid' (which makes the mouse pointer move when the cursor
;; gets too close), EFS (which adds the ability to treat an FTP site as
;; part of the local file system), the packages that supply the
;; mode-specific handling for various files, etc
@@ -285,7 +285,9 @@
Normally, groups are created and assigned properties by individual packages.
The resulting hierarchy may not make much sense globally. This function
allows the hierarchy and appearance of a group to be specified globally,
-and will take precendence over the properties assigned by `define-behavior-group'. This allows a global organization to be imposed on groups, while still allowing for graceful handling of new or unknown groups.
+and will take precendence over the properties assigned by
+`define-behavior-group'. This allows a global organization to be imposed on
+groups, while still allowing for graceful handling of new or unknown groups.
NAME can be a symbol specifying a group name, or a list of
\(PARENT [...] NAME), where a path from a particular parent is explicitly
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 LEIM] Warn about duplicate rules, quail; remove many of same from input methods.
11 years, 4 months
Aidan Kehoe
I noticed the Turkish input method wasn’t working for dotless i, and this
patch resulted. There are lots of problems still with duplicate entries for
East Asian input methods.
APPROVE COMMIT LEIM
NOTE: This patch has been committed.
# HG changeset patch
# User Aidan Kehoe <kehoea(a)parhasard.net>
# Date 1375550327 -3600
# Node ID 258fdebd51edbcc65aa14891a18e34d1af50037f
# Parent 7f33a75296ac97e9d0eecbb76907bf32cb43477f
Warn about duplicate rules, quail; remove many of same from input methods.
ChangeLog addition;
2013-08-03 Aidan Kehoe <kehoea(a)parhasard.net>
* quail.el (quail-define-rules):
Check for duplicate rules, warn about same.
GNU silently merges such rules, but XEmacs doesn't, and this is
saner behaviour, it's easier to miss identical rules textually far
away when reading the code.
* quail.el (quail-install-map):
Backslash a parenthesis for the sake of fontification.
* quail/latin-post.el:
Merge duplicates explicitly in latin-1-postfix, spanish-postfix,
turkish-latin-3-postfix, turkish-postfix, and latin-postfix.
Rewrite the code generation for latin-postfix to do more at
compile time, and to check for duplicates and warn.
diff -r 7f33a75296ac -r 258fdebd51ed ChangeLog
--- a/ChangeLog Mon Sep 12 17:59:27 2011 +0100
+++ b/ChangeLog Sat Aug 03 18:18:47 2013 +0100
@@ -1,3 +1,18 @@
+2013-08-03 Aidan Kehoe <kehoea(a)parhasard.net>
+
+ * quail.el (quail-define-rules):
+ Check for duplicate rules, warn about same.
+ GNU silently merges such rules, but XEmacs doesn't, and this is
+ saner behaviour, it's easier to miss identical rules textually far
+ away when reading the code.
+ * quail.el (quail-install-map):
+ Backslash a parenthesis for the sake of fontification.
+ * quail/latin-post.el:
+ Merge duplicates explicitly in latin-1-postfix, spanish-postfix,
+ turkish-latin-3-postfix, turkish-postfix, and latin-postfix.
+ Rewrite the code generation for latin-postfix to do more at
+ compile time, and to check for duplicates and warn.
+
2011-06-18 Aidan Kehoe <kehoea(a)parhasard.net>
* leim-list.el: Update to reflect new input method names.
diff -r 7f33a75296ac -r 258fdebd51ed quail.el
--- a/quail.el Mon Sep 12 17:59:27 2011 +0100
+++ b/quail.el Sat Aug 03 18:18:47 2013 +0100
@@ -807,7 +807,7 @@
If it is a vector, each element (string or character) is a candidate
for the translation.
In these cases, a key specific Quail map is generated and assigned to KEY.
-(A Quail map is a cons that satisfies `quail-map-p', which see.)
+\(A Quail map is a cons that satisfies `quail-map-p', which see.)
If TRANSLATION is a Quail map it is used to handle KEY.
@@ -823,6 +823,13 @@
(while l
(quail-defrule-internal (car (car l)) (car (cdr (car l))) map)
(setq l (cdr l)))
+ (mapl
+ (function*
+ (lambda ((rule . rules))
+ (let ((assoc (assoc (car rule) rules)))
+ (and assoc
+ (warn "rule %S overridden by %S" rule assoc)))))
+ rules)
map)))
;;;###autoload
diff -r 7f33a75296ac -r 258fdebd51ed quail/latin-post.el
--- a/quail/latin-post.el Mon Sep 12 17:59:27 2011 +0100
+++ b/quail/latin-post.el Sat Aug 03 18:18:47 2013 +0100
@@ -115,7 +115,8 @@
("y\"" ?,A(B)
("D/" ?,AP(B)
("d/" ?,Ap(B)
- ("T/" ?,A^(B)
+ ("T/" [",A^(B"
+ ",D,(B"])
("t/" ?,A~(B)
("s/" ?,A_(B)
("C," ?,AG(B)
@@ -610,7 +611,6 @@
("O/" ?,DX(B)
("R," ?,D#(B)
("S~" ?,D)(B)
- ("T/" ?,D,(B)
("U," ?,DY(B)
("U'" ?,DZ(B)
("U^" ?,D[(B)
@@ -1328,8 +1328,8 @@
("o'" ?,As(B)
("U'" ?,AZ(B)
("u'" ?,Az(B)
- ("U\"" ?,C\(B)
- ("u\"" ?,C|(B)
+ ("U\"" [",C\(B" "U\""])
+ ("u\"" [",C|(B" "u\""])
("N~" ?,AQ(B)
("n~" ?,Aq(B)
("?/" ?,A?(B)
@@ -1345,8 +1345,6 @@
("o''" ["o'"])
("U''" ["U'"])
("u''" ["u'"])
- ("U\"" ["U\""])
- ("u\"" ["U\""])
("N~~" ["N~"])
("n~~" ["n~"])
("?//" ["?/"])
@@ -1412,7 +1410,8 @@
("G^" ?,C+(B)
("g^" ?,C;(B)
("I." ?,C)(B)
- ("i" ?,C9(B)
+ ("i" [",C9(B"
+ "i"])
("i." ?i)
("O\"" ?,CV(B)
("o\"" ?,Cv(B)
@@ -1430,7 +1429,6 @@
("G^^" ["G^"])
("g^^" ["g^"])
("I.." ["I."])
- ("i" ["i"])
("i.." ["i."])
("O\"\"" ["O\""])
("o\"\"" ["o\""])
@@ -1475,7 +1473,7 @@
("G^" ?,MP(B)
("g^" ?,Mp(B)
("I." ?,M](B)
- ("i" ?,M}(B)
+ ("i" [",M}(B" "i"])
("i." ?i)
("O\"" ?,MV(B)
("o\"" ?,Mv(B)
@@ -1493,7 +1491,6 @@
("G^^" ["G^"])
("g^^" ["g^"])
("I.." ["I."])
- ("i" ["i"])
("i.." ["i."])
("O\"\"" ["O\""])
("o\"\"" ["o\""])
@@ -2167,372 +2164,388 @@
" nil t nil nil nil nil nil nil nil nil t)
;; Fixme: ,A&(B ,A'(B ,A((B ,A)(B ,A,(B ,A-(B ,A.(B ,A/(B ,A1(B ,A2(B ,A3(B ,A4(B ,A5(B ,A6(B ,A7(B ,A8(B ,A9(B ,A<(B ,A=(B ,A>(B ,AW(B ,Aw(B
-(eval
- (append
- '(quail-define-rules)
- '((" _" ?,A (B)
- ("!/" ?,A!(B)
- ("//" ?,A0(B)
- ("<<" ?\,A+(B)
- (">>" ?\,A;(B)
- ("?/" ?,A?(B)
- ("$/" ?,A#(B)
- ("A'" ?,AA(B)
- ("A," ?,B!(B)
- ("A-" ?,D@(B)
- ("A/" ?,AE(B)
- ("A\"" ?,AD(B)
- ("A^" ?,AB(B)
- ("A`" ?,A@(B)
- ("A~" ?,AC(B)
- ("A~" ?,BC(B)
- ("C'" ?,BF(B)
- ("C," ?,AG(B)
- ("C." ?,CE(B)
- ("C^" ?,CF(B)
- ("C~" ?,BH(B)
- ("D/" ?,AP(B)
- ("D/" ?,BP(B)
- ("D~" ?,BO(B)
- ("E'" ?,AI(B)
- ("E," ?,BJ(B)
- ("E-" ?,D*(B)
- ("E." ?,DL(B)
- ("E/" ?,AF(B)
- ("E\"" ?,AK(B)
- ("E^" ?,AJ(B)
- ("E`" ?,AH(B)
- ("E~" ?,BL(B)
- ("G," ?,D+(B)
- ("G." ?,CU(B)
- ("G^" ?,CX(B)
- ("G~" ?,C+(B)
- ("H/" ?,C!(B)
- ("H^" ?,C&(B)
- ("I'" ?,AM(B)
- ("I," ?,DG(B)
- ("I-" ?,DO(B)
- ("I." ?,C)(B)
- ("I\"" ?,AO(B)
- ("I^" ?,AN(B)
- ("I`" ?,AL(B)
- ("I~" ?,D%(B)
- ("J^" ?,C,(B)
- ("K," ?,DS(B)
- ("L'" ?,BE(B)
- ("L," ?,D&(B)
- ("L/" ?,B#(B)
- ("L~" ?,B%(B)
- ("N'" ?,BQ(B)
- ("N," ?,DQ(B)
- ("N/" ?,D=(B)
- ("N~" ?,AQ(B)
- ("N~" ?,BR(B)
- ("O'" ?,AS(B)
- ("O-" ?,DR(B)
- ("O/" ?,AX(B)
- ("O:" ?,BU(B)
- ("O\"" ?,AV(B)
- ("O^" ?,AT(B)
- ("O`" ?,AR(B)
- ("O~" ?,AU(B)
- ("R'" ?,B@(B)
- ("R," ?,D#(B)
- ("R~" ?,BX(B)
- ("S'" ?,B&(B)
- ("S," ?,B*(B)
- ("S^" ?,C^(B)
- ("S~" ?,B)(B)
- ("T," ?,B^(B)
- ("T/" ?,A^(B)
- ("T/" ?,D,(B)
- ("T~" ?,B+(B)
- ("U'" ?,AZ(B)
- ("U," ?,DY(B)
- ("U-" ?,D^(B)
- ("U." ?,BY(B)
- ("U:" ?,B[(B)
- ("U\"" ?,A\(B)
- ("U^" ?,A[(B)
- ("U`" ?,AY(B)
- ("U~" ?,D](B)
- ("U~" ?,C](B)
- ("Y'" ?,A](B)
- ("Y=" ?,A%(B)
- ("Z'" ?,B,(B)
- ("Z." ?,B/(B)
- ("Z~" ?,B.(B)
- ("a'" ?,Aa(B)
- ("a," ?,B1(B)
- ("a-" ?,D`(B)
- ("a/" ?,Ae(B)
- ("a\"" ?,Ad(B)
- ("a^" ?,Ab(B)
- ("a_" ?,A*(B)
- ("a`" ?,A`(B)
- ("a~" ?,Ac(B)
- ("a~" ?,Bc(B)
- ("c'" ?,Bf(B)
- ("c," ?,Ag(B)
- ("c." ?,Ce(B)
- ("c^" ?,Cf(B)
- ("c~" ?,Bh(B)
- ("c/" ?,A"(B)
- ("d/" ?,Ap(B)
- ("d/" ?,Bp(B)
- ("d~" ?,Bo(B)
- ("e'" ?,Ai(B)
- ("e," ?,Bj(B)
- ("e-" ?,D:(B)
- ("e." ?,Dl(B)
- ("e/" ?,Af(B)
- ("e\"" ?,Ak(B)
- ("e^" ?,Aj(B)
- ("e`" ?,Ah(B)
- ("e~" ?,Bl(B)
- ("g," ?,D;(B)
- ("g." ?,Cu(B)
- ("g^" ?,Cx(B)
- ("g~" ?,C;(B)
- ("h/" ?,C1(B)
- ("h^" ?,C6(B)
- ("i'" ?,Am(B)
- ("i," ?,Dg(B)
- ("i-" ?,Do(B)
- ("i." ?,C9(B)
- ("i\"" ?,Ao(B)
- ("i^" ?,An(B)
- ("i`" ?,Al(B)
- ("i~" ?,D5(B)
- ("j^" ?,C<(B)
- ("k," ?,Ds(B)
- ("k/" ?,D"(B)
- ("l'" ?,Be(B)
- ("l," ?,D6(B)
- ("l/" ?,B3(B)
- ("l~" ?,B5(B)
- ("n'" ?,Bq(B)
- ("n," ?,Dq(B)
- ("n/" ?,D?(B)
- ("n~" ?,Aq(B)
- ("n~" ?,Br(B)
- ("o'" ?,As(B)
- ("o-" ?,Dr(B)
- ("o/" ?,Ax(B)
- ("o:" ?,Bu(B)
- ("o\"" ?,Av(B)
- ("o^" ?,At(B)
- ("o_" ?,A:(B)
- ("o`" ?,Ar(B)
- ("o~" ?,Au(B)
- ("r'" ?,B`(B)
- ("r," ?,D3(B)
- ("r~" ?,Bx(B)
- ("s'" ?,B6(B)
- ("s," ?,B:(B)
- ("s/" ?,A_(B)
- ("s^" ?,C~(B)
- ("s~" ?,B9(B)
- ("t," ?,B~(B)
- ("t/" ?,A~(B)
- ("t/" ?,D<(B)
- ("t~" ?,B;(B)
- ("u'" ?,Az(B)
- ("u," ?,Dy(B)
- ("u-" ?,D~(B)
- ("u." ?,By(B)
- ("u:" ?,B{(B)
- ("u\"" ?,A|(B)
- ("u^" ?,A{(B)
- ("u`" ?,Ay(B)
- ("u~" ?,D}(B)
- ("u~" ?,C}(B)
- ("y'" ?,A}(B)
- ("y\"" ?,A(B)
- ("z'" ?,B<(B)
- ("z." ?,B?(B)
- ("z~" ?,B>(B)
+;; XEmacs change; only map some characters if our XEmacs supports them, this
+;; is the idea behind the macrolet.
+(macrolet
+ ((quail-define-latin-postfix (&rest rules)
+ (let ((unicode (prog1
+ (getf rules :unicode rules)
+ (remf rules :unicode))))
+ (mapl
+ (function*
+ (lambda ((rule . rules))
+ (let ((assoc (assoc (car rule) rules)))
+ (and assoc
+ (warn "latin-postfix: rule %S overridden by %S"
+ rule assoc)))))
+ (append rules unicode))
+ `(quail-install-map
+ (let ((map ',(let ((map (list nil)))
+ (mapc (function*
+ (lambda ((key trans . rest))
+ (quail-defrule-internal key trans map)))
+ rules)
+ map)))
+ (when latin-post-decent-xemacs-unicode-support
+ (mapc (function*
+ (lambda ((key trans . rest))
+ (setf (aref trans 0)
+ (string (decode-char 'ucs (aref trans 0))))
+ (quail-defrule-internal key trans map)))
+ ',unicode))
+ map)))))
+ (quail-define-latin-postfix
+:unicode (("$/" [#x20ac ",A#(B"]) ;; These override earlier rules, which is
+ ("O/" [#x0152 ",AX(B"]) ;; OK in this limited context.
+ ("Y\"" [#x0178])
+ ("e=" [#x20ac])
+ ("o/" [#x0153 ",Ax(B"]))
+ (" _" ?,A (B)
+ ("!/" ?,A!(B)
+ ("//" ?,A0(B)
+ ("<<" ?\,A+(B)
+ (">>" ?\,A;(B)
+ ("?/" ?,A?(B)
+ ("$/" ?,A#(B)
+ ("A'" ?,AA(B)
+ ("A," ?,B!(B)
+ ("A-" ?,D@(B)
+ ("A/" ?,AE(B)
+ ("A\"" ?,AD(B)
+ ("A^" ?,AB(B)
+ ("A`" ?,A@(B)
+ ("A~" [",AC(B" ",BC(B"])
+ ("C'" ?,BF(B)
+ ("C," ?,AG(B)
+ ("C." ?,CE(B)
+ ("C^" ?,CF(B)
+ ("C~" ?,BH(B)
+ ("D/" [",AP(B" ",BP(B"])
+ ("D~" ?,BO(B)
+ ("E'" ?,AI(B)
+ ("E," ?,BJ(B)
+ ("E-" ?,D*(B)
+ ("E." ?,DL(B)
+ ("E/" ?,AF(B)
+ ("E\"" ?,AK(B)
+ ("E^" ?,AJ(B)
+ ("E`" ?,AH(B)
+ ("E~" ?,BL(B)
+ ("G," ?,D+(B)
+ ("G." ?,CU(B)
+ ("G^" ?,CX(B)
+ ("G~" ?,C+(B)
+ ("H/" ?,C!(B)
+ ("H^" ?,C&(B)
+ ("I'" ?,AM(B)
+ ("I," ?,DG(B)
+ ("I-" ?,DO(B)
+ ("I." ?,C)(B)
+ ("I\"" ?,AO(B)
+ ("I^" ?,AN(B)
+ ("I`" ?,AL(B)
+ ("I~" ?,D%(B)
+ ("J^" ?,C,(B)
+ ("K," ?,DS(B)
+ ("L'" ?,BE(B)
+ ("L," ?,D&(B)
+ ("L/" ?,B#(B)
+ ("L~" ?,B%(B)
+ ("N'" ?,BQ(B)
+ ("N," ?,DQ(B)
+ ("N/" ?,D=(B)
+ ("N~" [",AQ(B" ",BR(B"])
+ ("O'" ?,AS(B)
+ ("O-" ?,DR(B)
+ ("O/" ?,AX(B)
+ ("O:" ?,BU(B)
+ ("O\"" ?,AV(B)
+ ("O^" ?,AT(B)
+ ("O`" ?,AR(B)
+ ("O~" ?,AU(B)
+ ("R'" ?,B@(B)
+ ("R," ?,D#(B)
+ ("R~" ?,BX(B)
+ ("S'" ?,B&(B)
+ ("S," ?,B*(B)
+ ("S^" ?,C^(B)
+ ("S~" ?,B)(B)
+ ("T," ?,B^(B)
+ ("T/" [",A^(B" ",D,(B"])
+ ("T~" ?,B+(B)
+ ("U'" ?,AZ(B)
+ ("U," ?,DY(B)
+ ("U-" ?,D^(B)
+ ("U." ?,BY(B)
+ ("U:" ?,B[(B)
+ ("U\"" ?,A\(B)
+ ("U^" ?,A[(B)
+ ("U`" ?,AY(B)
+ ("U~" [",D](B" "$(D*f(B"])
+ ("Y'" ?,A](B)
+ ("Y=" ?,A%(B)
+ ("Z'" ?,B,(B)
+ ("Z." ?,B/(B)
+ ("Z~" ?,B.(B)
+ ("a'" ?,Aa(B)
+ ("a," ?,B1(B)
+ ("a-" ?,D`(B)
+ ("a/" ?,Ae(B)
+ ("a\"" ?,Ad(B)
+ ("a^" ?,Ab(B)
+ ("a_" ?,A*(B)
+ ("a`" ?,A`(B)
+ ("a~" [",Ac(B" ",Bc(B"])
+ ("c'" ?,Bf(B)
+ ("c," ?,Ag(B)
+ ("c." ?,Ce(B)
+ ("c^" ?,Cf(B)
+ ("c~" ?,Bh(B)
+ ("c/" ?,A"(B)
+ ("d/" [",Ap(B" ",Bp(B"])
+ ("d~" ?,Bo(B)
+ ("e'" ?,Ai(B)
+ ("e," ?,Bj(B)
+ ("e-" ?,D:(B)
+ ("e." ?,Dl(B)
+ ("e/" ?,Af(B)
+ ("e\"" ?,Ak(B)
+ ("e^" ?,Aj(B)
+ ("e`" ?,Ah(B)
+ ("e~" ?,Bl(B)
+ ("g," ?,D;(B)
+ ("g." ?,Cu(B)
+ ("g^" ?,Cx(B)
+ ("g~" ?,C;(B)
+ ("h/" ?,C1(B)
+ ("h^" ?,C6(B)
+ ("i'" ?,Am(B)
+ ("i," ?,Dg(B)
+ ("i-" ?,Do(B)
+ ("i." ?,C9(B)
+ ("i\"" ?,Ao(B)
+ ("i^" ?,An(B)
+ ("i`" ?,Al(B)
+ ("i~" ?,D5(B)
+ ("j^" ?,C<(B)
+ ("k," ?,Ds(B)
+ ("k/" ?,D"(B)
+ ("l'" ?,Be(B)
+ ("l," ?,D6(B)
+ ("l/" ?,B3(B)
+ ("l~" ?,B5(B)
+ ("n'" ?,Bq(B)
+ ("n," ?,Dq(B)
+ ("n/" ?,D?(B)
+ ("n~" [",Aq(B" ",Br(B"])
+ ("o'" ?,As(B)
+ ("o-" ?,Dr(B)
+ ("o/" ?,Ax(B)
+ ("o:" ?,Bu(B)
+ ("o\"" ?,Av(B)
+ ("o^" ?,At(B)
+ ("o_" ?,A:(B)
+ ("o`" ?,Ar(B)
+ ("o~" ?,Au(B)
+ ("r'" ?,B`(B)
+ ("r," ?,D3(B)
+ ("r~" ?,Bx(B)
+ ("s'" ?,B6(B)
+ ("s," ?,B:(B)
+ ("s/" ?,A_(B)
+ ("s^" ?,C~(B)
+ ("s~" ?,B9(B)
+ ("t," ?,B~(B)
+ ("t/" [",A~(B" ",D<(B"])
+ ("t~" ?,B;(B)
+ ("u'" ?,Az(B)
+ ("u," ?,Dy(B)
+ ("u-" ?,D~(B)
+ ("u." ?,By(B)
+ ("u:" ?,B{(B)
+ ("u\"" ?,A|(B)
+ ("u^" ?,A{(B)
+ ("u`" ?,Ay(B)
+ ("u~" [",D}(B" ",C}(B"])
+ ("y'" ?,A}(B)
+ ("y\"" ?,A(B)
+ ("z'" ?,B<(B)
+ ("z." ?,B?(B)
+ ("z~" ?,B>(B)
- ("!//" ["!/"])
- ("///" ["//"])
- ("<<<" ["<<"])
- (">>>" [">>"])
- ("?//" ["?/"])
- ("$//" ["$/"])
- ("A''" ["A'"])
- ("A,," ["A,"])
- ("A--" ["A-"])
- ("A//" ["A/"])
- ("A\"\"" ["A\""])
- ("A^^" ["A^"])
- ("A``" ["A`"])
- ("A~~" ["A~"])
- ("C''" ["C'"])
- ("C,," ["C,"])
- ("C.." ["C."])
- ("C^^" ["C^"])
- ("C~~" ["C~"])
- ("D//" ["D/"])
- ("D~~" ["D~"])
- ("E''" ["E'"])
- ("E,," ["E,"])
- ("E--" ["E-"])
- ("E.." ["E."])
- ("E//" ["E/"])
- ("E\"\"" ["E\""])
- ("E^^" ["E^"])
- ("E``" ["E`"])
- ("E~~" ["E~"])
- ("G,," ["G,"])
- ("G.." ["G."])
- ("G^^" ["G^"])
- ("G~~" ["G~"])
- ("H//" ["H/"])
- ("H^^" ["H^"])
- ("I''" ["I'"])
- ("I,," ["I,"])
- ("I--" ["I-"])
- ("I.." ["I."])
- ("I\"\"" ["I\""])
- ("I^^" ["I^"])
- ("I``" ["I`"])
- ("I~~" ["I~"])
- ("J^^" ["J^"])
- ("K,," ["K,"])
- ("L''" ["L'"])
- ("L,," ["L,"])
- ("L//" ["L/"])
- ("L~~" ["L~"])
- ("N''" ["N'"])
- ("N,," ["N,"])
- ("N//" ["N/"])
- ("N~~" ["N~"])
- ("O''" ["O'"])
- ("O--" ["O-"])
- ("O//" ["O/"])
- ("O::" ["O:"])
- ("O\"\"" ["O\""])
- ("O^^" ["O^"])
- ("O``" ["O`"])
- ("O~~" ["O~"])
- ("R''" ["R'"])
- ("R,," ["R,"])
- ("R~~" ["R~"])
- ("S''" ["S'"])
- ("S,," ["S,"])
- ("S^^" ["S^"])
- ("S~~" ["S~"])
- ("T,," ["T,"])
- ("T//" ["T/"])
- ("T~~" ["T~"])
- ("U''" ["U'"])
- ("U,," ["U,"])
- ("U--" ["U-"])
- ("U.." ["U."])
- ("U::" ["U:"])
- ("U\"\"" ["U\""])
- ("U^^" ["U^"])
- ("U``" ["U`"])
- ("U~~" ["U~"])
- ("Y''" ["Y'"])
- ("Y\"\"" ["Y\""])
- ("Y==" ["Y="])
- ("Z''" ["Z'"])
- ("Z.." ["Z."])
- ("Z~~" ["Z~"])
- ("a''" ["a'"])
- ("a,," ["a,"])
- ("a--" ["a-"])
- ("a//" ["a/"])
- ("a\"\"" ["a\""])
- ("a^^" ["a^"])
- ("a__" ["a_"])
- ("a``" ["a`"])
- ("a~~" ["a~"])
- ("c''" ["c'"])
- ("c,," ["c,"])
- ("c.." ["c."])
- ("c^^" ["c^"])
- ("c~~" ["c~"])
- ("c//" ["c/"])
- ("d//" ["d/"])
- ("d~~" ["d~"])
- ("e''" ["e'"])
- ("e,," ["e,"])
- ("e--" ["e-"])
- ("e.." ["e."])
- ("e//" ["e/"])
- ("e\"\"" ["e\""])
- ("e^^" ["e^"])
- ("e``" ["e`"])
- ("e==" ["e="])
- ("e~~" ["e~"])
- ("g,," ["g,"])
- ("g.." ["g."])
- ("g^^" ["g^"])
- ("g~~" ["g~"])
- ("h//" ["h/"])
- ("h^^" ["h^"])
- ("i''" ["i'"])
- ("i,," ["i,"])
- ("i--" ["i-"])
- ("i.." ["i."])
- ("i\"\"" ["i\""])
- ("i^^" ["i^"])
- ("i``" ["i`"])
- ("i~~" ["i~"])
- ("j^^" ["j^"])
- ("k,," ["k,"])
- ("k//" ["k/"])
- ("l''" ["l'"])
- ("l,," ["l,"])
- ("l//" ["l/"])
- ("l~~" ["l~"])
- ("n''" ["n'"])
- ("n,," ["n,"])
- ("n//" ["n/"])
- ("n~~" ["n~"])
- ("o''" ["o'"])
- ("o--" ["o-"])
- ("o//" ["o/"])
- ("o::" ["o:"])
- ("o\"\"" ["o\""])
- ("o^^" ["o^"])
- ("o__" ["o_"])
- ("o``" ["o`"])
- ("o~~" ["o~"])
- ("r''" ["r'"])
- ("r,," ["r,"])
- ("r~~" ["r~"])
- ("s''" ["s'"])
- ("s,," ["s,"])
- ("s//" ["s/"])
- ("s^^" ["s^"])
- ("s~~" ["s~"])
- ("t,," ["t,"])
- ("t//" ["t/"])
- ("t~~" ["t~"])
- ("u''" ["u'"])
- ("u,," ["u,"])
- ("u--" ["u-"])
- ("u.." ["u."])
- ("u::" ["u:"])
- ("u\"\"" ["u\""])
- ("u^^" ["u^"])
- ("u``" ["u`"])
- ("u~~" ["u~"])
- ("y''" ["y'"])
- ("y\"\"" ["y\""])
- ("z''" ["z'"])
- ("z.." ["z."])
- ("z~~" ["z~"]))
- ;; XEmacs change; only map some characters if our XEmacs supports them.
- (when latin-post-decent-xemacs-unicode-support
- (list (list "$/" (decode-char 'ucs #x20ac))
- (list "O/" (decode-char 'ucs #x152))
- (list "Y\"" (decode-char 'ucs #x178))
- (list "e=" (decode-char 'ucs #x20ac))
- (list "o/" (decode-char 'ucs #x153))))))
+ ("!//" ["!/"])
+ ("///" ["//"])
+ ("<<<" ["<<"])
+ (">>>" [">>"])
+ ("?//" ["?/"])
+ ("$//" ["$/"])
+ ("A''" ["A'"])
+ ("A,," ["A,"])
+ ("A--" ["A-"])
+ ("A//" ["A/"])
+ ("A\"\"" ["A\""])
+ ("A^^" ["A^"])
+ ("A``" ["A`"])
+ ("A~~" ["A~"])
+ ("C''" ["C'"])
+ ("C,," ["C,"])
+ ("C.." ["C."])
+ ("C^^" ["C^"])
+ ("C~~" ["C~"])
+ ("D//" ["D/"])
+ ("D~~" ["D~"])
+ ("E''" ["E'"])
+ ("E,," ["E,"])
+ ("E--" ["E-"])
+ ("E.." ["E."])
+ ("E//" ["E/"])
+ ("E\"\"" ["E\""])
+ ("E^^" ["E^"])
+ ("E``" ["E`"])
+ ("E~~" ["E~"])
+ ("G,," ["G,"])
+ ("G.." ["G."])
+ ("G^^" ["G^"])
+ ("G~~" ["G~"])
+ ("H//" ["H/"])
+ ("H^^" ["H^"])
+ ("I''" ["I'"])
+ ("I,," ["I,"])
+ ("I--" ["I-"])
+ ("I.." ["I."])
+ ("I\"\"" ["I\""])
+ ("I^^" ["I^"])
+ ("I``" ["I`"])
+ ("I~~" ["I~"])
+ ("J^^" ["J^"])
+ ("K,," ["K,"])
+ ("L''" ["L'"])
+ ("L,," ["L,"])
+ ("L//" ["L/"])
+ ("L~~" ["L~"])
+ ("N''" ["N'"])
+ ("N,," ["N,"])
+ ("N//" ["N/"])
+ ("N~~" ["N~"])
+ ("O''" ["O'"])
+ ("O--" ["O-"])
+ ("O//" ["O/"])
+ ("O::" ["O:"])
+ ("O\"\"" ["O\""])
+ ("O^^" ["O^"])
+ ("O``" ["O`"])
+ ("O~~" ["O~"])
+ ("R''" ["R'"])
+ ("R,," ["R,"])
+ ("R~~" ["R~"])
+ ("S''" ["S'"])
+ ("S,," ["S,"])
+ ("S^^" ["S^"])
+ ("S~~" ["S~"])
+ ("T,," ["T,"])
+ ("T//" ["T/"])
+ ("T~~" ["T~"])
+ ("U''" ["U'"])
+ ("U,," ["U,"])
+ ("U--" ["U-"])
+ ("U.." ["U."])
+ ("U::" ["U:"])
+ ("U\"\"" ["U\""])
+ ("U^^" ["U^"])
+ ("U``" ["U`"])
+ ("U~~" ["U~"])
+ ("Y''" ["Y'"])
+ ("Y\"\"" ["Y\""])
+ ("Y==" ["Y="])
+ ("Z''" ["Z'"])
+ ("Z.." ["Z."])
+ ("Z~~" ["Z~"])
+ ("a''" ["a'"])
+ ("a,," ["a,"])
+ ("a--" ["a-"])
+ ("a//" ["a/"])
+ ("a\"\"" ["a\""])
+ ("a^^" ["a^"])
+ ("a__" ["a_"])
+ ("a``" ["a`"])
+ ("a~~" ["a~"])
+ ("c''" ["c'"])
+ ("c,," ["c,"])
+ ("c.." ["c."])
+ ("c^^" ["c^"])
+ ("c~~" ["c~"])
+ ("c//" ["c/"])
+ ("d//" ["d/"])
+ ("d~~" ["d~"])
+ ("e''" ["e'"])
+ ("e,," ["e,"])
+ ("e--" ["e-"])
+ ("e.." ["e."])
+ ("e//" ["e/"])
+ ("e\"\"" ["e\""])
+ ("e^^" ["e^"])
+ ("e``" ["e`"])
+ ("e==" ["e="])
+ ("e~~" ["e~"])
+ ("g,," ["g,"])
+ ("g.." ["g."])
+ ("g^^" ["g^"])
+ ("g~~" ["g~"])
+ ("h//" ["h/"])
+ ("h^^" ["h^"])
+ ("i''" ["i'"])
+ ("i,," ["i,"])
+ ("i--" ["i-"])
+ ("i.." ["i."])
+ ("i\"\"" ["i\""])
+ ("i^^" ["i^"])
+ ("i``" ["i`"])
+ ("i~~" ["i~"])
+ ("j^^" ["j^"])
+ ("k,," ["k,"])
+ ("k//" ["k/"])
+ ("l''" ["l'"])
+ ("l,," ["l,"])
+ ("l//" ["l/"])
+ ("l~~" ["l~"])
+ ("n''" ["n'"])
+ ("n,," ["n,"])
+ ("n//" ["n/"])
+ ("n~~" ["n~"])
+ ("o''" ["o'"])
+ ("o--" ["o-"])
+ ("o//" ["o/"])
+ ("o::" ["o:"])
+ ("o\"\"" ["o\""])
+ ("o^^" ["o^"])
+ ("o__" ["o_"])
+ ("o``" ["o`"])
+ ("o~~" ["o~"])
+ ("r''" ["r'"])
+ ("r,," ["r,"])
+ ("r~~" ["r~"])
+ ("s''" ["s'"])
+ ("s,," ["s,"])
+ ("s//" ["s/"])
+ ("s^^" ["s^"])
+ ("s~~" ["s~"])
+ ("t,," ["t,"])
+ ("t//" ["t/"])
+ ("t~~" ["t~"])
+ ("u''" ["u'"])
+ ("u,," ["u,"])
+ ("u--" ["u-"])
+ ("u.." ["u."])
+ ("u::" ["u:"])
+ ("u\"\"" ["u\""])
+ ("u^^" ["u^"])
+ ("u``" ["u`"])
+ ("u~~" ["u~"])
+ ("y''" ["y'"])
+ ("y\"\"" ["y\""])
+ ("z''" ["z'"])
+ ("z.." ["z."])
+ ("z~~" ["z~"])))
;; Derived from Slovenian.kmap from Yudit
;; attributed as: 2001-11-11 Roman Maurer <roman.maurer(a)amis.net>
--
‘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