unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* How to truly unbind global bindings?
@ 2014-11-25 11:09 Alexander Shukaev
  2014-11-25 12:16 ` Alexander Shukaev
  0 siblings, 1 reply; 14+ messages in thread
From: Alexander Shukaev @ 2014-11-25 11:09 UTC (permalink / raw)
  To: help-gnu-emacs

I've just tried

(set 'global-map (make-sparse-keymap))


but issuing [C-h][b] still shows tons of mappings, especially in the
*Global Bindings* section:

Global Bindings:
> key             binding
> ---             -------
> C-@             set-mark-command
> C-a             move-beginning-of-line
> C-b             backward-char
> C-d             delete-char
> C-e             move-end-of-line
> C-f             forward-char
> C-g             keyboard-quit
> C-h             help-command
> TAB             indent-for-tab-command
> C-k             kill-line
> C-l             recenter-top-bottom
> RET             newline
> C-n             next-line
> C-o             open-line
> ...             ...


and there are so many more to come.

I would like to get rid of these completely. How can I possibly do that in
one simple function call? I would like the solution to be a total wipeout,
rather than a loop which is setting all of these mappings to `nil'. Thank
you in advance.


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

* Re: How to truly unbind global bindings?
  2014-11-25 11:09 How to truly unbind global bindings? Alexander Shukaev
@ 2014-11-25 12:16 ` Alexander Shukaev
  2014-11-25 15:43   ` Drew Adams
  0 siblings, 1 reply; 14+ messages in thread
From: Alexander Shukaev @ 2014-11-25 12:16 UTC (permalink / raw)
  To: help-gnu-emacs

The answer was:

(use-global-map (make-sparse-keymap))


Sorry for the noise.


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

* RE: How to truly unbind global bindings?
  2014-11-25 12:16 ` Alexander Shukaev
@ 2014-11-25 15:43   ` Drew Adams
  2014-11-25 16:09     ` Alexander Shukaev
  0 siblings, 1 reply; 14+ messages in thread
From: Drew Adams @ 2014-11-25 15:43 UTC (permalink / raw)
  To: Alexander Shukaev, help-gnu-emacs

> The answer was:
> (use-global-map (make-sparse-keymap))

Why do you want to do this?  (Doesn't sound advisable, to me.)

Perhaps if you describe your use case/scenario, people will
have something useful to suggest.  I cannot imagine why anyone
would try to replace the `global-map' with a new, sparse keymap.



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

* Re: How to truly unbind global bindings?
  2014-11-25 15:43   ` Drew Adams
@ 2014-11-25 16:09     ` Alexander Shukaev
  2014-11-25 16:13       ` Drew Adams
  0 siblings, 1 reply; 14+ messages in thread
From: Alexander Shukaev @ 2014-11-25 16:09 UTC (permalink / raw)
  To: Drew Adams; +Cc: help-gnu-emacs

>
> Why do you want to do this?  (Doesn't sound advisable, to me.)
>
> Perhaps if you describe your use case/scenario, people will
> have something useful to suggest.  I cannot imagine why anyone
> would try to replace the `global-map' with a new, sparse keymap.
>

Easy. I almost don't use Emacs default key bindings. I have highly
customized layer on top of Evil, where I have either rewritten or extended
certain text object, operators, and commands. Evil default keymaps were
also wiped out and the keys were totally rearranged by myself too. In other
words, I used evil as a framework to develop my own modal text editing
approach. Those essential commands which I might need from plain Emacs I
would just carefully map to those keys which I want once again, and it's
not that many of them. The rest (like 99%) default mappings are irritating
noise to me. Minimalism and pragmatism FTW.


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

* RE: How to truly unbind global bindings?
  2014-11-25 16:09     ` Alexander Shukaev
@ 2014-11-25 16:13       ` Drew Adams
  2014-11-25 19:04         ` Alexander Shukaev
  0 siblings, 1 reply; 14+ messages in thread
From: Drew Adams @ 2014-11-25 16:13 UTC (permalink / raw)
  To: Alexander Shukaev; +Cc: help-gnu-emacs

>> Why do you want to do this?  (Doesn't sound advisable, to me.)
>> Perhaps if you describe your use case/scenario, people will
>> have something useful to suggest.  I cannot imagine why anyone
>> would try to replace the `global-map' with a new, sparse keymap.
>
> Easy. I almost don't use Emacs default key bindings. I have
> highly customized layer on top of Evil, where I have either
> rewritten or extended certain text object, operators, and
> commands. Evil default keymaps were also wiped out and the
> keys were totally rearranged by myself too. In other words,
> I used evil as a framework to develop my own modal text
> editing approach. Those essential commands which I might
> need from plain Emacs I would just carefully map to those
> keys which I want once again, and it's not that many of them.
> The rest (like 99%) default mappings are irritating noise to me.
> Minimalism and pragmatism FTW.

I see.  Thanks for the background.  Hopefully, someone will be
able to help.



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

* Re: How to truly unbind global bindings?
  2014-11-25 16:13       ` Drew Adams
@ 2014-11-25 19:04         ` Alexander Shukaev
  2014-11-25 19:31           ` Eli Zaretskii
  0 siblings, 1 reply; 14+ messages in thread
From: Alexander Shukaev @ 2014-11-25 19:04 UTC (permalink / raw)
  To: Drew Adams; +Cc: help-gnu-emacs

Since I have wiped out the `global-map' now, I don't have the following:

Global Bindings:
key             binding
---             -------

SPC .. ~ self-insert-command
> \200 .. self-insert-command
> \200 .. \377 self-insert-command


I would have to recreate that manually in my Emacs configuration. I found
the relevant C code in "cmds.c":

  for (n = 040; n < 0177; n++)
    initial_define_key (global_map, n, "self-insert-command");
#ifdef MSDOS
  for (n = 0200; n < 0240; n++)
    initial_define_key (global_map, n, "self-insert-command");
#endif
  for (n = 0240; n < 0400; n++)
    initial_define_key (global_map, n, "self-insert-command");


I understand that the first loop is simply pushing the printable 7-bits of
ASCII table into the `global-map'. Could anyone elaborate what are the rest
loops for? Do I really need them?


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

* Re: How to truly unbind global bindings?
  2014-11-25 19:04         ` Alexander Shukaev
@ 2014-11-25 19:31           ` Eli Zaretskii
  2014-11-25 19:39             ` Alexander Shukaev
  0 siblings, 1 reply; 14+ messages in thread
From: Eli Zaretskii @ 2014-11-25 19:31 UTC (permalink / raw)
  To: help-gnu-emacs

> Date: Tue, 25 Nov 2014 20:04:23 +0100
> From: Alexander Shukaev <haroogan@gmail.com>
> Cc: help-gnu-emacs <help-gnu-emacs@gnu.org>
> 
>   for (n = 040; n < 0177; n++)
>     initial_define_key (global_map, n, "self-insert-command");
> #ifdef MSDOS
>   for (n = 0200; n < 0240; n++)
>     initial_define_key (global_map, n, "self-insert-command");
> #endif
>   for (n = 0240; n < 0400; n++)
>     initial_define_key (global_map, n, "self-insert-command");
> 
> 
> I understand that the first loop is simply pushing the printable 7-bits of
> ASCII table into the `global-map'. Could anyone elaborate what are the rest
> loops for?

Non-ASCII single-byte characters.

> Do I really need them?

I don't understand what you are trying to do enough to answer that.



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

* Re: How to truly unbind global bindings?
  2014-11-25 19:31           ` Eli Zaretskii
@ 2014-11-25 19:39             ` Alexander Shukaev
  2014-11-25 19:50               ` Eli Zaretskii
  0 siblings, 1 reply; 14+ messages in thread
From: Alexander Shukaev @ 2014-11-25 19:39 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: help-gnu-emacs

>
> I don't understand what you are trying to do enough to answer that.
>

 After:

(use-global-map (make-sparse-keymap))

I lost:

Global Bindings:

key             binding
> ---             -------
>


SPC .. ~ self-insert-command
> \200 .. self-insert-command
> \200 .. \377 self-insert-command


which is needed for typing.

I will have to add them back from my configuration. What are symbols
starting from 0200 mean? And do I really need them in the usual workflow?
Or restoring ASCII would be enough? Why some of them are protected with
MSDOS preprocessor check?


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

* Re: How to truly unbind global bindings?
  2014-11-25 19:39             ` Alexander Shukaev
@ 2014-11-25 19:50               ` Eli Zaretskii
  2014-11-25 20:00                 ` Alexander Shukaev
  0 siblings, 1 reply; 14+ messages in thread
From: Eli Zaretskii @ 2014-11-25 19:50 UTC (permalink / raw)
  To: help-gnu-emacs

> Date: Tue, 25 Nov 2014 20:39:37 +0100
> From: Alexander Shukaev <haroogan@gmail.com>
> Cc: help-gnu-emacs <help-gnu-emacs@gnu.org>
> 
> After:
> 
> (use-global-map (make-sparse-keymap))
> 
> I lost:
> 
>     Global Bindings:
> 
>     key binding
>     --- -------
>     
> 
>     SPC .. ~ self-insert-command
>     \200 .. self-insert-command
>     \200 .. \377 self-insert-command
> 
> which is needed for typing.
> 
> I will have to add them back from my configuration. What are symbols starting
> from 0200 mean?

Like I said: single-byte non-ASCII characters.

> And do I really need them in the usual workflow?

Not sure what "the usual workflow" means.

> Or restoring ASCII would be enough?

Probably enough.

> Why some of them are protected with MSDOS preprocessor check?

Because other systems use Latin-1, which start at 0240 octal, while
MS-DOS uses DOS codepages that have valid characters between 0200 and
0240.



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

* Re: How to truly unbind global bindings?
  2014-11-25 19:50               ` Eli Zaretskii
@ 2014-11-25 20:00                 ` Alexander Shukaev
  2014-11-25 20:34                   ` Eli Zaretskii
  2014-11-26  2:57                   ` Yuri Khan
  0 siblings, 2 replies; 14+ messages in thread
From: Alexander Shukaev @ 2014-11-25 20:00 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: help-gnu-emacs

>
> Because other systems use Latin-1, which start at 0240 octal, while
> MS-DOS uses DOS codepages that have valid characters between 0200 and
> 0240.
>
>
Thank you. How can I replicate MS-DOS condition in Emacs Lisp code?
Something like

(unless (eq system-type 'windows-nt)
  ...)

? Which symbol denotes MS-DOS? `ms-dos'?


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

* Re: How to truly unbind global bindings?
  2014-11-25 20:00                 ` Alexander Shukaev
@ 2014-11-25 20:34                   ` Eli Zaretskii
  2014-11-25 21:05                     ` Alexander Shukaev
  2014-11-26  2:57                   ` Yuri Khan
  1 sibling, 1 reply; 14+ messages in thread
From: Eli Zaretskii @ 2014-11-25 20:34 UTC (permalink / raw)
  To: help-gnu-emacs

> Date: Tue, 25 Nov 2014 21:00:19 +0100
> From: Alexander Shukaev <haroogan@gmail.com>
> Cc: help-gnu-emacs <help-gnu-emacs@gnu.org>
> 
> How can I replicate MS-DOS condition in Emacs Lisp code? Something
> like
> 
> (unless (eq system-type 'windows-nt)
> ...)
> 
> ? Which symbol denotes MS-DOS? `ms-dos'?

Yes, 'ms-dos'.



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

* Re: How to truly unbind global bindings?
  2014-11-25 20:34                   ` Eli Zaretskii
@ 2014-11-25 21:05                     ` Alexander Shukaev
  0 siblings, 0 replies; 14+ messages in thread
From: Alexander Shukaev @ 2014-11-25 21:05 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: help-gnu-emacs

Maybe it will be helpful to somebody in the future:

(use-global-map (make-sparse-keymap))

(global-set-key [t] #'self-insert-command)
(let ((c ?\s))
  (while (< c ?\d)
    (global-set-key (vector c) #'self-insert-command)
    (setq c (1+ c)))
  (when (eq system-type 'ms-dos)
    (setq c 128)
    (while (< c 160)
      (global-set-key (vector c) #'self-insert-command)
      (setq c (1+ c))))
  (setq c 160)
  (while (< c 256)
    (global-set-key (vector c) #'self-insert-command)
    (setq c (1+ c))))


Tested. This is how you totally wipe out default global bindings, but
preserve the very basic --- typing of printable characters from 8-bit ASCII
code page.

Best regards,
Alexander


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

* Re: How to truly unbind global bindings?
  2014-11-25 20:00                 ` Alexander Shukaev
  2014-11-25 20:34                   ` Eli Zaretskii
@ 2014-11-26  2:57                   ` Yuri Khan
  2014-11-26  9:33                     ` Alexander Shukaev
  1 sibling, 1 reply; 14+ messages in thread
From: Yuri Khan @ 2014-11-26  2:57 UTC (permalink / raw)
  To: Alexander Shukaev; +Cc: help-gnu-emacs

On Wed, Nov 26, 2014 at 2:00 AM, Alexander Shukaev <haroogan@gmail.com> wrote:

> Thank you. How can I replicate MS-DOS condition in Emacs Lisp code?

Are you really planning to use your configuration on DOS?



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

* Re: How to truly unbind global bindings?
  2014-11-26  2:57                   ` Yuri Khan
@ 2014-11-26  9:33                     ` Alexander Shukaev
  0 siblings, 0 replies; 14+ messages in thread
From: Alexander Shukaev @ 2014-11-26  9:33 UTC (permalink / raw)
  To: Yuri Khan; +Cc: help-gnu-emacs

>
> Are you really planning to use your configuration on DOS?
>

Of course not ;))


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

end of thread, other threads:[~2014-11-26  9:33 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-25 11:09 How to truly unbind global bindings? Alexander Shukaev
2014-11-25 12:16 ` Alexander Shukaev
2014-11-25 15:43   ` Drew Adams
2014-11-25 16:09     ` Alexander Shukaev
2014-11-25 16:13       ` Drew Adams
2014-11-25 19:04         ` Alexander Shukaev
2014-11-25 19:31           ` Eli Zaretskii
2014-11-25 19:39             ` Alexander Shukaev
2014-11-25 19:50               ` Eli Zaretskii
2014-11-25 20:00                 ` Alexander Shukaev
2014-11-25 20:34                   ` Eli Zaretskii
2014-11-25 21:05                     ` Alexander Shukaev
2014-11-26  2:57                   ` Yuri Khan
2014-11-26  9:33                     ` Alexander Shukaev

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).