Compare commits

...

315 Commits

Author SHA1 Message Date
Chris Allegretta
03260b40fa GNU nano 1.1.2 release
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@841 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-04 01:24:07 +00:00
Jordi Mallach
58a3353307 Have a nice day in the Attic, nano.info. We just need nano.texi.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@840 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-04 01:02:26 +00:00
Jordi Mallach
4c6438be6f Fixed the remaining fuzzy string in fi.po. Phear my Finnish :) (thanks Antti-Juhani Kaijanaho).
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@835 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-03 21:57:00 +00:00
Jordi Mallach
780f3205f1 Finnish update for 1.1.2pre3, by Pauli Virtanen.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@834 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-03 20:47:47 +00:00
Jordi Mallach
8a9863736b Italian updates for 1.1.2 (Marco Colombo).
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@832 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-03 19:04:38 +00:00
Jordi Mallach
cdbabfd4fc * Added more command line options that are currently ignored by nano (DLR).
* nano.1: Updated the statement about nano.save & multibuffers.


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@830 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-03 15:53:25 +00:00
Jordi Mallach
7d589ca5fa Fixed typos found by DLR and ispell.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@829 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-03 15:44:16 +00:00
Chris Allegretta
ca1a82ecab - rcfile.c: - Fix incorrect argument in fill and tabsize error message (Nathan Heagy)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@828 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-03 15:18:41 +00:00
Jordi Mallach
f57b886bed Documentation updates for nano 1.1.2 (texi and manpage).
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@827 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-03 12:45:22 +00:00
Jordi Mallach
22262441c7 Galician translation brought up to date for 1.1.2 by Jacobo Tarrío.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@826 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-03 10:59:23 +00:00
Jordi Mallach
b97bedafe8 Updated ca & es for 1.1.2 release (tab size changes).
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@825 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-03 10:12:37 +00:00
Chris Allegretta
31b2b81e53 Add filebot magic line bug as bug #66
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@823 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-03 01:51:33 +00:00
Chris Allegretta
5e4b1085b4 Add single line bug as Bug #65
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@822 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-03 00:45:06 +00:00
Chris Allegretta
b516d8e3f3 - nano.c:main() - Added var constcheck as a CRC-like check of whether cursor pos has changed and if so update the pos with -c
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@820 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-03 00:01:36 +00:00
Chris Allegretta
66c33b8731 Add tabsize support to rc file (Nathan Heagy)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@819 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-02 23:57:31 +00:00
Chris Allegretta
dc2ca88718 - cut.c:do_cut_text() - Don't recenter the line when cutting one line (DLR)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@818 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-02 23:55:09 +00:00
Jordi Mallach
a2d849bcd4 * Added notes about the Free Translation Project.
* Updated the ChangeLog, so it has some meaning :)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@817 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-02 19:13:03 +00:00
Jordi Mallach
14b0accd81 * We can't live WITHOUT bells and whistles 8) (Nathan Heagy)
* Removed ftp.sourceforge.net from download sites as it'll go shortly.
* Added the `testing' distribution page for nano in the Debian section.
* Added a direct link to Debian's package pools too.
* Added --disable-operatingdir to "how make nano smaller?".
* Zsh advocacy :)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@816 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-02 18:21:55 +00:00
Chris Allegretta
b26cb39296 Don't show non-positive shortcut keys in help_init()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@814 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-02 04:22:34 +00:00
Chris Allegretta
e10f389e9c Take out the unneeded case sensitive and reverse stuff from -tiny
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@813 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-02 03:54:40 +00:00
Chris Allegretta
ad3f478452 - Take control-space out of -tiny build, unneeded
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@812 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-02 03:54:13 +00:00
Chris Allegretta
59121a9aaf Change do_bracket ctrl shortcut to -9 (junk value) instead of 0 so control-space will work
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@811 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-02 03:14:43 +00:00
Chris Allegretta
92f5fdc230 Finally, do the ChangeLog
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@810 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-02 02:58:07 +00:00
Chris Allegretta
386e0518b5 winio.c:nanogetstr() - Don't be clever and wasteful, just repaint every iteration
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@809 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-02 02:57:26 +00:00
Chris Allegretta
1c27d3e875 nano.c:main() - Fix the KEY_IC being undefined when using slang
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@808 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-02 02:56:45 +00:00
Chris Allegretta
7fdbd05b41 Readded DISABLE_CURPOS cause we can't get away without it (Search Wrapped msgs) and Ken's findnextr fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@807 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-02 00:55:38 +00:00
Chris Allegretta
d948edc4f3 DLR's latest smooth scroll fix, case where there's not a full half page up from the cursor to fileage screws up the cursor position
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@806 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-02 00:38:56 +00:00
Chris Allegretta
222a0863fa cut.c:cut_marked_segment() - Add magic line when cutting a selection including filebot (discovered by DLR, fixed by DLR & Chris)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@805 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-02 00:24:37 +00:00
Jordi Mallach
1e36fd8f69 Italian updates for 1.1.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@804 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-01 17:24:24 +00:00
Chris Allegretta
f727da88b0 Add smooth scroll and the DOS/Mac file support to the README
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@803 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-01 14:42:27 +00:00
Jordi Mallach
73889487f0 Added Karl, fixed Hungarian translator address (blindly believing Google).
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@802 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-30 05:03:15 +00:00
Jordi Mallach
200b27e33e Fixes from Karl Eichwalder to de.po, so Emacs doesn't barf.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@801 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-30 05:01:31 +00:00
Jordi Mallach
10398ade49 Corrected small spacing typo in --dos help.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@800 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-29 18:54:46 +00:00
Chris Allegretta
1b3381bee8 Initialize totsize in files.c:new_file() and let do_gotopos keep current position when invoking the alternate speller (DLR)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@799 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-28 21:59:01 +00:00
Chris Allegretta
2bef18210a Fixes to bracket_msg in global.c by DLR
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@798 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-28 19:53:11 +00:00
Chris Allegretta
352801cf4c Fix brace error with nano-tiny in do_writeout()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@797 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-28 19:42:41 +00:00
Jordi Mallach
c1917e7b66 Updated Catalan and Spanish translations to 1.1.2pre2.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@796 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-28 13:06:29 +00:00
Jordi Mallach
acf4b16b72 Header fixes for some old po files.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@795 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-28 12:58:07 +00:00
Jordi Mallach
475f96d0b3 Updated Catalan and Spanish translations.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@794 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-28 12:55:18 +00:00
Chris Allegretta
a951f21c59 - nano.c: do_mouse() - Change k based on currslen to allow the new widths in bottombars()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@793 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-27 21:07:39 +00:00
Chris Allegretta
26a86e350c Initialize bracket_msg (David Lawrence Ramsey
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@792 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-27 20:52:53 +00:00
Chris Allegretta
9519eb0c88 - files.c: do_writeout() - Expanded strings to not use %s and ?: to determine write/append string to be nice to translators
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@791 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-27 20:46:25 +00:00
Chris Allegretta
759d3523fc Search prompt changes, bracketed modifiers and to search at the front
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@790 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-27 13:04:10 +00:00
Chris Allegretta
56214c6aef DLR's fixes: arg for operatingdir's getopt_long text, changes to cases 2b and 2c in do_wrap for Pico compatibility, and new arg save_cutbuffer to global_init() to stop the cutbuffer from being lost with multiple buffers
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@789 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-27 02:46:53 +00:00
Chris Allegretta
5050d35e87 Fixes to paging (smooth scroll) by David Lawrence Ramsey
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@788 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-27 00:44:58 +00:00
Chris Allegretta
ecc1933c14 Off by one error in findnextstr?
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@787 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-25 01:49:38 +00:00
Jordi Mallach
c1968a0795 Updated Spanish to 1.1.2pre1
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@786 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-24 00:46:31 +00:00
Chris Allegretta
99e30e1bee Oops, we shoudn't let DOS_FILE and MAX_FILE be set at the same time
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@784 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-23 02:45:27 +00:00
Chris Allegretta
ce78c1eb88 DLR's latest fixes for the tabcomp code and keys
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@783 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-23 01:18:03 +00:00
Chris Allegretta
beb5497530 rcfile.c: - NUM_RCOPTS fix (DLR)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@782 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-22 23:54:45 +00:00
Chris Allegretta
96bd4e4ed8 Readd skipping Meta-A,B,E in do_toggle, oops I'm with it now :-)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@781 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-22 22:27:37 +00:00
Chris Allegretta
8d990b5e8b - Bracket (brace, parens, etc) matching code by Ken Tyler. New functions do_find_bracket(), changes to findnextstr(), command is Meta-] (hope you dont mind since I already sold off Meta-O to the MacOS file code Ken...)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@780 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-22 22:14:25 +00:00
Chris Allegretta
6f6aba0350 Move the smooth_msg up a tiny
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@779 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-22 19:03:01 +00:00
Chris Allegretta
3e3ae94084 - New smooth scroll code by Ken Tyler. New flag -S, --smooth, changes to page_up() and page_down()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@778 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-22 19:02:04 +00:00
Chris Allegretta
0319176f2d More Mac file fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@777 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-22 06:38:38 +00:00
Chris Allegretta
960a8635bc Oops, another Mac fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@776 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-22 05:08:12 +00:00
Chris Allegretta
995177f2d9 Add Mac toggle Meta-O for Mac format
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@775 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-22 04:34:23 +00:00
Chris Allegretta
8fa1e28681 Added mac file support too
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@774 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-22 04:20:25 +00:00
Chris Allegretta
7004c289f8 -D cmdline flag for DOS formatted files
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@773 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-22 00:42:10 +00:00
Chris Allegretta
6414b40d3d Make the Alt-key seqs work with the mouse
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@772 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-21 03:21:11 +00:00
Chris Allegretta
91841895e0 Code to read/write dos formatted files. Massive amounts of new code in read_line and write_file. New flag DOS_FILE
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@771 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-21 02:37:01 +00:00
Jordi Mallach
5d25f06e3b Catalan commit with no translation changes, just to avoid more conflicts.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@770 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-19 10:12:11 +00:00
Jordi Mallach
128e95ffdc Updated Spanish for chroot patch.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@769 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-19 10:07:50 +00:00
Chris Allegretta
e09cd1d4d1 Credit DLR for his code =-)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@768 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-19 03:22:52 +00:00
Chris Allegretta
e1f1452eb5 General: - New flag -o, --operatingdir, similar to Pico's -o mode. New function check_operating_dir(), changes to load_file (arg), open_file_dup_search (arg), new function do_gotopos for -F.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@767 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-19 03:19:43 +00:00
Chris Allegretta
b6c89eed9f Completely get rid of DISABLE_CURPOS
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@766 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-19 03:09:22 +00:00
Chris Allegretta
0357c4d552 - nano.c: main() - Added vars oldcurrent and oldcurrent_x to check whether cursor pos has changed and if so update the pos with -c
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@765 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-19 02:59:25 +00:00
Chris Allegretta
68532c37ef Fix unneeded vars with NANO_SMALL
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@764 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-17 13:49:33 +00:00
Chris Allegretta
ff98983602 Fix acconfig.h, NANO_SMALL leaves out Auto Indent
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@763 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-17 13:48:00 +00:00
Jordi Mallach
6c49b3f32c Updated Swedish translation (Christian Rose)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@762 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-15 22:47:05 +00:00
Jordi Mallach
4d69d4313f Added Keld Simonsen (Danish).
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@761 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-15 22:46:21 +00:00
Jordi Mallach
90bbdd3c40 New Danish translation, by Keld Simonsen <keld@dkuug.dk>.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@760 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-12 19:06:59 +00:00
Jordi Mallach
d1625cdfe6 Updated Galician translation; thanks, Jacobo Tarrío.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@757 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-10 11:36:45 +00:00
Jordi Mallach
c6c35eafc8 Added recent translators to THANKS
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@756 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-09 11:04:43 +00:00
Jordi Mallach
b1aaa27c10 Updated Spanish translation.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@754 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-09 10:55:51 +00:00
Jordi Mallach
2cde0a24d4 Added Dutch translation, by Guus Sliepen <guus@nl.linux.org>.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@753 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-09-05 13:23:53 +00:00
Chris Allegretta
7dd1869713 Make the new bottombars not suck quite so badly
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@751 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-08-26 23:16:44 +00:00
Chris Allegretta
96eef7332b winio.c:bottombars() - Spread out the menu items, feedback definitely needed on this
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@750 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-08-25 16:41:37 +00:00
Chris Allegretta
9b3c7e8be7 winio.c: - Add David Lawrence Ramsey to credits
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@749 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-08-25 16:00:53 +00:00
Chris Allegretta
c2acb81782 Unset the flag chris you dolt
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@745 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-08-17 00:08:44 +00:00
Chris Allegretta
c1049aced1 Add and fix bugs #63 and 64
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@744 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-08-17 00:03:46 +00:00
Jordi Mallach
372b1a0939 Corrected the Mouse Toggle help in the texinfo manual.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@743 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-08-08 19:35:23 +00:00
Chris Allegretta
47a2686e41 Back to CVS version
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@742 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-29 01:17:38 +00:00
Chris Allegretta
0e8c8d8cdc GNU nano 1.1.1 release
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@740 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-29 01:16:27 +00:00
Chris Allegretta
41ed01632f do_mark() - Temporarily disable cursorpos when enabled to be able to see the mark (un)set message (Ken Tyler)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@739 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-24 00:21:03 +00:00
Chris Allegretta
4839d23b11 Spelling fixes by DLR
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@738 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-19 22:03:51 +00:00
Chris Allegretta
279aaa9bdb Deleted the old files we didn't need for old gettext
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@737 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-19 12:26:56 +00:00
Chris Allegretta
ef8f98d0c8 Reverted to gettext 0.10.35 in intl/ added m4/ directory to allow system independent rebuild of configure stuff
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@736 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-19 12:24:17 +00:00
Chris Allegretta
e642197ff7 new_file() and close_open_file() fixes by DLR
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@735 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-18 01:03:36 +00:00
Chris Allegretta
5cce53b5a8 do_writeout() - Check for open_files == NULL before using it (Ryan Krebs)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@734 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-17 10:42:50 +00:00
Chris Allegretta
5f36c3760f Fixes for the nano.h #defines, shortcut_init() lists and search.c reverse search stuff when NANO_SMALL is used
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@733 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-16 00:48:53 +00:00
Chris Allegretta
f372bd9f8c nano.h: - Fix type in INSERTFILE_LIST_LEN. && search_init() - add #ifdef NANO_SMALL around toggles code.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@732 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-15 22:24:24 +00:00
Chris Allegretta
307d4c8f6b Many multibuffer fixes by DLR
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@731 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-15 20:25:33 +00:00
Chris Allegretta
47f77b4715 Back to CVS
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@730 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-15 16:13:18 +00:00
Chris Allegretta
9a74860957 Nano 1.1.0 release
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@728 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-15 16:07:23 +00:00
Chris Allegretta
355fbe5770 Moved --loadoninsert to --multibuffer and -F, --enable-extra defines --enable-multibuffer
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@727 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-14 19:32:47 +00:00
Chris Allegretta
a212acf100 Oops, no need to translate %s
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@726 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-13 02:00:49 +00:00
Chris Allegretta
9cf9e06003 Put the #ifdef back, dope
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@725 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-11 12:06:13 +00:00
Chris Allegretta
802c6ef076 Updated README for some of the schnazzy 1.1 features
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@724 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-11 02:49:43 +00:00
Chris Allegretta
819e3db74d Move previous and next buffer code to main loop instead of do_toggles()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@723 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-11 02:37:19 +00:00
Chris Allegretta
2d7893d086 Added multi buffer (load on insert) code. This wont intoduce any bugs ;-)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@722 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-11 02:08:33 +00:00
Jordi Mallach
240998b25f New updates from the Swedish team.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@721 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-08 01:30:54 +00:00
Jordi Mallach
df7d8b2e57 Added Norwegian and Swedish to HEAD.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@720 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-05 23:16:05 +00:00
Chris Allegretta
b26ecb597e Oops, make that Alt-[-7.8
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@719 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-04 16:27:05 +00:00
Chris Allegretta
052f9d238e main() - Added Alt-[-[-7,8 support for home/end keys (Jeff Teunissen).
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@718 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-04 16:06:21 +00:00
Chris Allegretta
049149f1da Make the THANKS file slightly less incomplete but far from perfect
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@711 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-02 01:57:44 +00:00
Chris Allegretta
a2c02e9c8d do_browser() - More Picoish keystrokes for the browser, ^P, ^N, etc, for up, down, etc, and add the consistent ^C to exit (Jim Knoble)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@710 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-02 01:31:44 +00:00
Chris Allegretta
df20e83412 Okay I guess the wnouterefresh()s aren't needed in the SIGCONT handler
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@706 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-07-01 04:28:45 +00:00
Chris Allegretta
33db9bf473 Silly typo in the faq
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@705 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-06-30 19:14:01 +00:00
Chris Allegretta
1a8b296adf write_file() - Increment lineswritten when the very last line isn't null. Fixes off by one count when writing selection to file.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@704 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-06-30 18:41:08 +00:00
Chris Allegretta
ac899e5f80 do_suspend() - Added _POSIX_VDISABLE macro to fully ignore suspend keystroke. Eliminates the possibility that nano can be suspended when it's not supposed to be
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@703 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-06-30 04:09:09 +00:00
Chris Allegretta
d173c15ce5 Add and close BUG #62
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@701 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-06-28 16:54:59 +00:00
Chris Allegretta
521e00d761 rewrote suspend handler, added sigfillset before setting up handler with sigaction, allows nano to suspend properly with mutt
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@699 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-06-28 16:52:52 +00:00
Jordi Mallach
7fde37f006 Added THANKS, listing nano's friends :)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@693 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-06-22 23:26:19 +00:00
Chris Allegretta
34319a1ff7 Okay, and now dont add extra blanks when at filebot
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@692 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-06-22 21:47:23 +00:00
Jordi Mallach
efd2236319 Updated Indonesian by Tedi Heriyanto
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@691 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-06-22 16:59:29 +00:00
Chris Allegretta
500b5e3539 do_cut_text(): Moved the case of current == mark_beginbuf into cut_marke segment, so do_writeout could call it when writing selection to file. Added some NANO_SMALL ifdefs
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@689 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-06-21 23:58:47 +00:00
Chris Allegretta
40f45c8689 Last fixes, add reset of cutbuffer when uncutting marked text and reset marked_cut when cutbuffer reset
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@688 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-06-21 15:07:40 +00:00
Jordi Mallach
68b3dfb431 Updated for Backwards search
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@687 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-06-14 17:41:27 +00:00
Chris Allegretta
658399aeb9 Moved extension functions to meta keys, new macro TOGGLE() for toggling flags
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@686 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-06-14 02:54:22 +00:00
Chris Allegretta
e4933a393a Reverse Search by Ken Tyler
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@685 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-06-13 02:35:44 +00:00
Chris Allegretta
a75bc41faf Better for for -k bug
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@683 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-06-12 23:22:26 +00:00
Chris Allegretta
1cde322359 Don't keep cutbufer on reset, fix -k cut on first line if blank
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@682 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-06-11 06:56:10 +00:00
Chris Allegretta
cf785632ed Add a message about --enable-color being severely broken so we can have a 1.1 release
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@681 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-06-11 02:49:50 +00:00
Chris Allegretta
3ba29535a3 do_cut_text() - If the next line is empty when using -k, create a dummy line and add it to the cutbuffer (fixes bug #61)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@680 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-06-10 20:41:20 +00:00
Chris Allegretta
0241d19e4c Ugh, sigh
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@678 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-06-05 23:45:54 +00:00
Chris Allegretta
ecc3d7f39e write_file() - New arg, nonamechange, means whether or not to update the current filename after writing the file out.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@677 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-06-05 23:24:55 +00:00
Chris Allegretta
d21195f882 Oops\! Don't automatically assume the current filename when writing a selection to file, very bad\!\!\!
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@676 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-06-05 22:57:43 +00:00
Jordi Mallach
34654ab41a UTF8 would be leet!
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@675 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-06-02 02:02:29 +00:00
Jordi Mallach
de3d800e67 Nifty script which we'll learn to love.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@674 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-06-02 02:02:08 +00:00
Chris Allegretta
c4e1a131d3 Oops, fix write_file calls in nano.c also
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@673 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-29 04:46:38 +00:00
Chris Allegretta
cc197ef0ea Added selection write to file and append codes, main changes to files.c stuff, new shortcut list for inserting files, new args to do_writeout and write_file
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@672 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-29 04:21:44 +00:00
Chris Allegretta
43fee64400 Sample file nanorc.sample added to dist (ad Makefile.am)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@671 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-26 04:18:54 +00:00
Jordi Mallach
b4d6ad0ef6 Added rcfile.c to the translated files, added gettext calls to some messages that didn't have it and updated Spanish. New po files for the rest.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@670 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-24 13:10:06 +00:00
Chris Allegretta
d46156258b do_browser() - Don't shift the size of the file is it's less than 1K. Fixed files less than 1K being displayed as 0B (Rocco)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@669 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-23 21:54:47 +00:00
Chris Allegretta
6fe61499e8 All the updates that I've been waiting all weekend to commit, no desc, tough
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@668 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-21 12:56:25 +00:00
Jordi Mallach
9a46f3cf56 Oops, translations of Prev. and Next Page were reversed
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@667 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-19 10:03:46 +00:00
Jordi Mallach
1e43a12b49 Added po/messages
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@666 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-19 00:40:06 +00:00
Chris Allegretta
dd0491380a Add -W to TODO
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@665 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-18 20:00:08 +00:00
Chris Allegretta
53ea9d162b Add BUG #60
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@664 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-18 19:58:33 +00:00
Chris Allegretta
3b41212d61 Changed charalloc's calloc() call to use sizeof (char) not sizeof(char *)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@663 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-18 04:53:45 +00:00
Chris Allegretta
8d848afb89 Changed ncalloc calls in rcfile.c to charalloc
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@662 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-18 04:44:16 +00:00
Chris Allegretta
88b091510b Changed all string allocations to charalloc(), new function designed to take nmalloc argument but call calloc based on (char *) size.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@661 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-17 11:35:43 +00:00
Chris Allegretta
9fe015cca3 cut_marked_segment() - Add bizarre copy of bot node, else *BSD goes ballistic.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@660 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-17 03:41:00 +00:00
Chris Allegretta
63ba2d63ff po/it.po - Updated Italian translation by Marco Colombo.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@659 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-16 12:16:28 +00:00
Jordi Mallach
92b3bd2de6 New Russian translation by Sergey A. Ribalchenko.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@658 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-16 09:10:31 +00:00
Chris Allegretta
611e98be29 typo
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@656 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-16 04:23:37 +00:00
Chris Allegretta
5c27385a16 I'm back to the older gettext, sync these files too
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@655 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-16 04:21:31 +00:00
Chris Allegretta
99afb85752 strcasestr() - Replaced by mutt's mutt_stristr function, because the thought of dynamically allocating memory and copying each line in a file to do a search or replace was causing me to lose sleep
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@654 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-16 04:20:57 +00:00
Jordi Mallach
64bacd20b5 gl.po status update (it's not new, it's been released already)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@652 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-14 13:55:30 +00:00
Jordi Mallach
3bf6bf45b7 Added Ukrainian translation by Sergey A. Ribalchenko.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@651 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-14 13:11:56 +00:00
Chris Allegretta
4cb991dda1 add_to_cutbuffer() - Remove useless statements (Rocco).
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@644 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-10 22:55:16 +00:00
Chris Allegretta
b10283c4e8 Move down current shortcut assignment into loop in browser code to keep it updated
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@643 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-07 12:08:37 +00:00
Chris Allegretta
f3fde7c2fc Fix not being able to select last item in browser with mouse
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@642 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-06 03:02:21 +00:00
Chris Allegretta
5f07180e8a Okay, now let unjustify work with the mouse too :P
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@641 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-06 02:34:31 +00:00
Chris Allegretta
051fc6e05a Added file clicking ability in file browser
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@640 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-05 23:17:36 +00:00
Chris Allegretta
88520c93be Various spelling updates by David Lawrence Ramsey
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@639 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-05 17:45:54 +00:00
Chris Allegretta
a9434800df Add correct name to rcfile.c comments (thx Rocco)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@635 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-05 15:02:27 +00:00
Chris Allegretta
4e18b8f9ce I should actually add the file to the tree
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@634 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-05 15:01:42 +00:00
Jordi Mallach
725490495c Updated FAQ, updated Spanish and Catalan, added utils.c to translations and
little typo fixes here and there.


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@633 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-02 17:18:17 +00:00
Chris Allegretta
09898d99d4 Commit the rest of the stuff backing down gettext changed *shrug*
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@632 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-05-01 11:27:43 +00:00
Chris Allegretta
0bafa91096 Back to the 1.0 version of gettext, I can't figure this one out to save my life =(
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@631 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-30 14:04:44 +00:00
Chris Allegretta
b0bce4b429 Mention config.whatever files in ChangeLog
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@629 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-30 12:22:21 +00:00
Chris Allegretta
8ce2413feb Add color changes, undocumented and ugly, but hey maybe people want to see what chap I wrote so far
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@624 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-30 11:28:46 +00:00
Chris Allegretta
465f1e305d Update html man page too
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@623 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-30 11:23:33 +00:00
Jordi Mallach
3f8db49622 Hugo van der Merwe pointed out that -r was missing in the manpage.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@621 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-30 10:30:43 +00:00
Jordi Mallach
4be36bf1d4 Jacobo updated Galician to latest CVS.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@620 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-29 22:36:58 +00:00
Jordi Mallach
9634571dd6 Added Galician translation by Jacobo Tarrío <jtarrio@trasno.net>.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@619 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-29 10:38:07 +00:00
Chris Allegretta
6cb4e885f2 page_up() - Rewritten with a loop to make screen updates work when mark is set (fixes bug #59).
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@618 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-29 02:26:17 +00:00
Chris Allegretta
6efda54a6c Move config.h up in include lists and remove actual_x inline tag
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@616 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-28 18:03:52 +00:00
Chris Allegretta
316e4d9a67 ABCD(), main() - Add Alt-whatever-[a-d] support as well as Alt-whatever-[A-D].
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@615 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-28 16:31:19 +00:00
Chris Allegretta
18d70f1478 added --enable-color and updated nanorc description in ChangeLog
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@613 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-28 15:53:28 +00:00
Chris Allegretta
5050aa6ae7 Addand fix bug #59
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@612 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-22 07:10:21 +00:00
Rocco Corsi
4dfaf93bcd Alt Speller returns to same line & do_gotoline optimizations
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@609 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-20 01:59:55 +00:00
Chris Allegretta
7a50009b1f Fix proto.h ifdef for do_nanorc()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@608 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-19 21:13:46 +00:00
Chris Allegretta
03bf98015d One more
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@607 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-19 03:20:07 +00:00
Chris Allegretta
bf521fabaa Newer config.guess and config.sub
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@606 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-19 02:49:57 +00:00
Chris Allegretta
2fe0ddeab4 *** empty log message ***
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@605 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-19 01:23:44 +00:00
Chris Allegretta
1f0ab55e6d Update configure
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@604 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-19 01:23:08 +00:00
Chris Allegretta
528310223b I guess we need these now?
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@603 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-18 22:10:52 +00:00
Chris Allegretta
cbee08f335 And the Makefile.in.in in po/ also
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@602 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-18 17:15:17 +00:00
Chris Allegretta
cc0da8ab53 Oops, add the new files too
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@601 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-18 14:03:21 +00:00
Chris Allegretta
819d46ac71 Upgrade libintl stuff to gettext 0.10.36
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@600 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-18 14:00:10 +00:00
Chris Allegretta
b881d3ea57 Add --enable-nanorc to version string in nano.c
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@599 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-18 04:34:43 +00:00
Chris Allegretta
8d8e01224b Added rcfile.c source code and basic .nanorc functionality
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@598 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-18 04:28:54 +00:00
Rocco Corsi
12f294c651 "Goto Directory" added and minor fixes in the browser
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@597 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-14 06:50:24 +00:00
Chris Allegretta
ea066c8413 Added --enable-nanorc to configure
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@596 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-13 02:32:06 +00:00
Chris Allegretta
84de552b28 Added --disable-mouse option
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@595 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-12 14:51:48 +00:00
Chris Allegretta
235ab192af Add yesno support to mouse
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@594 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-12 13:24:40 +00:00
Chris Allegretta
6b58acd377 More mouse integration, esp with the shortcut lists
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@593 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-12 03:01:53 +00:00
Chris Allegretta
ac840eb42b Added fork info to ChangeLog
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@592 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-07 18:21:47 +00:00
Chris Allegretta
6e2853705a 1.1 version and note added to README that this is the unstable branch
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@591 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-07 17:50:03 +00:00
Chris Allegretta
9afd119dd5 Back to CVS version
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@590 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-06 23:13:57 +00:00
Chris Allegretta
38068cd152 Nano 1.0.1 release
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@588 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-06 20:04:23 +00:00
Chris Allegretta
60c65424c3 Oops, stray parenthesis when PATH_MAX isn't defined
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@586 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-03 14:26:35 +00:00
Chris Allegretta
90d307413b More browser and misc fixes by Matthias Andree that Chris screwed around with
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@585 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-03 01:02:38 +00:00
Jordi Mallach
b2c4cbebab rm libintl.h on distclean so we don't get the stupid unresolved symbols anymore.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@584 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-02 13:47:17 +00:00
Chris Allegretta
cef7fbb41a Added --disable-wrapping configure flag
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@583 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-04-02 05:36:08 +00:00
Robert Siemborski
a0238ed022 minor spelling fixes in comments
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@582 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-31 21:46:43 +00:00
Chris Allegretta
1c9d7f9f5d Added -o to TODO
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@581 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-30 22:37:37 +00:00
Chris Allegretta
1bacd2f8c7 Updated TODO from user feedback
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@580 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-28 21:40:05 +00:00
Chris Allegretta
0876dc9860 Change some lstats to stats, check file via lstat first, then stat() if it's a link in the browser
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@579 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-28 13:04:08 +00:00
Chris Allegretta
49805175e3 files.c:diralphasort() - Changed stat calls to lstat to stop abort on symlinks, otherwise return 0. (Matthias Andree, fixes bug #58)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@578 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-28 02:14:28 +00:00
Chris Allegretta
4bf831ff39 faq.html: Fixed typo in section 6.1 (discovered by Bob Farmer)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@577 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-26 15:35:34 +00:00
Chris Allegretta
3948bae1e1 aclocal.m4: - Minor patch for intl check (really this time) (Albert Chin)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@576 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-25 00:46:40 +00:00
Chris Allegretta
2071207e84 Well, back to CVS again
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@575 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-23 03:51:48 +00:00
Chris Allegretta
2bfbda0fd7 GNU nano 1.0.0 release
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@574 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-23 03:50:44 +00:00
Chris Allegretta
7ab3e8fed7 nano.info - Added dir entry (Albert Chin), Added Albert to credits
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@572 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-22 23:12:22 +00:00
Jordi Mallach
0a24b595a6 Final tweaks in Catalan and Spanish for 1.0
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@571 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-21 22:57:56 +00:00
Chris Allegretta
35dac58a61 statusq() - Added NANO_BACK_KEY and NANO_FORWARD_KEY cases for left and right
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@570 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-21 15:07:20 +00:00
Chris Allegretta
10ae4f11e0 cs.po: Czech translation from Vaclav Haisman
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@569 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-20 15:51:43 +00:00
Chris Allegretta
55493c2052 Im an idiot, that could easily screw up --included-gettext. Rolled back libintl.h check
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@568 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-18 18:55:06 +00:00
Chris Allegretta
4aa302fe4a aclocal.m4 check change, added explicit check for libintl.h
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@567 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-18 18:50:04 +00:00
Chris Allegretta
e31677362b Added void to argless functions decls, changed new to newnode in functions with 'new' variable
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@566 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-18 16:59:34 +00:00
Chris Allegretta
a0323de1f7 Roll-back previous change, this way copies Pico's (strange) behavior
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@565 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-15 21:14:32 +00:00
Chris Allegretta
0d471de448 Add Ryan to credits
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@564 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-15 14:40:42 +00:00
Chris Allegretta
e76f06ba1c move.c: page_down() - Oops, check for <= editwinrows (Ryan Krebs)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@563 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-15 03:35:51 +00:00
Chris Allegretta
565f7d5558 Added and fixed BUG #57
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@562 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-15 02:02:20 +00:00
Chris Allegretta
2af3904099 Oops, missed one loop
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@561 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-14 10:19:10 +00:00
Chris Allegretta
0b33d8864a Oops, remove debugging crap and don't be so conservative in space/tab check loop
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@560 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-14 10:17:39 +00:00
Chris Allegretta
74bb31b15a Fix BUG #56 found on SourceForge
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@559 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-14 09:08:14 +00:00
Chris Allegretta
94a78b8fb3 Added check for samlinewrap case and cursor placement fixes, closing BUG #55 =-)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@558 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-14 08:28:48 +00:00
Adam Rogoyski
1e9183fe31 Add auto indenting of wrapped lines which should be indented. Also fix
total file size (totsize) when auto indenting.


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@557 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-13 18:36:03 +00:00
Chris Allegretta
46055b2543 Added string history to 1.1 TODO
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@556 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-03-09 16:19:50 +00:00
Chris Allegretta
53712748ec Oops, update info too :)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@555 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-25 21:14:17 +00:00
Chris Allegretta
67b14b1467 Updated POs for occurrence thang
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@554 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-23 03:16:25 +00:00
Chris Allegretta
203ce15247 nano.texi: - Meta-Z correction and grammar in --enable-tiny desc (Neil Parks)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@553 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-23 03:05:38 +00:00
Jordi Mallach
5b387d7527 Fixed two "occurence" typos.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@552 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-20 12:45:47 +00:00
Chris Allegretta
9c9c5dab4c Back to CVS
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@551 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-20 03:53:31 +00:00
Chris Allegretta
a4a222d1d7 Nano 0.9.99pre3 release
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@549 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-20 03:52:13 +00:00
Chris Allegretta
a18d7978e2 Fixed garbage in po, I hope this doesn't screw up anything Jordi
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@548 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-20 02:41:13 +00:00
Jordi Mallach
a7b2ed0cac Updated ca.po with changes from Miquel Vidal.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@547 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-20 02:04:43 +00:00
Chris Allegretta
78aac9113d Finnish update
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@546 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-19 19:37:05 +00:00
Chris Allegretta
f4a986465a NEWS for impending 0.9.99pre3 release
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@545 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-19 05:28:00 +00:00
Chris Allegretta
a57fcb044c Taking a wild guess with people's Y/N/A keys, sure to get me into trouble
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@544 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-18 05:55:47 +00:00
Chris Allegretta
ea620fe88b Yeah, so how about make the yes key == yes instead of no
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@543 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-18 05:39:41 +00:00
Chris Allegretta
0d9109acf6 Add ac to the actual configure script
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@542 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-18 05:26:18 +00:00
Chris Allegretta
2d6f1bc896 Slight update of FAQ for advocacy
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@541 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-17 02:42:03 +00:00
Jordi Mallach
6aec0d6363 Fixed some errors in Spanish
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@540 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-17 01:32:58 +00:00
Jordi Mallach
82b182986b Initial Catalan translation
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@539 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-17 01:31:32 +00:00
Jordi Mallach
8119765cbd Tiny es.po updates
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@538 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-16 20:00:03 +00:00
Chris Allegretta
618f5d788c configure.in: - Added separate check for resizeterm()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@537 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-16 04:48:30 +00:00
Chris Allegretta
4ce8e3b863 Internationalize yes, no and all *sigh*
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@536 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-16 01:49:31 +00:00
Chris Allegretta
35ac99d0d4 Use code instead of command in man page *shrug*. Add GNUish stuff
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@535 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-15 00:25:17 +00:00
Chris Allegretta
c46dd8123c Nano is now a GNU package
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@534 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-14 14:28:27 +00:00
Chris Allegretta
9560bb51ab Update status in README
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@533 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-13 05:18:57 +00:00
Chris Allegretta
882e145ebb Manual fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@532 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-12 06:52:50 +00:00
Chris Allegretta
fb9cffe268 Manual fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@531 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-12 06:42:43 +00:00
Chris Allegretta
8546fa016e Added Bug #55
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@530 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-12 05:01:05 +00:00
Chris Allegretta
7e7bcf8a46 Nano texi manual
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@529 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-12 03:48:53 +00:00
Chris Allegretta
4de7b95511 Delete commented out stuff that isn't going to happen now
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@528 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-12 03:26:10 +00:00
Chris Allegretta
1bf501c236 GNU compliance issues: - Added texinfo manual nano.texi. Added texi options to Makefile.am
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@527 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-12 03:24:46 +00:00
Chris Allegretta
af6414ac37 Reworked main menu list, added help to default list, aligned ^R with ^O, ^\ with ^W
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@526 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-11 19:05:05 +00:00
Chris Allegretta
4ed131510e do_delete() - Added check for current->next == fileptr, as we have a magic line code again, fixes sillyness at the end of the last line before the magic line (reported by J.A. Neitzel)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@525 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-10 17:50:50 +00:00
Chris Allegretta
8bc03b6fdc main() - Added ENABLE_NLS check around gettext stuff
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@524 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-09 02:57:52 +00:00
Chris Allegretta
b55999ebcb de,fi,id translation updates
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@523 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-09 02:49:46 +00:00
Chris Allegretta
3362cae2f6 FAQ updates and fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@522 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-06 22:21:25 +00:00
Chris Allegretta
af7fc3dbc1 Oops, actually add hu.po :-)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@521 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-06 05:16:59 +00:00
Chris Allegretta
00ae5dfa27 do_justify - If the keystroke after the justify is not the unjustify key, blank the statsubar (bug reported by Neil Parks)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@520 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-05 18:24:33 +00:00
Chris Allegretta
d096f68966 hu.po: - Hungarian translation by Horvath Szabolcs
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@519 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-05 13:51:31 +00:00
Chris Allegretta
09f39cbec6 Fix for bugu #54
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@518 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-05 13:43:23 +00:00
Chris Allegretta
a8785e0793 Added BUG #54
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@517 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-04 22:21:12 +00:00
Jordi Mallach
37388ee91e Updated for latest CVS.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@516 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-04 00:11:02 +00:00
Chris Allegretta
de48b41b61 configure.in: - Autoconf compatibility fixes (Pavel Roskin)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@515 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-02-01 22:56:44 +00:00
Chris Allegretta
7c1fee7868 Back to CVS version
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@514 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-31 23:24:54 +00:00
Chris Allegretta
34318edba2 Nano 0.9.99pre2 release
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@512 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-31 23:22:36 +00:00
Chris Allegretta
90e040455d Update NEWS for upcoming release
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@511 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-31 18:01:24 +00:00
Chris Allegretta
4e90c40e72 Fix cursor not on after resize
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@510 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-29 23:40:43 +00:00
Chris Allegretta
08020889d3 Fix for resizing the window in modes other than normal edit mode Changes to handle_sigwinch(), main(). Fixes bug #52 (Rocco)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@509 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-29 23:37:54 +00:00
Chris Allegretta
e434b45148 do_alt_speller and nanogetstr fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@508 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-27 19:25:00 +00:00
Robert Siemborski
221a46e271 updated bugs as discussed on the list
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@507 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-26 16:23:39 +00:00
Chris Allegretta
169ee8498e Fixed Bug #53
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@506 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-26 01:57:32 +00:00
Chris Allegretta
12de5ca7cf Added bug #53
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@505 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-25 22:16:12 +00:00
Chris Allegretta
a711f7e638 username_tab_completion() - Removed redundant conditional (Rocco)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@504 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-23 04:16:31 +00:00
Chris Allegretta
2c2c5f2156 username_tab_completion: rewritten using getpwent
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@503 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-23 03:27:31 +00:00
Chris Allegretta
e5e4d49316 Rocco's groovy fixes to real_dir_from_tilde
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@502 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-23 03:09:15 +00:00
Chris Allegretta
0a06e07831 replace for loop for hline init with memset in init functions
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@501 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-23 02:35:04 +00:00
Chris Allegretta
17276e506e Oops, Rob not Rocco :>
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@500 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-23 01:22:32 +00:00
Chris Allegretta
d4ddd014a3 Oops, center_x and y, not current. Thx Rocco
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@499 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-23 01:17:07 +00:00
Chris Allegretta
ee733e6d4c real_dir_from_tilde() - Rewritten using getpwent (suggected by Adam)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@498 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-22 22:17:08 +00:00
Robert Siemborski
60cd6aa04f totsize fix in do_justify
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@497 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-21 23:23:48 +00:00
Chris Allegretta
7f7ce56e4e Oops, make that usage()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@496 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-21 16:35:49 +00:00
Chris Allegretta
e9a2d03497 version() - Add arg to -T help (Rocco).
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@495 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-21 16:08:21 +00:00
Chris Allegretta
9d6f3f3f60 Removed - from version in NEWS and ChangeLog
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@494 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-21 02:35:03 +00:00
Chris Allegretta
f0b26df170 global.c: Don't define toggles global or toggle_init_one if using --tiny
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@493 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-20 22:18:18 +00:00
Chris Allegretta
17dcb7212f Get rid of center_x and center_y, removed redundant free_node, added restore of totsize when unjustifying
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@492 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-20 21:40:07 +00:00
Chris Allegretta
8d9b11a847 username_tab_completion(): - Optimization and removal of useless vars (Rocco).
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@491 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-19 04:17:24 +00:00
Chris Allegretta
0fc2b81df8 write_file(): Don't free() realname on write error
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@490 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-18 15:04:20 +00:00
Chris Allegretta
76745fbe5f Back to CVS version
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@489 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-18 04:40:06 +00:00
Chris Allegretta
9faa3f13e2 Nano 0.9.99pre1 release
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@487 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-18 04:37:09 +00:00
Chris Allegretta
3c10ec016c Added bug #51
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@486 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-17 19:27:55 +00:00
Robert Siemborski
c2eeb4e585 small fix for do_justify totsize calculations
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@485 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-17 03:29:02 +00:00
Chris Allegretta
4058709e0b input_tab(): Added memset() to matchBuf to ensure sanity (Rocco, Adam).
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@484 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-16 04:45:38 +00:00
Chris Allegretta
51dd32fb4e Changed null out at end of matchBuf from NULL to 0
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@483 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-16 04:20:08 +00:00
Chris Allegretta
ae4318dab0 Get rid of unneeded call to usage() in main() when calling a flag for a function that hasn't been compiled in (Rocco)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@482 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-16 04:18:26 +00:00
Chris Allegretta
3693944492 main(): Initialized kbinput to get around stupid compiler warning.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@481 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-15 20:26:38 +00:00
Chris Allegretta
4097379a26 Changed 'without NumLock on' to 'with NumLock off', more easy to understand?
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@480 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-15 20:25:24 +00:00
Chris Allegretta
b4c43683a5 input_tab(): - Added null end of matchBuf for sanity (Rocco).
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@479 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-15 17:22:27 +00:00
Chris Allegretta
a35ec048d7 files.c:cwd_tab_completion(), input_tab(): Changed bare malloc/calloc calls to nmalloc (found by Rocco).
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@478 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-15 02:26:12 +00:00
Chris Allegretta
2be96d00b9 Oops, forgot to credit Rocco in one place
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@477 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-14 05:22:43 +00:00
Chris Allegretta
e61e830010 Rocco's source code cleanups and #defines for magic values in global_init(). Added die_too_small() function
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@476 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-14 05:18:27 +00:00
Chris Allegretta
201d9bf467 Added print_numlock_warning(), code to figure out when numlock makes the keypad go bad.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@475 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-14 03:17:53 +00:00
Chris Allegretta
1748cd1d0f Added function ABCD(), better support for default settings
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@474 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-13 17:22:54 +00:00
Chris Allegretta
d9742c69c0 fi.po updates by Pauli Virtanen
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@473 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-12 15:51:53 +00:00
Rocco Corsi
af5c302b48 Move #ifndef cleanups. Some HELP and SPELLER #ifndef additions.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@472 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-12 07:51:05 +00:00
Chris Allegretta
4ee0b41b41 Moved ChangeLog entries for configure.in to configure.in section
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@471 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-11 15:11:00 +00:00
Chris Allegretta
cd6f12d53e Moved code to define all disabled when --tiny is used from nano.h to configure.in
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@470 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-11 15:08:06 +00:00
Rocco Corsi
06aca1cc9e Rolled back DISABLE_TABCOMP and NANO_SMALL changes from earlier today
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@469 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-11 05:30:31 +00:00
Chris Allegretta
a4d6d1df37 Add check for tiny option in #ifdefs for DISABLE_TABCOMP code
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@468 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-10 23:44:10 +00:00
Chris Allegretta
7db63a5b65 Change Linux to GNU/Linux in the faq
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@467 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-10 22:05:40 +00:00
Chris Allegretta
2c4feca17f faq.html: Added section 3.6, reducing binary size
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@466 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-09 17:40:56 +00:00
Chris Allegretta
bbebec6871 configure.in: - Fix for _use_keypad check breaking slang support (Christian Weisgerber)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@465 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-09 00:37:32 +00:00
Chris Allegretta
8eac3b5069 do_browser() - added space and - keys for page down and up
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@464 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-08 21:14:04 +00:00
Chris Allegretta
bf69261597 real_dir_from_tilde(): ops, fix case where buf =~, silly crash
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@463 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-08 16:59:19 +00:00
Chris Allegretta
7e08082ffe Back to CVS ver
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@462 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-01-08 02:31:03 +00:00
58 changed files with 32996 additions and 3976 deletions

105
BUGS
View File

@@ -1,22 +1,25 @@
- Marked cutting sometimes leaves a newline in the file unintelligently,
such as when all of a line is selected but the mark doesn't proceed to
the new line. (8) [FIXED/IRRELEVANT]
- Certains are not lined up properly when there are tabs in them at
certain col values. (9) [FIXED]
- edit_refresh() and update_line() do not handle selecting text when the
cursor is beyond COLS (10) [FIXED]
- no way to do a replace with the empty string (11) [FIXED, yay!]
- Spelling support is not elegant like pico's integration of the 'spell'
- Spelling support is not elegant like Pico's integration of the 'spell'
program. Nano only uses ispell (for now) (12) [FIXED]
- Moving to the end of a line when close to a multiple of COLS and at
least COLS * 2 does not make the screen jump early like it would for
if we were around COLS (bugs in edit_refresh, update_line) (13)
[FIXED, mostly]
- When at the very bottom of the edit window, do_wrap goes berzerk and
puts the curor somewhere bad, subsequent keystrokes crash the program
- When at the very bottom of the edit window, do_wrap goes berserk and
puts the cursor somewhere bad; subsequent keystrokes crash the program
(14) [FIXED, mostly]
- Doing a replacement of a substring of the replace string (e.g. replacing
"ed" with "fred" causes an infinite loop. (15) [FIXED]
"ed" with "fred" causes an infinite loop). (15) [FIXED]
- Cutting a file with marked text and both marker ends on the same line
causes a random segfault (16) [FIXED]
- Cutting more than one line resets the KEEP_CUTBUFFER flag in 0.9.3
- Cutting more than one line resets the KEEP_CUTBUFFER flag in 0.9.3.
Error is in bitwise assignment (nano.h). (17) [FIXED]
- The wrapping code does not work right for lines like the following:
* *
@@ -24,9 +27,10 @@
- Nano fails to follow symlinks, even though -l isn't being used (20).
[Bug in global flag init, FIXED]
- When using --help or --version, the SIGINT character gets lost. (21) [FIXED]
- edit_refresh() and update_line() (and related functions), have
trouble when a tab is the character that is the boundry at COLS (23) [FIXED]
- there is an off-by-one error in keeping track of totsize. It is caused
- edit_refresh() and update_line() (and related functions) have
trouble when a tab is the character that is the boundary at COLS (23)
[FIXED]
- There is an off-by-one error in keeping track of totsize. It is caused
by the fact that we count the newline at the end when we read in a file
but we do not, in fact, display this newline. This should go away
implicitly when the "Magic Line" returns, but it is noted here for
@@ -38,59 +42,92 @@
a dialog about not being able to write the file, and it will not let the
user exit (29, discovered by Joshua Jensen) [FIXED]
- Using nano -k, marked text is not cut properly. (31) [FIXED]
- Invoking -t or -k has the effect of invoking both option. (32) [FIXED]
- Invoking -t or -k has the effect of invoking both options. (32) [FIXED]
- totsize becomes incorrect after word-wrapping (25) [FIXED]
- Wrapping a line with autoindent mode sometimes causes a segfault (19)[FIXED]
- Wrapping a line with autoindent mode sometimes causes a segfault (19)
[FIXED]
- When inserting files, the display sometimes fails to display properly
until a pageup/down occurs (22)[FIXED]
- In search/replace code there is too much refreshing in bottomwin (26)
[FIXED]
until a pageup/down occurs (22) [FIXED]
- In search/replace code, there is too much refreshing in bottomwin (26)
[FIXED]
- In replace, there is no way to accept the default replace string. (27)
[FIXED]
[FIXED]
- Using nano -t, user can not exit until a filename is given via ^O. (30)
[FIXED]
- Using -k cut text is not pasted properly. (34) [FIXED].
- Using -k pasted text is not updated properly if it goes beyond editbot. (35)
[FIXED]
- Doing a cut with -k can screw up the filestruct, fault is in cutting
[FIXED]
- totsize problems still abound in do_justify (33) [FIXED]
- Using -k, cut text is not pasted properly. (34) [FIXED].
- Using -k, pasted text is not updated properly if it goes beyond editbot. (35)
[FIXED]
- Doing a cut with -k can screw up the filestruct; fault is in cutting
code. (36) [FIXED]
- Hitting enter on the magic line makes new lines, but they are not
written out to disk when saved..... (37). [FIXED]
- Page up and page down do not work the same way as Pico (# of lines). (38)
[FIXED]
- Page up and page down do not work the same way as in Pico (# of lines). (38)
[FIXED]
- When doing a search and the marker is set, the screen does not always
properly update the inverted text (39). [FIXED]
- Searches for a string that only exist on one line multiple times will
fail after finding the last occurance (discovered by Ken Tyler) (40). [FIXED]
- Alt-Z is current broken to toggle suspend. I guess I still don't know
- Searches for a string that only exists on one line multiple times will
fail after finding the last occurrence (discovered by Ken Tyler) (40).
[FIXED]
- Alt-Z is currently broken to toggle suspend. I guess I still don't know
signals very well =-) (41) [FIXED].
- Unable to cut the entire file using the marker (discovered by Kev Tyler)
(42). [FIXED]
- The keypad does not work when nano runs in the Gnome terminal (43). [FIXED]
- When reading in a file, if the file is a directory the contents of the
- When reading in a file, if the file is a directory, the contents of the
file being edited are blown away (discovered by Chris Pimlot) (44). [FIXED]
- in certain terms, nano will leave a "ghost" of screen upon exit
when called from inside mutt (among other settings) (45). [FIXED]
- In replace, hitting the Goto line shortcut key does nothing after a
search string is entered (discovered by Rocco Corsi) (46) [FIXED].
- When typing in a string in serahc or replace and hitting CASE_SENSITVE
- When typing in a string in search or replace and hitting CASE_SENSITIVE
or the other search string, the current string edit is blown away in
favor of the last stored search (47) [FIXED]
- If nano fails to open a file when it starts up,doing almost anything
- If nano fails to open a file when it starts up, doing almost anything
causes a segfault (discovered by Ben Roberts) (48). [FIXED]
- In certain terminals, nano would not work properly with keypad().
Turned out to be the silly timeout(0) call which is completely
unneeded anyway. (49) [FIXED]
Turned out to be the silly timeout(0) call, which is completely
unneeded, anyway. (49) [FIXED]
- With less than a page of text, doing a page down will move the
current line to the top of the screen, which it shouldn't do. (50)
[FIXED]
- with PDCURSES, running meta-X turns off the keypad. (51) [FIXED]
- Resizing the window completely screws up the display if in any other
mode than normal editing (help screen, search and replace, file
browser..) (52) [FIXED]
- Alt speller argument (-s, --speller) does not take a string argument of
more than one word. (53) [FIXED].
- Cut to end cutting (-k) causes segfaults (try cutting "- Backup making
(filename~)?" line in TODO file) (discovered by
higuita@cadernoverde.com) (54) [FIXED].
- When using autoindent (-i), wrapped text does not get autoindented
(55, discovered by Mark Senior) [FIXED].
- When using -R (regex) and -p (pico mode), subsequent searches after
the first fail if no string is entered (56) [FIXED].
- Page down on a file of editwinrows fails (again). Reported by Ryan
Krebs (57) [FIXED].
- File browser aborts on Solaris in qsort() call. (Reported by
Matthias Andree) (58) [FIXED].
- Can modify the current file in view mode with ^W^R (discovered by Rocco
Corsi) (58) [FIXED].
- When page up is used after two page down's, the screen doesn't update
properly (discovered by David Lawrence Ramsey) (59) [FIXED].
- On BSD systems, marked cutting sna paste often screws up the
last line in the cutbuffer (discovered by Barry Pederson) (60) [FIXED]
- Blank lines are not kept when cutting with -k (discovered by Rocco)
(61) [FIXED].
- Nano will not suspend properly inside of mutt (62) [FIXED].
- When switching from Pico mode to normal mode, the previous search is
not displayed until cancelling the search (63) [FIXED].
- If you change search options but don't change the search string in
normal mode, hitting enter causes the search/replace to abort (64)
(Jordi Mallach) [FIXED].
- Cutting one line of text causes the screen to recenter the line
(reported and fixed by David Lawrence Ramsey) (65) [FIXED].
- When cutting marked text including the bottom of the file, a new
"magic line" is not created" (reported by David Lawrence
Ramsey, fixed by David Lawrence Ramsey & Chris) (66) [FIXED].
** Open BUGS **
- Marked cutting sometimes leaves a newline in the file unintelligently,
such as when all of a line is selected but the mark doesn't proceed to
the new line. (8) { Is this an issue? compare to pico 3.5 }
- totsize problems still abound in do_justify (33).
$Id$

726
ChangeLog

File diff suppressed because it is too large Load Diff

View File

@@ -1,24 +1,38 @@
## $Id$
AUTOMAKE_OPTIONS = gnu no-dependencies
M4DIR = $(srcdir)/m4
ACLOCAL_AMFLAGS = -I $(M4DIR)
ACINCLUDE_INPUTS = $(M4DIR)/gettext.m4 $(M4DIR)/largefile.m4 \
$(M4DIR)/lcmessage.m4 $(M4DIR)/progtest.m4
bin_PROGRAMS = nano
nano_SOURCES = cut.c \
nano_SOURCES = color.c \
cut.c \
files.c \
global.c \
move.c \
nano.c \
nano.h \
proto.h \
rcfile.c \
search.c \
utils.c \
winio.c
man_MANS = nano.1
nano_LDADD = @INTLLIBS@
nano_LDADD = @GLIB_LIBS@ @INTLLIBS@
EXTRA_DIST = AUTHORS BUGS COPYING ChangeLog INSTALL NEWS README \
TODO install-sh missing mkinstalldirs nano.1 nano.1.html \
faq.html
info_TEXINFOS = nano.texi
MAKEINFO = makeinfo --no-split
EXTRA_DIST = ABOUT-NLS AUTHORS BUGS COPYING ChangeLog INSTALL NEWS \
README THANKS TODO install-sh missing mkinstalldirs \
nano.1 nano.1.html faq.html nanorc.sample $(ACINCLUDE_INPUTS)
SUBDIRS = po intl
localedir = $(datadir)/locale
localedir = @LOCALE_DIR@
INCLUDES = -Iintl -DLOCALEDIR=\"$(localedir)\" -I@includedir@
$(srcdir)/acinclude.m4: $(ACINCLUDE_INPUTS)
cat $(ACINCLUDE_INPUTS) > $@

View File

@@ -68,6 +68,7 @@ GLIB_CONFIG = @GLIB_CONFIG@
GLIB_LIBS = @GLIB_LIBS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GNU_LOCALE_DIR = @GNU_LOCALE_DIR@
GT_NO = @GT_NO@
GT_YES = @GT_YES@
INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@
@@ -75,7 +76,7 @@ INSTOBJEXT = @INSTOBJEXT@
INTLDEPS = @INTLDEPS@
INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@
MAKEINFO = @MAKEINFO@
LOCALE_DIR = @LOCALE_DIR@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
PACKAGE = @PACKAGE@
@@ -87,19 +88,28 @@ USE_NLS = @USE_NLS@
VERSION = @VERSION@
l = @l@
AUTOMAKE_OPTIONS = gnu no-dependencies
M4DIR = $(srcdir)/m4
ACLOCAL_AMFLAGS = -I $(M4DIR)
ACINCLUDE_INPUTS = $(M4DIR)/gettext.m4 $(M4DIR)/largefile.m4 $(M4DIR)/lcmessage.m4 $(M4DIR)/progtest.m4
bin_PROGRAMS = nano
nano_SOURCES = cut.c files.c global.c move.c nano.c nano.h proto.h search.c utils.c winio.c
nano_SOURCES = color.c cut.c files.c global.c move.c nano.c nano.h proto.h rcfile.c search.c utils.c winio.c
man_MANS = nano.1
nano_LDADD = @INTLLIBS@
nano_LDADD = @GLIB_LIBS@ @INTLLIBS@
EXTRA_DIST = AUTHORS BUGS COPYING ChangeLog INSTALL NEWS README TODO install-sh missing mkinstalldirs nano.1 nano.1.html faq.html
info_TEXINFOS = nano.texi
MAKEINFO = makeinfo --no-split
EXTRA_DIST = ABOUT-NLS AUTHORS BUGS COPYING ChangeLog INSTALL NEWS README THANKS TODO install-sh missing mkinstalldirs nano.1 nano.1.html faq.html nanorc.sample $(ACINCLUDE_INPUTS)
SUBDIRS = po intl
localedir = $(datadir)/locale
localedir = @LOCALE_DIR@
INCLUDES = -Iintl -DLOCALEDIR=\"$(localedir)\" -I@includedir@
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@@ -112,21 +122,26 @@ DEFS = @DEFS@ -I. -I$(srcdir) -I.
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
nano_OBJECTS = cut.o files.o global.o move.o nano.o search.o utils.o \
winio.o
nano_OBJECTS = color.o cut.o files.o global.o move.o nano.o rcfile.o \
search.o utils.o winio.o
nano_DEPENDENCIES =
nano_LDFLAGS =
CFLAGS = @CFLAGS@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
TEXI2DVI = texi2dvi
INFO_DEPS = nano.info
DVIS = nano.dvi
TEXINFOS = nano.texi
man1dir = $(mandir)/man1
MANS = $(man_MANS)
NROFF = nroff
DIST_COMMON = README ./stamp-h.in ABOUT-NLS AUTHORS COPYING ChangeLog \
INSTALL Makefile.am Makefile.in NEWS TODO acconfig.h aclocal.m4 \
config.h.in configure configure.in install-sh missing mkinstalldirs
INSTALL Makefile.am Makefile.in NEWS THANKS TODO acconfig.h aclocal.m4 \
config.guess config.h.in config.sub configure configure.in install-sh \
missing mkinstalldirs texinfo.tex
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
@@ -138,7 +153,7 @@ OBJECTS = $(nano_OBJECTS)
all: all-redirect
.SUFFIXES:
.SUFFIXES: .S .c .o .s
.SUFFIXES: .S .c .dvi .info .o .ps .s .texi .texinfo .txi
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps Makefile
@@ -147,7 +162,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
$(ACLOCAL_M4): configure.in
cd $(srcdir) && $(ACLOCAL)
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
@@ -230,6 +245,122 @@ nano: $(nano_OBJECTS) $(nano_DEPENDENCIES)
@rm -f nano
$(LINK) $(nano_LDFLAGS) $(nano_OBJECTS) $(nano_LDADD) $(LIBS)
nano.info: nano.texi
nano.dvi: nano.texi
DVIPS = dvips
.texi.info:
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
cd $(srcdir) \
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
.texi.dvi:
TEXINPUTS=.:$$TEXINPUTS \
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
.texi:
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
cd $(srcdir) \
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
.texinfo.info:
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
cd $(srcdir) \
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
.texinfo:
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
cd $(srcdir) \
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
.texinfo.dvi:
TEXINPUTS=.:$$TEXINPUTS \
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
.txi.info:
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
cd $(srcdir) \
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
.txi.dvi:
TEXINPUTS=.:$$TEXINPUTS \
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
.txi:
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
cd $(srcdir) \
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
.dvi.ps:
$(DVIPS) $< -o $@
install-info-am: $(INFO_DEPS)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(infodir)
@list='$(INFO_DEPS)'; \
for file in $$list; do \
d=$(srcdir); \
for ifile in `cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \
if test -f $$d/$$ifile; then \
echo " $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile"; \
$(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile; \
else : ; fi; \
done; \
done
@$(POST_INSTALL)
@if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
list='$(INFO_DEPS)'; \
for file in $$list; do \
echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\
install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\
done; \
else : ; fi
uninstall-info:
$(PRE_UNINSTALL)
@if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
ii=yes; \
else ii=; fi; \
list='$(INFO_DEPS)'; \
for file in $$list; do \
test -z "$ii" \
|| install-info --info-dir=$(DESTDIR)$(infodir) --remove $$file; \
done
@$(NORMAL_UNINSTALL)
list='$(INFO_DEPS)'; \
for file in $$list; do \
(cd $(DESTDIR)$(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9]); \
done
dist-info: $(INFO_DEPS)
list='$(INFO_DEPS)'; \
for base in $$list; do \
d=$(srcdir); \
for file in `cd $$d && eval echo $$base*`; do \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file; \
done; \
done
mostlyclean-aminfo:
-rm -f nano.aux nano.cp nano.cps nano.dvi nano.fn nano.fns nano.ky \
nano.kys nano.ps nano.log nano.pg nano.toc nano.tp nano.tps \
nano.vr nano.vrs nano.op nano.tr nano.cv nano.cn
clean-aminfo:
distclean-aminfo:
maintainer-clean-aminfo:
cd $(srcdir) && for i in $(INFO_DEPS); do \
rm -f $$i; \
if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \
rm -f $$i-[0-9]*; \
fi; \
done
install-man1:
$(mkinstalldirs) $(DESTDIR)$(man1dir)
@list='$(man1_MANS)'; \
@@ -396,10 +527,11 @@ distdir: $(DISTFILES)
-rm -rf $(distdir)
mkdir $(distdir)
-chmod 777 $(distdir)
$(mkinstalldirs) $(distdir)/$(M4DIR)
@for file in $(DISTFILES); do \
d=$(srcdir); \
if test -d $$d/$$file; then \
cp -pr $$d/$$file $(distdir)/$$file; \
cp -pr $$/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
@@ -416,9 +548,10 @@ distdir: $(DISTFILES)
|| exit 1; \
fi; \
done
info-am:
$(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-info
info-am: $(INFO_DEPS)
info: info-recursive
dvi-am:
dvi-am: $(DVIS)
dvi: dvi-recursive
check-am: all-am
check: check-recursive
@@ -430,21 +563,22 @@ all-recursive-am: config.h
install-exec-am: install-binPROGRAMS
install-exec: install-exec-recursive
install-data-am: install-man
install-data-am: install-info-am install-man
install-data: install-data-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
install: install-recursive
uninstall-am: uninstall-binPROGRAMS uninstall-man
uninstall-am: uninstall-binPROGRAMS uninstall-info uninstall-man
uninstall: uninstall-recursive
all-am: Makefile $(PROGRAMS) $(MANS) config.h
all-am: Makefile $(INFO_DEPS) $(PROGRAMS) $(MANS) config.h
all-redirect: all-recursive-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs: installdirs-recursive
installdirs-am:
$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(mandir)/man1
$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(infodir) \
$(DESTDIR)$(mandir)/man1
mostlyclean-generic:
@@ -457,25 +591,27 @@ distclean-generic:
maintainer-clean-generic:
mostlyclean-am: mostlyclean-hdr mostlyclean-binPROGRAMS \
mostlyclean-compile mostlyclean-tags \
mostlyclean-compile mostlyclean-aminfo mostlyclean-tags \
mostlyclean-generic
mostlyclean: mostlyclean-recursive
clean-am: clean-hdr clean-binPROGRAMS clean-compile clean-tags \
clean-generic mostlyclean-am
clean-am: clean-hdr clean-binPROGRAMS clean-compile clean-aminfo \
clean-tags clean-generic mostlyclean-am
clean: clean-recursive
distclean-am: distclean-hdr distclean-binPROGRAMS distclean-compile \
distclean-tags distclean-generic clean-am
distclean-aminfo distclean-tags distclean-generic \
clean-am
distclean: distclean-recursive
-rm -f config.status
maintainer-clean-am: maintainer-clean-hdr maintainer-clean-binPROGRAMS \
maintainer-clean-compile maintainer-clean-tags \
maintainer-clean-generic distclean-am
maintainer-clean-compile maintainer-clean-aminfo \
maintainer-clean-tags maintainer-clean-generic \
distclean-am
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
@@ -486,7 +622,9 @@ maintainer-clean: maintainer-clean-recursive
mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \
maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \
mostlyclean-compile distclean-compile clean-compile \
maintainer-clean-compile install-man1 uninstall-man1 install-man \
maintainer-clean-compile install-info-am uninstall-info \
mostlyclean-aminfo distclean-aminfo clean-aminfo \
maintainer-clean-aminfo install-man1 uninstall-man1 install-man \
uninstall-man install-data-recursive uninstall-data-recursive \
install-exec-recursive uninstall-exec-recursive installdirs-recursive \
uninstalldirs-recursive all-recursive check-recursive \
@@ -501,6 +639,9 @@ installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
$(srcdir)/acinclude.m4: $(ACINCLUDE_INPUTS)
cat $(ACINCLUDE_INPUTS) > $@
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

155
NEWS
View File

@@ -1,3 +1,94 @@
10/03/2001 - GNU nano 1.1.2 is out there. Many new features in this
release, including support for auto-converting from
DOS and Mac formatted files, as well as toggles for
writing out files in these formats. Pico's -o flag has
been implemented, as has some new smooth scrolling code
(which can be used in place of the default jerky scrolling
behavior). Also, there is now a "find matching
bracket/brace/etc" feature (Meta-]). The .nanorc file
now accepts setting the tabsize, and the help text at the
bottom of the editor is now better spaced out in the
search/replace prompts. There are also the usual helping
of bugfixes, translation updates and, surely a bug or two.
You better get ready!
07/28/2001 - GNU nano 1.1.1 is released. Our second 1.1 unstable release
features many bugfixes from the initial release, in
particular fixs for the multibuffer code, and various
compiler macro fixes. The shortcut lists for
the search and replace prompts are a little more logical
(with cancel the last option again), and the included
gettext was re-downgraded to 0.10.35 due to problems
on the PPC platform. GNU nano now includes its own
aclocal macros in the m4/ directory to allow rebuilding
the configure script to work on platforms regardless of
their gettext version.
07/15/2001 - GNU nano 1.1.0 is released. This is the first release
in the 1.1.x unstable series of GNU nano. It
incorporates all changes up to the 1.0.3 release,
and also includes many many new features, including
appending to as well as overwriting files, writing
marked text to a separate file, dynamic wrap length,
lots more compatibility with Pico, and new optional
features like .nanorc file support and multiple file
buffers! All in all, plenty of new stuff that's sure
to introduce lots of bugs ;-) Have fun with it, but
be careful, unstable means unstable.
04/06/2001 - GNU nano 1.0.1 is out there. The only new feature is a
configure option for those who want to disable all
word wrapping from nano, --disable-wrapping. Bug fixes
this release include some bugs with autoconf and i18n,
and several fixes in the file browser including a
segfault on Solaris, symlinks to directories now work
properly, and nano now sorts files case insensitively
like pilot. Have fun with it.
03/22/2001 - GNU Nano 1.0 is released! The autoindent wrapping bug
has been fixed, as well as strange bug when using Pico
mode and regex search. There have also been some minor
spelling and documentation updates. As stated on the
website, there are currently no known bugs with nano, but
some will pop up eventually and they will be addressed in
subsequent releases. We hope you enjoy this first stable
release of nano, and as always, feedback is welcome!
nano@nano-editor.org.
02/19/2001 - Nano 0.9.99pre3 brings a lot of changes! The most important
being that nano is now officially a GNU program. Some
changes have been made for GNU compatibility (like the
default list of shortcuts, "^G Get Help" is now Listed and
"^_ Goto Line" is not). The Yes/No/All keys have
finally been internationalized also. All in all, quite
a few changes, considering nano is supposed to be in a code
freeze. But there are the usual helping of bugfixes, a
nasty bug when cutting text in -k mode and some
compatibility issues with older ncurses libraries have also
been fixed. All in all, a lot to see.
01/31/2001 - Nano 0.9.99pre2 is released. Not surprisingly, all that is
new is bugfixes, bugfixes, bugfixes. There were a few
cleanups in unneeded global variables and duplicate
functions, but most is just fixing. Specifically, there
is now a preliminary (read: needs testing) fix for
resizing the editor in any mode other than normal edit
mode. Other fixes include some more tab completion
segfaults, and an silly segfault that occurred when
successfully writing a file on the 2nd try (i.e. after an
initial write error). Slowly but surely, on toward 1.0 we
travel.
01/17/2001 - Nano 0.9.99pre1 is released. This is the first pre-1.0
release of nano, and is also the first release since the
code freeze for nano 1.0. Don't expect (or request) any
new features between now and nano 1.0, only bugfixes,
optimizations and doc/translation updates. For fixes, a
nasty segfault when trying to insert one's home directory
(~), some checks for the NumLock key making the keypad
go awry, window size sanity checks, many autoconf fixes,
and support for the KDE konsole keypad layout. Have fun.
01/07/2001 - Nano 0.9.25 is the "Just one more feature I swear!" release.
It includes one new feature that Pico has had forever, a
built-in file browser. Since not everyone may want this
@@ -7,7 +98,7 @@
tab completion in certain instances. Have fun and Happy
New Year!
12/18/2000 - Nano 0.9.24 is released. This versions contains the last of
12/18/2000 - Nano 0.9.24 is released. This version contains the last of
the security fixes for writing files, as well as for a
nasty segfault when nano is unable to open a file for
reading, among other fixes. Nano also now cowardly
@@ -21,7 +112,7 @@
12/08/2000 - Nano 0.9.23 is the "race conditions bite" release. The
main reason for this release is the less-than-optimal
fix for the security issue in nano with following symbolic
links. Hopefully this will fix the probelm permanently.
links. Hopefully this will fix the problem permanently.
The --nofollow option also works again for those who
are real security nuts. There are also some display and
search fixes, and the --disable-spell function was renamed
@@ -61,10 +152,10 @@
(courtesy of Mr. Rocco Corsi) and tab completion when
reading in or writing out files! There's also the usual
billion or so bug fixes. Feedback on this release is
welcome because so much much has changed, especially with
the previous string display in search and replace. Email
-> nano@nano-editor.org <-. If you like something, don't
like something, or just want to order a pizza, let us know!
welcome because so much has changed, especially with the
previous string display in search and replace. Email ->
nano@nano-editor.org <-. If you like something, don't like
something, or just want to order a pizza, let us know!
10/02/2000 - Nano 0.9.19 is the "Chris is getting married in less than
a week and needs a distraction" release. There are only
@@ -90,16 +181,16 @@
flags (M-c, M-i, M-z, M-x, M-p, M-w, M-m, M-k and M-e for
-c, -i, -x, -p, -w, -k, and -R).
08/09/2000 - Nano 0.9.16, after some struggling, is release. This release
08/09/2000 - Nano 0.9.16, after some struggling, is released. This release
should fix a few of the holes that 0.9.15 dug. The
"cutting text on the first line" bug is fixed, as is the
"cutting text on the last line" bug. Nice symmetry there
huh? Also the --tabsize argument should now work as well
as by using -T.
08/03/2000 - Nano 0.9.15 is the "I cant think of a release description"
08/03/2000 - Nano 0.9.15 is the "I can't think of a release description"
release. There are the usual gala of display bugfixes,
a for the the nasty bug in -k mode that could create a
a fix for the the nasty bug in -k mode that could create a
loop in the file being edited, and some other code
cleanup. Also, the -T option should now work regardless
of the curses library used. Yay.
@@ -108,7 +199,7 @@
be skipped as a version number" release. One typo
caused unending problems (calling nano with either -t or
-k caused both flags to be used). The -k code is also now
closer in functionality to Pico's -k mode, please
closer in functionality to Pico's -k mode; please
note that this code is not finished yet. Working on this
code has made me realize that there is not enough
abstraction in the code, and I will be working on that
@@ -117,7 +208,7 @@
07/23/2000 - Nano 0.9.13 has a few new bits and bobs, most notably the
-k option from Pico (cut to end of line). The majority
of changes in this release are bugfixes however, including
of changes in this release are bugfixes, however, including
the usual display fixes and fixes for writing to symbolic
links and un-writeable files. Barring any other major
changes, this should be the feature set for nano 1.0,
@@ -126,12 +217,12 @@
07/07/2000 - Nano 0.9.12 (The "lucky day" release) is bursting with new
features, bug fixes, and yummy fruit flavor. For
changes, the alternate replace keystroke ^W^T is now
^W^R to be compatible with later version of Pico.
^W^R to be compatible with later versions of Pico.
^W^T is now goto line, again for Pico compatibility.
As for new features, the wonderful/hated magic line
code has returned with a vengeance! Also, regular
expression searches and replaces have been incorporated
via the -R flag. And of course there are the usual
via the -R flag. And, of course, there are the usual
helping of display and other bug fixes to top it all
off.
@@ -145,8 +236,8 @@
this function just changes the way tabs LOOK in the
editor, the tabs you input are still real tabs of normal
width (usually 8 characters); nano just makes them look
smaller or bigger whlie in the editor. New in the
translation department is an indonesian translation (id).
smaller or bigger while in the editor. New in the
translation department is an Indonesian translation (id).
06/06/2000 - Nano 0.9.10 is primarily a bugfix for the loss of SIGINT when
using "run and terminate" flags (for example, --help).
@@ -165,7 +256,7 @@
the resize crash people have been experiencing. It also
offers a new input method that should allow nano to do
things the right way (like ^S, ^Q, custom suspend keys)
and hopefully wont break with non-US keyboards. There
and hopefully won't break with non-US keyboards. There
are also the obligatory display fixes and speedups. Have
fun with it.
@@ -186,7 +277,7 @@
05/01/2000 - Nano 0.9.5 attempts to speed up the display of text
to be at least somewhat reasonable. Much
code profiling has been done to reduce the
rediculous number of redundant display updates. This
ridiculous number of redundant display updates. This
will probably expose a lot of bugs that can then be
fixed, so this release is probably not for the faint
of heart. For anyone curious, I would call nano 0.9.2
@@ -212,7 +303,7 @@
so it is being removed for the time being, and perhaps
indefinitely.
Other new stuff includes a --emable-tiny option to make
Other new stuff includes an --enable-tiny option to make
nano ultra small (disabling i18n, detailed help and the
marker and mouse code), and --with-slang to use the
slang libraries instead of ncurses.
@@ -239,7 +330,7 @@
04/07/2000 - Nano 0.9.0 has some updates, new language support and
a much better refresh setup (It's still not great, but...)
There should also be more stabillity editing long lines,
There should also be more stability editing long lines,
as there was a stupid mistake in the update_line
call. Silly me =)
@@ -248,13 +339,13 @@
Most things work, the rest doesn't doesn't work because
(a) I can't fix it or I would have already done so, and
(b) the amount of patches I'm receiving right now is quite
negligible. Forrunately this release marks the first
negligible. Fortunately, this release marks the first
release since I have acquired ownership of the nano pages
on SourceForge. Here's hoping SF will get us some more
visibilitiy, translators and patches.
visibility, translators and patches.
03/12/2000 - After a hiatus, I have finally moved (not unpacked though)
to my new home into albany. Thus I should now have more
to my new home into Albany. Thus I should now have more
time to work on nano. Nano 0.8.8, the "dear god what
broke this time?" release, incorporates patches for both
i18n and many bugfixes. It is VERY likely something broke
@@ -263,8 +354,8 @@
I would like to announce that I'm going to need
translations soonish, so if you are fluent in other
languages than english (or even better, if your native
language is not english) and you would like to submit a
languages than English (or even better, if your native
language is not English) and you would like to submit a
translation file to me, please feel free to do so. If you
do, I will list your name and email in the AUTHORS file as
the maintainer of the .po file, and from then on it is
@@ -272,9 +363,9 @@
03/01/2000 - Well, to continue my trend of going back on my previous
release's comments, nano 0.8.7 is released. The crashing
behavior was still occuring, and this most recent fix also
behavior was still occurring, and this most recent fix also
fixes some other wrapping problems, so here you go.
There may be another relase soon, there may not be, is
There may be another release soon, there may not be, is
that vague enough? =)
02/25/2000 - More minor bugfixes in 0.8.6, the bizarre behavior at the end
@@ -301,11 +392,11 @@
but I may be changing jobs very soon. I will release
version 0.8.2 as is (no i18n, no help menu (yet). I
expect things to settle down by the end of next week, and
then I can try to start on the i18n support and help menu,
then I can try to start on the i18n support and help menu;
look for these new features in version 0.8.5 to 0.9.0.
01/28/2000 - Nano 0.8.1 marks our first official step toward
internationaliation (i18n) and the help system (^G). I
internationalization (i18n) and the help system (^G). I
will be merging in Jordi's patches for initial i18n in the
next version, and will implement the help system with
i18n built into it shortly after that. Please don't
@@ -314,14 +405,14 @@
01/25/2000 - Nano 0.8.0 is officially the 'let's try and be at least a
little portable, mmmmkay?' release. There are many
portability checks and fixes, many thanks to Andy Kahn for
portability checks and fixes; many thanks to Andy Kahn for
his patches. I removed the broken do_spell behavior with
the 'spell' program, for now we only try to call 'ispell'
the 'spell' program; for now, we only try to call 'ispell'
until I write a better method to handle the output of the
normal 'spell' command.
01/24/2000 - Nano 0.7.9 features many new features. Among them are a
new autoindent feature (-i, --autoondent), tempfile
new autoindent feature (-i, --autoindent), tempfile
flag like Pico's -t flag (-t, --tempfile), and preliminary
spelling program support. The spelling function tries
to run 'spell' and then 'ispell' in that order, but you
@@ -334,7 +425,7 @@
all the changes in this release will cause a few bugs, so
0.7.8 will primarily be about fixing those bugs.
Things added this release include resizeability (kinda),
Things added this release include resizability (kinda),
new -x and -c flags (see nano -h for help), long command
line flag support, and the usual array of bugfixes.

61
README
View File

@@ -1,6 +1,6 @@
nano - a GPLed, enhanced clone of the Pico text editor.
GNU nano - an enhanced clone of the Pico text editor.
Overview
The nano project was started because of a few "problems" with the
@@ -11,11 +11,14 @@ Overview
redistribution. Because of this, Pine and Pico are not included with
many GNU/Linux distributions. Also, other features (like goto line
number or search and replace) were unavailable until recently or
require a command-line flag. Yuck.
require a command line flag. Yuck.
nano aims to solve these problems by emulating the functionality of
Pico as closely as possible while adressing the problems above and
Pico as closely as possible while addressing the problems above and
perhaps providing other extra functionality.
The nano editor is now an official GNU package. For more information
on GNU and the Free Software Foundation please see http://www.gnu.org.
How to compile and install nano
@@ -26,8 +29,8 @@ How to compile and install nano
make
make install
It's that simple. Use --prefix to override the default installation
directory of /usr/local.
It's that simple. Use --prefix with configure to override the
default installation directory of /usr/local.
Web Page
@@ -50,27 +53,33 @@ Mailing List and Bug Reports
Current Status
nano is currently at version 0.9.x, and it will probably remain there
for awhile. This reflects the adage that the last 10% of a project
takes 90% of the time. Version 1.0 will be released when there are
no unresolved bugs, and not before. I am also currently looking for
patches for all things listed in the TODO file. If you have a
comment or suggestion, please let me know, all help is appreciated.
This is the 1.1 or unstable branch of nano. New features
will be added and things will be changed around and basically
stability is not guaranteed. If this is not what you're
interested in, please use the latest 1.0.x release of nano.
New features in this branch include:
+ .nanorc file support (--enable-nanorc configure option,
see sample.nanorc file)
+ Negative -r value for "#cols from right", allows dynamic adjustment
of wrap margin based on window size.
+ Write marked text to separate file (^O after selecting with ^^).
+ Append to file (Meta-A at write file menu).
+ Multiple file buffers! (--enable-multibuffer configure option,
--multibuffer, -F cmdline flag, Meta-F toggle, then ^R to load).
+ Better compatibility with Pico. Mouse mode now supports clicking
shortcuts and files in browser, search toggles that are Pico
extensions moved to Meta keys so as to not interfere with Pico
control sequences.
+ Smooth scrolling through files, instead of the jerky half-page
down, half-page up method. This is available by using the
-S or --smooth switch, or the Meta-S toggle.
+ Better non-*nix file support. GNU nano now automatically
converts files from DOS format or Mac format to standard file
format. It can also write files in either format by using the
appropriate command line (-D, --dos or -M, --mac) or toggle
(Meta-D, Meta-O).
Warning: This program can and possibly will corrupt your data in
its current form! It is beta software, so treat it as such!
Thank you.
Note that the primary aim of nano is to emulate Pico while adding a
few key "missing" features. I do NOT want just a GPL'ed Pico clone,
nor do I want something that strays too far from the Pico design
(simple and straightforward). If you don't like this, feel free to
fork my code at any time, but please call your editor something
else, believe it or not I struggled awhile before coming up with
the name nano (and before that TIP), and it would be much easier for
everyone if there weren't five versions of the same program. As you
can guess, I'm not much of an emacs fan ;)
Chris Allegretta (chrisa@asty.org)
$Id$

37
THANKS Normal file
View File

@@ -0,0 +1,37 @@
The following people have helped GNU nano in some way or another.
If we missed you here, let us now!
Marco Colombo <magicdice@inwind.it> Italian Translator
Karl Eichwalder <keichwa@gmx.net> German Translator
Tedi Heriyanto <tedi_h@gmx.net> Indonesian Translator
Václav Haisman <V.Haisman@sh.cvut.cz> Czech Translator
Szabolcs Horvath <horvaths@janus.gimsz.sulinet.hu>
Hungarian Translator
Eivind Kjørstad <ekj@vestdata.no> Norwegian (Bokmål) Translator
Florian König <floki@bigfoot.com> German Translator
Clement Laforet <clem_laf@wanadoo.fr> French Translator
Sergey A. Ribalchenko <fisher@obu.ck.ua> Russian, Ukrainian Translator
Christian Rose <menthos@menthos.com> Swedish Translator
Keld Simonsen <keld@dkuug.dk> Danish Translator
Guus Sliepen <guus@nl.linux.org> Dutch Translator
Pierre Tane <tanep@bigfoot.com> French Translator
Jacobo Tarrío <jtarrio@trasno.net> Galician Translator
Miquel Vidal <miquel@sindominio.net> Catalan Translator
Pauli Virtanen <pauli.virtanen@saunalahti.fi> Finnish Translator
Jim Knoble <jmknoble@pobox.com> Pico compat for browser
Thomas Dickey <dickey@herndon4.his.com> Curses help and advice
Ryan Krebs <fluffy@highwire.stanford.edu> Many bug fixes and testing
Ken Tyler <kent@werple.net.au> Super bug tester and advice
David Lawrence Ramsey <pooka_regent@sluggy.net> Patches galore
Bill Soudan <wes0472@rit.edu> Regex code, etc
Ben Armstrong <synrg@sanctuary.nslug.ns.ca> Negative -r value idea, code
Jeremy Robichaud <robicj@yahoo.com> Beta tester
Roy Lanek <lanek@ranahminang.net> Advice and advocacy
Sven Guckes <guckes@math.fu-berlin.de> Advice and Advocacy
Neil Parks <nparks@acsmail.com> Bug reports n fixes
Chuck Mead <csm@MoonGroup.com> Feedback and RPM stuff
Mike Melanson <melanson@pcisys.net> Bugs
$Id$

9
TODO
View File

@@ -24,5 +24,14 @@ For Next Version:
- Color syntax highlighting? (certainly seems like there's a demand for it.)
- .nanorc ?????
- Backup making (filename~)?
- Search (etc) string history [1.1]
- Implement Pico's -j and -g flags, as they are pretty easy to do.
- Make mouse support work with clicking on the shortcuts (-m). Must
make global variable pointing to current shortcut list to determine what
keystroke to ungetch(). [DONE].
- Implement -o (chroot of sorts)
- Allow -r to take a negative argument, meaning right margin instead of
left (allows resizing that way), formerly -W arg. [DONE]
- UTF-8 support.
$Id$

View File

@@ -3,6 +3,9 @@
/* Define this if you have the wresize function in your ncurses-type library */
#undef HAVE_WRESIZE
/* Define this if you have the resizeterm function in your ncurses-type library */
#undef HAVE_RESIZETERM
/* Define this if your curses lib has the _use_keypad flag */
#undef HAVE_USEKEYPAD
@@ -44,3 +47,27 @@
/* Define this to disable the built-in (crappy) file browser */
#undef DISABLE_BROWSER
/* Define this to disable any and all text wrapping */
#undef DISABLE_WRAPPING
/* Define this to disable the mouse functions */
#undef DISABLE_MOUSE
/* Define this to disable setting of the operating directory (chroot of sorts) */
#undef DISABLE_OPERATINGDIR
/* Define this to enable multiple file buffers; this is disabled if NANO_SMALL is defined */
#undef ENABLE_MULTIBUFFER
/* Define this to use the .nanorc file */
#undef ENABLE_NANORC
/* Define this if your curses library has the use_default_colors command */
#undef HAVE_USE_DEFAULT_COLORS
/* Define this to have syntax hilighting, requires ENABLE_NANORC too! */
#undef ENABLE_COLOR
/* Define this to enable undoing....something */
#undef ENABLE_UNDO

226
aclocal.m4 vendored
View File

@@ -125,6 +125,99 @@ for am_file in <<$1>>; do
done<<>>dnl>>)
changequote([,]))])
#serial 19
dnl By default, many hosts won't let programs access large files;
dnl one must use special compiler options to get large-file access to work.
dnl For more details about this brain damage please see:
dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html
dnl Written by Paul Eggert <eggert@twinsun.com>.
dnl Internal subroutine of AC_SYS_LARGEFILE.
dnl AC_SYS_LARGEFILE_TEST_INCLUDES
AC_DEFUN(AC_SYS_LARGEFILE_TEST_INCLUDES,
[[#include <sys/types.h>
/* Check that off_t can represent 2**63 - 1 correctly.
We can't simply "#define LARGE_OFF_T 9223372036854775807",
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
# define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
]])
dnl Internal subroutine of AC_SYS_LARGEFILE.
dnl AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, CACHE-VAR, COMMENT, INCLUDES, FUNCTION-BODY)
AC_DEFUN(AC_SYS_LARGEFILE_MACRO_VALUE,
[AC_CACHE_CHECK([for $1 value needed for large files], $3,
[$3=no
AC_TRY_COMPILE([$5],
[$6],
,
[AC_TRY_COMPILE([#define $1 $2]
[$5]
,
[$6],
[$3=$2])])])
if test "[$]$3" != no; then
AC_DEFINE_UNQUOTED([$1], [$]$3, [$4])
fi])
AC_DEFUN(NANO_AC_SYS_LARGEFILE,
[AC_REQUIRE([AC_PROG_CC])
AC_ARG_ENABLE(largefile,
[ --disable-largefile omit support for large files])
if test "$enable_largefile" != no; then
AC_CACHE_CHECK([for special C compiler options needed for large files],
ac_cv_sys_largefile_CC,
[ac_cv_sys_largefile_CC=no
if test "$GCC" != yes; then
# IRIX 6.2 and later do not support large files by default,
# so use the C compiler's -n32 option if that helps.
AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES, , ,
[ac_save_CC="$CC"
CC="$CC -n32"
AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES, ,
ac_cv_sys_largefile_CC=' -n32')
CC="$ac_save_CC"])
fi])
if test "$ac_cv_sys_largefile_CC" != no; then
CC="$CC$ac_cv_sys_largefile_CC"
fi
AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64,
ac_cv_sys_file_offset_bits,
[Number of bits in a file offset, on hosts where this is settable.],
AC_SYS_LARGEFILE_TEST_INCLUDES)
AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1,
ac_cv_sys_large_files,
[Define for large files, on AIX-style hosts.],
AC_SYS_LARGEFILE_TEST_INCLUDES)
fi
])
AC_DEFUN(AC_FUNC_FSEEKO,
[AC_SYS_LARGEFILE_MACRO_VALUE(_LARGEFILE_SOURCE, 1,
ac_cv_sys_largefile_source,
[Define to make fseeko visible on some hosts (e.g. glibc 2.2).],
[#include <stdio.h>], [return !fseeko;])
# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
# in glibc 2.1.3, but that breaks too many other things.
# If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
AC_CACHE_CHECK([for fseeko], ac_cv_func_fseeko,
[ac_cv_func_fseeko=no
AC_TRY_LINK([#include <stdio.h>],
[return fseeko && fseeko (stdin, 0, 0);],
[ac_cv_func_fseeko=yes])])
if test $ac_cv_func_fseeko != no; then
AC_DEFINE(HAVE_FSEEKO, 1,
[Define if fseeko (and presumably ftello) exists and is declared.])
fi])
# Configure paths for GLIB
# Owen Taylor 97-11-3
@@ -330,9 +423,11 @@ main ()
# but which still want to provide support for the GNU gettext functionality.
# Please note that the actual code is *not* freely available.
# serial 5
# serial 108
AC_DEFUN(AM_WITH_NLS,
AC_PREREQ(2.13) dnl Minimum Autoconf version required.
AC_DEFUN(NANO_AM_WITH_NLS,
[AC_MSG_CHECKING([whether NLS is requested])
dnl Default is enabled NLS
AC_ARG_ENABLE(nls,
@@ -343,9 +438,21 @@ AC_DEFUN(AM_WITH_NLS,
USE_INCLUDED_LIBINTL=no
AC_ARG_WITH(locale-dir,
[ --with-locale-dir=DIR specify locale directory],
LOCALE_DIR=$withval)
test -z "$LOCALE_DIR" && LOCALE_DIR='$(datadir)/locale'
AC_SUBST(LOCALE_DIR)
AC_ARG_WITH(gnu-locale-dir,
[ --with-gnu-locale-dir=DIR specify GNU locale directory],
GNU_LOCALE_DIR=$withval)
test -z "$GNU_LOCALE_DIR" && GNU_LOCALE_DIR='$(prefix)/share/locale'
AC_SUBST(GNU_LOCALE_DIR)
dnl If we use NLS figure out what method
if test "$USE_NLS" = "yes"; then
AC_DEFINE(ENABLE_NLS)
AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if NLS is requested.])
AC_MSG_CHECKING([whether included gettext is requested])
AC_ARG_WITH(included-gettext,
[ --with-included-gettext use the GNU gettext library included here],
@@ -370,23 +477,19 @@ AC_DEFUN(AM_WITH_NLS,
if test "$gt_cv_func_gettext_libc" != "yes"; then
AC_CHECK_LIB(intl, bindtextdomain,
[AC_CACHE_CHECK([for gettext in libintl],
gt_cv_func_gettext_libintl,
[AC_CHECK_LIB(intl, gettext,
gt_cv_func_gettext_libintl=yes,
gt_cv_func_gettext_libintl=no)],
gt_cv_func_gettext_libintl=no)])
[AC_CHECK_LIB(intl, gettext)])
fi
if test "$gt_cv_func_gettext_libc" = "yes" \
|| test "$gt_cv_func_gettext_libintl" = "yes"; then
AC_DEFINE(HAVE_GETTEXT)
AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
|| test "$ac_cv_lib_intl_gettext" = "yes"; then
AC_DEFINE(HAVE_GETTEXT, 1,
[Define to 1 if you have gettext and don't want to use GNU gettext.])
NANO_AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
[test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
if test "$MSGFMT" != "no"; then
AC_CHECK_FUNCS(dcgettext)
AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
NANO_AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
[test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr],
@@ -410,16 +513,17 @@ AC_DEFUN(AM_WITH_NLS,
dnl No gettext in C library. Try catgets next.
AC_CHECK_LIB(i, main)
AC_CHECK_FUNC(catgets,
[AC_DEFINE(HAVE_CATGETS)
[AC_DEFINE(HAVE_CATGETS, 1,
[Define as 1 if you have catgets and don't want to use GNU gettext.])
INTLOBJS="\$(CATOBJS)"
AC_PATH_PROG(GENCAT, gencat, no)dnl
if test "$GENCAT" != "no"; then
AC_PATH_PROG(GMSGFMT, gmsgfmt, no)
if test "$GMSGFMT" = "no"; then
AM_PATH_PROG_WITH_TEST(GMSGFMT, msgfmt,
NANO_AM_PATH_PROG_WITH_TEST(GMSGFMT, msgfmt,
[test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)
fi
AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
NANO_AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
[test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
USE_INCLUDED_LIBINTL=yes
CATOBJEXT=.cat
@@ -444,10 +548,10 @@ AC_DEFUN(AM_WITH_NLS,
if test "$nls_cv_use_gnu_gettext" = "yes"; then
dnl Mark actions used to generate GNU NLS library.
INTLOBJS="\$(GETTOBJS)"
AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
NANO_AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
[test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt)
AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
NANO_AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
[test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
AC_SUBST(MSGFMT)
USE_INCLUDED_LIBINTL=yes
@@ -481,6 +585,10 @@ AC_DEFUN(AM_WITH_NLS,
nls_cv_header_intl=intl/libintl.h
nls_cv_header_libgt=intl/libgettext.h
fi
if test -z "$nls_cv_header_intl"; then
# Clean out junk possibly left behind by a previous configuration.
rm -f intl/libintl.h
fi
AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl)
AC_OUTPUT_COMMANDS(
[case "$CONFIG_FILES" in *po/Makefile.in*)
@@ -517,7 +625,7 @@ AC_DEFUN(AM_WITH_NLS,
AC_SUBST(POSUB)
])
AC_DEFUN(AM_GNU_GETTEXT,
AC_DEFUN(NANO_AM_GNU_GETTEXT,
[AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AC_PROG_CC])dnl
AC_REQUIRE([AC_PROG_RANLIB])dnl
@@ -539,11 +647,11 @@ strdup __argz_count __argz_stringify __argz_next])
AC_CHECK_FUNCS(stpcpy)
fi
if test "${ac_cv_func_stpcpy}" = "yes"; then
AC_DEFINE(HAVE_STPCPY)
AC_DEFINE(HAVE_STPCPY, 1, [Define to 1 if you have the stpcpy function.])
fi
AM_LC_MESSAGES
AM_WITH_NLS
NANO_AM_LC_MESSAGES
NANO_AM_WITH_NLS
if test "x$CATOBJEXT" != "x"; then
if test "x$ALL_LINGUAS" = "x"; then
@@ -624,15 +732,14 @@ strdup __argz_count __argz_stringify __argz_next])
dnl Generate list of files to be processed by xgettext which will
dnl be included in po/Makefile.
test -d po || mkdir po
if test "x$srcdir" != "x."; then
if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
posrcprefix="$srcdir/"
else
posrcprefix="../$srcdir/"
fi
else
posrcprefix="../"
fi
case "$srcdir" in
.)
posrcprefix="../" ;;
/* | [[A-Za-z]]:*)
posrcprefix="$srcdir/" ;;
*)
posrcprefix="../$srcdir/" ;;
esac
rm -f po/POTFILES
sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
< $srcdir/po/POTFILES.in > po/POTFILES
@@ -648,6 +755,54 @@ strdup __argz_count __argz_stringify __argz_next])
# serial 1
dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
AC_DEFUN(NANO_AM_PATH_PROG_WITH_TEST,
[# Extract the first word of "$2", so it can be a program name with args.
set dummy $2; ac_word=[$]2
AC_MSG_CHECKING([for $ac_word])
AC_CACHE_VAL(ac_cv_path_$1,
[case "[$]$1" in
/*)
ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
;;
*)
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
for ac_dir in ifelse([$5], , $PATH, [$5]); do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
if [$3]; then
ac_cv_path_$1="$ac_dir/$ac_word"
break
fi
fi
done
IFS="$ac_save_ifs"
dnl If no 4th arg is given, leave the cache variable unset,
dnl so AC_PATH_PROGS will keep looking.
ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
])dnl
;;
esac])dnl
$1="$ac_cv_path_$1"
if test -n "[$]$1"; then
AC_MSG_RESULT([$]$1)
else
AC_MSG_RESULT(no)
fi
AC_SUBST($1)dnl
])
# Search path for a program which passes the given test.
# Ulrich Drepper <drepper@cygnus.com>, 1996.
#
# This file can be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU Public License
# but which still want to provide support for the GNU gettext functionality.
# Please note that the actual code is *not* freely available.
# serial 1
dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
AC_DEFUN(AM_PATH_PROG_WITH_TEST,
@@ -694,15 +849,18 @@ AC_SUBST($1)dnl
# but which still want to provide support for the GNU gettext functionality.
# Please note that the actual code is *not* freely available.
# serial 1
# serial 2
AC_DEFUN(AM_LC_MESSAGES,
AC_PREREQ(2.13) dnl Minimum Autoconf version required.
AC_DEFUN(NANO_AM_LC_MESSAGES,
[if test $ac_cv_header_locale_h = yes; then
AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
[AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
if test $am_cv_val_LC_MESSAGES = yes; then
AC_DEFINE(HAVE_LC_MESSAGES)
AC_DEFINE(HAVE_LC_MESSAGES, 1,
[Define if your locale.h file contains LC_MESSAGES.])
fi
fi])

123
color.c Normal file
View File

@@ -0,0 +1,123 @@
/* $Id$ */
/**************************************************************************
* color.c *
* *
* Copyright (C) 1999 Chris Allegretta *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 1, or (at your option) *
* any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the Free Software *
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
* *
**************************************************************************/
#include "config.h"
#ifdef ENABLE_COLOR
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "proto.h"
#include "nano.h"
#ifndef NANO_SMALL
#include <libintl.h>
#define _(string) gettext(string)
#else
#define _(string) (string)
#endif
void color_on(WINDOW *win, int whatever)
{
/* Temporary fallback, if the color value hasn't been set,
turn on hilighting */
if (!colors[whatever - FIRST_COLORNUM].set) {
wattron(win, A_REVERSE);
return;
}
if (colors[whatever - FIRST_COLORNUM].bold)
wattron(win, A_BOLD);
/* If the foreground color is black, we've switched fg and bg (see
the comment in colorinit_one() about this) so turn on reverse so
it looks like it's supposed to */
if (colors[whatever - FIRST_COLORNUM].fg == COLOR_BLACK)
wattron(win, A_REVERSE);
wattron(win, COLOR_PAIR(whatever));
}
void color_off(WINDOW *win, int whatever)
{
if (!colors[whatever - FIRST_COLORNUM].set) {
wattroff(win, A_REVERSE);
return;
}
wattroff(win, COLOR_PAIR(whatever));
if (colors[whatever - FIRST_COLORNUM].fg == COLOR_BLACK)
wattroff(win, A_REVERSE);
if (colors[whatever - FIRST_COLORNUM].bold)
wattroff(win, A_BOLD);
}
void colorinit_one(int colortoset, short fg, short bg, int bold)
{
colors[colortoset - FIRST_COLORNUM].fg = fg;
colors[colortoset - FIRST_COLORNUM].bg = bg;
colors[colortoset - FIRST_COLORNUM].bold = bold;
colors[colortoset - FIRST_COLORNUM].set = 1;
/* Okay, so if they want a black foreground, do a switch on the fg
and bg, because specifying black as the foreground color gives
this ugly grey color. Then in color_on we will turn A_REVERSE
which is probably what they want it to look like... */
if (fg == COLOR_BLACK)
init_pair(colortoset, bg, fg);
else
init_pair(colortoset, fg, bg);
}
int do_colorinit(void)
{
if (has_colors()) {
start_color();
/* Add in colors, if available */
#ifdef HAVE_USE_DEFAULT_COLORS
/* Use if at all possible for transparent terminals =-) */
use_default_colors();
#endif
/* Some defaults values to play with */
/* Okay I'll be nice and comment these out for the commit =)
colorinit_one(COLOR_TITLEBAR, COLOR_GREEN, COLOR_BLUE, 1);
colorinit_one(COLOR_BOTTOMBARS, COLOR_GREEN, COLOR_BLUE, 1);
colorinit_one(COLOR_STATUSBAR, COLOR_BLACK, COLOR_CYAN, 0);
colorinit_one(COLOR_TEXT, COLOR_WHITE, COLOR_BLACK, 0);
colorinit_one(COLOR_MARKER, COLOR_BLACK, COLOR_CYAN, 0);
*/
}
return 0;
}
#endif /* ENABLE_COLOR */

1183
config.guess vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -55,24 +55,12 @@
/* Define this if you have the wresize function in your ncurses-type library */
#undef HAVE_WRESIZE
/* Define this if you have the resizeterm function in your ncurses-type library */
#undef HAVE_RESIZETERM
/* Define this if your curses lib has the _use_keypad flag */
#undef HAVE_USEKEYPAD
/* Define this if you have NLS */
#undef ENABLE_NLS
/* Define this is you have the catgets command */
#undef HAVE_CATGETS
/* Define this is you have GNU gettext */
#undef HAVE_GETTEXT
/* Define this for HAVE_LC_MESSAGES */
#undef HAVE_LC_MESSAGES
/* Define this if you have the stpcpy function (cool) */
#undef HAVE_STPCPY
/* Define this to make the nano executable as small as possible */
#undef NANO_SMALL
@@ -97,6 +85,30 @@
/* Define this to disable the built-in (crappy) file browser */
#undef DISABLE_BROWSER
/* Define this to disable any and all text wrapping */
#undef DISABLE_WRAPPING
/* Define this to disable the mouse functions */
#undef DISABLE_MOUSE
/* Define this to disable setting of the operating directory (chroot of sorts) */
#undef DISABLE_OPERATINGDIR
/* Define this to enable multiple file buffers; this is disabled if NANO_SMALL is defined */
#undef ENABLE_MULTIBUFFER
/* Define this to use the .nanorc file */
#undef ENABLE_NANORC
/* Define this if your curses library has the use_default_colors command */
#undef HAVE_USE_DEFAULT_COLORS
/* Define this to have syntax hilighting, requires ENABLE_NANORC too! */
#undef ENABLE_COLOR
/* Define this to enable undoing....something */
#undef ENABLE_UNDO
/* Define if you have the __argz_count function. */
#undef HAVE___ARGZ_COUNT
@@ -196,9 +208,33 @@
/* Define if you have the i library (-li). */
#undef HAVE_LIBI
/* Define if you have the intl library (-lintl). */
#undef HAVE_LIBINTL
/* Name of package */
#undef PACKAGE
/* Version number of package */
#undef VERSION
/* Number of bits in a file offset, on hosts where this is settable. */
#undef _FILE_OFFSET_BITS
/* Define for large files, on AIX-style hosts. */
#undef _LARGE_FILES
/* Define to 1 if you have the stpcpy function. */
#undef HAVE_STPCPY
/* Define if your locale.h file contains LC_MESSAGES. */
#undef HAVE_LC_MESSAGES
/* Define to 1 if NLS is requested. */
#undef ENABLE_NLS
/* Define to 1 if you have gettext and don't want to use GNU gettext. */
#undef HAVE_GETTEXT
/* Define as 1 if you have catgets and don't want to use GNU gettext. */
#undef HAVE_CATGETS

1268
config.sub vendored Normal file

File diff suppressed because it is too large Load Diff

901
configure vendored

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +1,14 @@
# $Id$
dnl Process this file with autoconf to produce a configure script.
AC_INIT(nano.c)
AM_INIT_AUTOMAKE(nano, 0.9.25)
AM_INIT_AUTOMAKE(nano, 1.1.2)
AM_CONFIG_HEADER(config.h:config.h.in)
ALL_LINGUAS="es de fr it id fi"
ALL_LINGUAS="es de fr it id fi hu ca cs gl uk ru sv no nl da"
dnl Checks for programs.
AC_PROG_CC
AC_ISC_POSIX
NANO_AC_SYS_LARGEFILE
dnl Checks for header files.
AC_HEADER_STDC
@@ -15,20 +16,61 @@ AC_CHECK_HEADERS(fcntl.h unistd.h malloc.h termios.h termio.h limits.h getopt.h
dnl options
AC_ARG_ENABLE(tiny,
[ --enable-tiny Disables features for the sake of size
[ --enable-tiny Disable features for the sake of size
(currently disables detailed help and i18n)],
[if test x$enableval = xyes; then
AC_DEFINE(NANO_SMALL) tiny_support=yes
AC_DEFINE(DISABLE_TABCOMP)
AC_DEFINE(DISABLE_SPELLER)
AC_DEFINE(DISABLE_HELP)
AC_DEFINE(DISABLE_JUSTIFY)
AC_DEFINE(DISABLE_BROWSER)
AC_DEFINE(DISABLE_MOUSE)
AC_DEFINE(DISABLE_OPERATINGDIR)
fi])
AC_ARG_ENABLE(extra,
[ --enable-extra Enable extra (optional) functions, including easter eggs],
[if test x$enableval = xyes; then
AC_DEFINE(NANO_EXTRA) extra_support=yes
AC_DEFINE(ENABLE_MULTIBUFFER) multibuffer_support=yes
AC_DEFINE(ENABLE_UNDO) undo_support=yes
fi])
AC_ARG_ENABLE(undo,
[ --enable-undo Enable undo support],
[if test x$enableval = xyes && test x$tiny_support != xyes; then
AC_DEFINE(ENABLE_UNDO) undo_support=yes
fi])
AC_ARG_ENABLE(multibuffer,
[ --enable-multibuffer Enable multiple file buffers; this is disabled if --enable-tiny is used],
[if test x$enableval = xyes && test x$tiny_support != xyes; then
AC_DEFINE(ENABLE_MULTIBUFFER) multibuffer_support=yes
fi])
AC_ARG_ENABLE(nanorc,
[ --enable-nanorc Enable use of .nanorc file],
[if test x$enableval = xyes; then
AC_DEFINE(ENABLE_NANORC) nanorc_support=yes
fi])
AC_ARG_ENABLE(color,
[ --enable-color Enable color and syntax highlighting],
[if test x$enableval = xyes; then
AC_DEFINE(ENABLE_NANORC) nanorc_support=yes
AC_DEFINE(ENABLE_COLOR) color_support=yes
AC_MSG_WARN([
***********************************************************************
*** WARNING: Color support is currently BROKEN. Don't expect it to ***
*** work AT ALL until more is implemented. ***
***********************************************************************
])
fi])
AC_ARG_ENABLE(tabcomp,
[ --disable-tabcomp Disables tab completion code for a smaller binary],
[ --disable-tabcomp Disable tab completion code for a smaller binary],
[if test x$enableval != xyes; then
AC_DEFINE(DISABLE_TABCOMP)
fi])
@@ -40,24 +82,42 @@ AC_ARG_ENABLE(justify,
fi])
AC_ARG_ENABLE(speller,
[ --disable-speller Disables spell checker function],
[ --disable-speller Disable spell checker function],
[if test x$enableval != xyes; then
AC_DEFINE(DISABLE_SPELLER)
fi])
AC_ARG_ENABLE(help,
[ --disable-help Disables help function (^G)],
[ --disable-help Disable help function (^G)],
[if test x$enableval != xyes; then
AC_DEFINE(DISABLE_HELP)
fi])
AC_ARG_ENABLE(browser,
[ --disable-browser Disables mini file browser],
[ --disable-browser Disable mini file browser],
[if test x$enableval != xyes; then
AC_DEFINE(DISABLE_BROWSER)
fi])
AC_MSG_CHECKING(whether to use slang)
AC_ARG_ENABLE(wrapping,
[ --disable-wrapping Disable all wrapping of text (and -w flag)],
[if test x$enableval != xyes; then
AC_DEFINE(DISABLE_WRAPPING)
fi])
AC_ARG_ENABLE(mouse,
[ --disable-mouse Disable mouse support (and -m flag)],
[if test x$enableval != xyes; then
AC_DEFINE(DISABLE_MOUSE)
fi])
AC_ARG_ENABLE(operatingdir,
[ --disable-operatingdir Disable setting of operating directory (chroot of sorts)],
[if test x$enableval != xyes; then
AC_DEFINE(DISABLE_OPERATINGDIR)
fi])
AC_MSG_CHECKING([whether to use slang])
CURSES_LIB_NAME=""
AC_ARG_WITH(slang,
[ --with-slang[=DIR] Use the slang library instead of curses],
@@ -75,7 +135,7 @@ AC_ARG_WITH(slang,
fi
AC_CHECK_HEADER(slcurses.h,
AC_MSG_CHECKING(for SLtt_initialize in -lslang)
AC_MSG_CHECKING([for SLtt_initialize in -lslang])
_libs=$LIBS
LIBS="$LIBS -lslang"
AC_TRY_RUN([
@@ -94,11 +154,11 @@ int main () { SLtt_initialize (NULL); return 0; }],
AC_MSG_RESULT(no)
# We might need the term library
for termlib in ncurses curses termcap terminfo termlib; do
AC_CHECK_LIB(${termlib}, tputs, [tcap="-l$termlib"])
AC_CHECK_LIB([${termlib}], tputs, [tcap="-l$termlib"])
test -n "$tcap" && break
done
AC_MSG_CHECKING(for SLtt_initialize in -lslang $tcap)
AC_MSG_CHECKING([for SLtt_initialize in -lslang $tcap])
LIBS="$LIBS $tcap"
AC_TRY_RUN([
#include <stdio.h>
@@ -115,7 +175,7 @@ int main () { SLtt_initialize (NULL); return 0; }],
CURSES_LIB_NAME=slang], [
AC_MSG_RESULT(no)
# We might need the math library
AC_MSG_CHECKING(for SLtt_initialize in -lslang $tcap -lm)
AC_MSG_CHECKING([for SLtt_initialize in -lslang $tcap -lm])
LIBS="$LIBS -lm"
AC_TRY_RUN([
#include <stdio.h>
@@ -147,17 +207,17 @@ AC_MSG_WARN([*** Can not use slang when cross-compiling])),
LDFLAGS=${_ldflags}
fi
;;
esac], AC_MSG_RESULT(no))
esac], [AC_MSG_RESULT(no)])
dnl Checks for functions
AC_CHECK_FUNCS(snprintf vsnprintf)
if test "x$ac_cv_func_snprintf" = "xno" -o "xac_cv_func_vsnprintf" = "xno"
then
AM_PATH_GLIB(1.2.4,,
AC_MSG_ERROR([
[AC_MSG_ERROR([
*** snprintf() and/or vsnprintf() not found. GLIB not found either.
*** You need both snprintf() and vsnprintf(). Alternatively you can
*** install the GLIB library which can be found at ftp://ftp.gtk.org/.]),
*** install the GLIB library which can be found at ftp://ftp.gtk.org/.])],
glib)
glib_cflags=`$GLIB_CONFIG --cflags glib`
glib_libs=`$GLIB_CONFIG --libs glib`
@@ -176,23 +236,23 @@ dnl Checks for libraries.
if eval "test x$CURSES_LIB_NAME = x"
then
AC_CHECK_HEADERS(curses.h ncurses.h)
AC_CHECK_LIB(ncurses, tgetent,CURSES_LIB="-lncurses" CURSES_LIB_NAME=ncurses)
AC_CHECK_LIB(ncurses, tgetent, [CURSES_LIB="-lncurses" CURSES_LIB_NAME=ncurses])
fi
if eval "test x$CURSES_LIB_NAME = x"
then
AC_CHECK_LIB(curses, tgetent, CURSES_LIB="-lcurses" CURSES_LIB_NAME=curses)
AC_CHECK_LIB(curses, tgetent, [CURSES_LIB="-lcurses" CURSES_LIB_NAME=curses])
fi
# Fallback for PDCurses and less useful curses libs...
if eval "test x$CURSES_LIB_NAME = x"
then
AC_CHECK_LIB(curses, initscr, CURSES_LIB="-lcurses" CURSES_LIB_NAME=curses)
AC_CHECK_LIB(curses, initscr, [CURSES_LIB="-lcurses" CURSES_LIB_NAME=curses])
fi
if eval "test x$CURSES_LIB_NAME = x"
then
AC_CHECK_LIB(termcap, tgetent, CURSES_LIB="-ltermcap" CURSES_LIB_NAME=termcap)
AC_CHECK_LIB(termcap, tgetent, [CURSES_LIB="-ltermcap" CURSES_LIB_NAME=termcap])
fi
if eval "test x$CURSES_LIB_NAME = x"
@@ -202,24 +262,28 @@ then
*** distribution from ftp://ftp.gnu.org/pub/gnu/ncurses if you get
*** errors compiling nano.])
else
AC_MSG_RESULT("Using $CURSES_LIB_NAME as the termcap library")
AC_MSG_RESULT([Using $CURSES_LIB_NAME as the termcap library])
fi
AC_CHECK_LIB($CURSES_LIB_NAME, wresize, AC_DEFINE(HAVE_WRESIZE))
AC_CHECK_LIB([$CURSES_LIB_NAME], use_default_colors, [AC_DEFINE(HAVE_USE_DEFAULT_COLORS)])
if test x$slang_support != xyes; then
AC_CHECK_LIB([$CURSES_LIB_NAME], wresize, [AC_DEFINE(HAVE_WRESIZE)])
AC_CHECK_LIB([$CURSES_LIB_NAME], resizeterm, [AC_DEFINE(HAVE_RESIZETERM)])
# Taken from aumix (can't tell form the variable name?)
AC_CACHE_CHECK(for private member _use_keypad in WINDOW,
aumix_cv_struct_window_usekeypad,
[AC_TRY_COMPILE([#ifdef HAVE_NCURSES_H
# Taken from aumix (can't tell form the variable name?)
AC_CACHE_CHECK([for private member _use_keypad in WINDOW],
aumix_cv_struct_window_usekeypad,
[AC_TRY_COMPILE([#ifdef HAVE_NCURSES_H
#include <ncurses.h>
#else
#include <curses.h>
#endif], [WINDOW w; w._use_keypad;],
aumix_cv_struct_window_usekeypad=yes, aumix_cv_struct_window_usekeypad=no)])
aumix_cv_struct_window_usekeypad=yes, aumix_cv_struct_window_usekeypad=no)])
if test $aumix_cv_struct_window_usekeypad = yes; then
AC_DEFINE(HAVE_USEKEYPAD)
if test $aumix_cv_struct_window_usekeypad = yes; then
AC_DEFINE(HAVE_USEKEYPAD)
fi
fi
dnl Parse any configure options
@@ -240,6 +304,6 @@ then
fi
dnl i18n stuff - pretty incomplete for now
AM_GNU_GETTEXT
NANO_AM_GNU_GETTEXT
AC_OUTPUT([Makefile intl/Makefile po/Makefile.in])

223
cut.c
View File

@@ -19,10 +19,11 @@
* *
**************************************************************************/
#include "config.h"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "config.h"
#include "proto.h"
#include "nano.h"
@@ -38,15 +39,12 @@ static filestruct *cutbottom = NULL; /* Pointer to end of cutbuffer */
void add_to_cutbuffer(filestruct * inptr)
{
filestruct *tmp;
#ifdef DEBUG
fprintf(stderr, _("add_to_cutbuffer called with inptr->data = %s\n"),
inptr->data);
#endif
totsize -= strlen(inptr->data);
tmp = cutbuffer;
if (cutbuffer == NULL) {
cutbuffer = inptr;
inptr->prev = NULL;
@@ -60,28 +58,76 @@ void add_to_cutbuffer(filestruct * inptr)
}
#ifndef NANO_SMALL
/* Cut a marked segment instead of a whole line. Only called from
do_cut_text().
destructive is whether to actually modify the file structure, if not then
just copy the buffer into cutbuffer and don't pull it from the file */
void cut_marked_segment(filestruct * top, int top_x, filestruct * bot,
int bot_x)
int bot_x, int destructive)
{
filestruct *tmp, *next;
filestruct *tmp, *next, *botcopy;
char *tmpstr;
int newsize;
/* Special case for cutting part of one line */
if (top == bot) {
int swap;
tmp = copy_node(top);
newsize = abs(bot_x - top_x) + 1;
tmpstr = charalloc(newsize + 1);
/* Make top_x always be before bot_x */
if (top_x > bot_x) {
swap = top_x;
top_x = bot_x;
bot_x = swap;
}
strncpy(tmpstr, &top->data[top_x], newsize);
if (destructive) {
memmove(&top->data[top_x], &top->data[bot_x],
strlen(&top->data[bot_x]) + 1);
align(&top->data);
current_x = top_x;
update_cursor();
}
tmpstr[newsize - 1] = 0;
tmp->data = tmpstr;
add_to_cutbuffer(tmp);
dump_buffer(cutbuffer);
return;
}
/* Set up the beginning of the cutbuffer */
tmp = copy_node(top);
tmpstr = nmalloc(strlen(&top->data[top_x]) + 1);
tmpstr = charalloc(strlen(&top->data[top_x]) + 1);
strcpy(tmpstr, &top->data[top_x]);
free(tmp->data);
tmp->data = tmpstr;
/* Chop off the end of the first line */
tmpstr = nmalloc(top_x + 1);
tmpstr = charalloc(top_x + 1);
strncpy(tmpstr, top->data, top_x);
free(top->data);
top->data = tmpstr;
if (destructive) {
free(top->data);
top->data = tmpstr;
}
do {
next = tmp->next;
add_to_cutbuffer(tmp);
if (destructive)
add_to_cutbuffer(tmp);
else {
filestruct *tmpcopy = NULL;
tmpcopy = copy_node(tmp);
add_to_cutbuffer(tmpcopy);
}
totlines--;
totsize--; /* newline (add_to_cutbuffer doesn't count newlines) */
tmp = next;
@@ -91,40 +137,56 @@ void cut_marked_segment(filestruct * top, int top_x, filestruct * bot,
dump_buffer(cutbuffer);
if (next == NULL)
return;
/* Now, paste bot[bot_x] into top[top_x] */
tmpstr = nmalloc(strlen(top->data) + strlen(&bot->data[bot_x]));
strncpy(tmpstr, top->data, top_x);
strcpy(&tmpstr[top_x], &bot->data[bot_x]);
free(top->data);
top->data = tmpstr;
if (destructive) {
null_at(bot->data, bot_x);
next = bot->next;
tmpstr = charalloc(strlen(top->data) + strlen(&bot->data[bot_x]));
strncpy(tmpstr, top->data, top_x);
strcpy(&tmpstr[top_x], &bot->data[bot_x]);
free(top->data);
top->data = tmpstr;
/* We explicitly don't decrement totlines here because we don't snarf
* up a newline when we're grabbing the last line of the mark. For
* the same reason we don't do an extra totsize decrement */
add_to_cutbuffer(bot);
top->next = next;
if (next != NULL)
next->prev = top;
dump_buffer(cutbuffer);
renumber(top);
current = top;
current_x = top_x;
/* If we're hitting the end of the buffer we should clean that up. */
if (bot == filebot) {
if (next != NULL) {
filebot = next;
} else {
filebot = top;
}
/* We explicitly don't decrement totlines here because we don't snarf
* up a newline when we're grabbing the last line of the mark. For
* the same reason, we don't do an extra totsize decrement. */
}
/* I honestly do not know why this is needed. After many hours of
using gdb on an OpenBSD box, I can honestly say something is
screwed somewhere. Not doing this causes update_line to annihilate
the last line copied into the cutbuffer when the mark is set ?!?!? */
botcopy = copy_node(bot);
null_at(botcopy->data, bot_x);
next = botcopy->next;
add_to_cutbuffer(botcopy);
if (destructive) {
free(bot);
top->next = next;
if (next != NULL)
next->prev = top;
dump_buffer(cutbuffer);
renumber(top);
current = top;
current_x = top_x;
/* If we're hitting the end of the buffer, we should clean that up. */
if (bot == filebot) {
if (next != NULL) {
filebot = next;
} else {
filebot = top;
if (top_x > 0)
new_magicline();
}
}
if (top->lineno < edittop->lineno)
edit_update(top, CENTER);
}
if (top->lineno < edittop->lineno)
edit_update(top, CENTER);
}
#endif
@@ -132,10 +194,11 @@ int do_cut_text(void)
{
filestruct *tmp, *fileptr = current;
#ifndef NANO_SMALL
char *tmpstr;
int newsize, cuttingtoend = 0;
int cuttingpartialline = 0;
int cuttingtoend = 0;
#endif
check_statblank();
if (fileptr == NULL || fileptr->data == NULL)
return 0;
@@ -146,6 +209,7 @@ int do_cut_text(void)
free_filestruct(cutbuffer);
cutbuffer = NULL;
marked_cut = 0;
#ifdef DEBUG
fprintf(stderr, _("Blew away cutbuffer =)\n"));
#endif
@@ -158,6 +222,23 @@ int do_cut_text(void)
#ifndef NANO_SMALL
if (ISSET(CUT_TO_END) && !ISSET(MARK_ISSET)) {
if (current_x == strlen(current->data)) {
/* If the line is empty and we didn't just cut a non-blank
line, create a dummy line and add it to the cutbuffer */
if (marked_cut != 1 && current->next != filebot) {
filestruct *junk;
junk = NULL;
junk = make_new_node(current);
junk->data = nmalloc(1 * sizeof (char));
junk->data[0] = 0;
add_to_cutbuffer(junk);
dump_buffer(cutbuffer);
}
do_delete();
SET(KEEP_CUTBUFFER);
marked_cut = 2;
@@ -172,43 +253,22 @@ int do_cut_text(void)
}
}
if (ISSET(MARK_ISSET)) {
if (current->lineno == mark_beginbuf->lineno) {
tmp = copy_node(current);
newsize = abs(strlen(&current->data[mark_beginx]) -
strlen(&current->data[current_x]));
tmpstr = nmalloc(newsize);
if (current_x < mark_beginx) {
strncpy(tmpstr, &current->data[current_x], newsize);
memmove(&current->data[current_x],
&current->data[mark_beginx],
strlen(&current->data[mark_beginx] - newsize));
} else {
strncpy(tmpstr, &current->data[mark_beginx], newsize);
memmove(&current->data[mark_beginx],
&current->data[current_x],
strlen(&current->data[current_x] - newsize));
current_x = mark_beginx;
update_cursor();
}
tmpstr[newsize] = 0;
tmp->data = tmpstr;
add_to_cutbuffer(tmp);
dump_buffer(cutbuffer);
align(&current->data);
} else if (current->lineno < mark_beginbuf->lineno)
if (current->lineno <= mark_beginbuf->lineno) {
if (current->lineno == mark_beginbuf->lineno)
cuttingpartialline = 1;
cut_marked_segment(current, current_x, mark_beginbuf,
mark_beginx);
mark_beginx, 1);
}
else
cut_marked_segment(mark_beginbuf, mark_beginx, current,
current_x);
current_x, 1);
placewewant = xplustabs();
UNSET(MARK_ISSET);
marked_cut = 1;
set_modified();
if (cuttingtoend)
if (cuttingpartialline || cuttingtoend)
edit_refresh();
else
edit_update(current, CENTER);
@@ -232,7 +292,7 @@ int do_cut_text(void)
} else {
add_to_cutbuffer(fileptr);
fileage = make_new_node(NULL);
fileage->data = nmalloc(1);
fileage->data = charalloc(1);
fileage->data[0] = '\0';
current = fileage;
}
@@ -295,7 +355,7 @@ int do_uncut_text(void)
/* If there's only one line in the cutbuffer */
if (cutbuffer->next == NULL) {
tmpstr =
nmalloc(strlen(current->data) + strlen(cutbuffer->data) +
charalloc(strlen(current->data) + strlen(cutbuffer->data) +
1);
strncpy(tmpstr, current->data, current_x);
strcpy(&tmpstr[current_x], cutbuffer->data);
@@ -304,19 +364,21 @@ int do_uncut_text(void)
current->data = tmpstr;
current_x += strlen(cutbuffer->data);
totsize += strlen(cutbuffer->data);
if (strlen(cutbuffer->data) == 0)
totlines++;
placewewant = xplustabs();
update_cursor();
} else { /* yuck -- no kidding! */
tmp = current->next;
/* New beginning */
tmpstr = nmalloc(current_x + strlen(newbuf->data) + 1);
tmpstr = charalloc(current_x + strlen(newbuf->data) + 1);
strncpy(tmpstr, current->data, current_x);
strcpy(&tmpstr[current_x], newbuf->data);
totsize += strlen(newbuf->data) + strlen(newend->data) + 1;
/* New end */
tmpstr2 = nmalloc(strlen(newend->data) +
tmpstr2 = charalloc(strlen(newend->data) +
strlen(&current->data[current_x]) + 1);
strcpy(tmpstr2, newend->data);
strcat(tmpstr2, &current->data[current_x]);
@@ -335,7 +397,7 @@ int do_uncut_text(void)
newend->next = tmp;
/* If tmp isn't null, we're in the middle: update the
* prev pointer. If it IS null, we're at the end, update
* prev pointer. If it IS null, we're at the end; update
* the filebot pointer */
if (tmp != NULL)
@@ -364,15 +426,19 @@ int do_uncut_text(void)
screw up all the work we just did and separate the line. There
must be a better way to do this, but not at 1AM on a work night. */
if (marked_cut == 2 && current_x != strlen(current->data)) {
if (marked_cut == 2) {
tmp = make_new_node(current);
tmp->data = nmalloc(strlen(&current->data[current_x]) + 1);
tmp->data = charalloc(strlen(&current->data[current_x]) + 1);
strcpy(tmp->data, &current->data[current_x]);
splice_node(current, tmp, current->next);
null_at(current->data, current_x);
current = current->next;
current_x = 0;
placewewant = 0;
/* Extra line added, update stuff */
totlines++;
totsize++;
}
/* Renumber from BEFORE where we pasted ;) */
renumber(hold);
@@ -381,6 +447,7 @@ int do_uncut_text(void)
dump_buffer(cutbuffer);
set_modified();
edit_refresh();
UNSET(KEEP_CUTBUFFER);
return 0;
#else
if (0) {

291
faq.html
View File

@@ -1,5 +1,6 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<title>The GNU nano editor FAQ</title>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.73 [en] (X11; U; Linux 2.2.16 i586) [Netscape]">
@@ -16,18 +17,19 @@
<blockquote><font color="#330000"><a href="#1.1">1.1 About this FAQ.</a></font>
<br><font color="#330000"><a href="#1.2">1.2. How do I contribute to it?</a></font>
<br><font color="#330000"><a href="#1.3">1.3. What is nano?</a></font>
<br><font color="#330000"><a href="#1.3">1.3. What is GNU nano?</a></font>
<br><font color="#330000"><a href="#1.4">1.4. What is the history behind
nano?</a></font>
<br><font color="#330000"><a href="#1.5">1.5. Why the name change from
TIP?</a></font>
<br><font color="#330000"><a href="#1.6">1.6. What is the current version
of nano?</a></font>
<br><font color="#330000"><a href="#1.7">1.7. I want to read the man page
<br><font color="#330000"><a href="#1.7">1.7. I want to read the manpage
without having to download the program!</a></font></blockquote>
<h2>
<font color="#330000"><a href="#2">2. Where to get nano</a></font></h2>
<font color="#330000"><a href="#2">2. Where to get GNU
nano</a></font></h2>
<blockquote><font color="#330000"><a href="#2.1">2.1. FTP and WWW sites
that carry nano.</a></font>
@@ -48,7 +50,13 @@ THE HECK DO I DO NOW?</a></font>
<br><font color="#330000"><a href="#3.4">3.4. I get errors about 'bindtextdomain',
'gettext' and/or 'gettextdomain'.&nbsp; What can I do about it?</a></font>
<br><font color="#330000"><a href="#3.5">3.5. Nano should automatically
run strip on the binary when installing it!</a></font></blockquote>
run strip on the binary when installing it!</a></font>
<br><font color="#330000"><a href="#3.6">3.6. How can I make the
executable smaller? This is too bloated!</a></font>
<br><font color="#330000"><a href="#3.7">3.7. Tell me more about this
multibuffer stuff!</a></font>
<br><font color="#330000"><a href="#3.8">3.8. How do I make a .nanorc file
that nano will read when I start it?</a></font></blockquote>
<h2>
<font color="#330000"><a href="#4">4. Running</a></font></h2>
@@ -59,13 +67,16 @@ bucky/meta key doesn't seem to work!&nbsp; What can I do?</a></font>
&lt;insert keystroke here>!</a></font>
<br><font color="#330000"><a href="#4.3">4.3. Nano crashes when I resize
my window.&nbsp;&nbsp; How can I fix that?</a></font>
<br><font color="#330000"><a href="#4.4">4.4. Why does nano show ^\ and
^_ in the shortcut list instead of ^G and ^J?</a></font>
<br><font color="#330000"><a href="#4.4">4.4. Why does nano show ^\
in the shortcut list instead of ^J?</a></font>
<br><font color="#330000"><a href="#4.5">4.5. When I type in a
search string, the string I last searched for is already in front of
my cursor! !What happened?!</a></font>
<br><a href="#4.6">4.6 How do I make nano my default editor (in Pine,
mutt, etc.)?</a></blockquote>
my cursor! What happened?!</a></font>
<br><font color="#330000"><a href="#4.6">4.6. I get the message "NumLock
glitch detected. Keypad will malfunction with NumLock off." What
gives?</a></font>
<br><font color="#330000"><a href="#4.7">4.7. How do I make nano my
default editor (in Pine, mutt, etc.)?</a></font></blockquote>
<h2>
<font color="#330000"><a href="#5">5. Internationalization</a></font></h2>
@@ -128,13 +139,13 @@ href="mailto:nano@nano-editor.org">nano@nano-editor.org</a> and if
it is useful enough it will be included in future versions.</font></blockquote>
<h2>
<a NAME="1.3"></a><font color="#330000">1.3. What is nano?</font></h2>
<a NAME="1.3"></a><font color="#330000">1.3. What is GNU nano?</font></h2>
<blockquote><font color="#330000">Nano is designed to be a free replacement
for the Pico text editor, part of the PINE email suite from <a href="http://www.washington.edu/pine">The
University of Washington</a>.&nbsp; It aims to "emulate Pico as closely
as possible and perhaps include extra functionality WITHOUT breaking compatibility
with Pico.</font></blockquote>
<blockquote><font color="#330000">GNU Nano is designed to be a free
replacement for the Pico text editor, part of the PINE email suite from <a
href="http://www.washington.edu/pine">The University of
Washington</a>.&nbsp; It aims to "emulate Pico as closely as possible and
perhaps include extra functionality.</font></blockquote>
<h2>
<a NAME="1.4"></a><font color="#330000">1.4. What is the history behind
@@ -146,11 +157,11 @@ nano?</font></h2>
on a Unix system.&nbsp; The Pico text editor is the portion of the program
one would use to compose his or her mail messages.&nbsp; Many beginners
to Unix flocked to Pico and Pine because of their well organized, easy
to use interfaces.&nbsp; With the proliferation of Linux in the mid to
to use interfaces.&nbsp; With the proliferation of GNU/Linux in the mid to
late 90's, many University students became intimately familiar with the
strengths (and weaknesses) of Pine and Pico.</font>
<p><b><font color="#330000">Then came debian...</font></b>
<p><font color="#330000">The <a href="http://www.debian.org">debian GNU/Linux</a>
<p><b><font color="#330000">Then came Debian...</font></b>
<p><font color="#330000">The <a href="http://www.debian.org">Debian GNU/Linux</a>
distribution, known for its strict standards in distributing truly "free"
software (i.e. had no restrictions on redistribution), would not include
a binary package for Pine or Pico.&nbsp; Many people had a serious dilemma:&nbsp;
@@ -160,9 +171,9 @@ sense of the word.</font>
<p><b><font color="#330000">The event...</font></b>
<p><font color="#330000">It was in late 1999 when Chris Allegretta (our
hero) was yet again complaining to himself about the less-than-perfect
license Pico was distributed under, the 10000 makefiles that came with
license Pico was distributed under, the 1000 makefiles that came with
it and how just a few small improvements could make it the Best Editor
in the World (TM).&nbsp; Having been a convert from Slackware to debian,
in the World (TM).&nbsp; Having been a convert from Slackware to Debian,
he missed having a simple binary package that included Pine and Pico, and
had grown tired of downloading them himself.</font>
<p><font color="#330000">Finally something snapped inside and Chris coded
@@ -170,8 +181,11 @@ and hacked like a madman for many hours straight one weekend to make a
(barely usable) Pico clone, at the time called TIP (Tip Isn't Pico).&nbsp;
The program could not be invoked without a filename, could not save files,
had no help menu, spell checker, and so forth.&nbsp; But over time it improved,
and with the help of a few great coders it matured to the almost stable
state it is today.</font></blockquote>
and with the help of a few great coders it matured to the (hopefully) stable
state it is today.
<p><font color="#330000">In February 2001, nano has been declared an
official GNU program by Richard Stallman. Nano also reached it's first
production release on March 22, 2001.</font></blockquote>
<h2>
<a NAME="1.5"></a><font color="#330000">1.5. Why the name change from TIP?</font></h2>
@@ -181,7 +195,7 @@ renamed to nano because of a namespace conflict with another program called
'tip'.&nbsp; The original 'tip' program "establishes a full duplex terminal
connection to a remote host", and was included with many older Unix systems
(and newer ones like Solaris). The conflict was not noticed at first because
there is no 'tip' utility included with most Linux distributions (where
there is no 'tip' utility included with most GNU/Linux distributions (where
nano was developed).</font></blockquote>
<h2>
@@ -189,7 +203,7 @@ nano was developed).</font></blockquote>
of nano?</font></h2>
<blockquote><font color="#330000">The current version of nano *should*
be 0.9.25.&nbsp; Of course you should always check the nano hompage to
be 1.1.2.&nbsp; Of course you should always check the nano hompage to
see what the latest and greatest version is.</font></blockquote>
<h2>
@@ -201,7 +215,7 @@ Okay, look <a href="http://www.nano-editor.org/dist/nano.1.html">here</a>.</font
<hr WIDTH="100%">
<h1>
<a NAME="2"></a><font color="#330000">2. Where to get nano</font></h1>
<a NAME="2"></a><font color="#330000">2. Where to get GNU nano</font></h1>
<h2>
<a NAME="2.1"></a><font color="#330000">2.1. FTP and WWW sites that carry
@@ -218,9 +232,6 @@ at the following fine web and ftp sites:</font>
<li>
<font color="#330000"><a href="ftp://ftp.nano-editor.org/pub/nano">ftp://ftp.nano-editor.org/pub/nano</a></font></li>
<li>
<font color="#330000"><a href="ftp://nano.sourceforge.net/pub/nano/">ftp://nano.sourceforge.net/pub/nano</a></font></li>
</ul>
</blockquote>
@@ -238,9 +249,6 @@ packages.</font></h2>
<li>
<font color="#330000"><a href="ftp://ftp.nano-editor.org/pub/nano/RPMS">ftp://ftp.nano-editor.org/pub/nano/RPMS</a></font></li>
<li>
<font color="#330000"><a href="ftp://nano.sourceforge.net/pub/nano/RPMS">ftp://nano.sourceforge.net/pub/nano/RPMS</a></font></li>
</ul>
<font color="#330000">Additionally, check out the Redhat contribs section
at:</font>
@@ -256,19 +264,25 @@ at:</font>
<h2>
<a NAME="2.3"></a><font color="#330000">2.3. Debian (.deb) packages.</font></h2>
<blockquote><font color="#330000">For debian users, you can check out the
<blockquote><font color="#330000">For Debian users, you can check out the
current nano packages for:</font>
<ul>
<li>
<font color="#330000"><a href="http://www.debian.org/Packages/stable/editors/nano.html">stable</a></font></li>
<li>
<font color="#330000"><a href="http://www.debian.org/Packages/testing/editors/nano.html">testing</a></font></li>
<li>
<font color="#330000"><a href="http://www.debian.org/Packages/unstable/editors/nano.html">unstable</a></font></li>
</ul>
<p><font color="#330000">You can also have a look at the</font>
<font color="#330000"><a href="ftp://ftp.debian.org/debian/pool/main/n/nano/">Package Pool</a> to see all the available binary and source packages.</font></p>
<font color="#330000">Note that versions &lt; 0.9.10 are probably not for
those wanting to get serious work done, so until the stable distribution
has an updated version of nano, you are best off using the one in unstable
for now.</font></blockquote>
those wanting to get serious work done, so if you are using Debian 2.2, check
that you have updated to 2.2r3, which comes with nano 0.9.23. If you're
tracking unstable, you probably have the newest version already.</font></blockquote>
<h2>
<a NAME="2.4"></a><font color="#330000">2.4. By CVS (for the brave).</font></h2>
@@ -310,7 +324,8 @@ try this:</font>
<p><font color="#330000">(again, where x.y.z is the version number in question).&nbsp;
Then you need to run configure with any options you might want (if any).</font>
<p><font color="#330000">The average case is this:</font>
<p><b><font color="#330000">./configure</font></b>
<p><b><font color="#330000">cd nano-x.y.z/</font></b>
<br><b><font color="#330000">./configure</font></b>
<br><b><font color="#330000">make</font></b>
<br><font color="#330000"><b>make install </b>(as root, of course)</font></blockquote>
@@ -340,9 +355,76 @@ run strip on the binary when installing it!</font></h2>
<b>make install-strip</b>. The default make install does not, and will
not, run strip automatically.</font></blockquote>
<hr WIDTH="100%">
<h1>
<a NAME="4"></a><font color="#330000">4. Running</font></h1>
<h2>
<a NAME="3.6"></a><font color="#330000">
3.6. How can I make the executable smaller? This is too
bloated!</font></h2>
<blockquote><font color="#330000">Actually, there are several parts of the
editor that can be disabled. You can pass arguments to the
<b>configure</b> script that disable certain features. Here's a brief
list:
<pre>
<b>--disable-tabcomp</b> Disables tab completion code for a smaller binary
<b>--disable-justify</b> Disable justify/unjustify function
<b>--disable-speller</b> Disables spell checker function
<b>--disable-help</b> Disables help function (^G)
<b>--disable-browser</b> Disables mini file browser
<b>--disable-wrapping</b> Disables all wrapping of text (and -w flag)
<b>--disable-mouse</b> Disables mouse support (and -m flag)
<b>--disable-operatingdir</b> Disable setting of operating directory
</pre><br>
There's also the <b>--enable-tiny</b> option which disables everything
above, as well as some larger chunks of the program (like the marker code
that you use Control-^ to select with). Also, if you know you aren't
going to be using other languages you can use <b>--disable-nls</b> to
disable internationalization and save a few K to a few dozen K depending
on if you have locale support on your system. And finally there's always
good old <b>strip</b> to strip all debugging code and code that exists in
libraries on your system.
<p>If, in the other hand, you can't live without bells and whistles, you could
try:
<pre>
<b>--enable-extra</b> Enable extra functions, including easter eggs
<b>--enable-nanorc</b> Enable use of .nanorc file
<b>--enable-color</b> Enables color and syntax highlighting
<b>--enable-multibuffer</b> Enables having multiple file buffers open
</font></blockquote>
<h2>
<a NAME="3.7"></a><font color="#330000">
3.7. Tell me more about this multibuffer stuff!</font></h2>
<blockquote><font color="#330000"> To use multiple file buffers, you must
be using nano 1.1.2 or newer, and you must have configured nano with
<b>--enable-multibuffer</b> or <b>--enable-extra</b> (use nano -V to check).
Then when you want to enable inserting a file into its own buffer instead of
into the current file, just hit <b>Meta-F</b>, then insert the file as normal
with <b>^R</b>. If you always want files to be loaded into their own buffers,
use the <b>--multibuffer</b> or <b>-F</b> flag when you invoke nano. <P>
You can move between the buffers you have open with the <b>Meta-&lt;</b> and
<b>Meta-&gt;</b> keys, or more easily with <b>Meta-,</b> and <b>Meta-.</b>
(clear as mud, right? =-). When you have more than one file buffer open,
the ^X shortcut will say "Close", instead of the normal "Exit" when only one
buffer is open.
</font></blockquote>
<h2>
<a NAME="3.8"></a><font color="#330000">
3.8. How do I make a .nanorc file that nano will read when I start it?</font></h2>
<blockquote><font color="#330000"> It's not hard at all! But, your version
of nano must have beem compiled with <b>--enable-nanorc</b>, and again must
be version 1.1.2 or newer (use nano -V to check your version and compiled
features). Then simply copy the <b>nanorc.sample</b>
that came with the nano source or your nano package (most likely in
/usr/doc/nano) to .nanorc in your home directory. If you didn't get one,
the syntax is simple. Flags are turned on and off by using the word
<b>set</b> and the getopt_long flag for the feature, for example "set
pico" or "set nowrap". </font></blockquote> <hr WIDTH="100%">
<h1><a NAME="4"></a><font color="#330000">4. Running</font></h1>
<h2>
<a NAME="4.1"></a><font color="#330000">4.1. Ack!&nbsp; My backspace/delete/enter/double
@@ -360,7 +442,8 @@ keystroke here>!</font></h2>
<blockquote><font color="#330000">If you aren't trying some bizarre keystroke
combination with some bizarre $TERM entry, chances are you have found a
bug.&nbsp;&nbsp; You are welcome to submit it to the nano-devel list or
bug.&nbsp;&nbsp; You are welcome to submit it to the
<a href="mailto:nano-devel@lists.sourceforge.net">nano-devel</a> list or
to <a href="mailto:nano@nano-editor.org">nano@nano-editor.org</a>.</font></blockquote>
<h2>
@@ -372,19 +455,21 @@ please upgrade to a newer version (at least 0.9.9 would be great, 0.9.12
is recommended).</font></blockquote>
<h2>
<a NAME="4.4"></a><font color="#330000">4.4. Why does nano show ^\ and
^_ in the shortcut list instead of ^G and ^J?</font></h2>
<a NAME="4.4"></a><font color="#330000">4.4. Why does nano show ^\ in the
shortcut list instead of ^J?</font></h2>
<blockquote><font color="#330000">The help (^G) and justify (^J) functions
<blockquote><font color="#330000">The help (^G) and justify (^J) function
were among the last to be written.&nbsp; To show the improvements that
nano had over Pico (goto line # and replace), ^_ and ^\ were put on the
shortcut list.&nbsp;&nbsp; If you use the <b>-p</b> option to nano you
will get the same shortcuts at the bottom as Pico.</font></blockquote>
shortcut list.&nbsp;&nbsp; Later, ^G came back in place of ^_ as it proved
to be very valuable for new UNIX users. If you use the <b>-p</b> option to
nano (or hit Meta-P) you will get the same shortcuts at the bottom as
Pico.</font></blockquote>
<h2>
<a name="4.5"><font color="#330000">4.5. When I type in a search
string, the string I last searched for is already in front of my
cursor! !What happened?!</font></h2>
cursor! What happened?!</font></h2>
<blockquote><font color="#330000">In nano version 0.9.20, the default is
to have a completely consistent user interface across all user input
@@ -396,12 +481,31 @@ Meta-P while in nano (see the ^G help text for more
details).</font></blockquote>
<h2>
<a NAME="4.6"></a>4.6. How do I make nano my default editor (in Pine,
<a NAME="4.6"></a>I get the message "NumLock glitch detected. Keypad
will malfunction with NumLock off." What gives?</h2>
<blockquote>
Nano (actually almost all console editors do) has issues when cycling
the NumLock key in certain X terminals (rxvt, aterm, wterm, etc...). When
you switch NumLock on to off, you put the terminal into an "application
mode" that changes what sequences are sent by the keypad. These sequences
vary sufficiently from terminal to terminal that it is nearly impossible
to work around them from within nano.
<br><br>
In a nutshell, if you want to be able to use the keypad with the arrow and
page up/down functionality, you have to exit nano and reset your terminal
(presumably with "reset" or "stty sane" or similar) and then run nano
again with NumLock off. If you know an easier way to restore "normal
mode", please mail <A href="mailto:nano@nano-editor.org">nano@nano-editor.org</A>.
<br>&nbsp;</blockquote>
<h2>
<a NAME="4.7"></a>4.7. How do I make nano my default editor (in Pine,
mutt, etc)?</h2>
<blockquote>You need to make nano your $EDITOR.&nbsp; If you want this
to be saved, you should put a line like this in your <b>.bashrc</b> if
you use bash:
you use bash (or <b>.zshrc</b> if you believe in zsh):
<p><b>export EDITOR=/usr/local/bin/nano</b>
<p>or if you use tcsh put this in your <b>.cshrc</b> file:
<p><b>setenv EDITOR /usr/local/bin/nano</b>
@@ -430,20 +534,32 @@ this in your <b>.muttrc</b>:
<a NAME="5.1"></a><font color="#330000">5.1. There's no translation for
my language!</font></h2>
<blockquote><font color="#330000">So, uh, get someone who speaks your native
language to write one =-).&nbsp; Just grab the <b>nano.pot</b> file from
the latest and greatest nano distribution (it's in the <b>po/</b> directory)
and translate each line into your native language on the <b>msgstr</b>
line.&nbsp; Then send it to the nano devel list or <a href="mailto:nano@nano-editor.org">nano@nano-editor.org</a>.</font></blockquote>
<blockquote><font color="#330000">On June of 2001, GNU nano entered the
<a href="www.iro.umontreal.ca/contrib/po/HTML">Free Translation Project</a>
and since then, translations should be managed from there.
<p>If there isn't a translation for your language, you could ask
<a href="http://www.iro.umontreal.ca/contrib/po/HTML/teams.html">your language
team</a> to tranlate nano, or better still, join your team and do it yourself.
Joining a team is easy. You just need to ask the
<a href="mailto:translation@iro.umontreal.ca">TP coordinator</a> to add you
to your team, and send a <a href="http://www.iro.umontreal.ca/contrib/po/HTML/disclaim.html">translation disclaimer to the FSF</a> (this is necessary as
nano is an official GNU package, but it does <strong>not</strong> mean that
you transfer the rights of your work to the FSF, it's just so the FSF can
legaly manage them).</p>
<p>In any case, translating nano is very easy.&nbsp; Just grab the
<b>nano.pot</b> file from the latest and greatest nano distribution
(it's in the <b>po/</b> directory) and translate each line into your native
language on the <b>msgstr</b> line.&nbsp; When you're done, you should
send it to the TP's central po repository.
<h2>
<a NAME="5.2"></a><font color="#330000">5.2. I don't like the translation
for &lt;x> in my language.&nbsp;&nbsp; How can I fix it?</font></h2>
<blockquote><font color="#330000">The best way would probably be to e-mail
the person listed in the <b>&lt;your_language>.po</b> file with your suggested
corrections and they can in turn forward it to the nano email address,
or the devel list.</font></blockquote>
the person listed in the <code>Last-Translator:</code> field in
<b>&lt;your_language&gt;.po</b> file with your suggested corrections and
they can make the changes reach the nano devel list.</font></blockquote>
<hr WIDTH="100%">
<h1>
@@ -454,7 +570,7 @@ or the devel list.</font></blockquote>
of Pico?</font></h2>
<blockquote><font color="#330000">There are many reasons to use nano instead
of Pico, a more complete list can be found at the <a href="http://www.nano-edior.org">nano
of Pico, a more complete list can be found at the <a href="http://www.nano-editor.org">nano
homepage</a>.</font></blockquote>
<h2>
@@ -467,34 +583,33 @@ of personal preference as to which editor you should use.&nbsp; If you're
the type of person who likes using the original version of a program, then
Pico is the editor for you.&nbsp;&nbsp; If you're looking for a few more
features and a 'better' license as far as adding your own changes (sacrificing
mailer integration and a little stability), nano is the way to go.</blockquote>
mailer integration with Pine), nano is the way to go.
</blockquote>
<h2>
<a NAME="6.3"></a><font color="#330000">6.3. What is so bad about the PINE
license?</font></h2>
<blockquote><font color="#330000">Technically there is nothing "wrong"
with the U of W license for Pine and Pico.&nbsp; However, it is&nbsp; not
considered truly "free" according to the <a href="http://www.debian.org/social_contract#guidelines">Debian
Free Software Guidelines</a>.&nbsp; The only real problem as far as I'm
aware as that there are limitations on the redistribution of programs based
on the Pine and Pico source.&nbsp;&nbsp; So at a real nitty gritty level,
these programs are not considered Free Software.&nbsp; This is why Pico
isn't distributed in binary form in debian, and hence one of the main reasons
nano was started.</font></blockquote>
<blockquote><font color="#330000">The U of W license for Pine and
Pico is not considered truly Free Software according to both the Free
Software Foundation and the the <a
href="http://www.debian.org/social_contract#guidelines">Debian
Free Software Guidelines</a>.&nbsp; The main problem regards the
limitations on distributing derived works: according to UW, you can
distribute their software, and you can modfify it, but you can not do
both, i.e. distribute modified binaries.</blockquote>
<h2>
<a NAME="6.4"></a><font color="#330000">6.4. Okay, well what mail program
should I use then?</font></h2>
<blockquote><font color="#330000">Well, there is nothing stopping you from
using Pine with nano (or Pine with Pico for that matter).&nbsp; But if
you want to use programs that are considered Free Software, you may want
to look into <a href="http://www.mutt.org">mutt</a>.&nbsp; It is a full-screen,
console based mail program that actually has a lot more flexibility than
Pine, but has a keymap included in the distribution that allows you to
use the same keystrokes as Pine would to send and receive mail.&nbsp; It's
also licensed under the GPL.</font></blockquote>
<blockquote><font color="#330000"> If you are looking to use a Free
Software program similar to PINE and emacs is not your thing, you should
definitely take a look at <a href="http://www.mutt.org">mutt</a>.&nbsp; It
is a full-screen, console based mail program that actually has a lot more
flexibility than Pine, but has a keymap included in the distribution that
allows you to use the same keystrokes as Pine would to send and receive
mail.&nbsp; It's also licensed under the GPL.</font></blockquote>
<h2>
<a NAME="6.5"></a><font color="#330000">6.5. Why doesn't UW simply change
@@ -527,7 +642,7 @@ any changes in the past few years in a positive direction.</font></blockquote>
hosted at <a href="http://www.sourceforge.net">SourceForge</a>, nano-announce
and nano-devel.&nbsp; Nano-announce is a very low traffic list where new
versions of nano are announced (surprise!)&nbsp; Nano-devel is a normally
low, sometimes very high traffic list for dicussing the present and future
low, sometimes high traffic list for discussing the present and future
development of nano.&nbsp; Here are links to where you can sign up for
a given list:</font><font color="#330000"></font>
<p><font color="#330000">nano-announce - <a href="http://lists.sourceforge.net/mailman/listinfo/nano-announce">http://lists.sourceforge.net/mailman/listinfo/nano-announce</a></font>
@@ -565,10 +680,28 @@ to your resume.</font></blockquote>
<blockquote><font color="#330000">Re-read Section </font><a href="#7.4">7.4</a><font color="#330000">
and you should know the answer.</font></blockquote>
<h1>
<a NAME="8"></a>8. ChangeLog</h1>
<h2>
<a NAME="8"></a><font color="#330000">8. ChangeLog</font>
</h2>
<blockquote>06/31/2000 - Initial framework.</blockquote>
<blockquote>2001/10/02 - Update for Free Translation Project.</blockquote>
<blockquote>2001/10/02 - Assorted fixes, Debian additions.</blockquote>
<blockquote>2001/06/30 - Silly typo fix.</blockquote>
<blockquote>2001/05/05 - Spelling fixes by David Lawrence Ramsey.</blockquote>
<blockquote>2001/05/02 - Misc fixes.</blockquote>
<blockquote>2001/03/26 - Typo fix in an URL.</blockquote>
<blockquote>2001/02/17 - Advocacy updates.</blockquote>
<blockquote>2001/02/15 - Added GNU notes for 0.9.99pre3.</blockquote>
<blockquote>2001/02/06 - Typo fixes.</blockquote>
<blockquote>2001/01/14 - Added note about numlock glitch.</blockquote>
<blockquote>2001/01/10 - Linux --&gt; GNU/Linux.</blockquote>
<blockquote>2001/01/09 - Added "making exe smaller section.</blockquote>
<blockquote>2000/12/19 - Typo and assorted error fixes.</blockquote>
<blockquote>2000/11/28 - Added blurb about make install-strip.</blockquote>
<blockquote>2000/11/19 - Changed Debian frozen to stable.</blockquote>
<blockquote>2000/11/18 - Previous string display (4.5).</blockquote>
<blockquote>2000/09/27 - Moved addresses to nano-editor.org.</blockquote>
<blockquote>2000/06/31 - Initial framework.</blockquote>
<P>
$Id$
</body>

1395
files.c

File diff suppressed because it is too large Load Diff

255
global.c
View File

@@ -19,8 +19,9 @@
* *
**************************************************************************/
#include <sys/stat.h>
#include "config.h"
#include <sys/stat.h>
#include "nano.h"
#include "proto.h"
@@ -34,8 +35,7 @@
/*
* Global variables
*/
int flags = 0; /* Our new flag containig many options */
int center_x = 0, center_y = 0; /* Center of screen */
int flags = 0; /* Our new flag containing many options */
WINDOW *edit; /* The file portion of the editor */
WINDOW *topwin; /* Top line of screen */
WINDOW *bottomwin; /* Bottom buffer */
@@ -54,10 +54,14 @@ filestruct *editbot = NULL; /* Same for the bottom */
filestruct *filebot = NULL; /* Last node in the file struct */
filestruct *cutbuffer = NULL; /* A place to store cut text */
#ifdef ENABLE_MULTIBUFFER
filestruct *open_files = NULL; /* The list of open files */
#endif
char *answer = NULL; /* Answer str to many questions */
int totlines = 0; /* Total number of lines in the file */
int totsize = 0; /* Total number of bytes in the file */
int placewewant = 0; /* The collum we'd like the cursor
int placewewant = 0; /* The column we'd like the cursor
to jump to when we go to the
next or previous line */
@@ -71,19 +75,41 @@ char *help_text; /* The text in the help window */
filestruct *mark_beginbuf; /* the begin marker buffer */
int mark_beginx; /* X value in the string to start */
#ifndef DISABLE_OPERATINGDIR
char *operating_dir = NULL; /* Operating directory, which we can't go
higher than */
#endif
#ifndef DISABLE_SPELLER
char *alt_speller; /* Alternative spell command */
#endif
shortcut main_list[MAIN_LIST_LEN];
shortcut whereis_list[WHEREIS_LIST_LEN];
shortcut replace_list[REPLACE_LIST_LEN];
shortcut replace_list_2[REPLACE_LIST_LEN]; /* 2nd half of replace dialog */
shortcut goto_list[GOTO_LIST_LEN];
shortcut gotodir_list[GOTODIR_LIST_LEN];
shortcut writefile_list[WRITEFILE_LIST_LEN];
shortcut insertfile_list[INSERTFILE_LIST_LEN];
shortcut help_list[HELP_LIST_LEN];
shortcut spell_list[SPELL_LIST_LEN];
#if !defined(DISABLE_BROWSER) && !defined(NANO_SMALL)
#ifndef DISABLE_BROWSER
shortcut browser_list[BROWSER_LIST_LEN];
#endif
#ifdef ENABLE_COLOR
colorstruct colors[NUM_NCOLORS];
#endif
#ifndef DISABLE_MOUSE
shortcut *currshortcut = main_list; /* Current shortcut list we're using */
int currslen = MAIN_VISIBLE; /* Length of current shortcut list */
#endif
#ifndef NANO_SMALL
toggle toggles[TOGGLE_LEN];
#endif
/* Regular expressions */
@@ -107,24 +133,36 @@ void sc_init_one(shortcut * s, int key, char *desc, char *help, int alt,
s->func = func;
}
#ifndef NANO_SMALL
/* Initialize the toggles in the same manner */
void toggle_init_one(toggle * t, int val, char *desc, int flag)
void toggle_init_one(toggle * t, int val, char *desc, int flag,
char override_ch)
{
t->val = val;
t->desc = desc;
t->flag = flag;
t->override_ch = override_ch;
}
#endif
void toggle_init(void)
{
#ifndef NANO_SMALL
char *toggle_const_msg, *toggle_autoindent_msg, *toggle_suspend_msg,
*toggle_nohelp_msg, *toggle_picomode_msg, *toggle_mouse_msg,
*toggle_cuttoend_msg, *toggle_wrap_msg;
*toggle_cuttoend_msg, *toggle_wrap_msg, *toggle_case_msg,
*toggle_backwards_msg, *toggle_dos_msg, *toggle_mac_msg,
*toggle_smooth_msg;
#ifdef ENABLE_MULTIBUFFER
char *toggle_load_msg, *nano_openprev_msg, *nano_opennext_msg;
#endif
#ifdef HAVE_REGEX_H
char *toggle_regexp_msg;
#endif
toggle_const_msg = _("Constant cursor position");
toggle_autoindent_msg = _("Auto indent");
toggle_suspend_msg = _("Suspend");
@@ -132,30 +170,62 @@ void toggle_init(void)
toggle_picomode_msg = _("Pico mode");
toggle_mouse_msg = _("Mouse support");
toggle_cuttoend_msg = _("Cut to end");
toggle_backwards_msg = _("Backwards search");
toggle_case_msg = _("Case sensitive search");
toggle_dos_msg = _("Writing file in DOS format");
toggle_mac_msg = _("Writing file in Mac format");
toggle_smooth_msg = _("Smooth scrolling");
#ifdef HAVE_REGEX_H
toggle_regexp_msg = _("Regular expressions");
#endif
toggle_wrap_msg = _("Auto wrap");
#ifdef ENABLE_MULTIBUFFER
toggle_load_msg = _("Multiple file buffers");
nano_openprev_msg = _("Open previously loaded file");
nano_opennext_msg = _("Open next loaded file");
#endif
toggle_init_one(&toggles[0], TOGGLE_CONST_KEY, toggle_const_msg,
CONSTUPDATE);
CONSTUPDATE, 0);
toggle_init_one(&toggles[1], TOGGLE_AUTOINDENT_KEY,
toggle_autoindent_msg, AUTOINDENT);
toggle_autoindent_msg, AUTOINDENT, 0);
toggle_init_one(&toggles[2], TOGGLE_SUSPEND_KEY, toggle_suspend_msg,
SUSPEND);
SUSPEND, 0);
toggle_init_one(&toggles[3], TOGGLE_NOHELP_KEY, toggle_nohelp_msg,
NO_HELP);
NO_HELP, 0);
toggle_init_one(&toggles[4], TOGGLE_PICOMODE_KEY, toggle_picomode_msg,
PICO_MODE);
PICO_MODE, 0);
toggle_init_one(&toggles[5], TOGGLE_WRAP_KEY, toggle_wrap_msg,
NO_WRAP);
NO_WRAP, 0);
toggle_init_one(&toggles[6], TOGGLE_MOUSE_KEY, toggle_mouse_msg,
USE_MOUSE);
USE_MOUSE, 0);
toggle_init_one(&toggles[7], TOGGLE_CUTTOEND_KEY, toggle_cuttoend_msg,
CUT_TO_END);
CUT_TO_END, 0);
toggle_init_one(&toggles[8], TOGGLE_BACKWARDS_KEY, toggle_backwards_msg,
REVERSE_SEARCH, 0);
toggle_init_one(&toggles[9], TOGGLE_CASE_KEY, toggle_case_msg,
CASE_SENSITIVE, 0);
toggle_init_one(&toggles[10], TOGGLE_DOS_KEY, toggle_dos_msg,
DOS_FILE, 0);
toggle_init_one(&toggles[11], TOGGLE_MAC_KEY, toggle_mac_msg,
MAC_FILE, 0);
toggle_init_one(&toggles[12], TOGGLE_SMOOTH_KEY, toggle_smooth_msg,
SMOOTHSCROLL, 0);
#ifdef ENABLE_MULTIBUFFER
toggle_init_one(&toggles[13], TOGGLE_LOAD_KEY, toggle_load_msg,
MULTIBUFFER, 0);
toggle_init_one(&toggles[14], NANO_OPENPREV_KEY, nano_openprev_msg,
0, '<');
toggle_init_one(&toggles[15], NANO_OPENNEXT_KEY, nano_opennext_msg,
0, '>');
#endif
#ifdef HAVE_REGEX_H
toggle_init_one(&toggles[8], TOGGLE_REGEXP_KEY, toggle_regexp_msg,
USE_REGEXP);
toggle_init_one(&toggles[TOGGLE_LEN - 1], TOGGLE_REGEXP_KEY,
toggle_regexp_msg, USE_REGEXP, 0);
#endif
#endif
}
@@ -173,15 +243,25 @@ void shortcut_init(int unjustify)
"", *nano_lastline_msg = "", *nano_refresh_msg =
"", *nano_mark_msg = "", *nano_delete_msg =
"", *nano_backspace_msg = "", *nano_tab_msg =
"", *nano_enter_msg = "", *nano_case_msg =
"", *nano_cancel_msg = "", *nano_unjustify_msg = "";
"", *nano_enter_msg = "", *nano_cancel_msg =
"", *nano_unjustify_msg = "", *nano_append_msg = "";
#ifndef NANO_SMALL
char *nano_tofiles_msg = "";
char *nano_tofiles_msg = "", *nano_gotodir_msg = "", *nano_case_msg =
"", *nano_reverse_msg = "";
#ifdef HAVE_REGEX_H
char *nano_regexp_msg = "", *nano_bracket_msg = "";
#endif
nano_help_msg = _("Invoke the help menu");
nano_writeout_msg = _("Write the current file to disk");
#ifdef ENABLE_MULTIBUFFER
nano_exit_msg = _("Close currently loaded file/Exit from nano");
#else
nano_exit_msg = _("Exit from nano");
#endif
nano_goto_msg = _("Goto a specific line number");
nano_justify_msg = _("Justify the current paragraph");
nano_unjustify_msg = _("Unjustify after a justify");
@@ -192,7 +272,7 @@ void shortcut_init(int unjustify)
nano_nextpage_msg = _("Move to the next screen");
nano_cut_msg = _("Cut the current line and store it in the cutbuffer");
nano_uncut_msg = _("Uncut from the cutbuffer into the current line");
nano_cursorpos_msg = _("Show the posititon of the cursor");
nano_cursorpos_msg = _("Show the position of the cursor");
nano_spell_msg = _("Invoke the spell checker (if available)");
nano_up_msg = _("Move up one line");
nano_down_msg = _("Move down one line");
@@ -212,53 +292,62 @@ void shortcut_init(int unjustify)
nano_case_msg =
_("Make the current search or replace case (in)sensitive");
nano_tofiles_msg = _("Go to file browser");
nano_gotodir_msg = _("Goto Directory");
nano_cancel_msg = _("Cancel the current function");
nano_append_msg = _("Append to the current file");
nano_reverse_msg = _("Search backwards");
#ifdef HAVE_REGEX_H
nano_regexp_msg = _("Use Regular expressions");
nano_bracket_msg = _("Find other bracket");
#endif
#endif
if (ISSET(PICO_MODE))
sc_init_one(&main_list[0], NANO_HELP_KEY, _("Get Help"),
nano_help_msg, 0, NANO_HELP_FKEY, 0, VIEW, do_help);
else
sc_init_one(&main_list[0], NANO_WRITEOUT_KEY, _("WriteOut"),
nano_writeout_msg,
0, NANO_WRITEOUT_FKEY, 0, NOVIEW, do_writeout_void);
sc_init_one(&main_list[1], NANO_EXIT_KEY, _("Exit"),
#ifdef ENABLE_MULTIBUFFER
if (open_files != NULL && (open_files->prev || open_files->next))
sc_init_one(&main_list[1], NANO_EXIT_KEY, _("Close"),
nano_exit_msg, 0, NANO_EXIT_FKEY, 0, VIEW, do_exit);
else
#endif
sc_init_one(&main_list[1], NANO_EXIT_KEY, _("Exit"),
nano_exit_msg, 0, NANO_EXIT_FKEY, 0, VIEW, do_exit);
if (ISSET(PICO_MODE))
sc_init_one(&main_list[2], NANO_WRITEOUT_KEY, _("WriteOut"),
sc_init_one(&main_list[2], NANO_WRITEOUT_KEY, _("WriteOut"),
nano_writeout_msg,
0, NANO_WRITEOUT_FKEY, 0, NOVIEW, do_writeout_void);
else
sc_init_one(&main_list[2], NANO_GOTO_KEY, _("Goto Line"),
nano_goto_msg,
NANO_ALT_G, NANO_GOTO_FKEY, 0, VIEW, do_gotoline_void);
if (ISSET(PICO_MODE))
sc_init_one(&main_list[3], NANO_JUSTIFY_KEY, _("Justify"),
nano_justify_msg, 0, NANO_JUSTIFY_FKEY, 0,
NOVIEW, do_justify);
else
sc_init_one(&main_list[3], NANO_REPLACE_KEY, _("Replace"),
sc_init_one(&main_list[3], NANO_INSERTFILE_KEY, _("Read File"),
nano_insert_msg,
0, NANO_INSERTFILE_FKEY, 0, NOVIEW, do_insertfile_void);
if (ISSET(PICO_MODE))
sc_init_one(&main_list[4], NANO_INSERTFILE_KEY, _("Read File"),
nano_insert_msg,
0, NANO_INSERTFILE_FKEY, 0, NOVIEW, do_insertfile_void);
else
sc_init_one(&main_list[4], NANO_REPLACE_KEY, _("Replace"),
nano_replace_msg,
NANO_ALT_R, NANO_REPLACE_FKEY, 0, NOVIEW, do_replace);
sc_init_one(&main_list[4], NANO_INSERTFILE_KEY, _("Read File"),
nano_insert_msg,
0, NANO_INSERTFILE_FKEY, 0, NOVIEW, do_insertfile);
sc_init_one(&main_list[5], NANO_WHEREIS_KEY, _("Where Is"),
nano_whereis_msg,
0, NANO_WHEREIS_FKEY, 0, VIEW, do_search);
sc_init_one(&main_list[6], NANO_PREVPAGE_KEY, _("Prev Page"),
nano_prevpage_msg,
0, NANO_PREVPAGE_FKEY, KEY_PPAGE, VIEW, page_up);
0, NANO_PREVPAGE_FKEY, KEY_PPAGE, VIEW, do_page_up);
sc_init_one(&main_list[7], NANO_NEXTPAGE_KEY, _("Next Page"),
nano_nextpage_msg,
0, NANO_NEXTPAGE_FKEY, KEY_NPAGE, VIEW, page_down);
0, NANO_NEXTPAGE_FKEY, KEY_NPAGE, VIEW, do_page_down);
sc_init_one(&main_list[8], NANO_CUT_KEY, _("Cut Text"),
nano_cut_msg, 0, NANO_CUT_FKEY, 0, NOVIEW, do_cut_text);
@@ -327,14 +416,15 @@ void shortcut_init(int unjustify)
nano_enter_msg,
0, KEY_ENTER, NANO_CONTROL_M, NOVIEW, do_enter_void);
if (ISSET(PICO_MODE))
sc_init_one(&main_list[25], NANO_GOTO_KEY, _("Goto Line"),
sc_init_one(&main_list[25], NANO_GOTO_KEY, _("Goto Line"),
nano_goto_msg,
NANO_ALT_G, NANO_GOTO_FKEY, 0, VIEW, do_gotoline_void);
else
sc_init_one(&main_list[25], NANO_HELP_KEY, _("Get Help"),
nano_help_msg, 0, NANO_HELP_FKEY, 0, VIEW, do_help);
#if (!defined NANO_SMALL) && (defined HAVE_REGEX_H)
sc_init_one(&main_list[26], -9, _("Find Other Bracket"),
nano_bracket_msg,
NANO_BRACKET_KEY, 0, 0, VIEW, do_find_bracket);
#endif
sc_init_one(&whereis_list[0], NANO_FIRSTLINE_KEY, _("First Line"),
nano_firstline_msg, 0, 0, 0, VIEW, do_first_line);
@@ -342,19 +432,28 @@ void shortcut_init(int unjustify)
sc_init_one(&whereis_list[1], NANO_LASTLINE_KEY, _("Last Line"),
nano_lastline_msg, 0, 0, 0, VIEW, do_last_line);
sc_init_one(&whereis_list[2], NANO_CASE_KEY, _("Case Sens"),
nano_case_msg, 0, 0, 0, VIEW, 0);
sc_init_one(&whereis_list[3], NANO_OTHERSEARCH_KEY, _("Replace"),
sc_init_one(&whereis_list[2], NANO_OTHERSEARCH_KEY, _("Replace"),
nano_replace_msg, 0, 0, 0, VIEW, do_replace);
sc_init_one(&whereis_list[4], NANO_FROMSEARCHTOGOTO_KEY,
sc_init_one(&whereis_list[3], NANO_FROMSEARCHTOGOTO_KEY,
_("Goto Line"), nano_goto_msg, 0, 0, 0, VIEW,
do_gotoline_void);
sc_init_one(&whereis_list[5], NANO_CANCEL_KEY, _("Cancel"),
nano_cancel_msg, 0, 0, 0, VIEW, 0);
#ifndef NANO_SMALL
sc_init_one(&whereis_list[4], TOGGLE_CASE_KEY, _("Case Sens"),
nano_case_msg, 0, 0, 0, VIEW, 0);
sc_init_one(&whereis_list[5], TOGGLE_BACKWARDS_KEY, _("Direction"),
nano_reverse_msg, 0, 0, 0, VIEW, 0);
#ifdef HAVE_REGEX_H
sc_init_one(&whereis_list[REPLACE_LIST_LEN - 2], TOGGLE_REGEXP_KEY,
_("Regexp"), nano_regexp_msg, 0, 0, 0, VIEW, 0);
#endif
#endif /* NANO_SMALL */
sc_init_one(&whereis_list[REPLACE_LIST_LEN - 1], NANO_CANCEL_KEY,
_("Cancel"), nano_cancel_msg, 0, 0, 0, VIEW, 0);
sc_init_one(&replace_list[0], NANO_FIRSTLINE_KEY, _("First Line"),
@@ -363,19 +462,28 @@ void shortcut_init(int unjustify)
sc_init_one(&replace_list[1], NANO_LASTLINE_KEY, _("Last Line"),
nano_lastline_msg, 0, 0, 0, VIEW, do_last_line);
sc_init_one(&replace_list[2], NANO_CASE_KEY, _("Case Sens"),
nano_case_msg, 0, 0, 0, VIEW, 0);
sc_init_one(&replace_list[3], NANO_OTHERSEARCH_KEY, _("No Replace"),
sc_init_one(&replace_list[2], NANO_OTHERSEARCH_KEY, _("No Replace"),
nano_whereis_msg, 0, 0, 0, VIEW, do_search);
sc_init_one(&replace_list[4], NANO_FROMSEARCHTOGOTO_KEY,
sc_init_one(&replace_list[3], NANO_FROMSEARCHTOGOTO_KEY,
_("Goto Line"), nano_goto_msg, 0, 0, 0, VIEW,
do_gotoline_void);
sc_init_one(&replace_list[5], NANO_CANCEL_KEY, _("Cancel"),
nano_cancel_msg, 0, 0, 0, VIEW, 0);
#ifndef NANO_SMALL
sc_init_one(&replace_list[4], TOGGLE_CASE_KEY, _("Case Sens"),
nano_case_msg, 0, 0, 0, VIEW, 0);
sc_init_one(&replace_list[5], TOGGLE_BACKWARDS_KEY, _("Direction"),
nano_reverse_msg, 0, 0, 0, VIEW, 0);
#ifdef HAVE_REGEX_H
sc_init_one(&replace_list[REPLACE_LIST_LEN - 2], TOGGLE_REGEXP_KEY,
_("Regexp"), nano_regexp_msg, 0, 0, 0, VIEW, 0);
#endif
#endif /* NANO_SMALL */
sc_init_one(&replace_list[REPLACE_LIST_LEN - 1], NANO_CANCEL_KEY,
_("Cancel"), nano_cancel_msg, 0, 0, 0, VIEW, 0);
sc_init_one(&replace_list_2[0], NANO_FIRSTLINE_KEY, _("First Line"),
@@ -400,28 +508,39 @@ void shortcut_init(int unjustify)
sc_init_one(&help_list[0], NANO_PREVPAGE_KEY, _("Prev Page"),
nano_prevpage_msg,
0, NANO_PREVPAGE_FKEY, KEY_PPAGE, VIEW, page_up);
0, NANO_PREVPAGE_FKEY, KEY_PPAGE, VIEW, do_page_up);
sc_init_one(&help_list[1], NANO_NEXTPAGE_KEY, _("Next Page"),
nano_nextpage_msg,
0, NANO_NEXTPAGE_FKEY, KEY_NPAGE, VIEW, page_down);
0, NANO_NEXTPAGE_FKEY, KEY_NPAGE, VIEW, do_page_down);
sc_init_one(&help_list[2], NANO_EXIT_KEY, _("Exit"),
nano_exit_msg, 0, NANO_EXIT_FKEY, 0, VIEW, do_exit);
#if !defined(DISABLE_BROWSER) && !defined(NANO_SMALL)
#ifndef DISABLE_BROWSER
sc_init_one(&writefile_list[0], NANO_TOFILES_KEY, _("To Files"),
nano_tofiles_msg, 0, 0, 0, NOVIEW, 0);
#endif
sc_init_one(&writefile_list[WRITEFILE_LIST_LEN - 2], NANO_APPEND_KEY, _("Append"),
nano_append_msg, 0, 0, 0, NOVIEW, 0);
sc_init_one(&writefile_list[WRITEFILE_LIST_LEN - 1], NANO_CANCEL_KEY, _("Cancel"),
nano_cancel_msg, 0, 0, 0, VIEW, 0);
#ifndef DISABLE_BROWSER
sc_init_one(&insertfile_list[0], NANO_TOFILES_KEY, _("To Files"),
nano_tofiles_msg, 0, 0, 0, NOVIEW, 0);
#endif
sc_init_one(&insertfile_list[INSERTFILE_LIST_LEN - 1], NANO_CANCEL_KEY, _("Cancel"),
nano_cancel_msg, 0, 0, 0, VIEW, 0);
sc_init_one(&spell_list[0], NANO_CANCEL_KEY, _("Cancel"),
nano_cancel_msg, 0, 0, 0, VIEW, 0);
#if !defined(DISABLE_BROWSER) && !defined(NANO_SMALL)
#ifndef DISABLE_BROWSER
sc_init_one(&browser_list[0], NANO_PREVPAGE_KEY, _("Prev Page"),
nano_prevpage_msg,
0, NANO_PREVPAGE_FKEY, KEY_PPAGE, VIEW, 0);
@@ -430,9 +549,15 @@ void shortcut_init(int unjustify)
nano_nextpage_msg,
0, NANO_NEXTPAGE_FKEY, KEY_NPAGE, VIEW, 0);
sc_init_one(&browser_list[2], NANO_EXIT_KEY, _("Exit"),
sc_init_one(&browser_list[2], NANO_GOTO_KEY, _("Goto"),
nano_gotodir_msg, 0, NANO_GOTO_FKEY, 0, VIEW, 0);
sc_init_one(&browser_list[3], NANO_EXIT_KEY, _("Exit"),
nano_exit_msg, 0, NANO_EXIT_FKEY, 0, VIEW, 0);
sc_init_one(&gotodir_list[0], NANO_CANCEL_KEY, _("Cancel"),
nano_cancel_msg, 0, 0, 0, VIEW, 0);
#endif

View File

@@ -171,7 +171,7 @@ mostlyclean:
clean: mostlyclean
distclean: clean
rm -f Makefile ID TAGS po2msg.sed po2tbl.sed
rm -f Makefile ID TAGS po2msg.sed po2tbl.sed libintl.h
maintainer-clean: distclean
@echo "This command is intended for maintainers to use;"

329
m4/gettext.m4 Normal file
View File

@@ -0,0 +1,329 @@
# Macro to add for using GNU gettext.
# Ulrich Drepper <drepper@cygnus.com>, 1995.
#
# This file can be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU Public License
# but which still want to provide support for the GNU gettext functionality.
# Please note that the actual code is *not* freely available.
# serial 108
AC_PREREQ(2.13) dnl Minimum Autoconf version required.
AC_DEFUN(NANO_AM_WITH_NLS,
[AC_MSG_CHECKING([whether NLS is requested])
dnl Default is enabled NLS
AC_ARG_ENABLE(nls,
[ --disable-nls do not use Native Language Support],
USE_NLS=$enableval, USE_NLS=yes)
AC_MSG_RESULT($USE_NLS)
AC_SUBST(USE_NLS)
USE_INCLUDED_LIBINTL=no
AC_ARG_WITH(locale-dir,
[ --with-locale-dir=DIR specify locale directory],
LOCALE_DIR=$withval)
test -z "$LOCALE_DIR" && LOCALE_DIR='$(datadir)/locale'
AC_SUBST(LOCALE_DIR)
AC_ARG_WITH(gnu-locale-dir,
[ --with-gnu-locale-dir=DIR specify GNU locale directory],
GNU_LOCALE_DIR=$withval)
test -z "$GNU_LOCALE_DIR" && GNU_LOCALE_DIR='$(prefix)/share/locale'
AC_SUBST(GNU_LOCALE_DIR)
dnl If we use NLS figure out what method
if test "$USE_NLS" = "yes"; then
AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if NLS is requested.])
AC_MSG_CHECKING([whether included gettext is requested])
AC_ARG_WITH(included-gettext,
[ --with-included-gettext use the GNU gettext library included here],
nls_cv_force_use_gnu_gettext=$withval,
nls_cv_force_use_gnu_gettext=no)
AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
dnl User does not insist on using GNU NLS library. Figure out what
dnl to use. If gettext or catgets are available (in this order) we
dnl use this. Else we have to fall back to GNU NLS library.
dnl catgets is only used if permitted by option --with-catgets.
nls_cv_header_intl=
nls_cv_header_libgt=
CATOBJEXT=NONE
AC_CHECK_HEADER(libintl.h,
[AC_CACHE_CHECK([for gettext in libc], gt_cv_func_gettext_libc,
[AC_TRY_LINK([#include <libintl.h>], [return (int) gettext ("")],
gt_cv_func_gettext_libc=yes, gt_cv_func_gettext_libc=no)])
if test "$gt_cv_func_gettext_libc" != "yes"; then
AC_CHECK_LIB(intl, bindtextdomain,
[AC_CHECK_LIB(intl, gettext)])
fi
if test "$gt_cv_func_gettext_libc" = "yes" \
|| test "$ac_cv_lib_intl_gettext" = "yes"; then
AC_DEFINE(HAVE_GETTEXT, 1,
[Define to 1 if you have gettext and don't want to use GNU gettext.])
NANO_AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
[test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
if test "$MSGFMT" != "no"; then
AC_CHECK_FUNCS(dcgettext)
AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
NANO_AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
[test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr],
[CATOBJEXT=.gmo
DATADIRNAME=share],
[CATOBJEXT=.mo
DATADIRNAME=lib])
INSTOBJEXT=.mo
fi
fi
])
if test "$CATOBJEXT" = "NONE"; then
AC_MSG_CHECKING([whether catgets can be used])
AC_ARG_WITH(catgets,
[ --with-catgets use catgets functions if available],
nls_cv_use_catgets=$withval, nls_cv_use_catgets=no)
AC_MSG_RESULT($nls_cv_use_catgets)
if test "$nls_cv_use_catgets" = "yes"; then
dnl No gettext in C library. Try catgets next.
AC_CHECK_LIB(i, main)
AC_CHECK_FUNC(catgets,
[AC_DEFINE(HAVE_CATGETS, 1,
[Define as 1 if you have catgets and don't want to use GNU gettext.])
INTLOBJS="\$(CATOBJS)"
AC_PATH_PROG(GENCAT, gencat, no)dnl
if test "$GENCAT" != "no"; then
AC_PATH_PROG(GMSGFMT, gmsgfmt, no)
if test "$GMSGFMT" = "no"; then
NANO_AM_PATH_PROG_WITH_TEST(GMSGFMT, msgfmt,
[test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)
fi
NANO_AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
[test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
USE_INCLUDED_LIBINTL=yes
CATOBJEXT=.cat
INSTOBJEXT=.cat
DATADIRNAME=lib
INTLDEPS='$(top_builddir)/intl/libintl.a'
INTLLIBS=$INTLDEPS
LIBS=`echo $LIBS | sed -e 's/-lintl//'`
nls_cv_header_intl=intl/libintl.h
nls_cv_header_libgt=intl/libgettext.h
fi])
fi
fi
if test "$CATOBJEXT" = "NONE"; then
dnl Neither gettext nor catgets in included in the C library.
dnl Fall back on GNU gettext library.
nls_cv_use_gnu_gettext=yes
fi
fi
if test "$nls_cv_use_gnu_gettext" = "yes"; then
dnl Mark actions used to generate GNU NLS library.
INTLOBJS="\$(GETTOBJS)"
NANO_AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
[test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt)
AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
NANO_AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
[test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
AC_SUBST(MSGFMT)
USE_INCLUDED_LIBINTL=yes
CATOBJEXT=.gmo
INSTOBJEXT=.mo
DATADIRNAME=share
INTLDEPS='$(top_builddir)/intl/libintl.a'
INTLLIBS=$INTLDEPS
LIBS=`echo $LIBS | sed -e 's/-lintl//'`
nls_cv_header_intl=intl/libintl.h
nls_cv_header_libgt=intl/libgettext.h
fi
dnl Test whether we really found GNU xgettext.
if test "$XGETTEXT" != ":"; then
dnl If it is no GNU xgettext we define it as : so that the
dnl Makefiles still can work.
if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
: ;
else
AC_MSG_RESULT(
[found xgettext program is not GNU xgettext; ignore it])
XGETTEXT=":"
fi
fi
# We need to process the po/ directory.
POSUB=po
else
DATADIRNAME=share
nls_cv_header_intl=intl/libintl.h
nls_cv_header_libgt=intl/libgettext.h
fi
if test -z "$nls_cv_header_intl"; then
# Clean out junk possibly left behind by a previous configuration.
rm -f intl/libintl.h
fi
AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl)
AC_OUTPUT_COMMANDS(
[case "$CONFIG_FILES" in *po/Makefile.in*)
sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
esac])
# If this is used in GNU gettext we have to set USE_NLS to `yes'
# because some of the sources are only built for this goal.
if test "$PACKAGE" = gettext; then
USE_NLS=yes
USE_INCLUDED_LIBINTL=yes
fi
dnl These rules are solely for the distribution goal. While doing this
dnl we only have to keep exactly one list of the available catalogs
dnl in configure.in.
for lang in $ALL_LINGUAS; do
GMOFILES="$GMOFILES $lang.gmo"
POFILES="$POFILES $lang.po"
done
dnl Make all variables we use known to autoconf.
AC_SUBST(USE_INCLUDED_LIBINTL)
AC_SUBST(CATALOGS)
AC_SUBST(CATOBJEXT)
AC_SUBST(DATADIRNAME)
AC_SUBST(GMOFILES)
AC_SUBST(INSTOBJEXT)
AC_SUBST(INTLDEPS)
AC_SUBST(INTLLIBS)
AC_SUBST(INTLOBJS)
AC_SUBST(POFILES)
AC_SUBST(POSUB)
])
AC_DEFUN(NANO_AM_GNU_GETTEXT,
[AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AC_PROG_CC])dnl
AC_REQUIRE([AC_PROG_RANLIB])dnl
AC_REQUIRE([AC_ISC_POSIX])dnl
AC_REQUIRE([AC_HEADER_STDC])dnl
AC_REQUIRE([AC_C_CONST])dnl
AC_REQUIRE([AC_C_INLINE])dnl
AC_REQUIRE([AC_TYPE_OFF_T])dnl
AC_REQUIRE([AC_TYPE_SIZE_T])dnl
AC_REQUIRE([AC_FUNC_ALLOCA])dnl
AC_REQUIRE([AC_FUNC_MMAP])dnl
AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \
unistd.h sys/param.h])
AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \
strdup __argz_count __argz_stringify __argz_next])
if test "${ac_cv_func_stpcpy+set}" != "set"; then
AC_CHECK_FUNCS(stpcpy)
fi
if test "${ac_cv_func_stpcpy}" = "yes"; then
AC_DEFINE(HAVE_STPCPY, 1, [Define to 1 if you have the stpcpy function.])
fi
NANO_AM_LC_MESSAGES
NANO_AM_WITH_NLS
if test "x$CATOBJEXT" != "x"; then
if test "x$ALL_LINGUAS" = "x"; then
LINGUAS=
else
AC_MSG_CHECKING(for catalogs to be installed)
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
*$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
esac
done
LINGUAS=$NEW_LINGUAS
AC_MSG_RESULT($LINGUAS)
fi
dnl Construct list of names of catalog files to be constructed.
if test -n "$LINGUAS"; then
for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
fi
fi
dnl The reference to <locale.h> in the installed <libintl.h> file
dnl must be resolved because we cannot expect the users of this
dnl to define HAVE_LOCALE_H.
if test $ac_cv_header_locale_h = yes; then
INCLUDE_LOCALE_H="#include <locale.h>"
else
INCLUDE_LOCALE_H="\
/* The system does not provide the header <locale.h>. Take care yourself. */"
fi
AC_SUBST(INCLUDE_LOCALE_H)
dnl Determine which catalog format we have (if any is needed)
dnl For now we know about two different formats:
dnl Linux libc-5 and the normal X/Open format
test -d intl || mkdir intl
if test "$CATOBJEXT" = ".cat"; then
AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen)
dnl Transform the SED scripts while copying because some dumb SEDs
dnl cannot handle comments.
sed -e '/^#/d' $srcdir/intl/$msgformat-msg.sed > intl/po2msg.sed
fi
dnl po2tbl.sed is always needed.
sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \
$srcdir/intl/po2tbl.sed.in > intl/po2tbl.sed
dnl In the intl/Makefile.in we have a special dependency which makes
dnl only sense for gettext. We comment this out for non-gettext
dnl packages.
if test "$PACKAGE" = "gettext"; then
GT_NO="#NO#"
GT_YES=
else
GT_NO=
GT_YES="#YES#"
fi
AC_SUBST(GT_NO)
AC_SUBST(GT_YES)
dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
dnl Try to locate is.
MKINSTALLDIRS=
if test -n "$ac_aux_dir"; then
MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
fi
if test -z "$MKINSTALLDIRS"; then
MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
fi
AC_SUBST(MKINSTALLDIRS)
dnl *** For now the libtool support in intl/Makefile is not for real.
l=
AC_SUBST(l)
dnl Generate list of files to be processed by xgettext which will
dnl be included in po/Makefile.
test -d po || mkdir po
case "$srcdir" in
.)
posrcprefix="../" ;;
/* | [[A-Za-z]]:*)
posrcprefix="$srcdir/" ;;
*)
posrcprefix="../$srcdir/" ;;
esac
rm -f po/POTFILES
sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
< $srcdir/po/POTFILES.in > po/POTFILES
])

92
m4/largefile.m4 Normal file
View File

@@ -0,0 +1,92 @@
#serial 19
dnl By default, many hosts won't let programs access large files;
dnl one must use special compiler options to get large-file access to work.
dnl For more details about this brain damage please see:
dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html
dnl Written by Paul Eggert <eggert@twinsun.com>.
dnl Internal subroutine of AC_SYS_LARGEFILE.
dnl AC_SYS_LARGEFILE_TEST_INCLUDES
AC_DEFUN(AC_SYS_LARGEFILE_TEST_INCLUDES,
[[#include <sys/types.h>
/* Check that off_t can represent 2**63 - 1 correctly.
We can't simply "#define LARGE_OFF_T 9223372036854775807",
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
# define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
]])
dnl Internal subroutine of AC_SYS_LARGEFILE.
dnl AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, CACHE-VAR, COMMENT, INCLUDES, FUNCTION-BODY)
AC_DEFUN(AC_SYS_LARGEFILE_MACRO_VALUE,
[AC_CACHE_CHECK([for $1 value needed for large files], $3,
[$3=no
AC_TRY_COMPILE([$5],
[$6],
,
[AC_TRY_COMPILE([#define $1 $2]
[$5]
,
[$6],
[$3=$2])])])
if test "[$]$3" != no; then
AC_DEFINE_UNQUOTED([$1], [$]$3, [$4])
fi])
AC_DEFUN(NANO_AC_SYS_LARGEFILE,
[AC_REQUIRE([AC_PROG_CC])
AC_ARG_ENABLE(largefile,
[ --disable-largefile omit support for large files])
if test "$enable_largefile" != no; then
AC_CACHE_CHECK([for special C compiler options needed for large files],
ac_cv_sys_largefile_CC,
[ac_cv_sys_largefile_CC=no
if test "$GCC" != yes; then
# IRIX 6.2 and later do not support large files by default,
# so use the C compiler's -n32 option if that helps.
AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES, , ,
[ac_save_CC="$CC"
CC="$CC -n32"
AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES, ,
ac_cv_sys_largefile_CC=' -n32')
CC="$ac_save_CC"])
fi])
if test "$ac_cv_sys_largefile_CC" != no; then
CC="$CC$ac_cv_sys_largefile_CC"
fi
AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64,
ac_cv_sys_file_offset_bits,
[Number of bits in a file offset, on hosts where this is settable.],
AC_SYS_LARGEFILE_TEST_INCLUDES)
AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1,
ac_cv_sys_large_files,
[Define for large files, on AIX-style hosts.],
AC_SYS_LARGEFILE_TEST_INCLUDES)
fi
])
AC_DEFUN(AC_FUNC_FSEEKO,
[AC_SYS_LARGEFILE_MACRO_VALUE(_LARGEFILE_SOURCE, 1,
ac_cv_sys_largefile_source,
[Define to make fseeko visible on some hosts (e.g. glibc 2.2).],
[#include <stdio.h>], [return !fseeko;])
# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
# in glibc 2.1.3, but that breaks too many other things.
# If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
AC_CACHE_CHECK([for fseeko], ac_cv_func_fseeko,
[ac_cv_func_fseeko=no
AC_TRY_LINK([#include <stdio.h>],
[return fseeko && fseeko (stdin, 0, 0);],
[ac_cv_func_fseeko=yes])])
if test $ac_cv_func_fseeko != no; then
AC_DEFINE(HAVE_FSEEKO, 1,
[Define if fseeko (and presumably ftello) exists and is declared.])
fi])

22
m4/lcmessage.m4 Normal file
View File

@@ -0,0 +1,22 @@
# Check whether LC_MESSAGES is available in <locale.h>.
# Ulrich Drepper <drepper@cygnus.com>, 1995.
#
# This file can be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU Public License
# but which still want to provide support for the GNU gettext functionality.
# Please note that the actual code is *not* freely available.
# serial 2
AC_PREREQ(2.13) dnl Minimum Autoconf version required.
AC_DEFUN(NANO_AM_LC_MESSAGES,
[if test $ac_cv_header_locale_h = yes; then
AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
[AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
if test $am_cv_val_LC_MESSAGES = yes; then
AC_DEFINE(HAVE_LC_MESSAGES, 1,
[Define if your locale.h file contains LC_MESSAGES.])
fi
fi])

47
m4/progtest.m4 Normal file
View File

@@ -0,0 +1,47 @@
# Search path for a program which passes the given test.
# Ulrich Drepper <drepper@cygnus.com>, 1996.
#
# This file can be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU Public License
# but which still want to provide support for the GNU gettext functionality.
# Please note that the actual code is *not* freely available.
# serial 1
dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
AC_DEFUN(NANO_AM_PATH_PROG_WITH_TEST,
[# Extract the first word of "$2", so it can be a program name with args.
set dummy $2; ac_word=[$]2
AC_MSG_CHECKING([for $ac_word])
AC_CACHE_VAL(ac_cv_path_$1,
[case "[$]$1" in
/*)
ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
;;
*)
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
for ac_dir in ifelse([$5], , $PATH, [$5]); do
test -z "$ac_dir" && ac_dir=.
if test -f $ac_dir/$ac_word; then
if [$3]; then
ac_cv_path_$1="$ac_dir/$ac_word"
break
fi
fi
done
IFS="$ac_save_ifs"
dnl If no 4th arg is given, leave the cache variable unset,
dnl so AC_PATH_PROGS will keep looking.
ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
])dnl
;;
esac])dnl
$1="$ac_cv_path_$1"
if test -n "[$]$1"; then
AC_MSG_RESULT([$]$1)
else
AC_MSG_RESULT(no)
fi
AC_SUBST($1)dnl
])

66
move.c
View File

@@ -19,10 +19,11 @@
* *
**************************************************************************/
#include "config.h"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "config.h"
#include "proto.h"
#include "nano.h"
@@ -33,20 +34,24 @@
#define _(string) (string)
#endif
void page_down_center(void)
void page_down(void)
{
if (editbot != filebot) {
edit_update(editbot->next, CENTER);
center_cursor();
if (!ISSET(SMOOTHSCROLL)) {
if (editbot != filebot) {
edit_update(editbot->next, CENTER);
center_cursor();
} else {
while (current != filebot)
current = current->next;
edit_update(current, CENTER);
}
} else {
while (current != filebot)
current = current->next;
edit_update(current, CENTER);
edit_update(editbot, NONE);
}
update_cursor();
}
int page_down(void)
int do_page_down(void)
{
wrap_reset();
current_x = 0;
@@ -55,9 +60,9 @@ int page_down(void)
if (current == filebot)
return 0;
/* AHEM, if we only have a screen or less of text, DONT do an
/* AHEM, if we only have a screen or less of text, DON'T do an
edit_update, just move the cursor to editbot! */
if (edittop == fileage && editbot == filebot) {
if (edittop == fileage && editbot == filebot && totlines < editwinrows) {
current = editbot;
reset_cursor();
} else if (editbot != filebot || edittop == fileage) {
@@ -85,6 +90,7 @@ int page_down(void)
int do_home(void)
{
UNSET(KEEP_CUTBUFFER);
current_x = 0;
placewewant = 0;
update_line(current, current_x);
@@ -93,6 +99,7 @@ int do_home(void)
int do_end(void)
{
UNSET(KEEP_CUTBUFFER);
current_x = strlen(current->data);
placewewant = xplustabs();
update_line(current, current_x);
@@ -121,7 +128,7 @@ int do_down(void)
if (current_y < editwinrows - 1 && current != editbot)
current_y++;
else
page_down_center();
page_down();
update_cursor();
update_line(current->prev, 0);
@@ -131,11 +138,23 @@ int do_down(void)
return 1;
}
void page_up_center(void)
void page_up(void)
{
if (edittop != fileage) {
edit_update(edittop, CENTER);
center_cursor();
if (!ISSET(SMOOTHSCROLL)) {
edit_update(edittop, CENTER);
/* Now that we've updated the edit window, edittop might be
at the top of the file; if so, just move the cursor up one
line and don't center it. */
if (edittop != fileage)
center_cursor();
else {
current = current->prev;
reset_cursor();
}
} else {
edit_update(edittop->prev, NONE);
}
} else
current_y = 0;
@@ -143,9 +162,10 @@ void page_up_center(void)
}
int page_up(void)
int do_page_up(void)
{
filestruct *fileptr = edittop;
int i;
wrap_reset();
current_x = 0;
placewewant = 0;
@@ -154,13 +174,11 @@ int page_up(void)
return 0;
current_y = 0;
if (fileptr->next != NULL)
fileptr = fileptr->next;
if (fileptr->next != NULL)
fileptr = fileptr->next;
current = edittop;
edit_update(fileptr, BOTTOM);
for (i = 0; i <= editwinrows - 3 && current->prev != NULL; i++)
current = current->prev;
edit_update(current, TOP);
update_cursor();
UNSET(KEEP_CUTBUFFER);
@@ -182,7 +200,7 @@ int do_up(void)
if (current_y > 0)
current_y--;
else
page_up_center();
page_up();
update_cursor();
update_line(current->next, 0);

62
nano.1
View File

@@ -5,10 +5,8 @@
.\" This is free documentation, see the latest version of the GNU General
.\" Public License for copying conditions. There is NO warranty.
.\"
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH NANO 1 "December 2, 2000"
.\" $Id$
.TH NANO 1 "October 3, 2001"
.\" Please adjust this date whenever revising the manpage.
.\"
.SH NAME
@@ -23,7 +21,7 @@ This manual page documents briefly the
command.
.PP
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
.\" \fI<whatever>\fP escape sequences to invoke bold face and italics,
.\" respectively.
\fBnano\fP is a small, free and friendly editor which aims to replace
Pico, the default editor included in the non-free Pine package. Rather
@@ -33,46 +31,68 @@ also implements some missing (or disabled by default) features in Pico,
such as "search and replace" and "goto line number".
.SH OPTIONS
.TP
.B \-T (\-\-tabsize)
Set the size (width) of a tab.
.B \-D (\-\-dos)
Write file in DOS format.
.TP
.B \-F (\-\-multibuffer)
Enable multiple file buffers (if available).
.TP
.B \-M (\-\-mac)
Write file in Mac format.
.TP
.B \-R (\-\-regexp)
Enable regular expression matching for search strings, as well as
\\n subexpression replacement for replace strings, if available.
.TP
.B \-S (\-\-smooth)
Enable smooth scrolling. Text will scroll line-by-line, instead of the
usual chunk-by-chunk behaviour.
.TP
.B \-T [num] (\-\-tabsize=[num])
Set the size (width) of a tab.
.TP
.B \-V (\-\-version)
Show the current version number and author.
.TP
.B \-h (\-\-help)
Display a summary of commandline options.
.TP
.B \-c (\-\-const)
Constantly show the cursor position.
.TP
.B \-k (\-\-cut)
Enable cut from cursor to end of line with ^K.
.B \-h (\-\-help)
Display a summary of command line options.
.TP
.B \-i (\-\-autoindent)
Indent new lines to the previous line's indentation. Useful when editing
source code.
.TP
.B \-k (\-\-cut)
Enable cut from cursor to end of line with ^K.
.TP
.B \-l (\-\-nofollow)
If the file being edited is a symbolic link, replace the link with a
a new file, do not follow it. Good for editing files in /tmp perhaps?
a new file, do not follow it. Good for editing files in /tmp, perhaps?
.TP
.B \-m (\-\-mouse)
Enable mouse support (if available for your system).
.TP
.B \-o [dir] (\-\-operatingdir=[dir])
Set operating directory. Makes nano set up something similar to a chroot.
.TP
.B \-p (\-\-pico)
Emulate Pico as closely as possible. This affects both the "shortcut list"
at the bottom of the screen, as well as the display and entry of previous
search and replace strings.
.TP
.B \-s (\-\-speller)
.B \-r [#cols] (\-\-fill=[#cols])
Wrap lines at column #cols. By default, this is the width of the screen,
less eight. If this value is negative, wrapping will occur at #cols from
the right of the screen, allowing it to vary along with the screen width
if the screen is resized.
.TP
.B \-s [prog] (\-\-speller=[prog])
Enable alternative spell checker command.
.TP
.B \-t (\-\-tempfile)
Always save changed buffer without prompting. Same as Pico -t option.
Always save changed buffer without prompting. Same as Pico -t option.
.TP
.B \-v (\-\-view)
View file (read only) mode.
@@ -86,18 +106,19 @@ Disable help screen at bottom of editor.
.B \-z (\-\-suspend)
Enable suspend ability.
.TP
.B \-b, \-e, \-f
.B \-a, \-b, \-e, \-f, \-g, \-j
Ignored, for compatibility with Pico.
.TP
.B \+LINE
Places cursor at LINE on startup.
.SH NOTES
Nano will try to dump the buffer into an emergency file in some cases.
Mainly, this will happen if Nano recieves a SIGHUP or runs out of
Mainly, this will happen if Nano receives a SIGHUP or runs out of
memory, when it will write the buffer into a file named "nano.save" if the
buffer didn't have a name already, or will add a ".save" suffix to the
current finename. Nano will \fBnot\fP write this file if a previous one
exists in the current directory.
current filename. In multibuffer mode, nano will write all the open buffers to
the respective emergency files. Nano will \fBnot\fP write this file if a
previous one exists in the current directory.
.SH BUGS
Please send any comments or bug reports to
.br
@@ -111,7 +132,8 @@ subject of "subscribe".
.SH HOMEPAGE
http://www.nano-editor.org
.SH AUTHOR
Chris Allegretta <chrisa@asty.org>, et al (see AUTHORS for details).
Chris Allegretta <chrisa@asty.org>, et al (see AUTHORS and THANKS for
details).
This manual page was originally written by Jordi Mallach
<jordi@sindominio.net>, for the Debian GNU/Linux system (but may be
used by others).

View File

@@ -3,7 +3,7 @@ Content-type: text/html
<HTML><HEAD><TITLE>Manpage of NANO</TITLE>
</HEAD><BODY>
<H1>NANO</H1>
Section: User Commands (1)<BR>Updated: December 2, 2000<BR><A HREF="#index">Index</A>
Section: User Commands (1)<BR>Updated: October 3, 2001<BR><A HREF="#index">Index</A>
<A HREF="http://localhost/cgi-bin/man/man2html">Return to Main Contents</A><HR>
@@ -44,59 +44,87 @@ such as &quot;search and replace&quot; and &quot;goto line number&quot;.
<H2>OPTIONS</H2>
<DL COMPACT>
<DT><B>-T (--tabsize)</B>
<DT><B>-D (--dos)</B>
<DD>
Set the size (width) of a tab.
Write file in DOS format.
<DT><B>-F (--multibuffer)</B>
<DD>
Enable multiple file buffers (if available).
<DT><B>-M (--mac)</B>
<DD>
Write file in Mac format.
<DT><B>-R (--regexp)</B>
<DD>
Enable regular expression matching for search strings, as well as
\n subexpression replacement for replace strings, if available.
<DT><B>-S (--smooth)</B>
<DD>
Enable smooth scrolling. Text will scroll line-by-line, instead of the
usual chunk-by-chunk behaviour.
<DT><B>-T [num] (--tabsize=[num])</B>
<DD>
Set the size (width) of a tab.
<DT><B>-V (--version)</B>
<DD>
Show the current version number and author.
<DT><B>-h (--help)</B>
<DD>
Display a summary of commandline options.
<DT><B>-c (--const)</B>
<DD>
Constantly show the cursor position.
<DT><B>-k (--cut)</B>
<DT><B>-h (--help)</B>
<DD>
Enable cut from cursor to end of line with ^K.
Display a summary of command line options.
<DT><B>-i (--autoindent)</B>
<DD>
Indent new lines to the previous line's indentation. Useful when editing
source code.
<DT><B>-k (--cut)</B>
<DD>
Enable cut from cursor to end of line with ^K.
<DT><B>-l (--nofollow)</B>
<DD>
If the file being edited is a symbolic link, replace the link with a
a new file, do not follow it. Good for editing files in /tmp perhaps?
a new file, do not follow it. Good for editing files in /tmp, perhaps?
<DT><B>-m (--mouse)</B>
<DD>
Enable mouse support (if available for your system).
<DT><B>-o [dir] (--operatingdir=[dir])</B>
<DD>
Set operating directory. Makes nano set up something similar to a chroot.
<DT><B>-p (--pico)</B>
<DD>
Emulate Pico as closely as possible. This affects both the &quot;shortcut list&quot;
at the bottom of the screen, as well as the display and entry of previous
search and replace strings.
<DT><B>-s (--speller)</B>
<DT><B>-r [#cols] (--fill=[#cols])</B>
<DD>
Wrap lines at column #cols. By default, this is the width of the screen,
less eight. If this value is negative, wrapping will occur at #cols from
the right of the screen, allowing it to vary along with the screen width
if the screen is resized.
<DT><B>-s [prog] (--speller=[prog])</B>
<DD>
Enable alternative spell checker command.
<DT><B>-t (--tempfile)</B>
<DD>
Always save changed buffer without prompting. Same as Pico -t option.
Always save changed buffer without prompting. Same as Pico -t option.
<DT><B>-v (--view)</B>
<DD>
@@ -113,7 +141,7 @@ Disable help screen at bottom of editor.
<DD>
Enable suspend ability.
<DT><B>-b, -e, -f</B>
<DT><B>-a, -b, -e, -f, -g, -j</B>
<DD>
Ignored, for compatibility with Pico.
@@ -126,11 +154,12 @@ Places cursor at LINE on startup.
<H2>NOTES</H2>
Nano will try to dump the buffer into an emergency file in some cases.
Mainly, this will happen if Nano recieves a SIGHUP or runs out of
Mainly, this will happen if Nano receives a SIGHUP or runs out of
memory, when it will write the buffer into a file named &quot;nano.save&quot; if the
buffer didn't have a name already, or will add a &quot;.save&quot; suffix to the
current finename. Nano will <B>not</B> write this file if a previous one
exists in the current directory.
current filename. In multibuffer mode, nano will write all the open buffers to
the respective emergency files. Nano will <B>not</B> write this file if a
previous one exists in the current directory.
<A NAME="lbAG">&nbsp;</A>
<H2>BUGS</H2>
@@ -155,7 +184,8 @@ subject of &quot;subscribe&quot;.
<A NAME="lbAI">&nbsp;</A>
<H2>AUTHOR</H2>
Chris Allegretta &lt;<A HREF="mailto:chrisa@asty.org">chrisa@asty.org</A>&gt;, et al (see AUTHORS for details).
Chris Allegretta &lt;<A HREF="mailto:chrisa@asty.org">chrisa@asty.org</A>&gt;, et al (see AUTHORS and THANKS for
details).
This manual page was originally written by Jordi Mallach
&lt;<A HREF="mailto:jordi@sindominio.net">jordi@sindominio.net</A>&gt;, for the Debian GNU/Linux system (but may be
used by others).
@@ -177,6 +207,6 @@ used by others).
This document was created by
<A HREF="http://localhost/cgi-bin/man/man2html">man2html</A>,
using the manual pages.<BR>
Time: 02:16:52 GMT, December 18, 2000
Time: 01:18:43 GMT, October 04, 2001
</BODY>
</HTML>

1232
nano.c

File diff suppressed because it is too large Load Diff

144
nano.h
View File

@@ -34,6 +34,7 @@
#define SET(bit) flags |= bit
#define UNSET(bit) flags &= ~bit
#define ISSET(bit) (flags & bit)
#define TOGGLE(bit) flags ^= bit
#ifdef USE_SLANG /* Slang support enabled */
@@ -61,13 +62,29 @@
# endif
#endif
#define VERMSG "nano " VERSION
#define VERMSG "GNU nano " VERSION
#if defined(DISABLE_WRAPPING) && defined(DISABLE_JUSTIFY)
#define DISABLE_WRAPJUSTIFY 1
#endif
/* Structure types */
typedef struct filestruct {
char *data;
struct filestruct *next; /* Next node */
struct filestruct *prev; /* Previous node */
#ifdef ENABLE_MULTIBUFFER
struct filestruct *file; /* Current file */
int file_current_x; /* Current file's x-coordinate position */
int file_current_y; /* Current file's y-coordinate position */
int file_modified; /* Current file's modification status */
char *file_path; /* Current file's full path location */
int file_placewewant; /* Current file's place we want */
int file_totlines; /* Current file's total number of lines */
int file_totsize; /* Current file's total size */
#endif
long lineno; /* The line number */
} filestruct;
@@ -85,11 +102,21 @@ typedef struct shortcut {
typedef struct toggle {
int val; /* Sequence to toggle the key. Should only need 1 */
char *desc; /* Description for when toggle is, uh, toggled,
e.g. "Pico Messages", we'll append Enabled or
e.g. "Pico Messages"; we'll append Enabled or
Disabled */
int flag; /* What flag actually gets toggled */
char override_ch; /* The character to display on the help screen,
if it isn't NULL */
} toggle;
#ifdef ENABLE_NANORC
typedef struct rcoption {
char *name;
int flag;
} rcoption;
#endif /* ENABLE_NANORC */
/* Bitwise flags so we can save space (or more correctly, not waste it) */
#define MODIFIED (1<<0)
@@ -110,9 +137,15 @@ typedef struct toggle {
#define REGEXP_COMPILED (1<<15)
#define TEMP_OPT (1<<16)
#define CUT_TO_END (1<<17)
#define DISABLE_CURPOS (1<<18)
#define REVERSE_SEARCH (1<<18)
#define MULTIBUFFER (1<<19)
#define CLEAR_BACKUPSTRING (1<<20)
#define DOS_FILE (1<<21)
#define MAC_FILE (1<<22)
#define SMOOTHSCROLL (1<<23)
#define DISABLE_CURPOS (1<<24) /* Damn, we still need it */
/* Control key sequences, chaning these would be very very bad */
/* Control key sequences, changing these would be very very bad */
#define NANO_CONTROL_A 1
#define NANO_CONTROL_B 2
@@ -172,8 +205,11 @@ typedef struct toggle {
#define NANO_ALT_X 'x'
#define NANO_ALT_Y 'y'
#define NANO_ALT_Z 'z'
#define NANO_ALT_LCARAT ','
#define NANO_ALT_RCARAT '.'
#define NANO_ALT_BRACKET ']'
/* Some semi-changeable keybindings, dont play with unless you're sure you
/* Some semi-changeable keybindings; don't play with unless you're sure you
know what you're doing */
#define NANO_INSERTFILE_KEY NANO_CONTROL_R
@@ -208,7 +244,6 @@ know what you're doing */
#define NANO_FIRSTLINE_KEY NANO_PREVPAGE_KEY
#define NANO_LASTLINE_KEY NANO_NEXTPAGE_KEY
#define NANO_CANCEL_KEY NANO_CONTROL_C
#define NANO_CASE_KEY NANO_CONTROL_A
#define NANO_REFRESH_KEY NANO_CONTROL_L
#define NANO_JUSTIFY_KEY NANO_CONTROL_J
#define NANO_JUSTIFY_FKEY KEY_F(4)
@@ -227,6 +262,10 @@ know what you're doing */
#define NANO_ENTER_KEY NANO_CONTROL_M
#define NANO_FROMSEARCHTOGOTO_KEY NANO_CONTROL_T
#define NANO_TOFILES_KEY NANO_CONTROL_T
#define NANO_APPEND_KEY NANO_ALT_A
#define NANO_OPENPREV_KEY NANO_ALT_LCARAT
#define NANO_OPENNEXT_KEY NANO_ALT_RCARAT
#define NANO_BRACKET_KEY NANO_ALT_BRACKET
#define TOGGLE_CONST_KEY NANO_ALT_C
#define TOGGLE_AUTOINDENT_KEY NANO_ALT_I
@@ -237,33 +276,96 @@ know what you're doing */
#define TOGGLE_CUTTOEND_KEY NANO_ALT_K
#define TOGGLE_REGEXP_KEY NANO_ALT_E
#define TOGGLE_WRAP_KEY NANO_ALT_W
#define TOGGLE_BACKWARDS_KEY NANO_ALT_B
#define TOGGLE_CASE_KEY NANO_ALT_A
#define TOGGLE_LOAD_KEY NANO_ALT_F
#define TOGGLE_DOS_KEY NANO_ALT_D
#define TOGGLE_MAC_KEY NANO_ALT_O
#define TOGGLE_SMOOTH_KEY NANO_ALT_S
#define MAIN_LIST_LEN 26
/* Toggle stuff, these static lengths need to go away RSN */
#ifndef HAVE_REGEX_H
#define NO_REGEX 1
#else
#define NO_REGEX 0
#endif
#ifdef DISABLE_BROWSER
#define NO_BROWSER 1
#else
#define NO_BROWSER 0
#endif
#ifdef NANO_SMALL
#ifdef HAVE_REGEX_H
#define NO_TOGGLES 3
#else
#define NO_TOGGLES 2
#endif /* HAVE_REGEX_H */
#else
#define NO_TOGGLES 0
#endif /* NANO_SMALL */
#ifdef ENABLE_MULTIBUFFER
#define MULTI_TOGGLES 3
#else
#define MULTI_TOGGLES 0
#endif
#define WHEREIS_LIST_LEN (8 - NO_REGEX - NO_TOGGLES)
#define REPLACE_LIST_LEN (8 - NO_REGEX - NO_TOGGLES)
#define TOGGLE_LEN (14 - NO_REGEX + MULTI_TOGGLES)
#define WRITEFILE_LIST_LEN (3 - NO_BROWSER)
#define INSERTFILE_LIST_LEN (2 - NO_BROWSER)
#define BROWSER_LIST_LEN 4
#define MAIN_LIST_LEN (27 - NO_REGEX)
#define MAIN_VISIBLE 12
#define WHEREIS_LIST_LEN 6
#define REPLACE_LIST_LEN 6
#define REPLACE_LIST_2_LEN 3
#define GOTO_LIST_LEN 3
#define GOTODIR_LIST_LEN 1
#define HELP_LIST_LEN 3
#define SPELL_LIST_LEN 1
#if !defined(DISABLE_BROWSER) && !defined(NANO_SMALL)
#define WRITEFILE_LIST_LEN 2
#define BROWSER_LIST_LEN 3
#else
#define WRITEFILE_LIST_LEN 1
#endif
#ifdef HAVE_REGEX_H
#define TOGGLE_LEN 9
#else
#define TOGGLE_LEN 8
#endif
#define VIEW 1
#define NOVIEW 0
#define NONE 3
#define TOP 2
#define CENTER 1
#define BOTTOM 0
#endif
/* Minimum editor window rows required for Nano to work correctly */
#define MIN_EDITOR_ROWS 3
/* Default number of characters from end-of-line where text wrapping occurs */
#define CHARS_FROM_EOL 8
/* Minimum fill length (space available for text before wrapping occurs) */
#define MIN_FILL_LENGTH 10
/* Color specific defines */
#ifdef ENABLE_COLOR
typedef struct colorstruct {
int fg;
int bg;
int bold;
int set;
} colorstruct;
#define FIRST_COLORNUM 16
#define COLOR_TITLEBAR 16
#define COLOR_BOTTOMBARS 17
#define COLOR_STATUSBAR 18
#define COLOR_TEXT 19
#define COLOR_MARKER 20
#define NUM_NCOLORS 5
#endif /* ENABLE_COLOR */
#endif /* ifndef NANO_H */

478
nano.texi Normal file
View File

@@ -0,0 +1,478 @@
\input texinfo @c -*-texinfo-*-
@c %**start of header
@setfilename nano.info
@settitle nano Command Manual
@c %**end of header
@c This file has the new style title page commands.
@c Run `makeinfo' rather than `texinfo-format-buffer'.
@smallbook
@set EDITION 0.1
@set VERSION 1.1.2
@set UPDATED 3 Oct 2001
@dircategory Editors
@direntry
* Nano: (nano). Small and friendly text editor.
@end direntry
@c tex
@c \overfullrule=0pt
@c end tex
@titlepage
@title GNU @code{nano}
@subtitle a small and friendly text editor.
@subtitle version 1.1.2
@author Chris Allegretta
@page
This manual documents GNU @code{nano}, a small and friendly text
editor.
This manual is part of the GNU @code{nano} distribution.@*
@sp4
Copyright (C) 1999, 2000, 2001 Chris Allegretta.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.
@iftex
Permission is granted to process this file through TeX and print the
results, provided the printed document carries copying permission
notice identical to this one except for the removal of this paragraph
(this paragraph not being relevant to the printed manual).
@end iftex
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the entire
resulting derived work is distributed under the terms of a permission
notice identical to this one.
Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions,
except that this permission notice may be stated in a translation approved
by the Foundation.
You may contact the author by:
e-mail: @email{chrisa@@asty.org}@*
@end titlepage
@node Top, Introduction, (dir), (dir)
This manual documents GNU nano, a small and friendly text editor.
@menu
* Introduction::
* Editor Basics::
* Online Help::
* Feature Toggles::
* The File Browser::
* Pico Compatibility::
* Building and Configure Options::
@end menu
@node Introduction, Editor Basics, Top, Top
@chapter Introduction
GNU @code{nano} is a small and friendly text editor. Besides basic
text editing, @code{nano} offers many extra features like an
interactive search and replace, goto line number, auto-indentation,
feature toggles, internationalization support, and filename tab
completion.
@menu
* Overview::
* Command Line Options::
@end menu
@node Overview, Command Line Options, Introduction, Introduction
@section Overview
@code{nano} [GNU long option] [option] +LINE [ @var{ file ...} ]
The original goal for @code{nano} was a complete bug-for-bug compatible
emulation of Pico, but consistency is now a slightly higher priority.
There is a flag to implement (nearly) complete Pico emulation, (option -p
or GNU long option --pico). This can also be toggled from within
@code{nano} by typing Meta-P. @xref{Pico Compatibility}, for more
info.
Email bug reports to @email{nano@@nano-editor.org}.
@node Command Line Options, , Overview, Introduction
@section Command Line Options
@code{nano} takes the following options from the command line:
@table @code
@item -D, --dos
Write file in DOS format.
@item -F, --multibuffer
Enable multiple file buffers.
@item -M, --mac
Write file in Mac format.
@item -R, --regexp
Turns on regular expression search and search/replace.
@item -S, --smooth
Enables smooth scrolling.
@item -T [num], --tabsize=[num]
Set the displayed tab length to [num] columns.
@item -V, --version
Print the version number and copyright and quit.
@item -c, --const
Constantly display the cursor position and line number on the statusbar.
@item -h, --help
Print the usage and exit.
@item -i, --autoindent
Automatically indent new lines to the same number of spaces and tabs as
the previous line.
@item -k, --cut
Makes ^K cut from the current cursor position to the end of the current
line.
@item -l, --nofollow
When writing files, if the given file is a symbolic link it is removed
and a new file is created.
@item -m, --mouse
Enables the use of the mouse to select text (currently only useful for
running under the X window system).
@item -o [dir], --operatingdir=[dir]
Set operating directory. Makes nano set up something similar to a chroot.
@item -p, --pico
Emulate Pico as closely as possible, sacrificing consistency for correct
emulation. @xref{Pico Compatibility}, for more info.
@item -r [#cols], --fill=[#cols].
Wrap lines at column #cols. By default this is the width of the screen,
less eight. If this value is negative, wrapping will occur at #cols from
the right of the screen, allowing it to vary along with the screen width
if the screen is resized.
@item -s [prog], --speller=[prog]
Invoke [prog] as the spell checker. By default, @code{nano} uses its
own interactive spell checker that requires the @code{spell} program be
installed on your system.
@item -t, --tempfile
Do not ask whether or not to save the current contents of the file when
exiting, assume yes. This is most useful when using @code{nano} as the
composer of a mailer program.
@anchor{Expert Mode}
@item -x, --nohelp
In Expert Mode, the Shortcut Lists will not appear at the bottom of the
screen. This affects the location of the statusbar as well, as in Expert
Mode it is located at the very bottom of the editor.
Note: When accessing the help system, Expert Mode is temporarily disabled
to display the help system navigation keys.
@item -v, --view
Do not allow the contents of the file to be altered. Note that this
flag should NOT be used in place of correct file permissions to implement
a read-only file.
@item -w, --nowrap
Do not wrap long lines at any length. This option overrides any value for
-r.
@item -z, --suspend
Enable suspend ability of @code{nano} using the system's suspend
keystroke (usually ^Z).
@item -a, -b, -e, -f, -g, -j
Ignored, for compatibility with Pico.
@item +LINE
Start at line number LINE instead of the default of line 1.
@end table
@node Editor Basics, Online Help, Introduction, Top
@chapter Editor Basics
@menu
* Entering Text::
* Special Functions::
* The Titlebar::
* The Statusbar::
* Shortcut Lists::
@end menu
@node Entering Text, Special Functions, Editor Basics, Editor Basics
@section Entering Text
All key sequences in @code{nano} are entered using the keyboard.
@code{nano} is a "modeless" editor, all keys with the exception of
Control and Meta key sequences will enter text into the file being
edited.
@node Special Functions, The Titlebar, Entering Text, Editor Basics
@section Special Functions
Special functions use the Control key (displayed in the help and
shortcut lists as ^) or the Meta key (displayed as M).
@itemize @bullet
@item
Control key sequences are entered by holding down the Control key and
pressing the desired letter.
@item
Meta key sequences can be entered in a number of
possible ways: Pressing the Escape key, then releasing it and pressing
the desired key, or holding down the Alt key while pressing the desired
key. This varies from keyboard to keyboard, and certain commercial
operating systems "swallow" the Alt key so that it never reaches the
application. If your operating system does this, you should use the
Escape key to generate Meta key sequences.
@end itemize
@node The Titlebar, The Statusbar, Special Functions, Editor Basics
@section The Titlebar
The titlebar is the line displayed at the top of the editor. There are
three sections: left, center and right. The section on the left displays
the version of @code{nano} being used. The center section displays the
current file name, or "New Buffer" if the file has not yet been named.
The section on the right will display "Modified" if the file has been
modified since it was last saved or opened.
Special modes: When nano is in "File browser" mode, the center section
will display the current directory instead of the filename.
@xref{The File Browser}.
@node The Statusbar, Shortcut Lists, The Titlebar, Editor Basics
@section The Statusbar
The statusbar is located three lines from the bottom of the screen (or the
bottom line in Expert Mode. @xref{Expert Mode}, for more info.
The Statusbar shows important and informational messages. Any error
messages that occur from using the editor will appear on the statusbar.
Any questions that are asked of the user will be asked on the statusbar,
and any user input (search strings, file names, etc) will be input on the
statusbar.
@node Shortcut Lists, , The Statusbar, Editor Basics
@section Shortcut Lists
The Shortcut Lists are the two lines at the bottom of the screen which show
some of the more commonly used functions in the editor. The exact
functions which are displayed depend on whether Pico Compatibility Mode mode
is enabled. @xref{Pico Compatibility}, for more info.
@node Online Help, Feature Toggles, Editor Basics, Top
@chapter Online Help
The online help system in @code{nano} is available by pressing ^G.
It is fairly self explanatory, documenting the various parts of the
editor and available keystrokes. Navigation is via the ^Y (Page Up)
and ^V (Page Down) keys. ^X exits the help system.
@node Feature Toggles, The File Browser, Online Help, Top
@chapter Feature Toggles
Toggles allow you to change certain aspects of the editor that
would normally be done via command line flags. They are invoked via
certain Meta key sequenced. @xref{Special Functions}, for more info.
The following toggles are available:
@table @code
@item Case Sensitive Search Toggle (Meta-A)
toggles case sensistive searching functionality on/off.
@item Backwards Search Toggle (Meta-B)
toggles backwards searching fuctionality on/off.
@item Constant Update Toggle (Meta-C)
toggles the -c (--const) command line flag.
@item DOS Format Toggle (Meta-D)
toggles the -D (--dos) command line flag.
@item Regular Expressions Toggle (Meta-E)
toggles the -R (--regexp) command line flag.
@item Multiple Files Toggle (Meta-F)
toggles the -F (--multibuffer) command line flag.
@item AutoIndent Toggle (Meta-I)
toggles the -i (--autoindent) command line flag.
@item Cut To End Toggle (Meta-K)
toggles the -k (--cut) command line flag.
@item Mouse Toggle (Meta-M)
toggles the -m (--mouse) command line flag.
@item Mac Format Toggle (Meta-O)
toggles the -M (--mac) command line flag.
@item Pico Mode Toggle (Meta-P)
toggles the -p (--pico) command line flag.
@xref{Pico Compatibility}, for more info.
@item Smooth Scrolling Toggle (Meta-S)
toggles the -s (--smooth) command line flag.
@item AutoWrap Toggle (Meta-W)
toggles the -w (--nowrap) command line flag.
@item Expert/Nohelp Toggle (Meta-X)
toggles the -x (--nohelp) command line flag.
@item Suspend Toggle (Meta-Z)
toggles the -z (--suspend) command line flag.
@item Open Previous File Toggle (Meta-<)
changes buffer to previously loaded file.
@item Open Next File Toggle (Meta->)
changes buffer to next loaded file.
@end table
@node The File Browser, Pico Compatibility, Feature Toggles, Top
@chapter The File Browser
When reading or writing files, pressing ^T will invoke the file browser.
Here, one can navigate directories in a graphical manner in order to find
the desired file.
Basic movement in the file browser is accomplished with he arrow keys
and page up/down. The behavior of the enter (or 's') key varies by what
is currently selected. If the currently selected object is a directory,
the file browser will enter and display the contents of the directory. If
the object is a file, this filename and path are copied to the statusbar
and the file browser is exited.
@node Pico Compatibility, Building and Configure Options, The File Browser, Top
@chapter Pico Compatibility
Nano does not completely emulate Pico by default. The following differences
apply to the default mode and Pico Compatibility mode:
@table @code
@item Displayed Shortcuts
By default, the following shortcuts are displayed in the Shortcut Lists:
^G ^O ^\ ^Y ^K ^C@*
^X ^R ^W ^V ^U ^T
Related functions are listed above or below each other by default. The
Justify function is not listed, instead the "Replace" function is
displayed. Also, he "Read File" and "WriteOut" functions are aligned for
consistency.
In Pico Compatibility mode, the default Pico shortcuts are displayed:
^G ^O ^R ^Y ^K ^C@*
^X ^J ^W ^V ^U ^T
@item Previous String Text
By default, previously entered string for a function (search string,
file name) will be placed on the statusbar, and is editable. This is
done so there is consistency across all functions. For example: even if
there is a previous replace string, it can always be deleted if one
wishes to perform an empty string replace.
In Pico Compatibility Mode, the previously entered text in a search or
replace will appear in brackets, and is not editable. It is not a
simple matter to do an empty string replace when a previous replace
string exists, for example. When writing a file, the previous filename
will be displayed in the editable text portion of the editor.
@item Interactive Replace and Spell Checker
It is worth noting that the @code{nano} replace function is interactive,
i.e. it does not stop after one search string is found and automatically
replace it. The @code{nano} implementation will stop at each search
string found and query whether to replace this instance or not. The
internal spell checker operates similarly. Note that these is no way
to force these functions to behave in the Pico fashion.
@end table
@node Building and Configure Options, , Pico Compatibility, Top
@chapter Building and Configure Options
Building nano from source is fairly straightforward if you are familiar
with compiling programs with autoconf support:
tar xvfz nano-x.y.z.tar.gz (where x.y.z is the version of nano)
cd nano-x.y.z/
./configure
make
make install
if you are looking to optimize nano for size, you may want to consider
the following command line options:
@table @code
@item --disable-tabcomp
Disable the tab completion code when reading or writing files.
@item --disable-justify
Disable the justify (^J)/unjustify (^U) functions in the editor.
@item --disable-speller
Disables spell checker ability.
@item --disable-help
Disables the help function (^G). Disabling this option makes the
binary much smaller, but makes it difficult for new users
to learn more than very basic things about using the editor.
@item --disable-browser
Disables the mini file browser (^O) when reading or writing files.
@item --enable-tiny
This options disables all the above. It also disables some of
the larger internals of the editor, like the marker code (^^) and
the cut to line (-k) option which it depends on to work properly.
It also disables the function toggles and mouse support.
@item --disable-wrapping
Disables all word wrapping in the editor. This also eliminates the
-w command line flag, as nonwrapping is then the default behavior.
@item --disable-mouse
Disables all mouse functionality. This also disables the -m commands line
flag which enables the mouse functions.
@item --disable-operatingdir
Disables setting of operating directory. This also disables the -o command
line flag.
@item --disable-nls
Disables Native Language support. This will make the available GNU nano
translations unusable.
@item --with-slang
Compiling GNU nano with Slang is supported, and will make the binary notably
smaller than if compiled with ncurses or other curses libraries.
@end table
@contents
@bye

57
nanorc.sample Normal file
View File

@@ -0,0 +1,57 @@
# Sample initialization file for GNU nano
# Please note that you must have configured nano with
# --enable-nanorc for this file to be read!
# Use regular expressions by default
# set regexp
# Constantly update the cursor position
# set const
# Use cut to end of line with ^K by default
# set cut
# Use Auto-indentation
# set autoindent
# Don't follow symlinks when writing files
# set nofollow
# Set operating directory (chroot of sorts)
# set operatingdir "~"
# Use Pico Compatibility mode for the shortcut lists and search text
# set pico
# Use this value instead of the default
# set fill -8
# Use this tab size instead of the default
# set tabsize 8
# Use this spelling checker instead of the default one
# set speller aspell
# Save automatically on exit, don't prompt
# set tempfile
# Disallow file modification, why would you want this in an rc file? ;)
# set view
# Don't wrap text at all
# set nowrap
# Don't display the help lists at the bottom of the screen
# set nohelp
# Allow nano to be suspended with ^Z
# set suspend
# Use smooth scrolling as the default
# set smooth
# Allow multiple file buffers (using ^R inserts into separate buffer)
# You must have configured with --enable-multibuffer or --enable-extra for
# this to work
#
# set multibuffer

View File

@@ -4,4 +4,5 @@ POTFILES
*.gmo
*.pot
cat-id*
messages
stamp-cat*

View File

@@ -1,15 +1,18 @@
# $Id$
# Makefile for program source directory in GNU NLS utilities package.
# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
# Copyright (C) 1995-1997, 2000, 2001 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
#
# This file file be copied and used freely without restrictions. It can
# be used in projects which are not available under the GNU Public License
# be used in projects which are not available under the GNU General Public License
# but which still want to provide support for the GNU gettext functionality.
# Please note that the actual code is *not* freely available.
PACKAGE = @PACKAGE@
VERSION = @VERSION@
# These two variables depend on the location of this directory.
subdir = po
top_builddir = ..
SHELL = /bin/sh
@SET_MAKE@
@@ -19,22 +22,20 @@ VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
datadir = $(prefix)/@DATADIRNAME@
datadir = @datadir@
localedir = $(datadir)/locale
gnulocaledir = $(prefix)/share/locale
gettextsrcdir = $(prefix)/share/gettext/po
subdir = po
gettextsrcdir = $(datadir)/gettext/po
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
MKINSTALLDIRS = $(top_srcdir)/@MKINSTALLDIRS@
MKINSTALLDIRS = @MKINSTALLDIRS@
mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac`
CC = @CC@
GENCAT = @GENCAT@
GMSGFMT = PATH=../src:$$PATH @GMSGFMT@
GMSGFMT = @GMSGFMT@
MSGFMT = @MSGFMT@
XGETTEXT = PATH=../src:$$PATH @XGETTEXT@
MSGMERGE = PATH=../src:$$PATH msgmerge
XGETTEXT = @XGETTEXT@
MSGMERGE = msgmerge
DEFS = @DEFS@
CFLAGS = @CFLAGS@
@@ -44,20 +45,17 @@ INCLUDES = -I.. -I$(top_srcdir)/intl
COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
SOURCES = cat-id-tbl.c
POFILES = @POFILES@
GMOFILES = @GMOFILES@
DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \
stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES)
$(POFILES) $(GMOFILES)
POTFILES = \
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
INSTOBJEXT = @INSTOBJEXT@
.SUFFIXES:
.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
.SUFFIXES: .c .o .po .pox .gmo .mo
.c.o:
$(COMPILE) $<
@@ -71,19 +69,19 @@ INSTOBJEXT = @INSTOBJEXT@
.po.gmo:
file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \
&& rm -f $$file && $(GMSGFMT) -o $$file $<
.po.cat:
sed -f ../intl/po2msg.sed < $< > $*.msg \
&& rm -f $@ && $(GENCAT) $@ $*.msg
&& rm -f $$file && $(GMSGFMT) --statistics -o $$file $<
all: all-@USE_NLS@
all-yes: cat-id-tbl.c $(CATALOGS)
all-yes: $(CATALOGS)
all-no:
$(srcdir)/$(PACKAGE).pot: $(POTFILES)
# Note: Target 'all' must not depend on target '$(srcdir)/$(PACKAGE).pot',
# otherwise packages like GCC can not be built if only parts of the source
# have been downloaded.
$(srcdir)/$(PACKAGE).pot: $(POTFILES) $(srcdir)/POTFILES.in
$(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \
--add-comments --keyword=_ --keyword=N_ \
--files-from=$(srcdir)/POTFILES.in \
@@ -91,81 +89,35 @@ $(srcdir)/$(PACKAGE).pot: $(POTFILES)
|| ( rm -f $(srcdir)/$(PACKAGE).pot \
&& mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot )
$(srcdir)/cat-id-tbl.c: stamp-cat-id; @:
$(srcdir)/stamp-cat-id: $(PACKAGE).pot
rm -f cat-id-tbl.tmp
sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \
| sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp
if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \
rm cat-id-tbl.tmp; \
else \
echo cat-id-tbl.c changed; \
rm -f $(srcdir)/cat-id-tbl.c; \
mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \
fi
cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id
install: install-exec install-data
install-exec:
install-data: install-data-@USE_NLS@
install-data-no: all
install-data-yes: all
if test -r "$(MKINSTALLDIRS)"; then \
$(MKINSTALLDIRS) $(DESTDIR)$(datadir); \
else \
$(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \
fi
@catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
case "$$cat" in \
*.gmo) destdir=$(gnulocaledir);; \
*) destdir=$(localedir);; \
esac; \
lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
dir=$$destdir/$$lang/LC_MESSAGES; \
if test -r "$(MKINSTALLDIRS)"; then \
$(MKINSTALLDIRS) $(DESTDIR)$$dir; \
else \
$(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$$dir; \
fi; \
if test -r $$cat; then \
$(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE)$(INSTOBJEXT); \
echo "installing $$cat as" \
"$(DESTDIR)$$dir/$(PACKAGE)$(INSTOBJEXT)"; \
else \
$(INSTALL_DATA) $(srcdir)/$$cat \
$(DESTDIR)$$dir/$(PACKAGE)$(INSTOBJEXT); \
echo "installing $(srcdir)/$$cat as" \
"$(DESTDIR)$$dir/$(PACKAGE)$(INSTOBJEXT)"; \
fi; \
if test -r $$cat.m; then \
$(INSTALL_DATA) $$cat.m $(DESTDIR)$$dir/$(PACKAGE)$(INSTOBJEXT).m; \
echo "installing $$cat.m as" \
"$(DESTDIR)$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
else \
if test -r $(srcdir)/$$cat.m ; then \
$(INSTALL_DATA) $(srcdir)/$$cat.m \
$(DESTDIR)$$dir/$(PACKAGE)$(INSTOBJEXT).m; \
echo "installing $(srcdir)/$$cat as" \
"$(DESTDIR)$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
else \
true; \
fi; \
fi; \
done
if test "$(PACKAGE)" = "gettext"; then \
if test -r "$(MKINSTALLDIRS)"; then \
$(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \
else \
$(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \
fi; \
$(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
$(INSTALL_DATA) $(srcdir)/Makefile.in.in \
$(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
else \
: ; \
fi
install-data-no: all
install-data-yes: all
$(mkinstalldirs) $(DESTDIR)$(datadir)
@catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
lang=`echo $$cat | sed 's/\.gmo$$//'`; \
dir=$(localedir)/$$lang/LC_MESSAGES; \
$(mkinstalldirs) $(DESTDIR)$$dir; \
if test -r $$cat; then \
$(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
echo "installing $$cat as $(DESTDIR)$$dir/$(PACKAGE).mo"; \
else \
$(INSTALL_DATA) $(srcdir)/$$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
echo "installing $(srcdir)/$$cat as" \
"$(DESTDIR)$$dir/$(PACKAGE).mo"; \
fi; \
done
# Define this as empty until I found a useful application.
installcheck:
@@ -174,76 +126,68 @@ uninstall:
catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
lang=`echo $$cat | sed 's/\.gmo$$//'`; \
rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE).mo; \
done
rm -f $(gettextsrcdir)/po-Makefile.in.in
if test "$(PACKAGE)" = "gettext"; then \
rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
else \
: ; \
fi
check: all
cat-id-tbl.o: ../intl/libgettext.h
dvi info tags TAGS ID:
mostlyclean:
rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
rm -f core core.* *.pox $(PACKAGE).po *.new.po
rm -fr *.o
clean: mostlyclean
distclean: clean
rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m
rm -f Makefile Makefile.in POTFILES *.mo
maintainer-clean: distclean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
rm -f $(GMOFILES)
distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
dist distdir: update-po $(DISTFILES)
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
dist distdir:
$(MAKE) update-po
@$(MAKE) dist2
# This is a separate target because 'update-po' must be executed before.
dist2: $(DISTFILES)
dists="$(DISTFILES)"; \
for file in $$dists; do \
ln $(srcdir)/$$file $(distdir) 2> /dev/null \
|| cp -p $(srcdir)/$$file $(distdir); \
if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
cp -p $$dir/$$file $(distdir); \
done
update-po: Makefile
$(MAKE) $(PACKAGE).pot
PATH=`pwd`/../src:$$PATH; \
if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \
cd $(srcdir); \
catalogs='$(CATALOGS)'; \
catalogs='$(GMOFILES)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
mv $$lang.po $$lang.old.po; \
lang=`echo $$cat | sed 's/\.gmo$$//'`; \
echo "$$lang:"; \
if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \
rm -f $$lang.old.po; \
if $(MSGMERGE) $$lang.po $(PACKAGE).pot -o $$lang.new.po; then \
mv -f $$lang.new.po $$lang.po; \
else \
echo "msgmerge for $$cat failed!"; \
rm -f $$lang.po; \
mv $$lang.old.po $$lang.po; \
rm -f $$lang.new.po; \
fi; \
done
$(MAKE) update-gmo
POTFILES: POTFILES.in
( if test 'x$(srcdir)' != 'x.'; then \
posrcprefix='$(top_srcdir)/'; \
else \
posrcprefix="../"; \
fi; \
rm -f $@-t $@ \
&& (sed -e '/^#/d' -e '/^[ ]*$$/d' \
-e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
| sed -e '$$s/\\$$//') > $@-t \
&& chmod a-w $@-t \
&& mv $@-t $@ )
update-gmo: Makefile $(GMOFILES)
@:
Makefile: Makefile.in.in ../config.status POTFILES
cd .. \
Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in
cd $(top_builddir) \
&& CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
$(SHELL) ./config.status

View File

@@ -7,7 +7,9 @@ files.c
global.c
move.c
nano.c
rcfile.c
search.c
utils.c
winio.c
# Package header files

1281
po/ca.po Normal file

File diff suppressed because it is too large Load Diff

1336
po/cs.po Normal file

File diff suppressed because it is too large Load Diff

1292
po/da.po Normal file

File diff suppressed because it is too large Load Diff

984
po/de.po

File diff suppressed because it is too large Load Diff

849
po/es.po

File diff suppressed because it is too large Load Diff

1078
po/fi.po

File diff suppressed because it is too large Load Diff

839
po/fr.po

File diff suppressed because it is too large Load Diff

1282
po/gl.po Normal file

File diff suppressed because it is too large Load Diff

1295
po/hu.po Normal file

File diff suppressed because it is too large Load Diff

1029
po/id.po

File diff suppressed because it is too large Load Diff

1177
po/it.po

File diff suppressed because it is too large Load Diff

1293
po/nl.po Normal file

File diff suppressed because it is too large Load Diff

1291
po/no.po Normal file

File diff suppressed because it is too large Load Diff

1289
po/ru.po Normal file

File diff suppressed because it is too large Load Diff

1342
po/sv.po Normal file

File diff suppressed because it is too large Load Diff

1291
po/uk.po Normal file

File diff suppressed because it is too large Load Diff

367
po/update.pl Executable file
View File

@@ -0,0 +1,367 @@
#!/usr/bin/perl -w
#
# GNOME PO Update Utility
#
# Copyright (C) 2000 Free Software Foundation.
#
# This script is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# This script is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this library; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
# Authors: Kenneth Christiansen <kenneth@gnu.org>
#
# NOTICE: Please remember to change the variable $PACKAGE to reflect
# the package this script is used within.
$PACKAGE="nano";
use File::Basename;
# Declare global variables
#-------------------------
my $VERSION = "1.5beta5";
my $LANG = $ARGV[0];
# Always print as the first thing
#--------------------------------
$| = 1;
# Figure out what package that is in use
#---------------------------------------
#open FILE, "../configure.in";
# while (<FILE>) {
# next if /^dnl/; #ignore comments
# if ($_=~/AM_INIT_AUTOMAKE\((.*),(.*)\)/o){
# $PACKAGE=$1;
# last; #stop when found
# }
# if ($_=~/PACKAGE\((.*)\)/o){
# $PACKAGE=$1;
# last; #stop when found
# }
# }
#close FILE;
# Give error if script is run without an argument
#------------------------------------------------
if (! $LANG){
print "update.pl: missing file arguments\n";
print "Try `update.pl --help' for more information.\n";
exit;
}
# Use the supplied arguments
#---------------------------
if ($LANG=~/^-(.)*/){
if ("$LANG" eq "--version" || "$LANG" eq "-V"){
&Version;
}
elsif ($LANG eq "--help" || "$LANG" eq "-H"){
&Help;
}
elsif ($LANG eq "--dist" || "$LANG" eq "-D"){
&Merging;
}
elsif ($LANG eq "--pot" || "$LANG" eq "-P"){
# Check for .headerlock file, so the Makefile
# will not generate the header files twise
#--------------------------------------------
if (-e ".headerlock"){
&GeneratePot;
}else{
&GenHeaders;
&GeneratePot;}
exit;
}
elsif ($LANG eq "--headers" || "$LANG" eq "-S"){
&GenHeaders;
exit;
}
elsif ($LANG eq "--maintain" || "$LANG" eq "-M"){
&Maintain;
}
else {
&InvalidOption;
}
} else {
# Run standard procedure
#-----------------------
if(-s "$LANG.po"){
&GenHeaders;
&GeneratePot;
&Merging;
&Status;
}
# Report error if the language file supplied
# to the command line is non-existent
#-------------------------------------------
else {
&NotExisting;
}
}
sub Version{
# Print version information
#--------------------------
print "GNOME PO Updater $VERSION\n";
print "Written by Kenneth Christiansen <kenneth\@gnome.org>, 2000.\n\n";
print "Copyright (C) 2000 Free Software Foundation, Inc.\n";
print "This is free software; see the source for copying conditions. There is NO\n";
print "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n";
exit;
}
sub Help{
# Print usage information
#------------------------
print "Usage: ./update.pl [OPTIONS] ...LANGCODE\n";
print "Updates pot files and merge them with the translations.\n\n";
print " -H, --help shows this help page\n";
print " -P, --pot generate the pot file only\n";
print " -S, --headers generate the XML headerfiles in POTFILES.in\n";
print " -M, --maintain search for missing files in POTFILES.in\n";
print " -V, --version shows the version\n";
print "\nExamples of use:\n";
print "update.sh --pot just creates a new pot file from the source\n";
print "update.sh da created new pot file and updated the da.po file\n\n";
print "Report bugs to <kenneth\@gnome.org>.\n";
exit;
}
sub Maintain{
# Search and fine, all translatable files
# ---------------------------------------
$i18nfiles="find ../ -print | egrep '.*\\.(c|y|cc|c++|h|gob)' ";
open(BUF2, "POTFILES.in") || die "update.pl: there's no POTFILES.in!!!\n";
print "Searching for missing _(\" \") entries...\n";
open(BUF1, "$i18nfiles|");
@buf1_1 = <BUF1>;
@buf1_2 = <BUF2>;
# Check if we should ignore some found files, when
# comparing with POTFILES.in
#-------------------------------------------------
if (-s ".potignore"){
open FILE, ".potignore";
while (<FILE>) {
if ($_=~/^[^#]/o){
push @bup, $_;
}
}
print "Found .potignore: Ignoring files...\n";
@buf1_2 = (@bup, @buf1_2);
}
foreach my $file (@buf1_1){
open FILE, "<$file";
while (<FILE>) {
if ($_=~/_\(\"/o){
$file = unpack("x3 A*",$file) . "\n";
push @buf2_1, $file;
last;
}
}
}
@buf3_1 = sort (@buf2_1);
@buf3_2 = sort (@buf1_2);
my %in2;
foreach (@buf3_2) {
$in2{$_} = 1;
}
foreach (@buf3_1){
if (!exists($in2{$_})){
push @result, $_
}
}
# Save file with information about the files missing
# if any, and give information about this proceedier
#---------------------------------------------------
if(@result){
open OUT, ">missing";
print OUT @result;
print "\nHere is the result:\n\n", @result, "\n";
print "The file \"missing\" has been placed in the current directory.\n";
print "Files supposed to be ignored should be placed in \".potignore\"\n";
}
# If there is nothing to complain about, notice the user
#-------------------------------------------------------
else{
print "\nWell, it's all perfect! Congratulation!\n";
}
}
sub InvalidOption{
# Handle invalid arguments
#-------------------------
print "update.pl: invalid option -- $LANG\n";
print "Try `update.pl --help' for more information.\n";
}
sub GenHeaders{
# Generate the .h header files, so we can allow glade and
# xml translation support
#--------------------------------------------------------
if(-s "ui-extract.pl"){
print "Found ui-extract.pl script\nRunning ui-extract...\n";
open FILE, "<POTFILES.in";
while (<FILE>) {
# Find .xml files in POTFILES.in and generate the
# files with help from the ui-extract.pl script
#--------------------------------------------------
if ($_=~ /(.*)(\.xml)/o){
$filename = "../$1.xml";
$xmlfiles="perl \.\/ui-extract.pl --local $filename";
system($xmlfiles);
}
# Find .glade files in POTFILES.in and generate
# the files with help from the ui-extract.pl script
#--------------------------------------------------
elsif ($_=~ /(.*)(\.glade)/o){
$filename = "../$1.glade";
$xmlfiles="perl \.\/ui-extract.pl --local $filename";
system($xmlfiles);
}
}
close FILE;
# Create .headerlock file, so the script will know
# that we already passed this section. This is required
# since the individual sections can be reaced at different
# times by the Makefile
#---------------------------------------------------------
system("touch .headerlock");
}
}
sub GeneratePot{
# Generate the potfiles from the POTFILES.in file
#------------------------------------------------
print "Building the $PACKAGE.pot...\n";
system ("mv POTFILES.in POTFILES.in.old");
open INFILE, "<POTFILES.in.old";
open OUTFILE, ">POTFILES.in";
while (<INFILE>) {
if ($_ =~ /\.(glade|xml)$/) {
s/\.glade$/\.glade\.h/;
s/\.xml$/\.xml\.h/;
$_ = basename($_);
$_ = "po/tmp/$_\n";
}
print OUTFILE $_;
}
close OUTFILE;
close INFILE;
$GETTEXT ="xgettext --default-domain\=$PACKAGE --directory\=\.\."
." --add-comments --keyword\=\_ --keyword\=N\_"
." --files-from\=\.\/POTFILES\.in ";
$GTEST ="test \! -f $PACKAGE\.po \|\| \( rm -f \.\/$PACKAGE\.pot "
."&& mv $PACKAGE\.po \.\/$PACKAGE\.pot \)";
system($GETTEXT);
system($GTEST);
print "Wrote $PACKAGE.pot\n";
system("mv POTFILES.in.old POTFILES.in");
# If .headerlock file is found, it means that the potfiles
# already has been generated. If so delete the generated
# .h header files. The reason for this approach with a
# file as a marker is due to that the Makefile runs the
# scripts in turns
#---------------------------------------------------------
if(-e ".headerlock"){
unlink(".headerlock");
print "Removing generated header (.h) files...";
system("rm ./tmp/ -rf");
}
print "done\n";
}
sub Merging{
if ($ARGV[1]){
$LANG = $ARGV[1];
} else {
$LANG = $ARGV[0];
}
if ($ARGV[0] ne "--dist" && $ARGV[0] ne "-D") {
print "Merging $LANG.po with $PACKAGE.pot...";
}
$MERGE="cp $LANG.po $LANG.po.old && msgmerge $LANG.po.old $PACKAGE.pot -o $LANG.po";
system($MERGE);
if ($ARGV[0] ne "--dist" && $ARGV[0] ne "-D") {
print "\n\n";
}
# Remove the "messages" trash file generated
# by gettext, aswell as the backup file
#-------------------------------------------
unlink "messages";
unlink "$LANG.po.old";
}
sub NotExisting{
# Report error if supplied language
# file is non-existant
#----------------------------------
print "update.pl: sorry, $LANG.po does not exist!\n";
print "Try `update.pl --help' for more information.\n";
exit;
}
sub Status{
# Print status information about the po file
#-------------------------------------------
$STATUS="msgfmt --statistics $LANG.po";
system($STATUS);
print "\n";
}

106
proto.h
View File

@@ -29,13 +29,14 @@
#include "nano.h"
extern int center_x, center_y, editwinrows;
extern int editwinrows;
extern int current_x, current_y, posible_max, totlines;
extern int placewewant;
extern int mark_beginx, samelinewrap;
extern int totsize, temp_opt;
extern int fill, flags,tabsize;
extern int fill, wrap_at, flags,tabsize;
extern int search_last_line;
extern int currslen;
extern WINDOW *edit, *topwin, *bottomwin;
extern char *filename;
@@ -43,17 +44,30 @@ extern char *answer;
extern char *hblank, *help_text;
extern char *last_search;
extern char *last_replace;
#ifndef DISABLE_OPERATINGDIR
extern char *operating_dir;
#endif
#ifndef DISABLE_SPELLER
extern char *alt_speller;
#endif
extern struct stat fileinfo;
extern filestruct *current, *fileage, *edittop, *editbot, *filebot;
extern filestruct *cutbuffer, *mark_beginbuf;
#ifdef ENABLE_MULTIBUFFER
extern filestruct *open_files;
#endif
extern shortcut *shortcut_list;
extern shortcut main_list[MAIN_LIST_LEN], whereis_list[WHEREIS_LIST_LEN];
extern shortcut replace_list[REPLACE_LIST_LEN], goto_list[GOTO_LIST_LEN];
extern shortcut writefile_list[WRITEFILE_LIST_LEN], help_list[HELP_LIST_LEN];
extern shortcut writefile_list[WRITEFILE_LIST_LEN], insertfile_list[INSERTFILE_LIST_LEN];
extern shortcut spell_list[SPELL_LIST_LEN], replace_list_2[REPLACE_LIST_LEN];
#if !defined(DISABLE_BROWSER) && !defined(NANO_SMALL)
extern shortcut browser_list[BROWSER_LIST_LEN];
extern shortcut help_list[HELP_LIST_LEN];
#ifndef DISABLE_BROWSER
extern shortcut browser_list[BROWSER_LIST_LEN], gotodir_list[GOTODIR_LIST_LEN];
#endif
extern shortcut *currshortcut;
#ifdef HAVE_REGEX_H
extern int use_regexp, regexp_compiled;
@@ -65,8 +79,10 @@ extern toggle toggles[TOGGLE_LEN];
/* Programs we want available */
char *revstrstr(char *haystack, char *needle, char *rev_start);
char *strcasestr(char *haystack, char *needle);
char *strstrwrapper(char *haystack, char *needle);
char *revstrcasestr(char *haystack, char *needle, char *rev_start);
char *strstrwrapper(char *haystack, char *needle, char *rev_start);
int search_init(int replacing);
int renumber(filestruct * fileptr);
int free_filestruct(filestruct * src);
@@ -75,16 +91,32 @@ int do_yesno(int all, int leavecursor, char *msg, ...);
int actual_x(filestruct * fileptr, int xplus);
int strlenpt(char *buf);
int statusq(int allowtabs, shortcut s[], int slen, char *def, char *msg, ...);
int write_file(char *name, int tmpfile);
int write_file(char *name, int tmpfile, int append, int nonamechange);
int do_cut_text(void);
int do_uncut_text(void);
int no_help(void);
int renumber_all(void);
int open_file(char *filename, int insert, int quiet);
int do_writeout(char *path, int exiting);
int do_gotoline(long defline);
int do_insertfile(int loading_file);
#ifdef ENABLE_MULTIBUFFER
int add_open_file(int update, int dup_fix);
#endif
#ifndef DISABLE_OPERATINGDIR
int check_operating_dir(char *currpath, int allow_tabcomp);
#endif
int do_writeout(char *path, int exiting, int append);
int do_gotoline(long line, int save_pos);
int do_replace_loop(char *prevanswer, filestruct *begin, int *beginx,
int wholewords, int *i);
int do_find_bracket(void);
#if defined (ENABLE_MULTIBUFFER) || !defined (DISABLE_SPELLER)
void do_gotopos(long line, int pos_x, int pos_y, int pos_placewewant);
#endif
/* Now in move.c */
int do_up(void);
int do_down(void);
@@ -102,7 +134,7 @@ void check_wrap(filestruct * inptr, char ch);
void dump_buffer(filestruct * inptr);
void align(char **strp);
void edit_refresh(void), edit_refresh_clearok(void);
void edit_update(filestruct * fileptr, int topmidbot);
void edit_update(filestruct * fileptr, int topmidbotnone);
void update_cursor(void);
void delete_node(filestruct * fileptr);
void set_modified(void);
@@ -128,11 +160,12 @@ void do_early_abort(void);
void *nmalloc(size_t howmuch);
void *nrealloc(void *ptr, size_t howmuch);
void die(char *msg, ...);
void die_save_file(char *die_filename);
void new_file(void);
void new_magicline(void);
void splice_node(filestruct *begin, filestruct *new, filestruct *end);
void splice_node(filestruct *begin, filestruct *newnode, filestruct *end);
void null_at(char *data, int index);
void page_up_center(void);
void page_up(void);
void blank_edit(void);
void search_init_globals(void);
void replace_abort(void);
@@ -140,29 +173,70 @@ void add_to_cutbuffer(filestruct * inptr);
void do_replace_highlight(int highlight_flag, char *word);
void nano_disabled_msg(void);
void window_init(void);
void do_mouse(void);
void print_view_warning(void);
void unlink_node(filestruct * fileptr);
void cut_marked_segment(filestruct * top, int top_x, filestruct * bot,
int bot_x, int destructive);
#ifdef ENABLE_NANORC
void do_rcfile(void);
#endif
#ifdef NANO_EXTRA
void do_credits(void);
#endif
int do_writeout_void(void), do_exit(void), do_gotoline_void(void);
int do_insertfile(void), do_search(void), page_up(void), page_down(void);
int do_insertfile_void(void), do_search(void);
#ifdef ENABLE_MULTIBUFFER
int load_open_file(void), close_open_file(void);
#endif
int do_page_up(void), do_page_down(void);
int do_cursorpos(void), do_spell(void);
int do_up(void), do_down (void), do_right(void), do_left (void);
int do_home(void), do_end(void), total_refresh(void), do_mark(void);
int do_delete(void), do_backspace(void), do_tab(void), do_justify(void);
int do_first_line(void), do_last_line(void);
int do_replace(void), do_help(void), do_enter_void(void);
int keypad_on(WINDOW * win, int new);
int keypad_on(WINDOW * win, int newval);
#if !defined(DISABLE_BROWSER) && !defined(NANO_SMALL)
#ifdef ENABLE_MULTIBUFFER
int open_file_dup_fix(int update);
int open_prevfile(int closing_file), open_nextfile(int closing_file);
#endif
char *charalloc (size_t howmuch);
#if defined (ENABLE_MULTIBUFFER) || !defined (ENABLE_OPERATINGDIR)
char *get_full_path(char *origpath);
#endif
#ifndef DISABLE_BROWSER
char *do_browser(char *path);
struct stat filestat(const char *path);
char *do_browse_from(char *inpath);
#endif
#ifdef ENABLE_COLOR
int do_colorinit(void);
void color_on(WINDOW *win, int whatever);
void color_off(WINDOW *win, int whatever);
extern colorstruct colors[NUM_NCOLORS];
#endif /* ENABLE_COLOR */
RETSIGTYPE main_loop (int junk);
filestruct *copy_node(filestruct * src);
filestruct *copy_filestruct(filestruct * src);
filestruct *make_new_node(filestruct * prevnode);
filestruct *findnextstr(int quiet, filestruct * begin,
filestruct *findnextstr(int quiet, int bracket_mode, filestruct * begin,
int beginx, char *needle);
#ifdef ENABLE_MULTIBUFFER
filestruct *open_file_dup_search(int update);
#endif

273
rcfile.c Normal file
View File

@@ -0,0 +1,273 @@
/* $Id$ */
/**************************************************************************
* rcfile.c *
* *
* Copyright (C) 1999 Chris Allegretta *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 1, or (at your option) *
* any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the Free Software *
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
* *
**************************************************************************/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "config.h"
#include "proto.h"
#include "nano.h"
#ifdef ENABLE_NANORC
#ifndef NANO_SMALL
#include <libintl.h>
#define _(string) gettext(string)
#else
#define _(string) (string)
#endif
#define NUM_RCOPTS 18
/* Static stuff for the nanorc file */
rcoption rcopts[NUM_RCOPTS] =
{
{"regexp", USE_REGEXP},
{"const", CONSTUPDATE},
{"autoindent", AUTOINDENT},
{"cut", CUT_TO_END},
{"nofollow", FOLLOW_SYMLINKS},
{"mouse", USE_MOUSE},
{"operatingdir", 0},
{"pico", PICO_MODE},
{"tabsize", 0},
#ifndef DISABLE_WRAPJUSTIFY
{"fill", 0},
#endif
{"speller", 0},
{"tempfile", TEMP_OPT},
{"view", VIEW_MODE},
{"nowrap", NO_WRAP},
{"nohelp", NO_HELP},
{"suspend", SUSPEND},
{"multibuffer", MULTIBUFFER},
{"smooth", SMOOTHSCROLL}};
/* We have an error in some part of the rcfile; put it on stderr and
make the user hit return to continue starting up nano */
void rcfile_error(char *msg, ...)
{
va_list ap;
fprintf(stderr, "\n");
va_start(ap, msg);
vfprintf(stderr, msg, ap);
va_end(ap);
fprintf(stderr, _("\nPress return to continue starting nano\n"));
while (getchar() != '\n')
;
}
/* Just print the error (one of many, perhaps) but don't abort, yet */
void rcfile_msg(int *errors, char *msg, ...)
{
va_list ap;
if (!*errors) {
*errors = 1;
fprintf(stderr, "\n");
}
va_start(ap, msg);
vfprintf(stderr, msg, ap);
va_end(ap);
fprintf(stderr, "\n");
}
/* Parse the next word from the string. Returns NULL if we hit EOL */
char *parse_next_word(char *ptr)
{
while (*ptr != ' ' && *ptr != '\n' && ptr != '\0')
ptr++;
if (*ptr == '\0')
return NULL;
/* Null terminate and advance ptr */
*ptr++ = 0;
return ptr;
}
/* Parse the RC file, once it has been opened successfully */
void parse_rcfile(FILE *rcstream, char *filename)
{
char *buf, *ptr, *keyword, *option;
int set = 0, lineno = 0, i;
int errors = 0;
buf = charalloc(1024);
while (fgets(buf, 1023, rcstream) > 0) {
lineno++;
ptr = buf;
while ((*ptr == ' ' || *ptr == '\t') &&
(*ptr != '\n' && *ptr != '\0'))
ptr++;
if (*ptr == '\n' || *ptr == '\0')
continue;
if (*ptr == '#') {
#ifdef DEBUG
fprintf(stderr, _("parse_rcfile: Read a comment\n"));
#endif
continue; /* Skip past commented lines */
}
/* Else skip to the next space */
keyword = ptr;
ptr = parse_next_word(ptr);
if (!ptr)
continue;
/* Else try to parse the keyword */
if (!strcasecmp(keyword, "set"))
set = 1;
else if (!strcasecmp(keyword, "unset"))
set = -1;
else {
rcfile_msg(&errors, _("Error in %s on line %d: command %s not understood"),
filename, lineno, keyword);
continue;
}
option = ptr;
ptr = parse_next_word(ptr);
/* We don't care if ptr == NULL, as it should if using proper syntax */
if (set != 0) {
for (i = 0; i <= NUM_RCOPTS - 1; i++) {
if (!strcasecmp(option, rcopts[i].name)) {
#ifdef DEBUG
fprintf(stderr, _("parse_rcfile: Parsing option %s\n"),
rcopts[i].name);
#endif
if (set == 1 || rcopts[i].flag == FOLLOW_SYMLINKS) {
if (
!strcasecmp(rcopts[i].name, "operatingdir") ||
!strcasecmp(rcopts[i].name, "tabsize") ||
#ifndef DISABLE_WRAPJUSTIFY
!strcasecmp(rcopts[i].name, "fill") ||
#endif
#ifndef DISABLE_SPELLER
!strcasecmp(rcopts[i].name, "speller")
#else
0
#endif
) {
if (*ptr == '\n' || *ptr == '\0') {
rcfile_msg(&errors, _("Error in %s on line %d: option %s requires an argument"),
filename, lineno, rcopts[i].name);
continue;
}
option = ptr;
ptr = parse_next_word(ptr);
if (!strcasecmp(rcopts[i].name, "fill")) {
#ifndef DISABLE_WRAPJUSTIFY
if ((i = atoi(option)) < MIN_FILL_LENGTH) {
rcfile_msg(&errors,
_("Error in %s on line %d: requested fill size %d too small"),
filename, lineno, i);
}
else
fill = i;
#endif
} else if (!strcasecmp(rcopts[i].name, "tabsize")) {
if ((i = atoi(option)) <= 0) {
rcfile_msg(&errors,
_("Error in %s on line %d: requested tab size %d too small"),
filename, lineno, i);
} else {
tabsize = i;
}
} else {
#ifndef DISABLE_SPELLER
alt_speller = charalloc(strlen(option) + 1);
strcpy(alt_speller, option);
#endif
}
} else
SET(rcopts[i].flag);
#ifdef DEBUG
fprintf(stderr, _("set flag %d!\n"), rcopts[i].flag);
#endif
} else {
UNSET(rcopts[i].flag);
#ifdef DEBUG
fprintf(stderr, _("unset flag %d!\n"), rcopts[i].flag);
#endif
}
}
}
}
}
if (errors)
rcfile_error(_("Errors found in .nanorc file"));
return;
}
/* The main rc file function, tries to open the rc file */
void do_rcfile(void)
{
char *nanorc;
char *unable = _("Unable to open ~/.nanorc file, %s");
struct stat fileinfo;
FILE *rcstream;
if (getenv("HOME") == NULL)
return;
nanorc = charalloc(strlen(getenv("HOME")) + 10);
sprintf(nanorc, "%s/.nanorc", getenv("HOME"));
if (stat(nanorc, &fileinfo) == -1) {
/* Abort if the file doesn't exist and there's some other kind
of error stat()ing it */
if (errno != ENOENT)
rcfile_error(unable, errno);
return;
}
if ((rcstream = fopen(nanorc, "r")) == NULL) {
rcfile_error(unable, strerror(errno));
return;
}
parse_rcfile(rcstream, nanorc);
fclose(rcstream);
}
#endif /* ENABLE_NANORC */

440
search.c
View File

@@ -19,12 +19,13 @@
* *
**************************************************************************/
#include "config.h"
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <stdio.h>
#include <ctype.h>
#include "config.h"
#include "proto.h"
#include "nano.h"
@@ -44,7 +45,7 @@ void regexp_init(const char *regexp)
SET(REGEXP_COMPILED);
}
void regexp_cleanup()
void regexp_cleanup(void)
{
UNSET(REGEXP_COMPILED);
regfree(&search_regexp);
@@ -54,18 +55,18 @@ void regexp_cleanup()
void search_init_globals(void)
{
if (last_search == NULL) {
last_search = nmalloc(1);
last_search = charalloc(1);
last_search[0] = 0;
}
if (last_replace == NULL) {
last_replace = nmalloc(1);
last_replace = charalloc(1);
last_replace[0] = 0;
}
}
/* Set up the system variables for a search or replace. Returns -1 on
abort, 0 on success, and 1 on rerun calling program
Return -2 to run opposite program (searchg -> replace, replace -> search)
Return -2 to run opposite program (search -> replace, replace -> search)
replacing = 1 if we call from do_replace, 0 if called from do_search func.
*/
@@ -73,15 +74,25 @@ int search_init(int replacing)
{
int i = 0;
char *buf;
char *prompt, *reprompt = "";
static char *backupstring = NULL;
#ifndef NANO_SMALL
int j;
#endif
search_init_globals();
buf = nmalloc(strlen(last_search) + 5);
buf = charalloc(strlen(last_search) + 5);
buf[0] = 0;
/* Clear the backupstring if we've changed from Pico mode to regular
mode */
if (ISSET(CLEAR_BACKUPSTRING)) {
free(backupstring);
backupstring = NULL;
UNSET(CLEAR_BACKUPSTRING);
}
/* Okay, fun time. backupstring is our holder for what is being
returned from the statusq call. Using answer for this would be tricky.
Here, if we're using PICO_MODE, we only want nano to put the
@@ -114,22 +125,26 @@ int search_init(int replacing)
else
strcpy(buf, "");
if (ISSET(USE_REGEXP) && ISSET(CASE_SENSITIVE))
prompt = _("Case Sensitive Regexp Search%s%s");
else if (ISSET(USE_REGEXP))
prompt = _("Regexp Search%s%s");
else if (ISSET(CASE_SENSITIVE))
prompt = _("Case Sensitive Search%s%s");
else
prompt = _("Search%s%s");
if (replacing)
reprompt = _(" (to replace)");
/* This is now one simple call. It just does a lot */
i = statusq(0, replacing ? replace_list : whereis_list,
replacing ? REPLACE_LIST_LEN : WHEREIS_LIST_LEN, backupstring,
prompt, reprompt, buf);
"%s%s%s%s%s%s",
_("Search"),
/* This string is just a modifier for the search prompt,
no grammar is implied */
ISSET(CASE_SENSITIVE) ? _(" [Case Sensitive]") : "",
/* This string is just a modifier for the search prompt,
no grammar is implied */
ISSET(USE_REGEXP) ? _(" [Regexp]") : "",
/* This string is just a modifier for the search prompt,
no grammar is implied */
ISSET(REVERSE_SEARCH) ? _(" [Backwards]") : "",
replacing ? _(" (to replace)") : "",
buf);
/* Cancel any search, or just return with no previous search */
if ((i == -1) || (i < 0 && !last_search[0])) {
@@ -138,14 +153,22 @@ int search_init(int replacing)
free(backupstring);
backupstring = NULL;
return -1;
} else if (i == -2) { /* Same string */
} else
switch (i) {
case -2: /* Same string */
#ifdef HAVE_REGEX_H
if (ISSET(USE_REGEXP))
regexp_init(answer);
#else
;
if (ISSET(USE_REGEXP)) {
/* If we're in pico mode, answer is "", use last_search! */
if (ISSET(PICO_MODE))
regexp_init(last_search);
else
regexp_init(answer);
}
#endif
} else if (i == 0) { /* They entered something new */
break;
case 0: /* They entered something new */
#ifdef HAVE_REGEX_H
if (ISSET(USE_REGEXP))
regexp_init(answer);
@@ -153,26 +176,32 @@ int search_init(int replacing)
free(backupstring);
backupstring = NULL;
last_replace[0] = '\0';
} else if (i == NANO_CASE_KEY) { /* They want it case sensitive */
break;
case TOGGLE_CASE_KEY:
case TOGGLE_BACKWARDS_KEY:
#ifdef HAVE_REGEX_H
case TOGGLE_REGEXP_KEY:
#endif
free(backupstring);
backupstring = NULL;
backupstring = mallocstrcpy(backupstring, answer);
if (ISSET(CASE_SENSITIVE))
UNSET(CASE_SENSITIVE);
else
SET(CASE_SENSITIVE);
#ifndef NANO_SMALL
for (j = 0; j <= TOGGLE_LEN - 1; j++)
if (i == toggles[j].val)
TOGGLE(toggles[j].flag);
#endif
return 1;
} else if (i == NANO_OTHERSEARCH_KEY) {
case NANO_OTHERSEARCH_KEY:
backupstring = mallocstrcpy(backupstring, answer);
return -2; /* Call the opposite search function */
} else if (i == NANO_FROMSEARCHTOGOTO_KEY) {
case NANO_FROMSEARCHTOGOTO_KEY:
free(backupstring);
backupstring = NULL;
do_gotoline_void();
return -3;
} else { /* First line key, etc. */
default:
do_early_abort();
free(backupstring);
backupstring = NULL;
@@ -197,82 +226,156 @@ void not_found_msg(char *str)
}
}
filestruct *findnextstr(int quiet, filestruct * begin, int beginx,
int past_editbuff; /* search is now looking through lines not displayed */
filestruct *findnextstr(int quiet, int bracket_mode, filestruct * begin, int beginx,
char *needle)
{
filestruct *fileptr;
char *searchstr, *found = NULL, *tmp;
int past_editbot = 0, current_x_find;
char *searchstr, *rev_start = NULL, *found = NULL;
int current_x_find = 0;
fileptr = current;
current_x_find = current_x + 1;
past_editbuff = 0;
/* Are we searching the last line? (i.e. the line where search started) */
if ((fileptr == begin) && (current_x_find < beginx))
search_last_line = 1;
if (!ISSET(REVERSE_SEARCH)) { /* forward search */
/* Make sure we haven't passed the end of the string */
if (strlen(fileptr->data) < current_x_find)
current_x_find--;
current_x_find = current_x + 1;
#if 0
/* Are we now back to the place where the search started) */
if ((fileptr == begin) && (beginx > current_x_find))
search_last_line = 1;
#endif
/* Make sure we haven't passed the end of the string */
if (strlen(fileptr->data) < current_x_find)
current_x_find--;
searchstr = &fileptr->data[current_x_find];
searchstr = &fileptr->data[current_x_find];
/* Look for needle in searchstr */
while ((found = strstrwrapper(searchstr, needle)) == NULL) {
/* Look for needle in searchstr */
while ((found = strstrwrapper(searchstr, needle, rev_start)) == NULL) {
/* finished processing file, get out */
if (search_last_line) {
/* finished processing file, get out */
if (search_last_line) {
if (!quiet)
not_found_msg(needle);
return NULL;
}
fileptr = fileptr->next;
if (fileptr == editbot)
past_editbuff = 1;
/* EOF reached ?, wrap around once */
if (fileptr == NULL) {
if (bracket_mode) /* don't wrap if looking for bracket match */
return NULL;
fileptr = fileage;
past_editbuff = 1;
if (!quiet) {
statusbar(_("Search Wrapped"));
SET(DISABLE_CURPOS);
}
}
/* Original start line reached */
if (fileptr == begin)
search_last_line = 1;
searchstr = fileptr->data;
}
/* We found an instance */
current_x_find = found - fileptr->data;
#if 0
/* Ensure we haven't wrapped around again! */
if ((search_last_line) && (current_x_find >= beginx)) {
if (!quiet)
not_found_msg(needle);
return NULL;
}
#endif
}
#ifndef NANO_SMALL
else { /* reverse search */
fileptr = fileptr->next;
current_x_find = current_x - 1;
if (!past_editbot && (fileptr == editbot))
past_editbot = 1;
/* EOF reached, wrap around once */
if (fileptr == NULL) {
fileptr = fileage;
past_editbot = 1;
if (!quiet)
statusbar(_("Search Wrapped"));
}
/* Original start line reached */
if (fileptr == begin)
/* Are we now back to the place where the search started) */
if ((fileptr == begin) && (current_x_find > beginx))
search_last_line = 1;
/* Make sure we haven't passed the begining of the string */
#if 0 /* Is this required here ? */
if (!(&fileptr->data[current_x_find] - fileptr->data))
current_x_find++;
#endif
rev_start = &fileptr->data[current_x_find];
searchstr = fileptr->data;
}
/* We found an instance */
current_x_find = 0;
for (tmp = fileptr->data; tmp != found; tmp++)
current_x_find++;
/* Look for needle in searchstr */
while ((found = strstrwrapper(searchstr, needle, rev_start)) == NULL) {
/* Ensure we haven't wrap around again! */
if ((search_last_line) && (current_x_find >= beginx)) {
if (!quiet)
not_found_msg(needle);
return NULL;
/* finished processing file, get out */
if (search_last_line) {
if (!quiet)
not_found_msg(needle);
return NULL;
}
fileptr = fileptr->prev;
if (fileptr == edittop->prev)
past_editbuff = 1;
/* SOF reached ?, wrap around once */
/* ? */ if (fileptr == NULL) {
if (bracket_mode)
return NULL;
fileptr = filebot;
past_editbuff = 1;
if (!quiet) {
statusbar(_("Search Wrapped"));
SET(DISABLE_CURPOS);
}
}
/* Original start line reached */
if (fileptr == begin)
search_last_line = 1;
searchstr = fileptr->data;
rev_start = fileptr->data + strlen(fileptr->data);
}
/* We found an instance */
current_x_find = found - fileptr->data;
#if 0
/* Ensure we haven't wrapped around again! */
if ((search_last_line) && (current_x_find < beginx)) {
if (!quiet)
not_found_msg(needle);
return NULL;
}
#endif
}
#endif /* NANO_SMALL */
/* Set globals now that we are sure we found something */
current = fileptr;
current_x = current_x_find;
if (past_editbot)
edit_update(fileptr, CENTER);
else
update_line(current, current_x);
if (!bracket_mode) {
if (past_editbuff)
edit_update(fileptr, CENTER);
else
update_line(current, current_x);
placewewant = xplustabs();
reset_cursor();
placewewant = xplustabs();
reset_cursor();
}
return fileptr;
}
@@ -332,7 +435,7 @@ int do_search(void)
last_search = mallocstrcpy(last_search, answer);
search_last_line = 0;
findnextstr(0, current, current_x, answer);
findnextstr(FALSE, FALSE, current, current_x, answer);
search_abort();
return 1;
}
@@ -340,16 +443,16 @@ int do_search(void)
void print_replaced(int num)
{
if (num > 1)
statusbar(_("Replaced %d occurences"), num);
statusbar(_("Replaced %d occurrences"), num);
else if (num == 1)
statusbar(_("Replaced 1 occurence"));
statusbar(_("Replaced 1 occurrence"));
}
void replace_abort(void)
{
/* Identicle to search_abort, so we'll call it here. If it
/* Identical to search_abort, so we'll call it here. If it
does something different later, we can change it back. For now
it's just a waste to duplicat code */
it's just a waste to duplicate code */
search_abort();
placewewant = xplustabs();
}
@@ -428,7 +531,7 @@ char *replace_line(void)
search_match_count = regmatches[0].rm_eo - regmatches[0].rm_so;
new_line_size = replace_regexp(NULL, 0);
/* If they specified an invalid subexpression in the replace
* text, return NULL indicating an error */
* text, return NULL, indicating an error */
if (new_line_size < 0)
return NULL;
} else {
@@ -441,7 +544,7 @@ char *replace_line(void)
}
/* Create buffer */
copy = nmalloc(new_line_size);
copy = charalloc(new_line_size);
/* Head of Original Line */
strncpy(copy, current->data, current_x);
@@ -457,7 +560,7 @@ char *replace_line(void)
/* The tail of the original line */
/* This may expose other bugs, because it no longer
goes through each character on the string
goes through each character in the string
and tests for string goodness. But because
we can assume the invariant that current->data
is less than current_x + strlen(last_search) long,
@@ -501,13 +604,13 @@ int do_replace_loop(char *prevanswer, filestruct *begin, int *beginx,
while (1) {
/* Sweet optimization by Rocco here */
fileptr = findnextstr(replaceall, begin, *beginx, prevanswer);
fileptr = findnextstr(replaceall, FALSE, begin, *beginx, prevanswer);
/* No more matches. Done! */
if (!fileptr)
break;
/* Make sure only wholewords are found */
/* Make sure only whole words are found */
if (wholewords)
{
/* start of line or previous character not a letter */
@@ -581,6 +684,12 @@ int do_replace(void)
filestruct *begin;
char *prevanswer = NULL, *buf = NULL;
if (ISSET(VIEW_MODE)) {
print_view_warning();
replace_abort();
return 0;
}
i = search_init(1);
switch (i) {
case -1:
@@ -598,7 +707,7 @@ int do_replace(void)
return 0;
}
/* Again, there was a previous string but they deleted it and hit enter */
/* Again, there was a previous string, but they deleted it and hit enter */
if (!ISSET(PICO_MODE) && !strcmp(answer, "")) {
statusbar(_("Replace Cancelled"));
replace_abort();
@@ -616,7 +725,7 @@ int do_replace(void)
}
if (ISSET(PICO_MODE)) {
buf = nmalloc(strlen(last_replace) + 5);
buf = charalloc(strlen(last_replace) + 5);
if (strcmp(last_replace, "")) {
if (strlen(last_replace) > (COLS / 3)) {
strncpy(buf, last_replace, COLS / 3);
@@ -659,55 +768,42 @@ void goto_abort(void)
display_main_list();
}
int do_gotoline(long defline)
int do_gotoline(long line, int save_pos)
{
long line, i = 1, j = 0;
filestruct *fileptr;
long i = 1;
if (defline > 0) /* We already know what line we want to go to */
line = defline;
else { /* Ask for it */
if (line <= 0) { /* Ask for it */
long j = 0;
j = statusq(0, goto_list, GOTO_LIST_LEN, "", _("Enter line number"));
if (j == -1) {
if (j != 0) {
statusbar(_("Aborted"));
goto_abort();
return 0;
} else if (j != 0) {
do_early_abort();
}
line = atoi(answer);
/* Bounds check */
if (line <= 0) {
statusbar(_("Come on, be reasonable"));
goto_abort();
return 0;
}
if (!strcmp(answer, "$")) {
current = filebot;
current_x = 0;
edit_update(current, CENTER);
goto_abort();
return 1;
}
line = atoi(answer);
}
/* Bounds check */
if (line <= 0) {
statusbar(_("Come on, be reasonable"));
goto_abort();
return 0;
}
if (line > totlines) {
statusbar(_("Only %d lines available, skipping to last line"),
filebot->lineno);
current = filebot;
current_x = 0;
edit_update(current, CENTER);
} else {
for (fileptr = fileage; fileptr != NULL && i < line; i++)
fileptr = fileptr->next;
for (current = fileage; ((current->next != NULL) && (i < line)); i++)
current = current->next;
current = fileptr;
current_x = 0;
current_x = 0;
/* if save_pos is non-zero, don't change the cursor position when
updating the edit window */
if (save_pos)
edit_update(current, NONE);
else
edit_update(current, CENTER);
}
goto_abort();
return 1;
@@ -715,5 +811,91 @@ int do_gotoline(long defline)
int do_gotoline_void(void)
{
return do_gotoline(0);
return do_gotoline(0, 0);
}
#if (defined ENABLE_MULTIBUFFER || !defined DISABLE_SPELLER)
void do_gotopos(long line, int pos_x, int pos_y, int pos_placewewant)
{
/* since do_gotoline() resets the x-coordinate but not the
y-coordinate, set the coordinates up this way */
current_y = pos_y;
do_gotoline(line, 1);
current_x = pos_x;
placewewant = pos_placewewant;
update_line(current, pos_x);
}
#endif
#if !defined(NANO_SMALL) && defined(HAVE_REGEX_H)
int do_find_bracket(void)
{
char ch_under_cursor, wanted_ch;
char *pos, *brackets = "([{<>}])";
char regexp_pat[] = "[ ]";
int offset, have_past_editbuff = 0, flagsave, current_x_save, count = 1;
filestruct *current_save;
ch_under_cursor = current->data[current_x];
if ((!(pos = strchr(brackets, ch_under_cursor))) || (!((offset = pos - brackets) < 8))) {
statusbar(_("Not a bracket"));
return 1;
}
blank_statusbar_refresh();
wanted_ch = *(brackets + ((strlen(brackets) - (offset + 1))));
current_x_save = current_x;
current_save = current;
flagsave = flags;
SET(USE_REGEXP);
/* apparent near redundancy with regexp_pat[] here is needed, [][] works, [[]] doesn't */
if (offset < (strlen(brackets) / 2)) { /* on a left bracket */
regexp_pat[1] = wanted_ch;
regexp_pat[2] = ch_under_cursor;
UNSET(REVERSE_SEARCH);
} else { /* on a right bracket */
regexp_pat[1] = ch_under_cursor;
regexp_pat[2] = wanted_ch;
SET(REVERSE_SEARCH);
}
regexp_init(regexp_pat);
while (1) {
search_last_line = 0;
if (findnextstr(1, 1, current, current_x, regexp_pat)) {
have_past_editbuff |= past_editbuff;
if (current->data[current_x] == ch_under_cursor) /* found identical bracket */
count++;
else { /* found complementary bracket */
if (!(--count)) {
if (have_past_editbuff)
edit_update(current, CENTER);
else
update_line(current, current_x);
placewewant = xplustabs();
reset_cursor();
break ;
}
}
} else { /* didn't find either left or right bracket */
statusbar(_("No matching bracket"));
current_x = current_x_save;
current = current_save;
break;
}
}
if (ISSET(REGEXP_COMPILED))
regexp_cleanup();
flags = flagsave;
return 0;
}
#endif

5992
texinfo.tex Normal file

File diff suppressed because it is too large Load Diff

148
utils.c
View File

@@ -19,12 +19,13 @@
* *
**************************************************************************/
#include "config.h"
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "config.h"
#include "nano.h"
#include "proto.h"
@@ -46,54 +47,105 @@ void lowercase(char *src)
}
}
/* I can't believe I have to write this function */
char *strcasestr(char *haystack, char *needle)
/* None of this is needed if we're using NANO_SMALL! */
#ifndef NANO_SMALL
char *revstrstr(char *haystack, char *needle, char *rev_start)
{
char *localneedle, *localhaystack, *found, *tmp, *tmp2;
char *p, *q, *r;
/* Make a copy of the search string and searcgh space */
localneedle = nmalloc(strlen(needle) + 2);
localhaystack = nmalloc(strlen(haystack) + 2);
strcpy(localneedle, needle);
strcpy(localhaystack, haystack);
/* Make them lowercase */
lowercase(localneedle);
lowercase(localhaystack);
/* Look for the lowercased substring in the lowercased search space -
return NULL if we didn't find anything */
if ((found = strstr(localhaystack, localneedle)) == NULL) {
free(localneedle);
free(localhaystack);
return NULL;
for(p = rev_start ; p >= haystack ; --p) {
for (r = p, q = needle ; (*q == *r) && (*q != '\0') ; r++, q++)
;
if (*q == '\0')
return p;
}
/* Else return the pointer to the same place in the real search space */
tmp2 = haystack;
for (tmp = localhaystack; tmp != found; tmp++)
tmp2++;
free(localneedle);
free(localhaystack);
return tmp2;
return 0;
}
char *strstrwrapper(char *haystack, char *needle)
char *revstrcasestr(char *haystack, char *needle, char *rev_start)
{
char *p, *q, *r;
for(p = rev_start ; p >= haystack ; --p) {
for (r = p, q = needle ; (tolower(*q) == tolower(*r)) && (*q != '\0') ; r++, q++)
;
if (*q == '\0')
return p;
}
return 0;
}
/* This is now mutt's version (called mutt_stristr) because it doesn't
use memory allocation to do a simple search (yuck). */
char *strcasestr(char *haystack, char *needle)
{
const char *p, *q;
if (!haystack)
return NULL;
if (!needle)
return (haystack);
while (*(p = haystack)) {
for (q = needle; *p && *q && tolower (*p) == tolower (*q); p++, q++)
;
if (!*q)
return (haystack);
haystack++;
}
return NULL;
}
#endif /* NANO_SMALL */
char *strstrwrapper(char *haystack, char *needle, char *rev_start)
{
#ifdef HAVE_REGEX_H
int result;
char *i, *j;
if (ISSET(USE_REGEXP)) {
int result = regexec(&search_regexp, haystack, 10, regmatches, 0);
if (!result)
return haystack + regmatches[0].rm_so;
#ifndef NANO_SMALL
if (!ISSET(REVERSE_SEARCH)) {
result = regexec(&search_regexp, haystack, 10, regmatches, 0);
if (!result)
return haystack + regmatches[0].rm_so;
} else {
#endif
/* do quick check first */
if (!(regexec(&search_regexp, haystack, 10, regmatches, 0))) {
/* there is a match */
for(i = rev_start ; i >= haystack ; --i)
if (!(result = regexec(&search_regexp, i, 10, regmatches, 0))) {
j = i + regmatches[0].rm_so;
if (j <= rev_start)
return j;
}
}
#ifndef NANO_SMALL
}
#endif
return 0;
}
#endif
if (ISSET(CASE_SENSITIVE))
return strstr(haystack, needle);
else
return strcasestr(haystack, needle);
#ifndef NANO_SMALL
if (ISSET(CASE_SENSITIVE)) {
if (ISSET(REVERSE_SEARCH))
return revstrstr(haystack, needle, rev_start);
else
return strstr(haystack,needle);
} else {
if (ISSET(REVERSE_SEARCH))
return revstrcasestr(haystack, needle, rev_start);
else
#endif
return strcasestr(haystack, needle);
#ifndef NANO_SMALL
}
#endif
}
/* Thanks BG, many ppl have been asking for this... */
@@ -109,6 +161,20 @@ void *nmalloc(size_t howmuch)
return r;
}
/* We're going to need this too - Hopefully this will minimize
the transition cost of moving to the apropriate function. */
char *charalloc(size_t howmuch)
{
void *r;
/* Panic save? */
if (!(r = calloc(howmuch, sizeof (char))))
die(_("nano: calloc: out of memory!"));
return (char *) r;
}
void *nrealloc(void *ptr, size_t howmuch)
{
void *r;
@@ -119,7 +185,7 @@ void *nrealloc(void *ptr, size_t howmuch)
return r;
}
/* Copy one malloced string to another pointer.
/* Copy one malloc()ed string to another pointer.
Should be used as dest = mallocstrcpy(dest, src);
*/
@@ -138,7 +204,7 @@ void *mallocstrcpy(char *dest, char *src)
return(dest);
}
dest = nmalloc(strlen(src) + 1);
dest = charalloc(strlen(src) + 1);
strcpy(dest, src);
return dest;
@@ -149,7 +215,7 @@ void *mallocstrcpy(char *dest, char *src)
void new_magicline(void)
{
filebot->next = nmalloc(sizeof(filestruct));
filebot->next->data = nmalloc(1);
filebot->next->data = charalloc(1);
filebot->next->data[0] = '\0';
filebot->next->prev = filebot;
filebot->next->next = NULL;

514
winio.c

File diff suppressed because it is too large Load Diff