unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#5668: 23.1.93; comint-mode-map key definitions for [delete] and [kp-delete]
@ 2010-03-01 22:32 Gallagher, Kevin
  2011-07-13 16:51 ` Lars Magne Ingebrigtsen
  2011-07-13 20:01 ` bug#5668: acknowledged by developer (control message for bug #5668) Gallagher, Kevin
  0 siblings, 2 replies; 3+ messages in thread
From: Gallagher, Kevin @ 2010-03-01 22:32 UTC (permalink / raw)
  To: 5668

[-- Attachment #1: Type: text/plain, Size: 7714 bytes --]

This bug report will be sent to the Free Software Foundation,

not to your local site managers!

Please write in English if possible, because the Emacs maintainers

usually do not have translators to read other languages for them.



Your bug report will be posted to the bug-gnu-emacs@gnu.org mailing list,

and to the gnu.emacs.bug news group.



Please describe exactly what actions triggered the bug

and the precise symptoms of the bug.  If you can, give

a recipe starting from `emacs -Q':





In comint.el, the following key definitions have been added to

comint-mode-map:



    ;; The following two are standardly aliased to C-d,

    ;; but they should never do EOF, just delete.

    (define-key map [delete]           'delete-char)

    (define-key map [kp-delete]       'delete-char)



Now, I understand the motivation here BUT, typically, one only defines

mode-specific C-c bindings and mode-specific pull-down menu

bindings in mode maps. In my case, I have delete and kp-delete assigned

to perform an entirely different function. This is the first time any

mode map has ever usurped my custom assignments to the delete and kp-delete

keys. In addition, the above reassignment assumes the user is using a PC

type of keyboard.  If one is using a DEC VT series keyboard, or a DEC VT

terminal series emulator, then the Delete key is located where the PC

Backspace key is located.  In this case, the Delete key assignment in

the global-map will be to DEL, not C-d.



A better approach is NOT to make these assignments unilaterally.

Instead, the code should examine the current key assignment for delete

and kp-delete in current-global-map. ONLY IF the current assignment is

"C-d" should the above redefinitions be made.





If Emacs crashed, and you have the Emacs process in the gdb debugger,

please include the output from the following gdb commands:

    `bt full' and `xbacktrace'.

For information about debugging Emacs, please read the file

/users/gallagk/src/emacs-23.1.93/etc/DEBUG.





In GNU Emacs 23.1.93.1 (i686-pc-linux-gnu, GTK+ Version 2.10.4)

 of 2010-02-28 on houfcs101

Windowing system distributor `AT&T Laboratories Cambridge', version 11.0.3332

configured using `configure  '--prefix=/users/gallagk/usr/local53''



Important settings:

  value of $LC_ALL: nil

  value of $LC_COLLATE: nil

  value of $LC_CTYPE: nil

  value of $LC_MESSAGES: nil

  value of $LC_MONETARY: nil

  value of $LC_NUMERIC: nil

  value of $LC_TIME: nil

  value of $LANG: C

  value of $XMODIFIERS: nil

  locale-coding-system: nil

  default enable-multibyte-characters: t



Major mode: Emacs-Lisp



Minor modes in effect:

  shell-dirtrack-mode: t

  show-paren-mode: t

  display-time-mode: t

  tooltip-mode: t

  mouse-wheel-mode: t

  tool-bar-mode: t

  menu-bar-mode: t

  file-name-shadow-mode: t

  global-font-lock-mode: t

  font-lock-mode: t

  blink-cursor-mode: t

  auto-encryption-mode: t

  auto-compression-mode: t

  line-number-mode: t

  transient-mark-mode: t



Recent input:

~ / s r c / <backspace> <backspace> <backspace> <backspace>

u s r / l o c a l <backspace> <backspace> <backspace>

<backspace> <backspace> <backspace> <backspace> <backspace>

<backspace> . l i s p <tab> <return> SPC SPC SPC SPC

SPC SPC SPC SPC SPC SPC f SPC p f <escape> x e d i

f f SPC b u f f SPC <return> <return> <return> n n

n n p n p n p n p n n n p n n n n n n n n n n n n n

n n n n n n <switch-frame> <down-mouse-1> <mouse-movement>

<mouse-movement> <drag-mouse-1> <down-mouse-1> <mouse-1>

<down-mouse-1> <mouse-1> <down-mouse-5> <mouse-5> <down-mouse-5>

<mouse-5> <double-down-mouse-5> <double-mouse-5> <triple-down-mouse-5>

<triple-mouse-5> <down-mouse-5> <mouse-5> <down-mouse-5>

<mouse-5> <down-mouse-5> <mouse-5> <double-down-mouse-5>

<double-mouse-5> <down-mouse-5> <mouse-5> <down-mouse-5>

<mouse-5> <down-mouse-4> <mouse-4> <double-down-mouse-4>

<double-mouse-4> <triple-down-mouse-4> <triple-mouse-4>

<triple-down-mouse-4> <triple-mouse-4> <triple-down-mouse-4>

<triple-mouse-4> <triple-down-mouse-4> <triple-mouse-4>

<down-mouse-5> <mouse-5> <down-mouse-5> <mouse-5> <down-mouse-5>

<mouse-5> <down-mouse-5> <mouse-5> <double-down-mouse-5>

<double-mouse-5> <triple-down-mouse-5> <triple-mouse-5>

<down-mouse-4> <mouse-4> <down-mouse-1> <mouse-movement>

<mouse-movement> <drag-mouse-1> <down-mouse-1> <mouse-1>

<down-mouse-1> <mouse-movement> <mouse-movement> <drag-mouse-1>

<help-echo> <down-mouse-1> <mouse-movement> <drag-mouse-1>

C-h k e o C-/ <help-echo> <down-mouse-1> <mouse-1>

q <help-echo> <down-mouse-1> <mouse-movement> <drag-mouse-1>

<down-mouse-1> <mouse-1> <help-echo> <down-mouse-1>

<mouse-movement> <mouse-movement> <drag-mouse-1> <help-echo>

<down-mouse-1> <mouse-1> <switch-frame> q y <help-echo>

C-h i q C-h f c o m i n t - d e l c h a r - o r - m

a y b e - e o f <return> <help-echo> <down-mouse-1>

<mouse-1> C-x 1 <down-mouse-5> <mouse-5> <down-mouse-5>

<mouse-5> <down-mouse-5> <mouse-5> <down-mouse-5> <mouse-5>

<down-mouse-4> <mouse-4> <double-down-mouse-4> <double-mouse-4>

<triple-down-mouse-4> <triple-mouse-4> <down-mouse-5>

<mouse-5> <down-mouse-5> <mouse-5> <insert> <insert>

<delete> <delete> <delete> <insert> C-h k <delete>

C-h k <kp-decimal> C-h k <delete> <help-echo> <down-mouse-1>

<mouse-movement> <mouse-1> <help-echo> <down-mouse-1>

<mouse-1> <help-echo> <down-mouse-1> <mouse-1> C-x

1 <f12> b SPC SPC f <down-mouse-1> <mouse-movement>

<mouse-movement> <drag-mouse-1> <escape> x r e p o

r SPC b u g SPC <return>



Recent messages:

Only white-space differences in region 22

Refining difference region 23 ...

Region 24 in buffer A is empty [2 times]

Type C-x 4 C-o RET to restore the other window.

Undo!

Quit this Ediff session? (y or n)

Composing main Info directory...done

Type C-x 4 C-o RET to restore the other window.

Type C-x 1 to delete the help window.

Commands: d, s, x, u; f, o, 1, 2, m, v; ~, %; q to quit; ? for help.



Load-path shadows:

None found.



Features:

(shadow sort mail-extr message sendmail ecomplete rfc822 mml mml-sec

password-cache mm-decode mm-bodies mm-encode mailcap mail-parse rfc2231

rfc2047 rfc2045 qp ietf-drums mailabbrev nnheader gnus-util netrc

time-date mm-util mail-prsvr gmm-utils wid-edit mailheader canlock sha1

hex-util hashcash mail-utils emacsbug info ediff-merg ediff-diff

ediff-wind ediff-help ediff-util ediff-mult ediff-init ediff

multi-isearch dired-aux help-mode view ansi-color shell edt picture

ehelp electric clearcase advice help-fns advice-preload tq reporter

executable easymenu dired regexp-opt comint ring cl cl-19 filladapt

paren time tooltip ediff-hook vc-hooks lisp-float-type mwheel x-win

x-dnd font-setting tool-bar dnd fontset image fringe lisp-mode register

page menu-bar rfn-eshadow timer select scroll-bar mldrag mouse jit-lock

font-lock syntax facemenu font-core frame cham georgian utf-8-lang

misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew

greek romanian slovak czech european ethiopic indian cyrillic chinese

case-table epa-hook jka-cmpr-hook help simple abbrev loaddefs button

minibuffer faces cus-face files text-properties overlay md5 base64

format env code-pages mule custom widget hashtable-print-readable

backquote make-network-process dbusbind system-font-setting

font-render-setting gtk x-toolkit x multi-tty emacs)




[-- Attachment #2: Type: text/html, Size: 31708 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#5668: 23.1.93; comint-mode-map key definitions for [delete] and [kp-delete]
  2010-03-01 22:32 bug#5668: 23.1.93; comint-mode-map key definitions for [delete] and [kp-delete] Gallagher, Kevin
@ 2011-07-13 16:51 ` Lars Magne Ingebrigtsen
  2011-07-13 20:01 ` bug#5668: acknowledged by developer (control message for bug #5668) Gallagher, Kevin
  1 sibling, 0 replies; 3+ messages in thread
From: Lars Magne Ingebrigtsen @ 2011-07-13 16:51 UTC (permalink / raw)
  To: Gallagher, Kevin; +Cc: 5668

"Gallagher, Kevin" <Kevin.Gallagher@boeing.com> writes:

>     ;; The following two are standardly aliased to C-d,
>     ;; but they should never do EOF, just delete.
>     (define-key map [delete]           'delete-char)
>     (define-key map [kp-delete]       'delete-char)

[...]

> Now, I understand the motivation here BUT, typically, one only defines
> mode-specific C-c bindings and mode-specific pull-down menu bindings
> in mode maps. In my case, I have delete and kp-delete assigned to
> perform an entirely different function.

Yes, binding [kp-delete] seems rather gratuitous, but many modes bind
[delete].  If you want to rebind them to something else, you can use the
mode hooks to alter their definitions.  So I don't really think this is
a bug.

-- 
(domestic pets only, the antidote for overdose, milk.)
  bloggy blog http://lars.ingebrigtsen.no/





^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#5668: acknowledged by developer (control message for bug #5668)
  2010-03-01 22:32 bug#5668: 23.1.93; comint-mode-map key definitions for [delete] and [kp-delete] Gallagher, Kevin
  2011-07-13 16:51 ` Lars Magne Ingebrigtsen
@ 2011-07-13 20:01 ` Gallagher, Kevin
  1 sibling, 0 replies; 3+ messages in thread
From: Gallagher, Kevin @ 2011-07-13 20:01 UTC (permalink / raw)
  To: 5668@debbugs.gnu.org

[-- Attachment #1: Type: text/plain, Size: 3449 bytes --]

Lars Magne Ingebrigtsen <larsi <at> gnus.org> writes:

> Yes, binding [kp-delete] seems rather gratuitous, but many modes bind
> [delete].  If you want to rebind them to something else, you can use the
> mode hooks to alter their definitions.  So I don't really think this is
> a bug.

I should have been more specific.  The above change affects the EDT Emulation package (bundled with GNU Emacs) in a shell window.  (I am the maintainer of this package.).  Now, EDT Emulation does not run as a mode.  Instead, it copies the global map, escape map, etc., and modifies the copies of these maps, saving off the originals.

During first time setup, when using a Window system, a user executes edt-mapper.el to bind EDT functions to the keypad keys, function keys, and some other keys like Home, PageUp, End, PageDown, Delete, Insert, etc.  This allows the user to map EDT functions to the same (or almost the same) physical location they are bound to on DEC VT-100/VT-200 series keyboards when using the actual EDT editor on DEC VMS computers.

Normally, on a PC keyboard, an EDT Emulation user will map [delete] and [kp-delete] to the function edt-select to correspond to the default mapping in the EDT editor, but users are free to map it differently if they choose.  However, the recent change made to comint.el overrides these EDT Emulation bindings in a shell window, which really puzzled me, at first, until I cracked open comint.el and saw what was going on.

Recently, I discovered in Emacs 23.x that the keymap, local-function-key-map, has new bindings made to all the keypad keys.  These bindings override the behavior expected by edt-mapper.el and prevent it from doing the right thing.  I did develop a workaround to deal with this, but it is rather ugly.  In my .emacs file, I have to unbind all the PC keypad keys like this:

(defun undef-keys-for-edt-mapper ()
  (define-key local-function-key-map [kp-0] nil)
  (define-key local-function-key-map [kp-1] nil)
  (define-key local-function-key-map [kp-2] nil)
  (define-key local-function-key-map [kp-3] nil)
  (define-key local-function-key-map [kp-4] nil)
  (define-key local-function-key-map [kp-5] nil)
  (define-key local-function-key-map [kp-6] nil)
  (define-key local-function-key-map [kp-7] nil)
  (define-key local-function-key-map [kp-8] nil)
  (define-key local-function-key-map [kp-9] nil)
  (define-key local-function-key-map [kp-divide] nil)
  (define-key local-function-key-map [kp-multiply] nil)
  (define-key local-function-key-map [kp-subtract] nil)
  (define-key local-function-key-map [kp-add] nil)
  (define-key local-function-key-map [kp-enter] nil)
  (define-key local-function-key-map [kp-decimal] nil)
  (define-key local-function-key-map [delete] nil)
  ))

And start the EDT Emulation like this:

(defun my-term-setup ()
  ;; Allow rebinding of keypad keys and delete key in EDT
  ;; Emulation by edt-mapper.el. This is accomplished by removing
  ;; lower level redirection of these keys.
  (undef-keys-for-edt-mapper))
  ;; On MS Windows, normal-erase-is-backspace-mode is turned on by
  ;; default. When on, it also remaps most of the keypad keys,
  ;; which breaks EDT Emulation. So, it is turned off, here, to
  ;; prevent the remapping.
  (normal-erase-is-backspace-mode nil)
  (setq edt-word-entities '(?\t ?- ?/))
  (edt-emulation-on)
)
(add-hook 'term-setup-hook 'my-term-setup)

Kevin Gallagher



[-- Attachment #2: Type: text/html, Size: 12665 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2011-07-13 20:01 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-03-01 22:32 bug#5668: 23.1.93; comint-mode-map key definitions for [delete] and [kp-delete] Gallagher, Kevin
2011-07-13 16:51 ` Lars Magne Ingebrigtsen
2011-07-13 20:01 ` bug#5668: acknowledged by developer (control message for bug #5668) Gallagher, Kevin

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).