Go to file
~d6 225a6ab3e2 merge
--HG--
branch : pmacs2
2022-03-24 22:41:46 -04:00
buffer update years in about buffer 2021-12-21 01:30:34 -05:00
code_examples start adding rust support 2019-05-06 00:48:09 -04:00
method fix hg-log 2021-04-23 00:14:03 -04:00
mode merge 2022-03-24 22:41:46 -04:00
test some initial tests using nose 2009-08-14 00:00:50 -04:00
tools --HG-- 2008-11-12 20:48:37 +00:00
.hgignore ignore TAGS, not chardet 2020-09-17 22:27:54 -04:00
BUGS update docs 2009-07-22 10:53:21 -04:00
IDEAS lay groundwork for variable-width characters; document problems 2010-04-27 01:14:41 -04:00
MODES updated documentation 2009-05-17 23:52:14 -04:00
README improve README 2010-03-20 09:29:16 -04:00
aesutil.py seems to be working in python 3 2020-08-31 20:58:27 -04:00
application.py add uxn/tal mode 2021-09-30 23:58:50 -04:00
bufferlist.py seems to be working in python 3 2020-08-31 20:58:27 -04:00
cache.py lots of clean-up and documentation 2009-07-23 16:26:59 -04:00
color.py seems to be working in python 3 2020-08-31 20:58:27 -04:00
completer.py seems to be working in python 3 2020-08-31 20:58:27 -04:00
context.py seems to be working in python 3 2020-08-31 20:58:27 -04:00
ctags.py seems to be working in python 3 2020-08-31 20:58:27 -04:00
default.py initial ctags/etags support for C 2010-08-16 23:45:33 -04:00
dirutil.py seems to be working in python 3 2020-08-31 20:58:27 -04:00
etags.py fix etags 2020-09-02 10:52:06 -04:00
gdb.py seems to be working in python 3 2020-08-31 20:58:27 -04:00
highlight.py seems to be working in python 3 2020-08-31 20:58:27 -04:00
ispell.py fix python 3 bugs 2021-12-20 00:10:17 -05:00
keyinput.py seems to be working in python 3 2020-08-31 20:58:27 -04:00
lex.py seems to be working in python 3 2020-08-31 20:58:27 -04:00
minibuffer.py added search-tags, abc for tag commands, and fixed auto-initialization of TAGS 2010-08-17 07:47:52 -04:00
miniparse.py seems to be working in python 3 2020-08-31 20:58:27 -04:00
parse.py fix python 2->3 issue with calling instance methods 2020-08-31 22:13:37 -04:00
point.py point2->point and buffer2->buffer 2007-10-22 00:50:11 +00:00
regex.py make indenting with tabs work better 2010-07-03 23:33:05 -04:00
render.py seems to be working in python 3 2020-08-31 20:58:27 -04:00
searchutil.py seems to be working in python 3 2020-08-31 20:58:27 -04:00
tab.py seems to be working in python 3 2020-08-31 20:58:27 -04:00
term.py more pychecker-inspired cleanup 2009-11-11 23:45:03 -05:00
util.py fix git 2020-09-04 00:03:00 -04:00
window.py seems to be working in python 3 2020-08-31 20:58:27 -04:00

README

Pmacs

by Erik Osheim <erik@osheim.org>

Pmacs is an Emacs-like editor written entirely in Python. It is designed to
have maximally correct and powerful support for syntax highlighting, to support
various methods of automatically indenting lines, and to be extensible in
python.

Pmacs is available to you under the GNU 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 all high-level functionality of Emacs. 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:
    1. python 2.4 or higher (this may become 2.5 or higher)
    2. chardet module (for detecting character encodings)
    3. curses module (usually ships with python)
    4. bash

Optional Dependencies:
    * python-crypto  [for aes-encrypted buffers]
    * ispell         [for spell-checking]
    * cvs            [for cvs-based commands]
    * svn            [for svn-based commands]
    * mercurial      [for hg-based commands]

    * perl     [for perl syntax-checking]
    * gcc      [for c compilation/syntax-checking]
    * make     [for c compilation]
    * latex    [for LaTeX compilation]
    * pdflatex [for LaTeX PDF rendering]
    * disinst  [for x86 instruction parsing]

Quick Start Guide:
    1. Download and unpack the pmacs tarball file. After this, there should be
        a directory called "pmacs" 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 key bindings should seem familiar.

    5. Some basic key bindings:

        C-v (or PG_DN)    move down a page
        M-v (or PG_UP)    move up a page
        C-a (or HOME)     move to the beginning of the line
        C-e (or END)      move to the end of the line
        M-<               move to the beginning of the buffer
        M->               move to the end of the buffer
        M-g               goto line number

        C-s               interactive forward search
        C-r               interactive backward search
        M-%               interactive search-and-replace

        C-]               cancel

        C-/ (or C-x u)    undo last change
        M-/ (or C-x r)    redo last undone change

        C-x C-f           open file in a new buffer
        C-x k             close the current buffer

        C-c M-h           open a buffer listing all available key bindings
        C-c M-?           open a buffer listing all available functions
        M-?               get a help with a command by name
        M-h               get information about a key sequence

        C-x C-s           save your changes
        C-x C-c           quit

        NOTE: the notation used corresponds to the following:
            C-x     hold Control and press x.
            M-x     hold Meta and press x.
            C-c j   hold Control and press c, then press j
            C-x C-s hold Control and press x, then hold Control and press s

    6. Other documentation:

        a. MODES: this file describes in more detail how modes function, and
           how to write your own.

        b. other help commands

        c. comments in the source code

Good luck!