sage-shell-mode
sage-shell-mode copied to clipboard
TAB gives `py-forward-statement: buffer not in python-mode`
Since upgrading Emacs and a load of packages, hitting TAB in a file with sage-mode often gives me the error py-forward-statement: buffer not in python-mode.
For instance, with a file containing:
def f():
return 1
I get the error hitting TAB on the return line, but not on the def line.
This also happens in a clean emacs with emacs -q.
I'm using MELPA's python-mode 20170803.405
This is because py-forward-statement checks if major-mode is strictly equal to python-mode (I opened an issue in the python-mode repository https://gitlab.com/python-mode-devs/python-mode/issues/39). The following is a workaround by advice:
(defun sage-shell-around-advice (fun &rest args)
(let ((major-mode 'python-mode))
(apply fun args)))
(advice-add 'py-forward-statement :around #'sage-shell-around-advice)
(advice-add 'py-switch-imenu-index-function :around #'sage-shell-around-advice)
Thanks for your super-snappy reply! I'll use the workaround for now.