aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2013-03-10 17:44:31 -0400
committerStefan Monnier2013-03-10 17:44:31 -0400
commitd3e9f3a8431d8d3e132b19f9b5181e8afed2d1db (patch)
treee903be8c489e60a9a3aa1c5c12904fc76fd4a5e3
parent17f323276b7dea5410d8f495015ebd170ef14091 (diff)
downloademacs-d3e9f3a8431d8d3e132b19f9b5181e8afed2d1db.tar.gz
emacs-d3e9f3a8431d8d3e132b19f9b5181e8afed2d1db.zip
* lisp/term/xterm.el (xterm-function-map): Support format used with
formatOtherKeys=1. Fixes: debbugs:13839
-rw-r--r--etc/NEWS2
-rw-r--r--lisp/ChangeLog3
-rw-r--r--lisp/term/xterm.el232
3 files changed, 123 insertions, 114 deletions
diff --git a/etc/NEWS b/etc/NEWS
index 29ff9399930..364dd8bf53a 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -264,6 +264,8 @@ file using `set-file-extended-attributes'.
264 264
265* Lisp Changes in Emacs 24.4 265* Lisp Changes in Emacs 24.4
266 266
267** `dont-compile' is declared obsolete.
268
267** Support for filesystem notifications. 269** Support for filesystem notifications.
268Emacs now supports notifications of filesystem changes, such as 270Emacs now supports notifications of filesystem changes, such as
269creation, modification, and deletion of files. This requires the 271creation, modification, and deletion of files. This requires the
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 75fa55da3eb..b609b219fc9 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,8 @@
12013-03-10 Stefan Monnier <monnier@iro.umontreal.ca> 12013-03-10 Stefan Monnier <monnier@iro.umontreal.ca>
2 2
3 * term/xterm.el (xterm-function-map): Support format used with
4 formatOtherKeys=1 (bug#13839).
5
3 * emacs-lisp/byte-run.el (dont-compile): Declare obsolete. 6 * emacs-lisp/byte-run.el (dont-compile): Declare obsolete.
4 (with-no-warnings): Use `declare'. 7 (with-no-warnings): Use `declare'.
5 8
diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el
index c03d64a2f54..ecaff7fe3a4 100644
--- a/lisp/term/xterm.el
+++ b/lisp/term/xterm.el
@@ -251,120 +251,124 @@ The relevant features are:
251 251
252 ;; These keys are available in xterm starting from version 216 252 ;; These keys are available in xterm starting from version 216
253 ;; if the modifyOtherKeys resource is set to 1. 253 ;; if the modifyOtherKeys resource is set to 1.
254 254 (dolist (bind '((5 9 [C-tab])
255 (define-key map "\e[27;5;9~" [C-tab]) 255 (5 13 [C-return])
256 (define-key map "\e[27;5;13~" [C-return]) 256 (5 39 [?\C-\'])
257 (define-key map "\e[27;5;39~" [?\C-\']) 257 (5 44 [?\C-,])
258 (define-key map "\e[27;5;44~" [?\C-,]) 258 (5 45 [?\C--])
259 (define-key map "\e[27;5;45~" [?\C--]) 259 (5 46 [?\C-.])
260 (define-key map "\e[27;5;46~" [?\C-.]) 260 (5 47 [?\C-/])
261 (define-key map "\e[27;5;47~" [?\C-/]) 261 (5 48 [?\C-0])
262 (define-key map "\e[27;5;48~" [?\C-0]) 262 (5 49 [?\C-1])
263 (define-key map "\e[27;5;49~" [?\C-1]) 263 ;; Not all C-DIGIT keys have a distinct binding.
264 ;; Not all C-DIGIT keys have a distinct binding. 264 (5 57 [?\C-9])
265 (define-key map "\e[27;5;57~" [?\C-9]) 265 (5 59 [?\C-\;])
266 (define-key map "\e[27;5;59~" [?\C-\;]) 266 (5 61 [?\C-=])
267 (define-key map "\e[27;5;61~" [?\C-=]) 267 (5 92 [?\C-\\])
268 (define-key map "\e[27;5;92~" [?\C-\\]) 268
269 269 (6 33 [?\C-!])
270 (define-key map "\e[27;6;33~" [?\C-!]) 270 (6 34 [?\C-\"])
271 (define-key map "\e[27;6;34~" [?\C-\"]) 271 (6 35 [?\C-#])
272 (define-key map "\e[27;6;35~" [?\C-#]) 272 (6 36 [?\C-$])
273 (define-key map "\e[27;6;36~" [?\C-$]) 273 (6 37 [?\C-%])
274 (define-key map "\e[27;6;37~" [?\C-%]) 274 (6 38 [?\C-&])
275 (define-key map "\e[27;6;38~" [?\C-&]) 275 (6 40 [?\C-\(])
276 (define-key map "\e[27;6;40~" [?\C-(]) 276 (6 41 [?\C-\)])
277 (define-key map "\e[27;6;41~" [?\C-)]) 277 (6 42 [?\C-*])
278 (define-key map "\e[27;6;42~" [?\C-*]) 278 (6 43 [?\C-+])
279 (define-key map "\e[27;6;43~" [?\C-+]) 279 (6 58 [?\C-:])
280 (define-key map "\e[27;6;58~" [?\C-:]) 280 (6 60 [?\C-<])
281 (define-key map "\e[27;6;60~" [?\C-<]) 281 (6 62 [?\C->])
282 (define-key map "\e[27;6;62~" [?\C->]) 282 (6 63 [(control ??)])
283 (define-key map "\e[27;6;63~" [(control ??)]) 283
284 284 ;; These are the strings emitted for various C-M-
285 ;; These are the strings emitted for various C-M- combinations 285 ;; combinations for keyboards whose Meta and Alt
286 ;; for keyboards that the Meta and Alt modifiers are on the same 286 ;; modifiers are on the same key (usually labeled "Alt").
287 ;; key (usually labeled "Alt"). 287 (13 9 [C-M-tab])
288 (define-key map "\e[27;13;9~" [C-M-tab]) 288 (13 13 [C-M-return])
289 (define-key map "\e[27;13;13~" [C-M-return]) 289
290 290 (13 39 [?\C-\M-\'])
291 (define-key map "\e[27;13;39~" [?\C-\M-\']) 291 (13 44 [?\C-\M-,])
292 (define-key map "\e[27;13;44~" [?\C-\M-,]) 292 (13 45 [?\C-\M--])
293 (define-key map "\e[27;13;45~" [?\C-\M--]) 293 (13 46 [?\C-\M-.])
294 (define-key map "\e[27;13;46~" [?\C-\M-.]) 294 (13 47 [?\C-\M-/])
295 (define-key map "\e[27;13;47~" [?\C-\M-/]) 295 (13 48 [?\C-\M-0])
296 (define-key map "\e[27;13;48~" [?\C-\M-0]) 296 (13 49 [?\C-\M-1])
297 (define-key map "\e[27;13;49~" [?\C-\M-1]) 297 (13 50 [?\C-\M-2])
298 (define-key map "\e[27;13;50~" [?\C-\M-2]) 298 (13 51 [?\C-\M-3])
299 (define-key map "\e[27;13;51~" [?\C-\M-3]) 299 (13 52 [?\C-\M-4])
300 (define-key map "\e[27;13;52~" [?\C-\M-4]) 300 (13 53 [?\C-\M-5])
301 (define-key map "\e[27;13;53~" [?\C-\M-5]) 301 (13 54 [?\C-\M-6])
302 (define-key map "\e[27;13;54~" [?\C-\M-6]) 302 (13 55 [?\C-\M-7])
303 (define-key map "\e[27;13;55~" [?\C-\M-7]) 303 (13 56 [?\C-\M-8])
304 (define-key map "\e[27;13;56~" [?\C-\M-8]) 304 (13 57 [?\C-\M-9])
305 (define-key map "\e[27;13;57~" [?\C-\M-9]) 305 (13 59 [?\C-\M-\;])
306 (define-key map "\e[27;13;59~" [?\C-\M-\;]) 306 (13 61 [?\C-\M-=])
307 (define-key map "\e[27;13;61~" [?\C-\M-=]) 307 (13 92 [?\C-\M-\\])
308 (define-key map "\e[27;13;92~" [?\C-\M-\\]) 308
309 309 (14 33 [?\C-\M-!])
310 (define-key map "\e[27;14;33~" [?\C-\M-!]) 310 (14 34 [?\C-\M-\"])
311 (define-key map "\e[27;14;34~" [?\C-\M-\"]) 311 (14 35 [?\C-\M-#])
312 (define-key map "\e[27;14;35~" [?\C-\M-#]) 312 (14 36 [?\C-\M-$])
313 (define-key map "\e[27;14;36~" [?\C-\M-$]) 313 (14 37 [?\C-\M-%])
314 (define-key map "\e[27;14;37~" [?\C-\M-%]) 314 (14 38 [?\C-\M-&])
315 (define-key map "\e[27;14;38~" [?\C-\M-&]) 315 (14 40 [?\C-\M-\(])
316 (define-key map "\e[27;14;40~" [?\C-\M-\(]) 316 (14 41 [?\C-\M-\)])
317 (define-key map "\e[27;14;41~" [?\C-\M-\)]) 317 (14 42 [?\C-\M-*])
318 (define-key map "\e[27;14;42~" [?\C-\M-*]) 318 (14 43 [?\C-\M-+])
319 (define-key map "\e[27;14;43~" [?\C-\M-+]) 319 (14 58 [?\C-\M-:])
320 (define-key map "\e[27;14;58~" [?\C-\M-:]) 320 (14 60 [?\C-\M-<])
321 (define-key map "\e[27;14;60~" [?\C-\M-<]) 321 (14 62 [?\C-\M->])
322 (define-key map "\e[27;14;62~" [?\C-\M->]) 322 (14 63 [(control meta ??)])
323 (define-key map "\e[27;14;63~" [(control meta ??)]) 323
324 324 (7 9 [C-M-tab])
325 (define-key map "\e[27;7;9~" [C-M-tab]) 325 (7 13 [C-M-return])
326 (define-key map "\e[27;7;13~" [C-M-return]) 326
327 327 (7 32 [?\C-\M-\s])
328 (define-key map "\e[27;7;32~" [?\C-\M-\s]) 328 (7 39 [?\C-\M-\'])
329 (define-key map "\e[27;7;39~" [?\C-\M-\']) 329 (7 44 [?\C-\M-,])
330 (define-key map "\e[27;7;44~" [?\C-\M-,]) 330 (7 45 [?\C-\M--])
331 (define-key map "\e[27;7;45~" [?\C-\M--]) 331 (7 46 [?\C-\M-.])
332 (define-key map "\e[27;7;46~" [?\C-\M-.]) 332 (7 47 [?\C-\M-/])
333 (define-key map "\e[27;7;47~" [?\C-\M-/]) 333 (7 48 [?\C-\M-0])
334 (define-key map "\e[27;7;48~" [?\C-\M-0]) 334 (7 49 [?\C-\M-1])
335 (define-key map "\e[27;7;49~" [?\C-\M-1]) 335 (7 50 [?\C-\M-2])
336 (define-key map "\e[27;7;50~" [?\C-\M-2]) 336 (7 51 [?\C-\M-3])
337 (define-key map "\e[27;7;51~" [?\C-\M-3]) 337 (7 52 [?\C-\M-4])
338 (define-key map "\e[27;7;52~" [?\C-\M-4]) 338 (7 53 [?\C-\M-5])
339 (define-key map "\e[27;7;53~" [?\C-\M-5]) 339 (7 54 [?\C-\M-6])
340 (define-key map "\e[27;7;54~" [?\C-\M-6]) 340 (7 55 [?\C-\M-7])
341 (define-key map "\e[27;7;55~" [?\C-\M-7]) 341 (7 56 [?\C-\M-8])
342 (define-key map "\e[27;7;56~" [?\C-\M-8]) 342 (7 57 [?\C-\M-9])
343 (define-key map "\e[27;7;57~" [?\C-\M-9]) 343 (7 59 [?\C-\M-\;])
344 (define-key map "\e[27;7;59~" [?\C-\M-\;]) 344 (7 61 [?\C-\M-=])
345 (define-key map "\e[27;7;61~" [?\C-\M-=]) 345 (7 92 [?\C-\M-\\])
346 (define-key map "\e[27;7;92~" [?\C-\M-\\]) 346
347 347 (8 33 [?\C-\M-!])
348 (define-key map "\e[27;8;33~" [?\C-\M-!]) 348 (8 34 [?\C-\M-\"])
349 (define-key map "\e[27;8;34~" [?\C-\M-\"]) 349 (8 35 [?\C-\M-#])
350 (define-key map "\e[27;8;35~" [?\C-\M-#]) 350 (8 36 [?\C-\M-$])
351 (define-key map "\e[27;8;36~" [?\C-\M-$]) 351 (8 37 [?\C-\M-%])
352 (define-key map "\e[27;8;37~" [?\C-\M-%]) 352 (8 38 [?\C-\M-&])
353 (define-key map "\e[27;8;38~" [?\C-\M-&]) 353 (8 40 [?\C-\M-\(])
354 (define-key map "\e[27;8;40~" [?\C-\M-\(]) 354 (8 41 [?\C-\M-\)])
355 (define-key map "\e[27;8;41~" [?\C-\M-\)]) 355 (8 42 [?\C-\M-*])
356 (define-key map "\e[27;8;42~" [?\C-\M-*]) 356 (8 43 [?\C-\M-+])
357 (define-key map "\e[27;8;43~" [?\C-\M-+]) 357 (8 58 [?\C-\M-:])
358 (define-key map "\e[27;8;58~" [?\C-\M-:]) 358 (8 60 [?\C-\M-<])
359 (define-key map "\e[27;8;60~" [?\C-\M-<]) 359 (8 62 [?\C-\M->])
360 (define-key map "\e[27;8;62~" [?\C-\M->]) 360 (8 63 [(control meta ??)])
361 (define-key map "\e[27;8;63~" [(control meta ??)]) 361
362 362 (2 9 [S-tab])
363 (define-key map "\e[27;2;9~" [S-tab]) 363 (2 13 [S-return])
364 (define-key map "\e[27;2;13~" [S-return]) 364
365 365 (6 9 [C-S-tab])
366 (define-key map "\e[27;6;9~" [C-S-tab]) 366 (6 13 [C-S-return])))
367 (define-key map "\e[27;6;13~" [C-S-return]) 367 (define-key map
368 (format "\e[27;%d;%d~" (nth 0 bind) (nth 1 bind)) (nth 2 bind))
369 ;; For formatOtherKeys=1, the sequence is a bit shorter (bug#13839).
370 (define-key map
371 (format "\e[%d;%du" (nth 1 bind) (nth 0 bind)) (nth 2 bind)))
368 372
369 ;; Other versions of xterm might emit these. 373 ;; Other versions of xterm might emit these.
370 (define-key map "\e[A" [up]) 374 (define-key map "\e[A" [up])