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

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

Re: Bind two commands to one key to toggle between them for the same loc


From: Hongyi Zhao
Subject: Re: Bind two commands to one key to toggle between them for the same local keymap.
Date: Fri, 22 Oct 2021 17:26:09 +0800

On Fri, Oct 22, 2021 at 5:15 PM Hongyi Zhao <hongyi.zhao@gmail.com> wrote:
>
> On Fri, Oct 22, 2021 at 4:34 PM Emanuel Berg via Users list for the
> GNU Emacs text editor <help-gnu-emacs@gnu.org> wrote:
> >
> > Hongyi Zhao wrote:
> >
> > >>>     ("<tab>" . (lamda () (if (company-search-mode)
> > >>>                     #'company-search-abort
> > >>>                     #'company-search-candidates)))
> > >>>
> > >>> What's the problem?
> > >>
> > >> Several :)
> > >
> > > I'm at the end of my rope
> >
> > Without knowing the situation ...
> >
> > (require 'company)
> >
> > (defun company-search-hz ()
> >   (interactive)
> >   (if (eq major-mode 'company-search-mode)
> >       (company-search-abort)
> >     (company-search-candidates) ))
> >
> > (define-key company-mode-map "\t" #'company-search-hz)
>
> Thank you for your idea. `company-search-mode' is a minor mode, and
> according to the notes here [1], I changed your function to the
> following:
>
>   (defun hz-company-search ()
>     (interactive)
>     (if (bound-and-true-p company-search-mode)
>     (company-search-abort)
>       (company-search-candidates)))
>
>   (define-key company-mode-map "\t" #'hz-company-search)
>
> Based on my testing, it doesn't work as expected.

I mean, it works differently from the behavior given by the following
use-packatge configuration:

(use-package company
:bind
(:map company-active-map
    ("<tab>" . company-search-candidates)
    ("<f1>" . company-search-abort)

    :map company-search-map
    ("<tab>" . company-search-candidates)
    ("<f1>" . company-search-abort))


With the above configuration, "<tab>" and "<f1>" will call the
corresponding interactive Lisp closure correctly, but I have to use
two different keys.

HZ



reply via email to

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