branch of GNU nano 2.3.2 with hacky-as-shit Lua scriptability
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
doc
m4
po
src
.gitignore
.nanolua
AUTHORS
BUGS
COPYING
COPYING.DOC
ChangeLog
ChangeLog.pre-2.1
Makefile.am
NEWS
README
README.SVN
README.md
THANKS
TODO
UPGRADE
autogen.sh
configure.ac
nano-regress
nano.spec.in

README.md

nlua

Do you hate yourself and/or freedom? You might be interested in this project then. It's a fork (or maybe a branch) of GNU nano 2.3.2 with hacky Lua scriptability. By 'scriptability', I mean the ability to programmatically filter, modify, and generate raw input before it gets processed by nano -- about as hacky as it gets, but also kind of powerful in a way.

Build

$ # First, make sure liblua 5.2 development files are on your system
$
$ sudo apt-get install liblua5.2-dev    # or equivalent
$
$ # Now you're ready.
$
$ git clone https://github.com/adsr/nlua.git
$ cd nlua
$ ./autogen.sh
$ ./configure --enable-nlua
$ make
$ 
$ # The nlua binary is now at ./src/nano
$
$ sudo make install    # Only do this if you want to replace /usr/bin/nano

Run

In your nanorc file, e.g., ~/.nanorc, add a line like the following...

lua "/home/adam/.nanolua"

...which specifies a Lua script to execute at runtime. Make sure it's an absolute path.

The Lua script is a just a regular Lua script with two special functions, nlua_filter_input and nlua_unget_input. nlua_filter_input is invoked when a user sends input to nano. You can either swallow it, modify it, or let the input pass through unaltered. You can also generate more input with nlua_unget_input which stuffs nano's internal key buffer. Take a look at .nanolua in this repo for some examples.