[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Using digits and letters to select company-mode candidates.
From: |
Hongyi Zhao |
Subject: |
Re: Using digits and letters to select company-mode candidates. |
Date: |
Wed, 29 Sep 2021 18:42:10 +0800 |
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?
I don't know. In fact, I commented out the following code block when using it:
; (define-key map " " (lambda ()
; (interactive)
; (company-abort)
; (self-insert-command 1)))
; (define-key map (kbd "<return>") nil)
> > 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
Thank you for your insightful comments/tips. But I still don't know
how to interface them with the original code snippets. Ashamed of my
superficial knowledge of lisp.
HZ