Ihor Radchenko <yanta...@posteo.net> writes: > Stefan Kangas <stefankan...@gmail.com> writes: > >> Org mode is still using the obsolete function `lisp-complete-symbol`, >> but that function has been obsoleted in favor of `completion-at-point` >> in version 24.4. The attached diff is not meant to be installed, but to >> show where the problem is. >> >> The usual schedule for removing obsolete functions in Emacs would >> suggest that `lisp-complete-symbol` will be removed in Emacs 31.1, but >> we can't do that if Org mode is still using it. >> >> Could you please look into this? > > AFAIK, the purpose of using lisp-complete-symbol is providing completion > inside special major mode for editing Org mode table formulas. > Org mode's table formulas can use Elisp sexps, which is why we want to > borrow completion from emacs-lisp-mode. > > I am attaching tentative patch to make use of completion-at-point. > Let me know if you see something obviously wrong.
Thanks for looking into this. I can't see any problems with your patch, myself. Could we install it on master in emacs.git separately, so that we can delete this obsolete function too? > From 8af89d490745b42475b7509c5ff18a49da0acd4b Mon Sep 17 00:00:00 2001 > Message-ID: > <8af89d490745b42475b7509c5ff18a49da0acd4b.1739637389.git.yanta...@posteo.net> > From: Ihor Radchenko <yanta...@posteo.net> > Date: Sat, 15 Feb 2025 17:35:33 +0100 > Subject: [PATCH] org-table: Get rid of obsolete `lisp-complete-symbol' > > * lisp/org-table.el (org-table-edit-formulas): Setup completion as in > emacs-lisp-mode. > (org-table-fedit-map): > (org-table-fedit-menu): > (org-table-fedit-post-command): Use `completion-at-point' instead of > `lisp-complete-symbol' as suggested in the obsoletion warning. > --- > lisp/org-table.el | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/lisp/org-table.el b/lisp/org-table.el > index 0147fe4408..21286f59b0 100644 > --- a/lisp/org-table.el > +++ b/lisp/org-table.el > @@ -3326,8 +3326,8 @@ (defvar org-table-fedit-map > (org-defkey map [(shift right)] 'org-table-fedit-ref-right) > (org-defkey map [(meta up)] 'org-table-fedit-scroll-down) > (org-defkey map [(meta down)] 'org-table-fedit-scroll) > - (org-defkey map [(meta tab)] 'lisp-complete-symbol) > - (org-defkey map "\M-\C-i" 'lisp-complete-symbol) > + (org-defkey map [(meta tab)] 'completion-at-point) > + (org-defkey map "\M-\C-i" 'completion-at-point) > (org-defkey map [(tab)] 'org-table-fedit-lisp-indent) > (org-defkey map "\C-i" 'org-table-fedit-lisp-indent) > (org-defkey map "\C-c\C-r" 'org-table-fedit-toggle-ref-type) > @@ -3341,7 +3341,7 @@ (easy-menu-define org-table-fedit-menu > org-table-fedit-map "Org Edit Formulas Me > ["Abort" org-table-fedit-abort t] > "--" > ["Pretty-Print Lisp Formula" org-table-fedit-lisp-indent t] > - ["Complete Lisp Symbol" lisp-complete-symbol t] > + ["Complete Lisp Symbol" completion-at-point t] (The final `t' there is redundant and can be left out.) > "--" > "Shift Reference at Point" > ["Up" org-table-fedit-ref-up t] > @@ -3400,6 +3400,9 @@ (defun org-table-edit-formulas () > (setq-local org-table--fedit-source source) > (setq-local org-window-configuration wc) > (setq-local org-selected-window sel-win) > + ;; Use completion from `emacs-lisp-mode' > + (add-hook 'completion-at-point-functions > + #'elisp-completion-at-point nil 'local) > (use-local-map org-table-fedit-map) > (add-hook 'post-command-hook #'org-table-fedit-post-command t t) > (setq startline (org-current-line)) > @@ -3430,7 +3433,7 @@ (defun org-table-edit-formulas () > See menu for more commands."))))) > > (defun org-table-fedit-post-command () > - (when (not (memq this-command '(lisp-complete-symbol))) > + (when (not (memq this-command '(lisp-complete-symbol completion-at-point))) > (let ((win (selected-window))) > (save-excursion > (ignore-errors (org-table-show-reference)) > -- > 2.47.1 > > > -- > Ihor Radchenko // yantar92, > Org mode maintainer, > Learn more about Org mode at <https://orgmode.org/>. > Support Org development at <https://liberapay.com/org-mode>, > or support my work at <https://liberapay.com/yantar92>