sage-shell-mode icon indicating copy to clipboard operation
sage-shell-mode copied to clipboard

TAB gives `py-forward-statement: buffer not in python-mode`

Open johanrosenkilde opened this issue 8 years ago • 3 comments

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.

johanrosenkilde avatar Aug 11 '17 12:08 johanrosenkilde

I'm using MELPA's python-mode 20170803.405

johanrosenkilde avatar Aug 11 '17 12:08 johanrosenkilde

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)

stakemori avatar Aug 11 '17 14:08 stakemori

Thanks for your super-snappy reply! I'll use the workaround for now.

johanrosenkilde avatar Aug 11 '17 14:08 johanrosenkilde