parent
81b84b24e1
commit
16c4448bac
42
README
42
README
|
@ -1,19 +1,51 @@
|
||||||
Pmacs version 0.1
|
Pmacs version 0.1
|
||||||
|
|
||||||
Released june 27, 2007 by Erik Osheim <erik@osheim.org>
|
Released June 27, 2007 by Erik Osheim <erik@osheim.org>
|
||||||
|
|
||||||
Pmacs is an Emacs-like editor written entirely in Python. It is designed to have
|
Pmacs is an Emacs-like editor written entirely in Python. It is designed to have
|
||||||
maximally correct and powerful support for syntax highlighting, indenting, etc.
|
maximally correct and powerful support for syntax highlighting, to support
|
||||||
and to be extensible in python.
|
various methods of automatically indenting lines, and to be extensible in
|
||||||
|
python.
|
||||||
|
|
||||||
|
Pmacs is available to you under the GPL version 2.
|
||||||
|
|
||||||
|
While the general interface of pmacs is related to emacs, there was explicitly
|
||||||
|
no attempt to support all emacs' functions, emacs' underlying data structures,
|
||||||
|
or even high-level. There is not currently a formalized "public API" for pmacs,
|
||||||
|
although some parts are "more public" than others. The code is somewhat
|
||||||
|
commented, although currently there is only one author. Buyer beware!
|
||||||
|
|
||||||
Requirements:
|
Requirements:
|
||||||
=============
|
|
||||||
1. python 2.3 or higher
|
1. python 2.3 or higher
|
||||||
2. ncurses
|
2. ncurses
|
||||||
|
|
||||||
Optional Dependencies:
|
Optional Dependencies:
|
||||||
======================
|
|
||||||
1. ispell
|
1. ispell
|
||||||
2. aespipe
|
2. aespipe
|
||||||
3. perl
|
3. perl
|
||||||
4. ctags
|
4. ctags
|
||||||
|
5. cvs
|
||||||
|
6. svn
|
||||||
|
|
||||||
|
Quick Start Guide:
|
||||||
|
1. Download and unpack the pmacs tarball file. After this, there should be
|
||||||
|
a directory called "pmacs2" somewhere in your filesystem. It doesn't
|
||||||
|
matter where you put this. We'll call the full path to this directory
|
||||||
|
PMACSDIR; in future steps substitute the actual path for this symbol.
|
||||||
|
2. Create a symlink to PMACSDIR/application.py and put it in a directory
|
||||||
|
listed in your $PATH (~/bin, /usr/local/bin, and /usr/bin are all good
|
||||||
|
candidates). You can name this symlink whatever you want; I use "pmc".
|
||||||
|
3. Try editing a file, by typing "pmc FILE" where FILE is the path to the
|
||||||
|
file you want to edit.
|
||||||
|
4. Edit the file!
|
||||||
|
|
||||||
|
You can type Control-c and then Meta-h to get a list of all the
|
||||||
|
available actions and which key(s) perform them. Type Control-x k to get
|
||||||
|
out of the "help buffer". If you have used emacs, many (but not all) of
|
||||||
|
these keybindings should seem familiar.
|
||||||
|
|
||||||
|
5. To save your changes, type Control-x Control-s. To quit, type Control-x
|
||||||
|
Control-c. To quit without saving changes, type Control-c Control-c.
|
||||||
|
|
||||||
|
There is currently no other documentation (besides comments in the code). Good
|
||||||
|
luck!
|
||||||
|
|
12
mode2.py
12
mode2.py
|
@ -19,11 +19,10 @@ class Handler(object):
|
||||||
def add_action(self, action):
|
def add_action(self, action):
|
||||||
if self.window is None:
|
if self.window is None:
|
||||||
return
|
return
|
||||||
if action.name in self.window.application.methods:
|
elif action.name in self.window.application.methods:
|
||||||
return
|
return
|
||||||
if action.name in self.window.application.methods:
|
else:
|
||||||
raise Exception, "Action %r already found" % action.name
|
self.window.application.methods[action.name] = action
|
||||||
self.window.application.methods[action.name] = action
|
|
||||||
def del_action(self, name):
|
def del_action(self, name):
|
||||||
if self.window is None:
|
if self.window is None:
|
||||||
return
|
return
|
||||||
|
@ -33,9 +32,10 @@ class Handler(object):
|
||||||
def add_binding(self, name, sequence):
|
def add_binding(self, name, sequence):
|
||||||
if self.window is None:
|
if self.window is None:
|
||||||
return
|
return
|
||||||
if name not in self.window.application.methods:
|
elif name not in self.window.application.methods:
|
||||||
raise Exception, "No action called %r found" % name
|
raise Exception, "No action called %r found" % name
|
||||||
self.bindings[sequence] = name
|
else:
|
||||||
|
self.bindings[sequence] = name
|
||||||
def add_bindings(self, name, sequences):
|
def add_bindings(self, name, sequences):
|
||||||
if self.window is None:
|
if self.window is None:
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in New Issue