Differences between revisions 1 and 11 (spanning 10 versions)
Revision 1 as of 2008-06-29 22:33:12
Size: 2398
Editor: schilly
Comment:
Revision 11 as of 2014-09-18 16:29:32
Size: 1802
Editor: iandrus
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Sage in Emacs = = Sage and Emacs =
Line 3: Line 3:
There is support for using SAGE interactively from within emacs, and
editing Python code in emacs:
The purpose of this page is to collect tips and tricks for Sage users
and developpers using the text editor Emacs.
Line 6: Line 6:
 * Download sage.el and byte compile it, or download sage.elc. == Sage-mode ==
Line 8: Line 8:
 * Download python-mode.el and byte compile it, or download python-mode.elc. This is highly recommended since it is a <i>vast improvement</i> over
editing Python code without a special mode.
This emacs mode allows for running a Sage interpreter inside emacs,
and interacting with it sending in chunks of code or doctests,
directly opening the appropriate source files from the help, the
debugger or the tracebacks. It also provides goodies for running
tests, typesetting output, etc.
Line 11: Line 14:
(NOTE: Recent versions of Emacs have their own major mode for Python called [[href="http://cvs.savannah.gnu.org/viewvc/emacs/lisp/progmodes/python.el?root=emacs&view=log python.el]].
So those with GNU Emacs 22 or 23 shouldn't need python-mode.el. The modifications to your .emacs file suggested below will be the same, except you can remove or comment out {{{(load "python-mode")}}}.)
See: [[sage-mode]] or [[http://bitbucket.org/gvol/sage-mode]]
Line 14: Line 16:
 * Download pyrex-mode.el and byte compile it, or download pyrex-mode.elc. == Sage-shell-mode ==
Line 16: Line 18:
 * Put the .elc files all in a directory, e.g., {{{/home/was/.emacs-scripts}}}. This is another newer mode for Sage inside emacs. It's known as sage-shell-mode and includes extensions for auto-complete, helm, and anything. It was written from scratch by Sho Takemori and is available from MELPA.
Line 18: Line 20:
 * Add the following to your {{{.emacs}}} file, where you replace {{{/home/was/.emacs-scripts}}} with the directory where you put those elc files. See: [[https://github.com/stakemori/sage-shell-mode]]
Line 20: Line 22:
{{{
(add-to-list 'load-path (expand-file-name "/home/was/.emacs-scripts/"))
== EIN: IPython notebook client in Emacs ==
Line 23: Line 24:
(load "pyrex-mode")
(load "python-mode")
(setq ipython-command "~/bin/sage") ;; depends on where your sage is.
(load "sage")
(require 'ipython)
https://github.com/tkf/emacs-ipython-notebook
Line 29: Line 26:
(fset 'py-shell-fullscreen
   [?\M-x ?p ?y ?- ?s ?h ?e ?l ?l return ?\C-x ?1])
(define-key esc-map "i" 'py-shell-fullscreen)
This is currently non functional due to an incompatibility with the
ipython shipped with Sage. Yet this sounds promising. See:
Line 33: Line 29:
(setq auto-mode-alist (cons '("\\.pyx\\'" . pyrex-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("\\.pxd\\'" . pyrex-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("\\.pxi\\'" . python-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("\\.sage\\'" . python-mode) auto-mode-alist))
}}}
- https://github.com/tkf/emacs-ipython-notebook/issues/131
- http://trac.sagemath.org/ticket/16053
Line 39: Line 32:
 * Start emacs. Now Python code and pyrex files are colored correctly, and there are a bunch of extra commands. == Miscellaneous ==
Line 41: Line 34:
 * Start emacs. Type Alt-i. A SAGE window should appear. Colors and tab completion should work. If you are in debugging mode (%pdb), then when an error occurs, an emacs window opens taking you to that point in the source code! (Note: Tab completion does not work when you run emacs with "emacs -nw".) - which-function-mode: this minor mode displays in the status bar the
  name of the class or function being edited. This is a life saver for
  code with nested classes, and in particular category code.
Line 43: Line 38:
  Setup: M-x customize-variable which-function-mode
Line 44: Line 40:
- I (NT) have this in my python-mode-hook:
  {{{
  (set-variable 'indent-tabs-mode nil)
  (set-variable 'py-indent-offset 4)
  }}}
  This might not be so relevant with recent versions of emacs.
Line 45: Line 47:
== Hints == == See also ==
Line 47: Line 49:
If when running SAGE, the screen gets cluttered up, e.g., by the
output of help, just type Ctrl-[_], i.e., Ctrl-Shift-[- key] to undo,
which will remove the last chunk of output completely.
- This (not sot recent) [[http://www.saltycrane.com/blog/2010/05/my-emacs-python-environment/|blog post]] on customizing emacs for Python

Sage and Emacs

The purpose of this page is to collect tips and tricks for Sage users and developpers using the text editor Emacs.

Sage-mode

This emacs mode allows for running a Sage interpreter inside emacs, and interacting with it sending in chunks of code or doctests, directly opening the appropriate source files from the help, the debugger or the tracebacks. It also provides goodies for running tests, typesetting output, etc.

See: sage-mode or http://bitbucket.org/gvol/sage-mode

Sage-shell-mode

This is another newer mode for Sage inside emacs. It's known as sage-shell-mode and includes extensions for auto-complete, helm, and anything. It was written from scratch by Sho Takemori and is available from MELPA.

See: https://github.com/stakemori/sage-shell-mode

EIN: IPython notebook client in Emacs

https://github.com/tkf/emacs-ipython-notebook

This is currently non functional due to an incompatibility with the ipython shipped with Sage. Yet this sounds promising. See:

- https://github.com/tkf/emacs-ipython-notebook/issues/131 - http://trac.sagemath.org/ticket/16053

Miscellaneous

- which-function-mode: this minor mode displays in the status bar the

  • name of the class or function being edited. This is a life saver for code with nested classes, and in particular category code. Setup: M-x customize-variable which-function-mode

- I (NT) have this in my python-mode-hook:

  •   (set-variable 'indent-tabs-mode nil)
      (set-variable 'py-indent-offset 4)
    This might not be so relevant with recent versions of emacs.

See also

- This (not sot recent) blog post on customizing emacs for Python

Emacs (last edited 2023-02-23 20:10:56 by mkoeppe)