0

I am working with python using Emacs 26.3. My goal is to jump to definition of the function and jump back, for that I am using https://github.com/jacktasia/dumb-jump, which runs elpy-goto-definition on the background.

I am starting emacs on startup using crontab using (&>/dev/null emacsclient -t -q &). On that case, elpy-goto-definition never works. I have to restart emacs. But after the restart, it takes around 30 seconds for elpy to launch, sometimes it does not launch (I do not know why).

  • What may be the main reason that let elpy-goto-definition to fail. Can I force elpy-goto-definition to work if it fails? or restart elpy within emacs if possible?

My setup:

(setq elpy-rpc-backend "jedi")
(add-hook 'elpy-mode-hook (lambda () (highlight-indentation-mode -1)))
(add-hook 'xref-backend-functions #'dumb-jump-xref-activate)

;; https://emacs.stackexchange.com/a/19194/18414 (defun goto-def-or-rgrep () "Go to definition of thing at point or do an rgrep in project if that fails" (interactive) (condition-case nil (elpy-goto-definition) (error (elpy-rgrep-symbol (thing-at-point 'symbol)))))

(global-set-key "\C-x\C-j" 'goto-def-or-rgrep)

alper
  • 1,370
  • 1
  • 13
  • 35
  • To jump to a definition I simply use M-.and to jump back M-, I have nothing special in my init file. What you do seems very complicated to me. Sorry if I misunderstand your problem. – Raoul HATTERER Feb 12 '21 at 19:00
  • Which function does M-. run in the background? – alper Feb 13 '21 at 13:04
  • M-, runs the command xref-pop-marker-stack (found in global-map), which is an autoloaded interactive compiled Lisp function in ‘xref.el’.

    It is bound to M-*, M-,, .

    (xref-pop-marker-stack)

    Probably introduced at or before Emacs version 25.1.

    Pop back to where M-. was last invoked.

    – Raoul HATTERER Feb 13 '21 at 16:51
  • M-. runs the command xref-find-definitions (found in global-map), which is an autoloaded interactive compiled Lisp function in ‘xref.el’. It is bound to M-., . (xref-find-definitions IDENTIFIER) Find the definition of the identifier at point. With prefix argument or when there’s no identifier at point, prompt for it.If sufficient information is available to determine a unique definition for IDENTIFIER, display it in the selected window. Otherwise, display the list of the possible definitions in a buffer where the user can select from the list. – Raoul HATTERER Feb 13 '21 at 16:55
  • xref-find-definitions returns no definition found even the function is defined – alper Feb 13 '21 at 16:58
  • After bisecting my init file I have the same problem if I remove this line '(elpy-rpc-virtualenv-path "~/.virtualenvs/python3.8") I'll give you an extract of my init file. – Raoul HATTERER Feb 13 '21 at 17:56

1 Answers1

1

To jump to a definition I simply use M-.and to jump back M-, In my init file I have that:

(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.

'(elpy-modules (quote (elpy-module-company elpy-module-eldoc elpy-module-pyvenv elpy-module-highlight-indentation elpy-module-yasnippet elpy-module-django elpy-module-sane-defaults))) '(elpy-rpc-python-command "python3") '(elpy-rpc-virtualenv-path "~/.virtualenvs/python3.8") )

In the menu bar > Elpy > Configure

Elpy Configuration

Emacs.............: 27.1 Elpy..............: 1.35.0 Virtualenv........: None Interactive Python: python 2.7.16 (/usr/bin/python) RPC virtualenv....: python3.8 (/Users/raoul/.virtualenvs/python3.8) Python...........: python3 3.8.1 (/Users/raoul/.virtualenvs/python3.8/bin/python3) Jedi.............: 0.16.0 (0.18.0 available) Rope.............: Not found (0.18.0 available) Autopep8.........: 1.5 (1.5.5 available) Yapf.............: 0.29.0 (0.30.0 available) Black............: 19.10b0 (20.8b1 available) Syntax checker....: Not found (flake8)

Raoul HATTERER
  • 305
  • 1
  • 9