all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Hongyi Zhao <hongyi.zhao@gmail.com>
To: Emanuel Berg <moasenwood@zoho.eu>,
	help-gnu-emacs <help-gnu-emacs@gnu.org>
Subject: Re: Using digits and letters to select company-mode candidates.
Date: Mon, 4 Oct 2021 19:55:18 +0800	[thread overview]
Message-ID: <CAGP6POKO_W4jf1gkaf-2zVBBUQeUyMj1dpCVPNi3-L_Zd0PGBQ@mail.gmail.com> (raw)
In-Reply-To: <CAGP6PO+P=Tf4d56X78dPT7Htm43j2SLjmrXrKcV8PnFaWrOQHQ@mail.gmail.com>

On Wed, Sep 29, 2021 at 6:49 PM Hongyi Zhao <hongyi.zhao@gmail.com> wrote:
>
> On Wed, Sep 29, 2021 at 2:23 PM Emanuel Berg via Users list for the
> GNU Emacs text editor <help-gnu-emacs@gnu.org> wrote:
> >
> > Hongyi Zhao wrote:
> >
> > > (define-key map (kbd "<return>") nil))
> >
> > I've heard one should put keys to #'ignore if one wants them
> > to do nothing, is that what you want here?
> >
> > > The above code enables to select and insert company-mode
> > > candidates using digits without modifier. But it can only
> > > support 10 candidates, numbered 0-9. I want to extend this
> > > feature to support more candidates bumbered with a single
> > > digit or letter, e.g., 0-9, q, w, e, r, t, y
> >
> > Hm ... maybe something like this?
> >
> > (defun letter-to-pos (l)
> >   (let ((fst ?a))
> >     (when (>= l fst)
> >       (+ 10 (- l fst) ))))
> >
> > ;; (letter-to-pos ?a) ; 10
> > ;; (letter-to-pos ?b) ; 11
> > ;;                ..  ; ..
> > ;; (letter-to-pos ?z) ; 35
> >
> > Or this?
> >
> > (require 'cl-lib)
> >
> > (defun letter-to-index (l &optional offset)
> >   (let*((letters (list ?q ?w ?e ?r ?t ?y))
> >         (pos     (cl-position l letters))
> >         (offs    (or offset 10)) )
> >     (when pos
> >       (+ offs pos) )))
> >
> > ;; (letter-to-index ?a) ; nil
> > ;; (letter-to-index ?q) ; 10
> > ;; (letter-to-index ?w) ; 11
> > ;; (letter-to-index ?e) ; 12
> > ;; (letter-to-index ?r) ; 13
> > ;; (letter-to-index ?t) ; 14
> > ;; (letter-to-index ?y) ; 15
> > ;; (letter-to-index ?u) ; nil
>
> Just as the original author abo-abo has mentioned there [1]:
>
> Unless the number is potentially part of the candidate.
> In that case, insert the number.
>
>
> In the extended version, the corresponding problems should also be
> handled correctly, i.e.:
>
> Unless the number or letter is potentially part of the candidate.
> In that case, insert the number or letter.

Hongyi Zhao wrote:

> Unless the number is potentially part of the candidate.
> In that case, insert the number.

Make a list of candidates, then use `cl-find-if' and
`string-match'.

Thank you for your advice and tips. I will try to see if I can solve
this problem. I’ve just seen your reply in the archive here[1]. Since
you only reply to the list, not including my email address, which led
to all your replies to be deleted by my filter.

[1] https://lists.gnu.org/archive/html/help-gnu-emacs/2021-09/msg00548.html

BTW, the code snippet that confuses me the most is the following part [2]:

(defun ora--company-good-prefix-p (orig-fn prefix)
(unless (and (stringp prefix) (string-match-p "\\`[0-9]+\\'" prefix))
(funcall orig-fn prefix)))
(ora-advice-add 'company--good-prefix-p :around #'ora--company-good-prefix-p)

According to my tries, even I commented them out, the method suggested
there still works smoothly.

https://github.com/abo-abo/oremacs/blob/3809390019a7083c28e8502a82da94ca3a8ebba0/modes/ora-company.el#L41-L44

Best, HZ

> I'm afraid that the above suggested code doesn't include the
> corresponding manipulation for this problem.
>
> [1] https://github.com/abo-abo/oremacs/blob/3809390019a7083c28e8502a82da94ca3a8ebba0/modes/ora-company.el#L22
>
> HZ



      parent reply	other threads:[~2021-10-04 11:55 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-29  0:57 Using digits and letters to select company-mode candidates Hongyi Zhao
2021-09-29  6:23 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-09-29 10:42   ` Hongyi Zhao
2021-09-29 10:49   ` Hongyi Zhao
2021-09-29 18:50     ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-10-04 11:55     ` Hongyi Zhao [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAGP6POKO_W4jf1gkaf-2zVBBUQeUyMj1dpCVPNi3-L_Zd0PGBQ@mail.gmail.com \
    --to=hongyi.zhao@gmail.com \
    --cc=help-gnu-emacs@gnu.org \
    --cc=moasenwood@zoho.eu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.