|
From: | Lars Ingebrigtsen |
Subject: | bug#50459: 28.0.50; Python shell completion is incompatible with flex, orderless, etc. |
Date: | Fri, 10 Sep 2021 13:37:57 +0200 |
User-agent: | Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) |
Augusto Stoffel <arstoffel@gmail.com> writes: > To alleviate this, the completion-at-point function could implement some > sort of caching. The difficult question is when to invalidate the > cache. I've attached one possiblility as a draft patch. If the > approach seems reasonable, then I'll format it properly. Would it be possible to do caching at a lower level instead of in python-mode? > As a side effect, the patch also solves the original issue described in > this ticket. [...] > - (list start end > - (completion-table-dynamic > - (apply-partially > - completion-fn > - process import-statement))))) > + (let ((re (or (car python-shell--capf-cache) regexp-unmatchable)) > + (prefix (buffer-substring-no-properties start end))) > + (unless (string-match re prefix) > + (setq python-shell--capf-cache > + (cons (concat "\\`" (regexp-quote prefix) > "\\(?:\\sw\\|\\s_\\)*\\'") > + (funcall completion-fn process import-statement > prefix))))) > + (list start end (cdr python-shell--capf-cache)))) I'm not sure I understand this patch -- it's not using `completion-table-dynamic' at all now? (But my understanding of the completion functions in Emacs is pretty lacking.) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no
[Prev in Thread] | Current Thread | [Next in Thread] |