Emacs

From EduTech Wiki
Jump to: navigation, search

1 Definition

Note: Copy/Paste from http://tecfa.unige.ch/guides/emacs/pointers.html (will clean this up sometimes soon I hope - Daniel K. Schneider 19:50, 2 November 2007 (MET)

Emacs is a text editor, and much more. XEmacs provides a comprehensive environment where you can edit source code, or multiple text files, read mail or news, and even edit files remotely using FTP.

There exist many variants: The most popular ones are Xemacs and GNU emacs

Warning: Emacs is very powerful, but since it was born before Windows (or even MS-DOS), shortcuts are not the same. Also it is geared towards speed. The typical emacs user doesn't not want time-consuming pop dialogs, but you dialog though a little minibuffer window. That's stuff you have to learn. Else forget it. When you install Emacs there is a tutorial (Hit the help button) and do it at least 10 times ;)

See also: Text editor

2 Specialized tips

(Some tips regarding formats discussed in this wiki)

2.1 Some essential customization

E.g. setting the default directory, aspell directory, initial buffer properties, etc.

(setq default-directory "c:/")
(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.
'(case-fold-search t)
'(current-language-environment "UTF-8")
'(inhibit-startup-screen t)
'(initial-major-mode (quote text-mode))
'(initial-scratch-message nil)
'(ispell-alternate-dictionary "c:/Program Files/Aspell/dict")
'(ispell-complete-word-dict "c:/Program Files/Aspell/dict")
'(ispell-program-name "c:/Program Files/Aspell/bin/aspell.exe")
'(longlines-show-hard-newlines t)
'(longlines-wrap-follows-window-size t)
'(temporary-file-directory "c:/tmp")
'(transient-mark-mode (quote identity)))

2.2 Managing packages

Can be very difficult for a beginner.

However, for older emacsen try ELPA, a friendly package manager

Howto:

  • Installing it requires copy/paste a few lines of code into the *scratch* buffer, then hit CTRL-X CTRL-E
  • The Package Manager is available in the Options menu. Type 'h' for help.

Try to install emacs-24 (2012). It does have an integrated package manager.

2.3 HTML

Some history

Back in time, we used to have fairly useful and productive HTML help modes. E.g. in the '90s hm-html-help-mode (or something like that) and then the PSGML mode. The latter did not support very well initial creation of a page, but could provide help for any kind of HTML/XHTML DTD (since PSGML is an SGML/XML editor mode). In later versions of Gnu Emacs, both extensions are not included by default and have to be installed and configured.

For PSGML (still one of the best DTD-based XML editors around), insert at least the following in your .emacs. There are endless other options....

 (autoload 'sgml-mode "psgml" "Major mode to edit SGML files." t)
 (autoload 'xml-mode "psgml" "Major mode to edit SGML files." t)
 (setq sgml-set-face t
      sgml-indent-data t
      sgml-auto-activate-dtd t)
 (defun go-bind-markup-menu-to-mouse3 ()
  (define-key sgml-mode-map [mouse-3] 'sgml-tags-menu)
  (define-key sgml-mode-map [shift-mouse-3] 'sgml-attrib-menu)
  )

;; change key binding whenever psgml mode is invoked
(add-hook 'sgml-mode-hook 'go-bind-markup-menu-to-mouse3)
(add-hook 'xml-mode-hook 'go-bind-markup-menu-to-mouse3)

PSGML is a must have extension if you work a lot with XML DTD's of various sorts. Modern distributions of Gnu Emacs don't include PSGML since they favor the Relax (rng) schema language and make the nxml extension the default XML editor. Support for HTML isn't satisfactory, e.g. nxml-based HTML editing is much too time consuming to use unless you do some heavy configuration work. However, readon ! There is a good HTML extension that is based on nxml.

nXhtml

For Gnu emacs 23.x the best HTML add-on is probably nXhtml since it supports editing of multiple formats (JavaScript and CSS) in one single page. See also its emacswiki entry. However, it will take some time to learn how to use it. E.g. when you start with a fresh page, there is no way to simply insert a new HTML/XHTML page template.

Under Windows (tested with Emacs 32.2 win 7 64bit)

  • Unpack to the emacs installation directory, e.g.
c:\soft\emacs-32\site-lisp
  • Add to your ~/.emacs
This file typically sits in c:/Users/xxx/AppData/Roaming/ directory, else just open it with C-X C-F entering ~/.emacs
(load "YOUR-PATH-TO/nxhtml/autostart.el")

e.g.

(load "c:/soft/emacs-23.2/site-lisp/nxhtml/autostart.el")
  • Open or a create a file with the *.html extension
  • To make this extension faster, byte-compile using the nXhtml menu -> nXHTML help and setup

Under Ubuntu

  • Install the JavaScript addon (optional):
sudo apt-get install js2-mode
  • In the .emacs (remove it again if it appears to be broken ....)
(require 'js2-mode)
  • Install this extension manually in some place, e.g. the site-lisp directory
/usr/share/emacs/site-lisp

E.g. (for a particular version). Also, add "sudo" in front of each if you are not root.

cd /usr/share/emacs/site-lisp
wget http://ourcomments.org/Emacs/DL/elisp/nxhtml/zip/nxhtml-2.08-100425.zip
unzip -l nxhtml-2.08-100425.zip
unzip nxhtml-2.08-100425.zip
  • Change the permission of this nxhtml sub-directory to you
sudo chown -R xxx:yyy nxhtml
  • Change the ~/.emacs (not a really cross-emacsen and portable solution ...)
(load "/usr/share/emacs/site-lisp/nxhtml/autostart.el")

2.4 ActionScript

Install: actionscript-mode.el written by Pet Tomato. Tested by Daniel K. Schneider with GnuEmacs 21.4.1 under Ubuntu. He provides 2 files:

  • actionscript-mode.el
  • as-config.el (this is only an option, did not install this)

There is a different and more recent actionscript mode from Austin Haas based on David Linquists ecmascript-mode. (made for emacsw32). I use this now for emacs 22.1.1 on Ubuntu - Daniel K. Schneider 13:17, 1 November 2008 (UTC)

To install these I did the following:

  • Copied the 2 *.el files to /usr/share/emacs/site-lisp
  • Byte-compiled (this is not necessary)
  • Inserted this in my .emacs file:
;; Actionscript stuff
(autoload 'actionscript-mode "actionscript-mode"
  "Major mode for editing ActionScript files." t)

(add-to-list 'auto-mode-alist '("\\.as[123]?$" . actionscript-mode))

2.5 XML

DTD support

The Xemacs (default "fat") installation provides good XML/DTD support through the PSGML library.

On recent Gnu Emacsen, the PSGML library has to be installed since nXML is now the default XML mode. E.g. on Linux Ubuntu this can be done through the Synaptic Package Manager. Type M-x xml-mode to get it.

Both Emacsen will find your private (system) DTDs and also includes/supports a list of public DTDs (you can add yours in the installation by editing ).

Relax NG (RNC) support

Use nXML mode (it is distributed with a standard recent Gnu emacs installation). Here is a short how to:

  • Start with a minimal template, e.g. to edit MXML Flex code use this:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
</mx:Application>
  • Type M-X nxml-mode if by default *.xml files will go into no mode or PSGML mode in your setup.
  • Menu XML->Set Schema ; File
    • Select the appropriate RNC file
  • To insert attributes
    • Put your cursor inside a begin tag and hit CTRL-Return
    • Then select a tag from the *Completions* buffer with the mouse or start typing and hit SPACE to find completions.
  • To insert tags:
    • Put the cursor between tags
    • Type "<" and hit CTRL-Return or type some stuff and hit SPACE to see completions.
    • Start inserting attributes (as above) if you like
    • Then either type ">" followed by "</" + CTRL-Return or enter "/>".

As you can see, this interface was made for people willing to learn keyboard strokes. It's faster than using right-click contextual menus but more challenging for some ...

XML Schema (XSD) support
  • XML Schema support doesn't exist (IMHO).
XSLT support
  • Included in Gnu Emacs through nXML mode
  • Included in Xemacs through some specific XSLT mode

2.6 Mediawikis

With gnu emacs we suggest to use:

Alternatively you could try the following (I have been using this for years /DKS / March 2012, but think of switching to mediawiki.el - Daniel K. Schneider 19:40, 21 September 2012 (CEST)).

  • wikipediamode.el(Wikipedia. It does syntax coloring plus navigation/tree tools. Download link: emacswiki.org. In addition we suggest to activate / install if needed: longlines.el

2.6.1 Most important Mediawiki.el commands

Acknowledgement: (Slightly Modified) summaries and templates taken from Wikiemacs

M-x mediawiki-site
Choose a site (say "WikEmacs") for the current session.
[C-c C-o] (or M-x mediawiki-open)
Open a page. To edit the main page, type "Main Page". Make your edits. (Copy and paste the page name from your web browser)
[C-x C-s] (or M-x mediawiki-save)
Submit your modifications.
[C-c] (or M-x mediawiki-save-and-bury)
Submit modifications and bury the buffer.
[C-return] (or M-x mediawiki-open-page-at-point)
Follow or browse to a WikiLink within the wiki code.
[M-g] (or M-x mediawiki-reload)
Reload a page

Suggested addition (edit your .emacs file)

(define-key mediawiki-mode-map (kbd "C-c o") 'mediawiki-browse)
[C-c o] (or M-x mediawiki-browse)
Will display the page in the web browser
The following commands put in markup structures.
C-c C-f C-s inserts italics
C-c C-f C-b inserts bold text
C-c C-f TAB italics
C-c C-f C-e header
C-c C-f C-l inserts a link
C-c C-f C-u inserts user name
C-c C-w inserts Daniel K. Schneider 15:25, 11 October 2012 (CEST)
<M-return> inserts enumerate type structures
C-\ inserts itemize type structures
C-c C-l inserts a hline


For more information:

Problems:

  • Authentication expires too fast, so far I did not find a solution.

3 Installation

3.1 Ubuntu 12.04 LTS

Ubuntu as of sept 2012 still distributes old emacs 23.

To get emacs 24:

$ sudo add-apt-repository ppa:cassou/emacs
$ sudo apt-get update
$ sudo apt-get install emacs24 emacs24-el

Install packages (works much better now than previous extensions)

  • Menu Options->Manage Emacs Packages
  • Click on package to install and answer yes

So far, if I understand right, only official packages are there. Others, like the mediawiki editing extension, still neeed manual installation. Another caveat is that it installs on a per user basis.

4 Links

4.1 Manuals & Short References

GNU Emacs
XEmacs

En français:

4.2 Customization Links

Configuring the functionalities of XEmacs:

4.3 FAQ's

4.4 Tutorials

On the Web you can find many mini-tutorials, there are also book chapters, etc.

  • There's the XEmacs tutorial available from the Help Menu under `Basics->Tutorials', or by typing C-h t. To check whether it's available in a non-english language, type C-u C-h t TAB, type the first letters of your preferred language, then type RET.
  • Emacs editing environment by Michael Stutz at IBM developer works. Complete, requires 12 hours of work. (Free) registration required.
  • Emacs Beginner's Tutorial by J.D. Zawodny @ RootPrompt.org
  • XEmacs Tutorial Introduction by Sarah Waterson
  • Tutorial - xemacs (good, but Very short)

En français:

5 Specialized topics

5.1 Advanced tricks

5.2 Emacs programming

5.3 (Some) Emacs Modes

6 Tools / Software

  • For Linux, just use the packaging system to install, e.g. Synaptic Package Manager for Ubuntu. Check out addons (search for emacs)
Various emacs versions
Small versions

There are many ....

  • Ymacs (runs as browser plugin)

7 Other Links