help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Does code exist to check if a key sequence is valid for Emacs runnin


From: Pierre Rouleau
Subject: Re: Does code exist to check if a key sequence is valid for Emacs running in terminal mode?
Date: Sat, 13 Jul 2024 09:45:54 -0400

On Fri, Jul 12, 2024 at 11:23 PM Emanuel Berg <incal@dataswamp.org> wrote:

> Pierre Rouleau wrote:
>
> > The real reason I want to do that is to prevent reporting
> > key binding clashes in code that tries to use the same key
> > binding for 2 different global key bindings when that key
> > binding is not even possible because Emacs will not be able
> > to react to it.
>
> Can't you just branch on `display-graphic-p'? It is nil here
> but t in a GUI Emacs instance so should work.
>
> Another way is to just set some variable when you start it:
>
> $ HERE="some-system" emacs
>
> then branch on (getenv "HERE").
>
> Sounds easier?
>

Well, perhaps I did not explain the problem properly.
Code is probably easier to provide the context.

Here's the code, published here:
https://github.com/pierre-rouleau/pel/blob/master/pel-spell-iedit.el#L63

(defun pel-spell-iedit-check-conflict ()
  "Check for key binding conflict between flyspell and iedit.


Warn user if necessary."
  (when (and (boundp 'iedit-toggle-key-default)
             (boundp 'flyspell-auto-correct-binding)
             (string= (key-description iedit-toggle-key-default)
                      (key-description flyspell-auto-correct-binding)))
    (display-warning
     'pel-keys
     (format "Both iedit and flyspell bind functions to \"%s\"!\n\


To use this key, change the key selected in one of the following \n\


user options:\n\


- `iedit-toggle-key-default'


- `flyspell-auto-correct-binding'





Then save your changes."
             (key-description flyspell-auto-correct-binding)))))

The above code checks if the user that has configured
the system to use both iedit and flyspell and use their
default key binding that clashes.  Their code has the following:

(defcustom iedit-toggle-key-default (kbd "C-;")
  "If no-nil, the key is inserted into global-map,


isearch-mode-map, esc-map and help-map."
  :type 'vector
  :group 'iedit)

(defcustom flyspell-auto-correct-binding


  [(control ?\;)]


  "The key binding for flyspell auto correction."
  :type 'key-sequence)

The warning is printed on Emacs running in terminal mode
even though when running under a macOS Terminal.app the C-;
cannot be used.

So, I would like to be able to *check* if the key bindings
reported as clashing can be used in the environment
(and yes I use the functions you mentioned)  and if they
can't,  I would change the message.

This code is part of my PEL project at:
https://github.com/pierre-rouleau/pel#readme

I wrote this Emacs Lisp project as a way to control my
Emacs startup, help me learn Emacs and help some friends
transition to Emacs.

I use it on a relatively large number of computers, OSes and Emacs versions
depending on what's available in the environment provided by my customers.

Sorry for the long description, but I hope it provides a better overview
of the context.


-- 
/Pierre


reply via email to

[Prev in Thread] Current Thread [Next in Thread]