From: Stefan Kangas <stefankangas@gmail.com>
To: Lars Ingebrigtsen <larsi@gnus.org>, Eli Zaretskii <eliz@gnu.org>
Cc: emacs-devel@gnu.org
Subject: Re: Moving kbd to subr.el
Date: Thu, 14 Oct 2021 13:28:40 -0700 [thread overview]
Message-ID: <CADwFkmkzzXYvULcV4yJkS+LuxFsAd4YtTghUC-333xSa9+YgYw@mail.gmail.com> (raw)
In-Reply-To: <874k9jzu7a.fsf@gnus.org>
[-- Attachment #1: Type: text/plain, Size: 457 bytes --]
Lars Ingebrigtsen <larsi@gnus.org> writes:
> A NEWS entry saying "kbd can be used in built-in files" would be nice,
> perhaps?
Sure, I'm happy to add that.
> Yeah, I think kbd could just take the optional parameter.
OK, let's do that. Please see the attached updated patch.
(If we really wanted to not have the parameter, I suppose we could use
`set-advertised-calling-convention' and `with-suppressed-warnings' but
that might be too much of a hack.)
[-- Attachment #2: 0001-Make-kbd-usable-during-bootstrap.patch --]
[-- Type: text/x-diff, Size: 7503 bytes --]
From 2424a213e79940eae9dd6c0f612590c3d309a1da Mon Sep 17 00:00:00 2001
From: Stefan Kangas <stefan@marxist.se>
Date: Wed, 13 Oct 2021 01:40:14 +0200
Subject: [PATCH 1/2] Make kbd usable during bootstrap
* lisp/subr.el (kbd): Make 'kbd' usable during bootstrap by copying
the definition of 'read-kbd-macro' into it, and adjusting it to no
longer use CL-Lib functions.
This change is discussed in
https://lists.gnu.org/r/emacs-devel/2021-10/msg00909.html
---
etc/NEWS | 4 ++
lisp/subr.el | 110 +++++++++++++++++++++++++++++++++++++++++++++++++--
2 files changed, 111 insertions(+), 3 deletions(-)
diff --git a/etc/NEWS b/etc/NEWS
index 7dd4d14274..9412c62aa4 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -189,6 +189,10 @@ This function allows defining a number of keystrokes with one form.
** New macro 'defvar-keymap'.
This macro allows defining keymap variables more conveniently.
+---
+** 'kbd' can now be used in built-in, preloaded libraries.
+It no longer depends on edmacro.el and cl-lib.el.
+
\f
* Changes in Emacs 29.1 on Non-Free Operating Systems
diff --git a/lisp/subr.el b/lisp/subr.el
index a1858e5911..1c3dc26a4d 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -933,11 +933,115 @@ kbd
`edmacro-mode').
For an approximate inverse of this, see `key-description'."
- ;; Don't use a defalias, since the `pure' property is true only for
- ;; the calling convention of `kbd'.
(declare (pure t) (side-effect-free t))
;; A pure function is expected to preserve the match data.
- (save-match-data (read-kbd-macro keys)))
+ (save-match-data
+ (let ((case-fold-search nil)
+ (len (length keys)) ; We won't alter keys in the loop below.
+ (pos 0)
+ (res []))
+ (while (and (< pos len)
+ (string-match "[^ \t\n\f]+" keys pos))
+ (let* ((word-beg (match-beginning 0))
+ (word-end (match-end 0))
+ (word (substring keys word-beg len))
+ (times 1)
+ key)
+ ;; Try to catch events of the form "<as df>".
+ (if (string-match "\\`<[^ <>\t\n\f][^>\t\n\f]*>" word)
+ (setq word (match-string 0 word)
+ pos (+ word-beg (match-end 0)))
+ (setq word (substring keys word-beg word-end)
+ pos word-end))
+ (when (string-match "\\([0-9]+\\)\\*." word)
+ (setq times (string-to-number (substring word 0 (match-end 1))))
+ (setq word (substring word (1+ (match-end 1)))))
+ (cond ((string-match "^<<.+>>$" word)
+ (setq key (vconcat (if (eq (key-binding [?\M-x])
+ 'execute-extended-command)
+ [?\M-x]
+ (or (car (where-is-internal
+ 'execute-extended-command))
+ [?\M-x]))
+ (substring word 2 -2) "\r")))
+ ((and (string-match "^\\(\\([ACHMsS]-\\)*\\)<\\(.+\\)>$" word)
+ (progn
+ (setq word (concat (match-string 1 word)
+ (match-string 3 word)))
+ (not (string-match
+ "\\<\\(NUL\\|RET\\|LFD\\|ESC\\|SPC\\|DEL\\)$"
+ word))))
+ (setq key (list (intern word))))
+ ((or (equal word "REM") (string-match "^;;" word))
+ (setq pos (string-match "$" keys pos)))
+ (t
+ (let ((orig-word word) (prefix 0) (bits 0))
+ (while (string-match "^[ACHMsS]-." word)
+ (setq bits (+ bits (cdr (assq (aref word 0)
+ '((?A . ?\A-\^@) (?C . ?\C-\^@)
+ (?H . ?\H-\^@) (?M . ?\M-\^@)
+ (?s . ?\s-\^@) (?S . ?\S-\^@))))))
+ (setq prefix (+ prefix 2))
+ (setq word (substring word 2)))
+ (when (string-match "^\\^.$" word)
+ (setq bits (+ bits ?\C-\^@))
+ (setq prefix (1+ prefix))
+ (setq word (substring word 1)))
+ (let ((found (assoc word '(("NUL" . "\0") ("RET" . "\r")
+ ("LFD" . "\n") ("TAB" . "\t")
+ ("ESC" . "\e") ("SPC" . " ")
+ ("DEL" . "\177")))))
+ (when found (setq word (cdr found))))
+ (when (string-match "^\\\\[0-7]+$" word)
+ (let ((n 0))
+ (dolist (ch (cdr (string-to-list word)))
+ (setq n (+ (* n 8) ch -48)))
+ (setq word (vector n))))
+ (cond ((= bits 0)
+ (setq key word))
+ ((and (= bits ?\M-\^@) (stringp word)
+ (string-match "^-?[0-9]+$" word))
+ (setq key (mapcar (lambda (x) (+ x bits))
+ (append word nil))))
+ ((/= (length word) 1)
+ (error "%s must prefix a single character, not %s"
+ (substring orig-word 0 prefix) word))
+ ((and (/= (logand bits ?\C-\^@) 0) (stringp word)
+ ;; We used to accept . and ? here,
+ ;; but . is simply wrong,
+ ;; and C-? is not used (we use DEL instead).
+ (string-match "[@-_a-z]" word))
+ (setq key (list (+ bits (- ?\C-\^@)
+ (logand (aref word 0) 31)))))
+ (t
+ (setq key (list (+ bits (aref word 0)))))))))
+ (when key
+ (dolist (_ (number-sequence 1 times))
+ (setq res (vconcat res key))))))
+ (when (and (>= (length res) 4)
+ (eq (aref res 0) ?\C-x)
+ (eq (aref res 1) ?\()
+ (eq (aref res (- (length res) 2)) ?\C-x)
+ (eq (aref res (- (length res) 1)) ?\)))
+ (setq res (apply #'vector (let ((lres (append res nil)))
+ ;; Remove the first and last two elements.
+ (setq lres (cdr (cdr lres)))
+ (nreverse lres)
+ (setq lres (cdr (cdr lres)))
+ (nreverse lres)
+ lres))))
+ (if (let ((ret t))
+ (dolist (ch (append res nil))
+ (unless (and (characterp ch)
+ (let ((ch2 (logand ch (lognot ?\M-\^@))))
+ (and (>= ch2 0) (<= ch2 127))))
+ (setq ret nil)))
+ ret)
+ (concat (mapcar (lambda (ch)
+ (if (= (logand ch ?\M-\^@) 0)
+ ch (+ ch 128)))
+ (append res nil)))
+ res))))
(defun undefined ()
"Beep to tell the user this binding is undefined."
--
2.30.2
[-- Attachment #3: 0002-Remove-duplicate-code-in-edmacro-parse-keys.patch --]
[-- Type: text/x-diff, Size: 6734 bytes --]
From cdafa2120e5dd52ea4db0620f81fe7181c33f9a8 Mon Sep 17 00:00:00 2001
From: Stefan Kangas <stefan@marxist.se>
Date: Wed, 13 Oct 2021 22:54:47 +0200
Subject: [PATCH 2/2] Remove duplicate code in edmacro-parse-keys
* lisp/subr.el (kbd): Add argument NEED-VECTOR and make it suitable
for calling from 'edmacro-parse-keys'.
* lisp/edmacro.el (edmacro-parse-keys): Replace definition with a
call to 'kbd'.
This change is discussed in
https://lists.gnu.org/r/emacs-devel/2021-10/msg00909.html
---
lisp/edmacro.el | 96 +------------------------------------------------
lisp/subr.el | 23 +++++++-----
2 files changed, 15 insertions(+), 104 deletions(-)
diff --git a/lisp/edmacro.el b/lisp/edmacro.el
index a4eb574a4c..decb8edbb1 100644
--- a/lisp/edmacro.el
+++ b/lisp/edmacro.el
@@ -640,101 +640,7 @@ edmacro-fix-menu-commands
;;; Parsing a human-readable keyboard macro.
(defun edmacro-parse-keys (string &optional need-vector)
- (let ((case-fold-search nil)
- (len (length string)) ; We won't alter string in the loop below.
- (pos 0)
- (res []))
- (while (and (< pos len)
- (string-match "[^ \t\n\f]+" string pos))
- (let* ((word-beg (match-beginning 0))
- (word-end (match-end 0))
- (word (substring string word-beg len))
- (times 1)
- key)
- ;; Try to catch events of the form "<as df>".
- (if (string-match "\\`<[^ <>\t\n\f][^>\t\n\f]*>" word)
- (setq word (match-string 0 word)
- pos (+ word-beg (match-end 0)))
- (setq word (substring string word-beg word-end)
- pos word-end))
- (when (string-match "\\([0-9]+\\)\\*." word)
- (setq times (string-to-number (substring word 0 (match-end 1))))
- (setq word (substring word (1+ (match-end 1)))))
- (cond ((string-match "^<<.+>>$" word)
- (setq key (vconcat (if (eq (key-binding [?\M-x])
- 'execute-extended-command)
- [?\M-x]
- (or (car (where-is-internal
- 'execute-extended-command))
- [?\M-x]))
- (substring word 2 -2) "\r")))
- ((and (string-match "^\\(\\([ACHMsS]-\\)*\\)<\\(.+\\)>$" word)
- (progn
- (setq word (concat (match-string 1 word)
- (match-string 3 word)))
- (not (string-match
- "\\<\\(NUL\\|RET\\|LFD\\|ESC\\|SPC\\|DEL\\)$"
- word))))
- (setq key (list (intern word))))
- ((or (equal word "REM") (string-match "^;;" word))
- (setq pos (string-match "$" string pos)))
- (t
- (let ((orig-word word) (prefix 0) (bits 0))
- (while (string-match "^[ACHMsS]-." word)
- (cl-incf bits (cdr (assq (aref word 0)
- '((?A . ?\A-\^@) (?C . ?\C-\^@)
- (?H . ?\H-\^@) (?M . ?\M-\^@)
- (?s . ?\s-\^@) (?S . ?\S-\^@)))))
- (cl-incf prefix 2)
- (cl-callf substring word 2))
- (when (string-match "^\\^.$" word)
- (cl-incf bits ?\C-\^@)
- (cl-incf prefix)
- (cl-callf substring word 1))
- (let ((found (assoc word '(("NUL" . "\0") ("RET" . "\r")
- ("LFD" . "\n") ("TAB" . "\t")
- ("ESC" . "\e") ("SPC" . " ")
- ("DEL" . "\177")))))
- (when found (setq word (cdr found))))
- (when (string-match "^\\\\[0-7]+$" word)
- (cl-loop for ch across word
- for n = 0 then (+ (* n 8) ch -48)
- finally do (setq word (vector n))))
- (cond ((= bits 0)
- (setq key word))
- ((and (= bits ?\M-\^@) (stringp word)
- (string-match "^-?[0-9]+$" word))
- (setq key (cl-loop for x across word
- collect (+ x bits))))
- ((/= (length word) 1)
- (error "%s must prefix a single character, not %s"
- (substring orig-word 0 prefix) word))
- ((and (/= (logand bits ?\C-\^@) 0) (stringp word)
- ;; We used to accept . and ? here,
- ;; but . is simply wrong,
- ;; and C-? is not used (we use DEL instead).
- (string-match "[@-_a-z]" word))
- (setq key (list (+ bits (- ?\C-\^@)
- (logand (aref word 0) 31)))))
- (t
- (setq key (list (+ bits (aref word 0)))))))))
- (when key
- (cl-loop repeat times do (cl-callf vconcat res key)))))
- (when (and (>= (length res) 4)
- (eq (aref res 0) ?\C-x)
- (eq (aref res 1) ?\()
- (eq (aref res (- (length res) 2)) ?\C-x)
- (eq (aref res (- (length res) 1)) ?\)))
- (setq res (cl-subseq res 2 -2)))
- (if (and (not need-vector)
- (cl-loop for ch across res
- always (and (characterp ch)
- (let ((ch2 (logand ch (lognot ?\M-\^@))))
- (and (>= ch2 0) (<= ch2 127))))))
- (concat (cl-loop for ch across res
- collect (if (= (logand ch ?\M-\^@) 0)
- ch (+ ch 128))))
- res)))
+ (kbd string need-vector))
(provide 'edmacro)
diff --git a/lisp/subr.el b/lisp/subr.el
index 1c3dc26a4d..93ec76e290 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -925,14 +925,18 @@ remq
\f
;;;; Keymap support.
-(defun kbd (keys)
+(defun kbd (keys &optional need-vector)
"Convert KEYS to the internal Emacs key representation.
KEYS should be a string in the format returned by commands such
as `C-h k' (`describe-key').
This is the same format used for saving keyboard macros (see
`edmacro-mode').
-For an approximate inverse of this, see `key-description'."
+For an approximate inverse of this, see `key-description'.
+
+If NEED-VECTOR is non-nil, always return a vector instead of a
+string. This is mainly intended for use by `edmacro-parse-keys',
+and should normally not be needed."
(declare (pure t) (side-effect-free t))
;; A pure function is expected to preserve the match data.
(save-match-data
@@ -1030,13 +1034,14 @@ kbd
(setq lres (cdr (cdr lres)))
(nreverse lres)
lres))))
- (if (let ((ret t))
- (dolist (ch (append res nil))
- (unless (and (characterp ch)
- (let ((ch2 (logand ch (lognot ?\M-\^@))))
- (and (>= ch2 0) (<= ch2 127))))
- (setq ret nil)))
- ret)
+ (if (and (not need-vector)
+ (let ((ret t))
+ (dolist (ch (append res nil))
+ (unless (and (characterp ch)
+ (let ((ch2 (logand ch (lognot ?\M-\^@))))
+ (and (>= ch2 0) (<= ch2 127))))
+ (setq ret nil)))
+ ret))
(concat (mapcar (lambda (ch)
(if (= (logand ch ?\M-\^@) 0)
ch (+ ch 128)))
--
2.30.2
next prev parent reply other threads:[~2021-10-14 20:28 UTC|newest]
Thread overview: 320+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20211004081724.6281.11798@vcs0.savannah.gnu.org>
[not found] ` <20211004081726.AB24621048@vcs0.savannah.gnu.org>
2021-10-04 8:56 ` master 192f935 1/3: Add 'define-keymap' and 'defvar-keymap' Lars Ingebrigtsen
2021-10-04 9:42 ` Adam Porter
2021-10-04 10:13 ` Lars Ingebrigtsen
2021-10-10 7:40 ` Madhu
2021-10-19 18:02 ` Jonas Bernoulli
2021-10-19 18:18 ` Change indentation of keyword lists/arrays Lars Ingebrigtsen
2021-10-20 16:39 ` Juri Linkov
2021-10-20 19:02 ` Tassilo Horn
2021-10-21 3:02 ` Lars Ingebrigtsen
2021-10-21 3:59 ` [External] : " Drew Adams
2021-10-04 13:06 ` master 192f935 1/3: Add 'define-keymap' and 'defvar-keymap' Stefan Monnier
2021-10-04 13:09 ` Lars Ingebrigtsen
2021-10-04 13:14 ` Stefan Monnier
2021-10-04 13:44 ` Lars Ingebrigtsen
2021-10-04 14:34 ` Lars Ingebrigtsen
2021-10-04 16:17 ` Stefan Monnier
2021-10-05 6:31 ` Lars Ingebrigtsen
[not found] ` <20211004081727.4F24921048@vcs0.savannah.gnu.org>
2021-10-12 12:47 ` master 859190f 2/3: Convert some keymaps to defvar-keymap Stefan Kangas
2021-10-12 13:00 ` Lars Ingebrigtsen
2021-10-12 13:18 ` Stefan Kangas
2021-10-12 13:22 ` Lars Ingebrigtsen
2021-10-12 14:24 ` Stefan Kangas
2021-10-12 20:22 ` Lars Ingebrigtsen
2021-10-12 20:32 ` Lars Ingebrigtsen
2021-10-12 21:34 ` Stefan Kangas
2021-10-12 23:23 ` Lars Ingebrigtsen
2021-10-12 23:40 ` Lars Ingebrigtsen
2021-10-13 3:18 ` Moving kbd to subr.el Stefan Kangas
2021-10-13 11:10 ` Lars Ingebrigtsen
2021-10-13 12:31 ` Eli Zaretskii
2021-10-13 12:42 ` Stefan Monnier
2021-10-13 14:26 ` T.V Raman
2021-10-13 15:01 ` Stefan Kangas
2021-10-13 15:03 ` Stefan Kangas
2021-10-13 16:01 ` T.V Raman
2021-10-13 15:11 ` T.V Raman
2021-10-13 12:50 ` Stefan Kangas
2021-10-13 13:28 ` Eli Zaretskii
2021-10-13 13:33 ` Stefan Kangas
2021-10-13 22:28 ` Stefan Kangas
2021-10-13 22:45 ` Lars Ingebrigtsen
2021-10-13 22:54 ` Lars Ingebrigtsen
2021-10-14 7:23 ` Eli Zaretskii
2021-10-14 11:50 ` Stefan Kangas
2021-10-14 11:56 ` Eli Zaretskii
2021-10-14 12:06 ` Lars Ingebrigtsen
2021-10-14 20:28 ` Stefan Kangas [this message]
2021-10-14 20:55 ` Lars Ingebrigtsen
2021-10-14 21:04 ` Stefan Kangas
2021-10-14 21:13 ` Lars Ingebrigtsen
2021-10-15 2:07 ` Stefan Kangas
2021-10-15 10:28 ` Lars Ingebrigtsen
2021-10-15 11:05 ` Eli Zaretskii
2021-10-15 11:10 ` Eli Zaretskii
2021-10-15 11:34 ` Andreas Schwab
2021-10-15 12:31 ` Lars Ingebrigtsen
2021-10-15 12:39 ` Lars Ingebrigtsen
2021-10-15 13:32 ` Stefan Monnier
2021-10-15 14:04 ` Lars Ingebrigtsen
2021-10-15 14:44 ` Stefan Kangas
2021-10-15 16:05 ` Stefan Monnier
2021-10-15 16:31 ` T.V Raman
2021-10-15 11:26 ` Lars Ingebrigtsen
2021-10-16 13:48 ` Lars Ingebrigtsen
2021-10-16 14:33 ` Stefan Kangas
2021-10-16 15:55 ` Lars Ingebrigtsen
2021-10-17 18:54 ` Lars Ingebrigtsen
2021-10-17 19:32 ` Gregory Heytings
2021-10-17 19:39 ` Eli Zaretskii
2021-10-17 19:42 ` Gregory Heytings
2021-10-17 19:58 ` Lars Ingebrigtsen
2021-10-18 11:41 ` Eli Zaretskii
2021-10-18 11:52 ` Gregory Heytings
2021-10-18 13:01 ` Eli Zaretskii
2021-10-18 13:07 ` Gregory Heytings
2021-10-18 12:40 ` Stefan Monnier
2021-10-20 6:47 ` Richard Stallman
2021-10-20 7:48 ` Lars Ingebrigtsen
2021-10-20 13:18 ` Stefan Kangas
2021-10-21 2:52 ` Lars Ingebrigtsen
2021-10-21 3:36 ` Stefan Kangas
2021-10-21 3:39 ` Lars Ingebrigtsen
2021-10-21 4:07 ` Stefan Kangas
2021-10-21 4:37 ` Lars Ingebrigtsen
2021-10-21 4:58 ` [External] : " Drew Adams
2021-10-20 14:21 ` T.V Raman
2021-10-21 2:53 ` Lars Ingebrigtsen
2021-10-21 14:19 ` T.V Raman
2021-10-20 18:51 ` Philip Kaludercic
2021-10-21 2:53 ` Lars Ingebrigtsen
2021-10-21 13:40 ` Philip Kaludercic
2021-10-22 14:20 ` Lars Ingebrigtsen
2021-10-22 14:57 ` Philip Kaludercic
2021-10-22 15:02 ` Lars Ingebrigtsen
2021-10-22 15:06 ` Philip Kaludercic
2021-10-22 15:10 ` Lars Ingebrigtsen
2021-10-22 18:16 ` Philip Kaludercic
2021-10-22 18:18 ` Lars Ingebrigtsen
2021-10-23 23:29 ` Richard Stallman
2021-10-24 6:10 ` Eli Zaretskii
2021-10-26 3:01 ` Richard Stallman
2021-10-24 13:24 ` Lars Ingebrigtsen
2021-10-24 18:10 ` Corwin Brust
2021-10-24 18:42 ` Lars Ingebrigtsen
2021-10-25 16:06 ` Corwin Brust
2021-10-25 16:10 ` Philip Kaludercic
2021-10-27 14:41 ` Richard Stallman
2021-10-28 12:19 ` Richard Stallman
2021-10-28 12:25 ` Lars Ingebrigtsen
2021-10-30 6:53 ` Richard Stallman
2021-10-30 12:36 ` Lars Ingebrigtsen
2021-10-31 2:39 ` Richard Stallman
2021-10-31 14:57 ` Lars Ingebrigtsen
2021-11-02 3:54 ` New key binding syntax Richard Stallman
2021-11-02 11:08 ` John Yates
2021-11-04 2:36 ` Richard Stallman
2021-11-04 9:37 ` Robert Pluim
2021-11-04 17:09 ` Lars Ingebrigtsen
2021-11-04 22:46 ` John Yates
2021-11-04 22:48 ` Lars Ingebrigtsen
2021-11-04 22:53 ` John Yates
2021-11-05 2:25 ` Lars Ingebrigtsen
2021-11-05 12:21 ` John Yates
2021-11-05 13:45 ` Lars Ingebrigtsen
2021-11-06 13:52 ` John Yates
2021-11-05 3:57 ` Richard Stallman
2021-11-05 5:41 ` Alexandre Garreau
2021-11-06 3:20 ` Richard Stallman
2021-11-02 12:10 ` Dmitry Gutov
2021-11-04 2:36 ` Richard Stallman
2021-11-02 16:22 ` Alexandre Garreau
2021-11-04 2:33 ` Richard Stallman
2021-11-04 8:53 ` Yuri Khan
2021-11-05 6:08 ` Alexandre Garreau
2021-11-05 8:56 ` Yuri Khan
2021-11-05 9:13 ` Alexandre Garreau
2021-11-05 10:03 ` Yuri Khan
2021-11-05 11:04 ` Alexandre Garreau
2021-11-05 12:02 ` Yuri Khan
2021-11-06 3:20 ` Richard Stallman
2021-11-05 5:32 ` Alexandre Garreau
2021-11-07 4:25 ` Richard Stallman
2021-11-07 4:48 ` Emanuel Berg via Emacs development discussions.
2021-11-08 23:50 ` [External] : " Drew Adams
2021-11-10 4:35 ` Richard Stallman
2021-11-10 14:53 ` Stefan Kangas
2021-11-10 17:24 ` Drew Adams
2021-11-13 4:10 ` Richard Stallman
2021-11-13 18:47 ` Drew Adams
2021-11-16 4:05 ` Richard Stallman
2021-11-16 6:21 ` Alexandre Garreau
2021-11-18 3:52 ` Richard Stallman
2021-11-18 5:01 ` Yuri Khan
2021-11-18 14:10 ` Alexandre Garreau
2021-11-18 14:59 ` Yuri Khan
2021-11-18 15:22 ` Eli Zaretskii
2021-11-18 15:39 ` Yuri Khan
2021-11-18 16:50 ` Eli Zaretskii
2021-11-18 15:32 ` Alexandre Garreau
2021-11-18 16:20 ` Yuri Khan
2021-11-18 16:53 ` Eli Zaretskii
2021-11-18 21:13 ` Alexandre Garreau
2021-11-18 11:05 ` Alexandre Garreau
2021-11-18 11:31 ` Stefan Kangas
2021-11-19 4:44 ` Richard Stallman
2021-11-19 6:05 ` Alexandre Garreau
2021-11-19 6:53 ` Po Lu
2021-11-19 7:40 ` Eli Zaretskii
2021-11-19 11:33 ` Alexandre Garreau
2021-11-19 12:43 ` Eli Zaretskii
2021-11-19 12:48 ` Alexandre Garreau
2021-11-16 16:25 ` Drew Adams
2021-11-10 17:24 ` Drew Adams
2021-10-17 19:55 ` Moving kbd to subr.el Lars Ingebrigtsen
2021-10-17 21:20 ` Gregory Heytings
2021-10-18 6:02 ` Lars Ingebrigtsen
2021-10-18 12:46 ` Gregory Heytings
2021-10-18 13:15 ` Lars Ingebrigtsen
2021-10-18 13:50 ` Gregory Heytings
2021-10-18 15:50 ` Stefan Monnier
2021-10-18 16:03 ` Gregory Heytings
2021-10-18 13:53 ` Stefan Kangas
2021-10-18 13:59 ` Lars Ingebrigtsen
2021-10-18 14:44 ` [External] : " Drew Adams
2021-10-18 15:34 ` Stefan Kangas
2021-10-18 15:53 ` Drew Adams
2021-10-18 15:53 ` Stefan Monnier
2021-10-18 15:58 ` Lars Ingebrigtsen
2021-10-18 16:33 ` Stefan Monnier
2021-10-18 20:40 ` Stefan Kangas
2021-10-18 22:26 ` Stefan Monnier
2021-10-19 2:31 ` Eli Zaretskii
2021-10-19 2:30 ` Lars Ingebrigtsen
2021-10-19 7:02 ` Juri Linkov
2021-10-19 7:48 ` Gregory Heytings
2021-10-19 10:46 ` Philip Kaludercic
2021-10-19 13:08 ` Gregory Heytings
2021-10-19 14:48 ` [External] : " Drew Adams
2021-10-19 17:10 ` Stefan Kangas
2021-10-19 17:51 ` Drew Adams
2021-10-19 18:06 ` Drew Adams
2021-10-20 22:34 ` Richard Stallman
2021-10-20 22:34 ` Richard Stallman
2021-10-22 3:29 ` Po Lu
2021-10-19 12:34 ` Stefan Monnier
2021-10-19 13:38 ` Lars Ingebrigtsen
2021-10-19 13:57 ` Stefan Kangas
2021-10-19 14:07 ` Lars Ingebrigtsen
2021-10-19 14:13 ` Stefan Kangas
2021-10-19 14:16 ` Lars Ingebrigtsen
2021-10-19 14:25 ` Stefan Kangas
2021-10-19 14:31 ` Lars Ingebrigtsen
2021-10-19 15:03 ` Robert Pluim
2021-10-19 14:56 ` Andreas Schwab
2021-10-19 14:45 ` Stefan Monnier
2021-10-19 15:09 ` Lars Ingebrigtsen
2021-10-19 19:07 ` Lars Ingebrigtsen
2021-10-19 19:00 ` Howard Melman
2021-10-19 20:53 ` T.V Raman
2021-10-19 20:59 ` Lars Ingebrigtsen
2021-10-19 21:50 ` Dmitry Gutov
2021-10-20 22:37 ` Richard Stallman
2021-10-21 2:54 ` Lars Ingebrigtsen
2021-10-20 1:54 ` T.V Raman
2021-10-19 14:00 ` Dmitry Gutov
2021-10-19 14:03 ` Gregory Heytings
2021-10-19 16:05 ` Gregory Heytings
2021-10-19 17:43 ` Stefan Kangas
2021-10-19 18:54 ` Juri Linkov
2021-10-25 14:22 ` Making a key undefined again Jonas Bernoulli
2021-10-25 14:30 ` [External] : " Drew Adams
2021-10-25 14:37 ` Lars Ingebrigtsen
2021-10-25 17:31 ` Stefan Monnier
2021-10-25 17:48 ` Gregory Heytings
2021-10-25 22:49 ` Jonas Bernoulli
2021-10-25 22:59 ` Jonas Bernoulli
2021-10-25 23:10 ` Stefan Monnier
2021-10-25 23:27 ` Gregory Heytings
2021-10-26 16:11 ` Jonas Bernoulli
2021-10-26 19:33 ` Stefan Monnier
2021-10-18 16:01 ` Moving kbd to subr.el Juri Linkov
2021-10-18 16:27 ` Gregory Heytings
2021-10-19 3:08 ` Lars Ingebrigtsen
2021-10-18 1:41 ` T.V Raman
2021-10-18 11:40 ` Eli Zaretskii
2021-10-14 7:27 ` Andreas Schwab
2021-10-14 11:33 ` Stefan Kangas
2021-10-14 11:53 ` Andreas Schwab
2021-10-14 12:08 ` Lars Ingebrigtsen
2021-10-14 12:24 ` Andreas Schwab
2021-10-14 13:10 ` Stefan Kangas
2021-10-14 13:55 ` Dmitry Gutov
2021-10-14 14:05 ` dick
2021-10-14 14:15 ` Dmitry Gutov
2021-10-14 14:31 ` dick
2021-10-14 14:33 ` Lars Ingebrigtsen
2021-10-14 14:36 ` Gregory Heytings
2021-10-13 12:36 ` Representing key sequences (was: master 859190f 2/3: Convert some keymaps to defvar-keymap) Stefan Monnier
2021-10-13 13:17 ` Stefan Kangas
2021-10-13 16:28 ` Representing key sequences Stefan Monnier
2021-10-13 23:48 ` Lars Ingebrigtsen
2021-10-13 14:12 ` Lars Ingebrigtsen
2021-10-13 14:40 ` Andreas Schwab
2021-10-13 8:54 ` master 859190f 2/3: Convert some keymaps to defvar-keymap Gregory Heytings
2021-10-13 11:15 ` Lars Ingebrigtsen
2021-10-13 12:25 ` Gregory Heytings
2021-10-13 12:59 ` Lars Ingebrigtsen
2021-10-13 12:55 ` Eli Zaretskii
2021-10-13 13:05 ` Gregory Heytings
2021-10-13 13:34 ` Eli Zaretskii
2021-10-13 14:28 ` Gregory Heytings
2021-10-13 14:30 ` Lars Ingebrigtsen
2021-10-13 14:52 ` Stefan Kangas
2021-10-13 15:32 ` Gregory Heytings
2021-10-13 15:45 ` Eli Zaretskii
2021-10-13 16:07 ` Gregory Heytings
2021-10-13 19:01 ` Eli Zaretskii
2021-10-13 21:53 ` Gregory Heytings
2021-10-13 22:55 ` Gregory Heytings
2021-10-14 7:29 ` Eli Zaretskii
2021-10-14 6:48 ` Eli Zaretskii
2021-10-14 7:41 ` Gregory Heytings
2021-10-14 12:07 ` Stefan Kangas
2021-10-14 12:09 ` Lars Ingebrigtsen
2021-10-14 12:27 ` Gregory Heytings
2021-10-14 12:30 ` Lars Ingebrigtsen
2021-10-14 12:58 ` Gregory Heytings
2021-10-14 13:28 ` Lars Ingebrigtsen
2021-10-14 13:31 ` Gregory Heytings
2021-10-14 13:36 ` Lars Ingebrigtsen
2021-10-14 13:41 ` Gregory Heytings
2021-10-14 13:42 ` Lars Ingebrigtsen
2021-10-14 13:53 ` Gregory Heytings
2021-10-14 13:59 ` Lars Ingebrigtsen
2021-10-14 14:14 ` Gregory Heytings
2021-10-14 19:07 ` Stefan Kangas
2021-10-14 19:13 ` Lars Ingebrigtsen
2021-10-14 19:32 ` Gregory Heytings
2021-10-14 20:01 ` Lars Ingebrigtsen
2021-10-14 20:04 ` Stefan Monnier
2021-10-14 20:17 ` Stefan Kangas
2021-10-14 20:35 ` Lars Ingebrigtsen
2021-10-14 20:43 ` Lars Ingebrigtsen
2021-10-14 20:58 ` Stefan Kangas
2021-10-14 21:02 ` Lars Ingebrigtsen
2021-10-14 21:10 ` Andreas Schwab
2021-10-14 21:58 ` Lars Ingebrigtsen
2021-10-16 17:07 ` Gregory Heytings
2021-10-14 20:59 ` Stefan Monnier
2021-10-14 21:11 ` Lars Ingebrigtsen
2021-10-14 19:31 ` Gregory Heytings
2021-10-14 19:54 ` Andreas Schwab
2021-10-14 19:59 ` Gregory Heytings
2021-10-14 22:22 ` Richard Stallman
2021-10-13 22:37 ` Richard Stallman
2021-10-12 19:28 ` Juri Linkov
2021-10-12 20:10 ` Lars Ingebrigtsen
2021-10-12 14:22 ` Eli Zaretskii
2021-10-13 22:36 ` Richard Stallman
2021-10-14 7:25 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CADwFkmkzzXYvULcV4yJkS+LuxFsAd4YtTghUC-333xSa9+YgYw@mail.gmail.com \
--to=stefankangas@gmail.com \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=larsi@gnus.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.