From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Barry OReilly Newsgroups: gmane.emacs.devel Subject: bug#12022: [PATCH] Unable to use anonymous functions for Key Translations Date: Mon, 13 Aug 2012 20:02:10 -0400 Message-ID: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=20cf306845e595307704c72e851c X-Trace: dough.gmane.org 1344911803 812 80.91.229.3 (14 Aug 2012 02:36:43 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Tue, 14 Aug 2012 02:36:43 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Aug 14 04:36:44 2012 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1T16zn-0001vs-6F for ged-emacs-devel@m.gmane.org; Tue, 14 Aug 2012 04:36:39 +0200 Original-Received: from localhost ([::1]:44248 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T16zl-0004qQ-UN for ged-emacs-devel@m.gmane.org; Mon, 13 Aug 2012 22:36:37 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:43137) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T14aL-00036B-V9 for emacs-devel@gnu.org; Mon, 13 Aug 2012 20:02:15 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T14aJ-000152-85 for emacs-devel@gnu.org; Mon, 13 Aug 2012 20:02:13 -0400 Original-Received: from mail-vc0-f169.google.com ([209.85.220.169]:55976) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T14aJ-00014y-30 for emacs-devel@gnu.org; Mon, 13 Aug 2012 20:02:11 -0400 Original-Received: by vcbfl10 with SMTP id fl10so4683808vcb.0 for ; Mon, 13 Aug 2012 17:02:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=r+CHUOcKAOpCJ3/Zs943K2uRAxgTEbuu1R7/7+DeLso=; b=Odp3HS6IOK3Rum8sd4FEiT6ZA6VOr+zfpbvosAvheHMzyEKpgVHH9KAmcw7bN7W7Z0 7FQ6lRYRM8yzHbhnHLJbfarqRK41C1pr2iwkH6uQmxjfWkokIAqWZ9v0Wqo5TEiq0kTe b8HUGJhzY19IjExdWZvTcuRIJecdDRpx5oAszEITkvZ7VY+S9nQ92kLTuYxUgUHy00Q2 x6dho/dG1S9nevaGrC4QcIlRqBDv99CG7cmYxQ+GTFBCaogZf6qgjc0NxWbnstOZUb7e Pogc3pGcUjAQAoR1GMUuROfBAdbhqO/i9WBaLvbCAi96rUfV52ytEuxzkKnOuIaznqni QZVw== Original-Received: by 10.52.94.179 with SMTP id dd19mr1865374vdb.123.1344902530412; Mon, 13 Aug 2012 17:02:10 -0700 (PDT) Original-Received: by 10.59.9.163 with HTTP; Mon, 13 Aug 2012 17:02:10 -0700 (PDT) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 209.85.220.169 X-Mailman-Approved-At: Mon, 13 Aug 2012 22:36:36 -0400 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:152502 Archived-At: --20cf306845e595307704c72e851c Content-Type: multipart/alternative; boundary=20cf306845e595307304c72e851a --20cf306845e595307304c72e851a Content-Type: text/plain; charset=ISO-8859-1 > Using an anonymous function to translate keys as described in the Elisp manual at http://www.gnu.org/software/emacs/manual/html_node/elisp/Translation-Keymaps.htmldoes not work as expected. > > Using a named function to map C-e to C-c, the Key Translation is successful: > (progn (fset 'foo (lambda (prompt) (kbd "C-c"))) > (define-key key-translation-map (kbd "C-e") 'foo)) > > Using an anonymous function for another keymap binds C-e to the lambda-defined command. > (define-key global-map > (kbd "C-e") > (lambda () (interactive) (message "Inside C-e's lambda"))) > > But using an anonymous function for key-translation-map does not change behavior of inputting C-e: > (define-key key-translation-map > (kbd "C-e") > (lambda (prompt) (kbd "C-c"))) > > I find no reason why the last Elisp shouldn't define a Key Translation. The Elisp manual section on Anonymous Functions states "Anonymous functions are valid wherever function names are." ( http://www.gnu.org/software/emacs/manual/html_node/elisp/Anonymous-Functions.html) Hi, I found where the definition of a key translation is called, and made a patch. The quoted test case works correctly now. Is the change ok? --20cf306845e595307304c72e851a Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable > Using an anonymous function to translate keys as described in the Elis= p manual at http://www.gnu.org/softwar= e/emacs/manual/html_node/elisp/Translation-Keymaps.html does not work a= s expected.
>
> Using a named function to map C-e to C-c, the Key Translation= is successful:
>=A0=A0 (progn (fset 'foo (lambda (prompt) (kbd &= quot;C-c")))
>=A0=A0=A0=A0=A0=A0=A0=A0=A0 (define-key key-transl= ation-map (kbd "C-e") 'foo))
>=A0=A0=A0=A0=A0=A0=A0=A0
> Using an anonymous function for anoth= er keymap binds C-e to the lambda-defined command.
>=A0=A0 (define-ke= y global-map
>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 (kbd "C= -e")
>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 (lambda () (int= eractive) (message "Inside C-e's lambda")))
>=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0
> But using an anonymous funct= ion for key-translation-map does not change behavior of inputting C-e:
&= gt;=A0=A0 (define-key key-translation-map
>=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0 (kbd "C-e")
>=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0 (lambda (prompt) (kbd "C-c")))
>
> I find no reason why the last Elisp shouldn't define a Ke= y Translation.=A0 The Elisp manual section on Anonymous Functions states=20 "Anonymous functions are valid wherever function names are."=A0 (= http://www.gnu.org/software/emacs/man= ual/html_node/elisp/Anonymous-Functions.html )

Hi,
I found where the definition of a key translation is called,=20 and made a patch.=A0 The quoted test case works correctly now.=A0 Is the=20 change ok?

--20cf306845e595307304c72e851a-- --20cf306845e595307704c72e851c Content-Type: text/plain; charset=US-ASCII; name="lambdaKeyTranslation.txt" Content-Disposition: attachment; filename="lambdaKeyTranslation.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h5u86ady0 IyBCYXphYXIgbWVyZ2UgZGlyZWN0aXZlIGZvcm1hdCAyIChCYXphYXIgMC45MCkKIyByZXZpc2lv bl9pZDogZ3VuZGFldGlhcG9AZ21haWwuY29tLTIwMTIwODEyMDIyMzU4LTloZjM4czN5cXJuZ213 ajAKIyB0YXJnZXRfYnJhbmNoOiBienI6Ly9ienIuc2F2YW5uYWguZ251Lm9yZy9lbWFjcy90cnVu ay8KIyB0ZXN0YW1lbnRfc2hhMTogOTdhYzdkMzk2Y2ZjYmY2OTJlOGU4OGRmNDI1ODllY2JhMGZj OGM3MAojIHRpbWVzdGFtcDogMjAxMi0wOC0xMSAyMjoyNDowMyAtMDQwMAojIGJhc2VfcmV2aXNp b25faWQ6IGphc29uckBnbnUub3JnLTIwMTIwODExMTQ1MDI4LWF4MXFhcm42ejBtajVndHIKIyAK IyBCZWdpbiBwYXRjaAo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2tleWJvYXJkLmMnCi0tLSBzcmMv a2V5Ym9hcmQuYwkyMDEyLTA4LTA4IDE1OjUzOjUyICswMDAwCisrKyBzcmMva2V5Ym9hcmQuYwky MDEyLTA4LTEyIDAyOjIzOjU4ICswMDAwCkBAIC04ODM3LDcgKzg4MzcsOCBAQAogICAvKiBJZiB0 aGUga2V5bWFwIGdpdmVzIGEgZnVuY3Rpb24sIG5vdCBhbgogICAgICBhcnJheSwgdGhlbiBjYWxs IHRoZSBmdW5jdGlvbiB3aXRoIG9uZSBhcmcgYW5kIHVzZQogICAgICBpdHMgdmFsdWUgaW5zdGVh ZC4gICovCi0gIGlmIChTWU1CT0xQIChuZXh0KSAmJiAhTklMUCAoRmZib3VuZHAgKG5leHQpKSAm JiBkb19mdW5jYWxsKQorICBpZiAoKFNZTUJPTFAgKG5leHQpICYmICFOSUxQIChGZmJvdW5kcCAo bmV4dCkpIHx8IEZVTkNUSU9OUChuZXh0KSkKKyAgICAgICYmIGRvX2Z1bmNhbGwpCiAgICAgewog ICAgICAgTGlzcF9PYmplY3QgdGVtOwogICAgICAgdGVtID0gbmV4dDsKCiMgQmVnaW4gYnVuZGxl Ckl5QkNZWHBoWVhJZ2NtVjJhWE5wYjI0Z1luVnVaR3hsSUhZMENpTUtRbHBvT1RGQldTWlRXV3A0 cjVNQUFYeGZnQkFRY2VQLzkzc24KM2lDLy8vLzBVQU44OGRGZTlxQUFOSlQxTnBEUTBCb0QwZ2FB YU5IcUdReU5HbnFBMHBNaHRQVXhDYlNBQUFBQUFBQUVFazlOSTlKawowQVpNSUFEUUdnQmdqVEVU RWthZXBvd05RRElBQUFBWkFhYUFrb0poQUUwYUUyaVpLYjFKcCtxZU5KcVBVQTBhZWs4b1Q5Y0ZS MVhBCld0aUNCQkcwQUFhaVpxTUdscEJBNHp1eHFHUi9hNElDTW5NUEtXWFVrUmtLSnZ3ek54ZGU3 SFJjWnl2U2lpSVFOTmFlMjZ0NHd0WmcKSVFROFI1ZWpUbXd6WjliT21iV0gyMy9EQmY0SHFLZ2tn NVMvM0phOW1VYzFlbFNHRlV1MlhxVUMrUm00Y3pGUFlrUDZ0RjBURS9nMApSZEFtbTBKeWFPYkp2 Y2U2cUkxTlRZOHZuME1UVG41YkZlcHF0aWhGNHJoRy8wYnBma2NRVFN2YmNJaktCc3Nxb1ZtSThl SXlRRHBDCmRJcU0veFB6WlpNYUJCNExXbUNKQ2J1RmU4YzlNTG92RHl6ME9teFh5VmkwUGF5MkFz UjFXNTlkbllLK2RVOGFXbTQ0aXVxWk1sbkYKTmRNYW43YUlha3pJY25xQ2FSTERLVkNzSjBOaEUy bEFGM2d3dzlsV3ZGUGV4bXFtVDl0Um9yMlJMaEpvTWVTTFJLRWpIVXV3SU15Uwp3VjdDeWVjQktK Q1RpRW9FRzFnYU15OWo3cXIyMGt5c2dMQmxnMlNvVjZaTWpjYlJTbEJ0MDlMelU5Y3lDR3dRSE1K SU9ZNExBQ0ZpClR4YUxPMG05YVVJSHVtbHdSS0FYRUFrZ01QSjQ1V0c0RHpTcVd1TTlCNUV3bytH dmN5M0w5ZkNZQ0NJNFRyQndNWWZmZTlQU3JyU2wKWDNCOXlYcFY1WVlRelpCS25GV0k4MXY4MVlx L05QMTVhTVR4OHA4V1lRRGJQeGJnSVhEQlRyV0pRNk85VEpzcG5SVXlLc2hGVW04dApnV2hTWkpn bU9jcm5KVHIwR0hBNHdseHVYQXZrYXJLaDhmMC9mT0VEbnYxV00rRGJaaDhmMk5QM3dXR3FsUTBN enZ5OXBVVGF6WjZ0CkpuY21MNGF0UGJvejFsU1VndVVWZ0ZFTXkvSVhkYU9PYTR1L2psejE5OHpj U1ZoOXVmRFN3cVBkc01jZzFvWjdKU0V3TVY5REVaVloKM0dZTzFDN2NFek1zWWt5end4VEg0N1N2 UWxrcVlFTjRWK2VGN3NBaWNnMXUrUC9DNDJVS2F2SjZidG14bVFWN2txZ3RCelFpNTYxRwpIdjR2 a3ZCTG9CbXBHaUIzNmVhbDFqRW1LVkJOTUxxNHNvQmdEOXlkQVhiUkRzVVVOeFJGaXBCcWZ3MnpY eVM0OTZzM29KaDA3RTA0ClVGSWRRclZUbFpWczdMVzVhMk1UUzJPbEtuS0Z5NkxhS0d0UFVndHVx Z21waUo3N1NJT253Y29MekZKOXo0UW8xTlY5cDFGUmJHczcKR1Y3QVpCYXAySy9sU1RRLzZxRFdO SzJUa2JJWHpTd3BNNlBuS29LMDNnbXhrMVlkcWFHRzlSU3RqUzNvb3E0SGNCWnFsWHFnV2lrcgpj MGExVDZpOFZHOG85OGYvRjNKRk9GQ1Fhbml2a3c9PQo= --20cf306845e595307704c72e851c--