Compare commits

...

237 Commits

Author SHA1 Message Date
Chris Allegretta
dc57bbab7a Nano 1.1.3 release
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@887 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-26 16:14:45 +00:00
Chris Allegretta
6d0aa9f3b7 More do_prev_word() fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@886 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-26 15:21:41 +00:00
Chris Allegretta
e59fc829d8 Okay, now fix do_prev_word so it doesn't crash when it hits a blank line, it's still not perfect =/
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@884 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-24 18:07:58 +00:00
Chris Allegretta
a1a6a7fda6 Oopos, wrote the test backwards :-)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@880 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-24 17:34:29 +00:00
Chris Allegretta
107864058b nano.h: Additional #define, SMALL_TOO to determine how long MAIN_LIST_LEN is. We need this because of the find matching bracket code
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@879 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-24 17:27:46 +00:00
Chris Allegretta
2cd72b6aa2 Back out off by one fix that's not actually off by one, it was a different bug :-)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@878 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-24 17:25:36 +00:00
Chris Allegretta
3a24f3f780 Changed header comments to say "version 2" instead of "version 1" as the COPYING file is actually version 2 of the GPL (bug noticed by Jordi Mallach)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@873 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-24 11:33:54 +00:00
Chris Allegretta
347c184b6f nano.c:main() - Moved #ifndef NANO_SMALL down past the case 0: line so control-space doesn't insert a \0 (ack!)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@872 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-24 01:37:13 +00:00
Chris Allegretta
48ebb81fb2 nano.c:main() - Fixed off by one when checking for MAIN_LIST_LEN. Ugh.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@871 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-24 01:34:15 +00:00
Chris Allegretta
abf22a8fb2 - nano.c: - Added the #ifdefs around do_prev_word the code in main()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@870 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-24 00:58:19 +00:00
Chris Allegretta
e7ee63f271 - cut.c: cut_marked_segment() - Fix off-by one in mem allocation
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@868 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-23 12:58:42 +00:00
Chris Allegretta
fa0c6963ce Fixed null_at to ACTUALLY DO SOMETHING with its arg. Again, this was causing nasty errors if the call to nrealloc moved where the data was located
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@866 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-22 23:22:19 +00:00
Chris Allegretta
878ced39bf - nano.c:do_prev_word() - Fixed goofy logic setting x pos to value of last line when hitting the beginning of first line, prog should simply abort.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@865 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-22 20:05:34 +00:00
Chris Allegretta
b3655b4c5e DLR's cut and miscellaneous fixes, my cut fixes, and context-sensitive help, woohoo
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@864 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-22 03:15:31 +00:00
Jordi Mallach
fac011a5e1 I mean add, not replace... duh.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@863 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-20 12:30:46 +00:00
Jordi Mallach
9f4e583e52 Added stamp-h1
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@862 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-20 12:30:12 +00:00
Chris Allegretta
beead28619 - faq.html - Removed nano-editor.org FTP site address [deprecated] and added the GNU one
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@860 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-18 14:15:28 +00:00
Jordi Mallach
eb94b9edcd Updated Ukrainian translation (Sergey A. Ribalchenko).
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@859 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-15 14:26:48 +00:00
Chris Allegretta
76e291beee Added conversion messages for DOS and Mac files, and Alt-space as do-previous-word
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@858 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-14 19:05:10 +00:00
Jordi Mallach
ab23fbd019 Updated Russian translation (Sergey A. Ribalchenko).
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@856 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-08 14:05:36 +00:00
Jordi Mallach
26f4603a89 Style updates for Spanish, by Santiago Vila.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@855 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-07 15:53:27 +00:00
Jordi Mallach
2476ebd31b Updated Danish translation (Keld Simonsen).
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@854 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-07 00:26:26 +00:00
Jordi Mallach
482d165ab5 Updated Swedish translation (Christian Rose).
Updated gl.po from TP.


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@853 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-06 02:36:25 +00:00
Jordi Mallach
02a24525c5 Small typo fix.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@852 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-05 10:58:07 +00:00
Jordi Mallach
cdcac1ccc2 And what if I actually fix it?
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@851 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-05 03:26:52 +00:00
Jordi Mallach
633dab0340 Darn, that %s vs %d bug again.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@850 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-05 03:26:00 +00:00
Jordi Mallach
14a0e55bc9 Getting rid of Makefile.in too, autogenerated file.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@849 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-04 01:54:03 +00:00
Jordi Mallach
8fd15e2672 Oops, m4 stuff is in m4/ in nano 1.1.x...
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@848 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-04 01:44:06 +00:00
Jordi Mallach
19aad376ef Added script to get working configure, etc.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@845 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-04 01:37:36 +00:00
Jordi Mallach
c17aa63200 Bye bye you too. To the Attic! (replaced by autogen.sh)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@844 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-04 01:34:13 +00:00
Chris Allegretta
9a39789cb6 Back to CVS version
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@843 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2001-10-04 01:25:43 +00:00
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
60 changed files with 24570 additions and 9943 deletions

View File

@@ -8,3 +8,4 @@ config.status
configure
nano
stamp-h
stamp-h1

84
BUGS
View File

@@ -6,20 +6,20 @@
- 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:
* *
@@ -27,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
@@ -41,50 +42,52 @@
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]
[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
- 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]
@@ -97,12 +100,33 @@
- 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 auto-indented
- 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 **

614
ChangeLog

File diff suppressed because it is too large Load Diff

View File

@@ -1,27 +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@
info_TEXINFOS = nano.texi
MAKEINFO = makeinfo --no-split
EXTRA_DIST = AUTHORS BUGS COPYING ChangeLog INSTALL NEWS README \
TODO install-sh missing mkinstalldirs nano.1 nano.1.html \
faq.html
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

@@ -1,635 +0,0 @@
# Makefile.in generated automatically by automake 1.4 from Makefile.am
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
SHELL = @SHELL@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
sbindir = @sbindir@
libexecdir = @libexecdir@
datadir = @datadir@
sysconfdir = @sysconfdir@
sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
infodir = @infodir@
mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include
DESTDIR =
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = .
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
CC = @CC@
CURSES_LIB = @CURSES_LIB@
DATADIRNAME = @DATADIRNAME@
GENCAT = @GENCAT@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_CONFIG = @GLIB_CONFIG@
GLIB_LIBS = @GLIB_LIBS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GT_NO = @GT_NO@
GT_YES = @GT_YES@
INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@
INSTOBJEXT = @INSTOBJEXT@
INTLDEPS = @INTLDEPS@
INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
PACKAGE = @PACKAGE@
POFILES = @POFILES@
POSUB = @POSUB@
RANLIB = @RANLIB@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
l = @l@
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
man_MANS = nano.1
nano_LDADD = @INTLLIBS@
info_TEXINFOS = nano.texi
MAKEINFO = makeinfo --no-split
EXTRA_DIST = AUTHORS BUGS COPYING ChangeLog INSTALL NEWS README TODO install-sh missing mkinstalldirs nano.1 nano.1.html faq.html
SUBDIRS = po intl
localedir = $(datadir)/locale
INCLUDES = -Iintl -DLOCALEDIR=\"$(localedir)\" -I@includedir@
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
PROGRAMS = $(bin_PROGRAMS)
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_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 \
texinfo.tex
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
GZIP_ENV = --best
SOURCES = $(nano_SOURCES)
OBJECTS = $(nano_OBJECTS)
all: all-redirect
.SUFFIXES:
.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
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) \
&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
$(ACLOCAL_M4): configure.in
cd $(srcdir) && $(ACLOCAL)
config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
cd $(srcdir) && $(AUTOCONF)
config.h: stamp-h
@if test ! -f $@; then \
rm -f stamp-h; \
$(MAKE) stamp-h; \
else :; fi
stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status
cd $(top_builddir) \
&& CONFIG_FILES= CONFIG_HEADERS=config.h:config.h.in \
$(SHELL) ./config.status
@echo timestamp > stamp-h 2> /dev/null
$(srcdir)/config.h.in: $(srcdir)/stamp-h.in
@if test ! -f $@; then \
rm -f $(srcdir)/stamp-h.in; \
$(MAKE) $(srcdir)/stamp-h.in; \
else :; fi
$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h
cd $(top_srcdir) && $(AUTOHEADER)
@echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null
mostlyclean-hdr:
clean-hdr:
distclean-hdr:
-rm -f config.h
maintainer-clean-hdr:
mostlyclean-binPROGRAMS:
clean-binPROGRAMS:
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
distclean-binPROGRAMS:
maintainer-clean-binPROGRAMS:
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(bindir)
@list='$(bin_PROGRAMS)'; for p in $$list; do \
if test -f $$p; then \
echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
$(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
else :; fi; \
done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
list='$(bin_PROGRAMS)'; for p in $$list; do \
rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
done
.c.o:
$(COMPILE) -c $<
.s.o:
$(COMPILE) -c $<
.S.o:
$(COMPILE) -c $<
mostlyclean-compile:
-rm -f *.o core *.core
clean-compile:
distclean-compile:
-rm -f *.tab.c
maintainer-clean-compile:
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)'; \
l2='$(man_MANS)'; for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
else file=$$i; fi; \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \
$(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \
done
uninstall-man1:
@list='$(man1_MANS)'; \
l2='$(man_MANS)'; for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \
rm -f $(DESTDIR)$(man1dir)/$$inst; \
done
install-man: $(MANS)
@$(NORMAL_INSTALL)
$(MAKE) $(AM_MAKEFLAGS) install-man1
uninstall-man:
@$(NORMAL_UNINSTALL)
$(MAKE) $(AM_MAKEFLAGS) uninstall-man1
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
@SET_MAKE@
all-recursive install-data-recursive install-exec-recursive \
installdirs-recursive install-recursive uninstall-recursive \
check-recursive installcheck-recursive info-recursive dvi-recursive:
@set fnord $(MAKEFLAGS); amf=$$2; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
@set fnord $(MAKEFLAGS); amf=$$2; \
dot_seen=no; \
rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
rev="$$subdir $$rev"; \
test "$$subdir" = "." && dot_seen=yes; \
done; \
test "$$dot_seen" = "no" && rev=". $$rev"; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
tags: TAGS
ID: $(HEADERS) $(SOURCES) $(LISP)
list='$(SOURCES) $(HEADERS)'; \
unique=`for i in $$list; do echo $$i; done | \
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
here=`pwd` && cd $(srcdir) \
&& mkid -f$$here/ID $$unique $(LISP)
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS)'; \
unique=`for i in $$list; do echo $$i; done | \
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \
|| (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS)
mostlyclean-tags:
clean-tags:
distclean-tags:
-rm -f TAGS ID
maintainer-clean-tags:
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
-rm -rf $(distdir)
GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz
mkdir $(distdir)/=build
mkdir $(distdir)/=inst
dc_install_base=`cd $(distdir)/=inst && pwd`; \
cd $(distdir)/=build \
&& ../configure --with-included-gettext --srcdir=.. --prefix=$$dc_install_base \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) dist
-rm -rf $(distdir)
@banner="$(distdir).tar.gz is ready for distribution"; \
dashes=`echo "$$banner" | sed s/./=/g`; \
echo "$$dashes"; \
echo "$$banner"; \
echo "$$dashes"
dist: distdir
-chmod -R a+r $(distdir)
GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
-rm -rf $(distdir)
dist-all: distdir
-chmod -R a+r $(distdir)
GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
-rm -rf $(distdir)
distdir: $(DISTFILES)
-rm -rf $(distdir)
mkdir $(distdir)
-chmod 777 $(distdir)
@for file in $(DISTFILES); do \
d=$(srcdir); \
if test -d $$d/$$file; then \
cp -pr $$d/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file || :; \
fi; \
done
for subdir in $(SUBDIRS); do \
if test "$$subdir" = .; then :; else \
test -d $(distdir)/$$subdir \
|| mkdir $(distdir)/$$subdir \
|| exit 1; \
chmod 777 $(distdir)/$$subdir; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \
|| exit 1; \
fi; \
done
$(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-info
info-am: $(INFO_DEPS)
info: info-recursive
dvi-am: $(DVIS)
dvi: dvi-recursive
check-am: all-am
check: check-recursive
installcheck-am:
installcheck: installcheck-recursive
all-recursive-am: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
install-exec-am: install-binPROGRAMS
install-exec: install-exec-recursive
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-info uninstall-man
uninstall: uninstall-recursive
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)$(infodir) \
$(DESTDIR)$(mandir)/man1
mostlyclean-generic:
clean-generic:
distclean-generic:
-rm -f Makefile $(CONFIG_CLEAN_FILES)
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
maintainer-clean-generic:
mostlyclean-am: mostlyclean-hdr mostlyclean-binPROGRAMS \
mostlyclean-compile mostlyclean-aminfo mostlyclean-tags \
mostlyclean-generic
mostlyclean: mostlyclean-recursive
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-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-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."
maintainer-clean: maintainer-clean-recursive
-rm -f config.status
.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \
mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \
maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \
mostlyclean-compile distclean-compile clean-compile \
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 \
installcheck-recursive info-recursive dvi-recursive \
mostlyclean-recursive distclean-recursive clean-recursive \
maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \
install-exec-am install-exec install-data-am install-data install-am \
install uninstall-am uninstall all-redirect all-am all installdirs-am \
installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
# 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:

141
NEWS
View File

@@ -1,3 +1,72 @@
10/26/2001 - GNU nano 1.1.3 is released. As far as new features go,
the help system is now available for all functions in the
editor. Also, nano will also now print a message on
the status bar when it automatically converts a file from
Mac or DOS format, and trying to load a file that
has already been loaded in multibuffer mode will now also
cause an error message. There is now a "goto previous
word" which you can use by hitting Meta-Space Bar.
As for fixes, a SEVERE bug in the
null_at code which discarded the memory address of
reallocated memory has been fixed. This is probably
the biggest bug fix in well over the last year of
development. There are also some display fixes for when
the screen shouldn't center itself on cut or uncut text.
Also, the comments in the header files incorectly said
that nano was distributed under version 1 of the GPL when
the accompanying license was the GPLv2.
If you're using nano-1.1, it is highly
recommeneded you upgrade to this release. If using 1.0,
wait for version 1.0.6 which should be available early
next week. Enjoy!
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
@@ -14,11 +83,11 @@
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
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 with older ncurses libraries have also been
fixed. All in all, a lot to see.
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
@@ -51,7 +120,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
@@ -65,7 +134,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
@@ -105,10 +174,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
@@ -134,16 +203,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.
@@ -152,7 +221,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
@@ -161,7 +230,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,
@@ -170,12 +239,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.
@@ -189,8 +258,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).
@@ -209,7 +278,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.
@@ -230,7 +299,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
@@ -256,7 +325,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.
@@ -283,7 +352,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 =)
@@ -292,13 +361,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
@@ -307,8 +376,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
@@ -316,9 +385,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
@@ -345,11 +414,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
@@ -358,14 +427,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
@@ -378,7 +447,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.

39
README
View File

@@ -1,6 +1,6 @@
GNU nano - an enhanced clone of the Pico text editor.
Overview
The nano project was started because of a few "problems" with the
@@ -11,10 +11,10 @@ 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
@@ -29,7 +29,7 @@ How to compile and install nano
make
make install
It's that simple. Use --prefix with configutr to override the
It's that simple. Use --prefix with configure to override the
default installation directory of /usr/local.
Web Page
@@ -53,11 +53,32 @@ Mailing List and Bug Reports
Current Status
GNU nano has finally reached its first stable release (1.0).
The development tree will fork soon and it will be called 1.1.x,
in the Linux kernel naming style. Many thanks to all of our
bug reporters and contributors of code to get nano where it is
today.
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).
Chris Allegretta (chrisa@asty.org)

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$

8
TODO
View File

@@ -25,5 +25,13 @@ For Next Version:
- .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

@@ -47,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])

7
autogen.sh Executable file
View File

@@ -0,0 +1,7 @@
#!/bin/sh
# Generate configure & friends for CVS users.
aclocal -I ./m4
automake --add-missing
autoheader
autoconf

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 2, 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

@@ -61,21 +61,6 @@
/* 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
@@ -100,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
@@ -199,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

4799
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, 1.0.0)
AM_INIT_AUTOMAKE(nano, 1.1.3)
AM_CONFIG_HEADER(config.h:config.h.in)
ALL_LINGUAS="es de fr it id fi hu ca cs"
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,7 +16,7 @@ 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
@@ -24,16 +25,52 @@ AC_ARG_ENABLE(tiny,
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])
@@ -45,23 +82,41 @@ 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_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,
@@ -211,6 +266,7 @@ else
fi
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)])
@@ -248,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])

258
cut.c
View File

@@ -5,7 +5,7 @@
* 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) *
* the Free Software Foundation; either version 2, or (at your option) *
* any later version. *
* *
* This program is distributed in the hope that it will be useful, *
@@ -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,57 @@ 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(top_x + strlen(&bot->data[bot_x]) + 1);
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. */
}
if (top->lineno < edittop->lineno)
edit_update(top, CENTER);
/* 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);
}
}
#endif
@@ -132,10 +195,11 @@ int do_cut_text(void)
{
filestruct *tmp, *fileptr = current;
#ifndef NANO_SMALL
char *tmpstr;
int newsize, cuttingtoend = 0;
int dontupdate = 0;
int cuttingtoend = 0;
#endif
check_statblank();
if (fileptr == NULL || fileptr->data == NULL)
return 0;
@@ -146,6 +210,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 +223,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;
@@ -171,45 +253,40 @@ int do_cut_text(void)
cuttingtoend = 1;
}
}
if (ISSET(MARK_ISSET)) {
if (current->lineno == mark_beginbuf->lineno) {
tmp = copy_node(current);
newsize = abs(mark_beginx - current_x) + 1;
tmpstr = nmalloc(newsize + 1);
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]) + 1);
} else {
strncpy(tmpstr, &current->data[mark_beginx], newsize);
memmove(&current->data[mark_beginx],
&current->data[current_x],
strlen(&current->data[current_x]) + 1);
current_x = mark_beginx;
update_cursor();
}
tmpstr[newsize - 1] = 0;
tmp->data = tmpstr;
add_to_cutbuffer(tmp);
dump_buffer(cutbuffer);
align(&current->data);
} else if (current->lineno < mark_beginbuf->lineno)
if (ISSET(MARK_ISSET)) {
if (current->lineno <= mark_beginbuf->lineno) {
/* Don't do_update and move the screen position if the marked
area lies entirely within the screen buffer */
if (current->lineno == mark_beginbuf->lineno
|| (current->lineno >= edittop->lineno
&& mark_beginbuf->lineno <= editbot->lineno))
dontupdate = 1;
cut_marked_segment(current, current_x, mark_beginbuf,
mark_beginx);
else
mark_beginx, 1);
}
else {
/* Same as above, easier logic since we know it's a multi-line
cut and mark_beginbuf is before current */
if (mark_beginbuf->lineno >= edittop->lineno
&& current->lineno <= editbot->lineno)
dontupdate = 1;
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 (dontupdate || cuttingtoend) {
fix_editbot();
edit_refresh();
else
} else
edit_update(current, CENTER);
return 1;
@@ -231,7 +308,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;
}
@@ -294,7 +371,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);
@@ -303,19 +380,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]);
@@ -334,7 +413,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)
@@ -354,8 +433,12 @@ int do_uncut_text(void)
i = editbot->lineno;
current = newend;
if (i <= newend->lineno)
if (i < newend->lineno) {
edit_update(current, CENTER);
}
else {
edit_refresh();
}
}
/* If marked cut == 2, that means that we're doing a cut to end
@@ -363,15 +446,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);
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);
@@ -380,6 +467,7 @@ int do_uncut_text(void)
dump_buffer(cutbuffer);
set_modified();
edit_refresh();
UNSET(KEEP_CUTBUFFER);
return 0;
#else
if (0) {
@@ -408,8 +496,12 @@ int do_uncut_text(void)
i = editbot->lineno;
renumber(newbuf);
if (i < newend->lineno)
if (i < newend->lineno) {
edit_update(fileptr, CENTER);
}
else {
edit_refresh();
}
dump_buffer_reverse(fileptr);

182
faq.html
View File

@@ -24,7 +24,7 @@ nano?</a></font>
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>
@@ -52,7 +52,11 @@ THE HECK DO I DO NOW?</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>
<br><font color="#330000"><a href="#3.6">3.6. How can I make the
executable smaller? This is too bloated!</a></font></blockquote>
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>
@@ -63,11 +67,11 @@ 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>
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>
@@ -156,8 +160,8 @@ to Unix flocked to Pico and Pine because of their well organized, easy
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;
@@ -167,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
@@ -177,12 +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
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 is also nearing its 1.0
release as of this writing (Valentine's Day 2001).
</font></blockquote>
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>
@@ -200,7 +203,7 @@ nano was developed).</font></blockquote>
of nano?</font></h2>
<blockquote><font color="#330000">The current version of nano *should*
be 1.0.0.&nbsp; Of course you should always check the nano hompage to
be 1.1.3.&nbsp; Of course you should always check the nano hompage to
see what the latest and greatest version is.</font></blockquote>
<h2>
@@ -226,12 +229,9 @@ at the following fine web and ftp sites:</font>
<li>
<font color="#330000"><a href="http://www.ewtoo.org/~astyanax/nano/dist">http://www.ewtoo.org/~astyanax/nano/dist</a></font></li>
<li>
<font color="#330000"><a href="ftp://ftp.nano-editor.org/pub/nano">ftp://ftp.nano-editor.org/pub/nano</a></font></li>
<font color="#330000"><a href="ftp://ftp.gnu.org/pub/gnu/nano">ftp://ftp.gnu.org/pub/gnu/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>
@@ -247,11 +247,6 @@ packages.</font></h2>
<li>
<font color="#330000"><a href="http://www.ewtoo.org/~astyanax/nano/dist/RPMS">http://www.ewtoo.org/~astyanax/nano/dist/RPMS</a></font></li>
<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>
@@ -267,19 +262,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>
@@ -367,6 +368,9 @@ list:
<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
@@ -376,8 +380,49 @@ 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.
</font></blockquote> <hr WIDTH="100%"> <h1>
<a NAME="4"></a><font color="#330000">4. Running</font></h1>
<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.3 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.3 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
@@ -395,7 +440,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>
@@ -407,19 +453,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
@@ -455,7 +503,7 @@ 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>
@@ -484,20 +532,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>
@@ -508,7 +568,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>
@@ -521,7 +581,7 @@ 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.
mailer integration with Pine), nano is the way to go.
</blockquote>
<h2>
@@ -542,7 +602,7 @@ both, i.e. distribute modified binaries.</blockquote>
should I use then?</font></h2>
<blockquote><font color="#330000"> If you are looking to use a Free
Software program similar to PINE and emacs is not your things, you should
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
@@ -580,7 +640,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>
@@ -618,10 +678,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>

1271
files.c

File diff suppressed because it is too large Load Diff

294
global.c
View File

@@ -5,7 +5,7 @@
* 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) *
* the Free Software Foundation; either version 2, or (at your option) *
* any later version. *
* *
* This program is distributed in the hope that it will be useful, *
@@ -19,8 +19,9 @@
* *
**************************************************************************/
#include <sys/stat.h>
#include "config.h"
#include <sys/stat.h>
#include "nano.h"
#include "proto.h"
@@ -34,7 +35,7 @@
/*
* Global variables
*/
int flags = 0; /* Our new flag containig many options */
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 */
@@ -53,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
long totsize = 0; /* Total number of bytes in the file */
int placewewant = 0; /* The column we'd like the cursor
to jump to when we go to the
next or previous line */
@@ -70,18 +75,38 @@ 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];
#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
@@ -110,11 +135,13 @@ void sc_init_one(shortcut * s, int key, char *desc, char *help, int alt,
#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
@@ -123,11 +150,19 @@ 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");
@@ -135,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
}
@@ -176,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");
@@ -195,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");
@@ -215,13 +292,26 @@ 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
sc_init_one(&main_list[0], NANO_HELP_KEY, _("Get Help"),
nano_help_msg, 0, NANO_HELP_FKEY, 0, VIEW, do_help);
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);
sc_init_one(&main_list[2], NANO_WRITEOUT_KEY, _("WriteOut"),
@@ -235,13 +325,13 @@ void shortcut_init(int unjustify)
else
sc_init_one(&main_list[3], NANO_INSERTFILE_KEY, _("Read File"),
nano_insert_msg,
0, NANO_INSERTFILE_FKEY, 0, NOVIEW, do_insertfile);
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);
0, NANO_INSERTFILE_FKEY, 0, NOVIEW, do_insertfile_void);
else
sc_init_one(&main_list[4], NANO_REPLACE_KEY, _("Replace"),
nano_replace_msg,
@@ -253,11 +343,11 @@ void shortcut_init(int unjustify)
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);
@@ -330,104 +420,172 @@ void shortcut_init(int unjustify)
nano_goto_msg,
NANO_ALT_G, NANO_GOTO_FKEY, 0, VIEW, do_gotoline_void);
#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"),
sc_init_one(&whereis_list[0], NANO_HELP_KEY,
_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help);
sc_init_one(&whereis_list[1], NANO_CANCEL_KEY,
_("Cancel"), nano_cancel_msg, 0, 0, 0, VIEW, 0);
sc_init_one(&whereis_list[2], NANO_FIRSTLINE_KEY, _("First Line"),
nano_firstline_msg, 0, 0, 0, VIEW, do_first_line);
sc_init_one(&whereis_list[1], NANO_LASTLINE_KEY, _("Last Line"),
sc_init_one(&whereis_list[3], 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[4], 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[5], 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);
sc_init_one(&replace_list[0], NANO_FIRSTLINE_KEY, _("First Line"),
nano_firstline_msg, 0, 0, 0, VIEW, do_first_line);
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"),
#ifndef NANO_SMALL
sc_init_one(&whereis_list[6], TOGGLE_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(&whereis_list[7], TOGGLE_BACKWARDS_KEY, _("Direction"),
nano_reverse_msg, 0, 0, 0, VIEW, 0);
#ifdef HAVE_REGEX_H
sc_init_one(&whereis_list[REPLACE_LIST_LEN - 1], TOGGLE_REGEXP_KEY,
_("Regexp"), nano_regexp_msg, 0, 0, 0, VIEW, 0);
#endif
#endif /* NANO_SMALL */
sc_init_one(&replace_list[0], NANO_HELP_KEY,
_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help);
sc_init_one(&replace_list[1], NANO_CANCEL_KEY,
_("Cancel"), nano_cancel_msg, 0, 0, 0, VIEW, 0);
sc_init_one(&replace_list[2], NANO_FIRSTLINE_KEY, _("First Line"),
nano_firstline_msg, 0, 0, 0, VIEW, do_first_line);
sc_init_one(&replace_list[3], NANO_LASTLINE_KEY, _("Last Line"),
nano_lastline_msg, 0, 0, 0, VIEW, do_last_line);
sc_init_one(&replace_list[4], 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[5], 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[6], TOGGLE_CASE_KEY, _("Case Sens"),
nano_case_msg, 0, 0, 0, VIEW, 0);
sc_init_one(&replace_list[7], TOGGLE_BACKWARDS_KEY, _("Direction"),
nano_reverse_msg, 0, 0, 0, VIEW, 0);
#ifdef HAVE_REGEX_H
sc_init_one(&replace_list[REPLACE_LIST_LEN - 1], TOGGLE_REGEXP_KEY,
_("Regexp"), nano_regexp_msg, 0, 0, 0, VIEW, 0);
#endif
#endif /* NANO_SMALL */
sc_init_one(&replace_list_2[0], NANO_HELP_KEY,
_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help);
sc_init_one(&replace_list_2[0], NANO_FIRSTLINE_KEY, _("First Line"),
sc_init_one(&replace_list_2[1], NANO_CANCEL_KEY,
_("Cancel"), nano_cancel_msg, 0, 0, 0, VIEW, 0);
sc_init_one(&replace_list_2[2], NANO_FIRSTLINE_KEY, _("First Line"),
nano_firstline_msg, 0, 0, 0, VIEW, do_first_line);
sc_init_one(&replace_list_2[1], NANO_LASTLINE_KEY, _("Last Line"),
sc_init_one(&replace_list_2[3], NANO_LASTLINE_KEY, _("Last Line"),
nano_lastline_msg, 0, 0, 0, VIEW, do_last_line);
sc_init_one(&replace_list_2[2], NANO_CANCEL_KEY, _("Cancel"),
sc_init_one(&goto_list[0], NANO_HELP_KEY,
_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help);
sc_init_one(&goto_list[1], NANO_CANCEL_KEY, _("Cancel"),
nano_cancel_msg, 0, 0, 0, VIEW, 0);
sc_init_one(&goto_list[0], NANO_FIRSTLINE_KEY, _("First Line"),
sc_init_one(&goto_list[2], NANO_FIRSTLINE_KEY, _("First Line"),
nano_firstline_msg, 0, 0, 0, VIEW, &do_first_line);
sc_init_one(&goto_list[1], NANO_LASTLINE_KEY, _("Last Line"),
sc_init_one(&goto_list[3], NANO_LASTLINE_KEY, _("Last Line"),
nano_lastline_msg, 0, 0, 0, VIEW, &do_last_line);
sc_init_one(&goto_list[2], NANO_CANCEL_KEY, _("Cancel"),
nano_cancel_msg, 0, 0, 0, VIEW, 0);
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);
sc_init_one(&writefile_list[0], NANO_HELP_KEY,
_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help);
sc_init_one(&writefile_list[1], NANO_CANCEL_KEY, _("Cancel"),
nano_cancel_msg, 0, 0, 0, VIEW, 0);
#ifndef DISABLE_BROWSER
sc_init_one(&writefile_list[0], NANO_TOFILES_KEY, _("To Files"),
sc_init_one(&writefile_list[2], NANO_TOFILES_KEY, _("To Files"),
nano_tofiles_msg, 0, 0, 0, NOVIEW, 0);
#endif
sc_init_one(&writefile_list[WRITEFILE_LIST_LEN - 1], NANO_CANCEL_KEY, _("Cancel"),
nano_cancel_msg, 0, 0, 0, VIEW, 0);
sc_init_one(&writefile_list[WRITEFILE_LIST_LEN - 1], NANO_APPEND_KEY, _("Append"),
nano_append_msg, 0, 0, 0, NOVIEW, 0);
sc_init_one(&spell_list[0], NANO_CANCEL_KEY, _("Cancel"),
sc_init_one(&insertfile_list[0], NANO_HELP_KEY,
_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help);
sc_init_one(&insertfile_list[1], NANO_CANCEL_KEY, _("Cancel"),
nano_cancel_msg, 0, 0, 0, VIEW, 0);
#ifndef DISABLE_BROWSER
sc_init_one(&browser_list[0], NANO_PREVPAGE_KEY, _("Prev Page"),
sc_init_one(&insertfile_list[2], NANO_TOFILES_KEY, _("To Files"),
nano_tofiles_msg, 0, 0, 0, NOVIEW, 0);
#endif
sc_init_one(&spell_list[0], NANO_HELP_KEY,
_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help);
sc_init_one(&spell_list[1], NANO_CANCEL_KEY, _("Cancel"),
nano_cancel_msg, 0, 0, 0, VIEW, 0);
#ifndef DISABLE_BROWSER
sc_init_one(&browser_list[0], NANO_HELP_KEY,
_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help);
sc_init_one(&browser_list[1], NANO_EXIT_KEY, _("Exit"),
nano_exit_msg, 0, NANO_EXIT_FKEY, 0, VIEW, 0);
sc_init_one(&browser_list[2], NANO_PREVPAGE_KEY, _("Prev Page"),
nano_prevpage_msg,
0, NANO_PREVPAGE_FKEY, KEY_PPAGE, VIEW, 0);
sc_init_one(&browser_list[1], NANO_NEXTPAGE_KEY, _("Next Page"),
sc_init_one(&browser_list[3], NANO_NEXTPAGE_KEY, _("Next Page"),
nano_nextpage_msg,
0, NANO_NEXTPAGE_FKEY, KEY_NPAGE, VIEW, 0);
sc_init_one(&browser_list[2], NANO_EXIT_KEY, _("Exit"),
nano_exit_msg, 0, NANO_EXIT_FKEY, 0, VIEW, 0);
sc_init_one(&browser_list[4], NANO_GOTO_KEY, _("Goto"),
nano_gotodir_msg, 0, NANO_GOTO_FKEY, 0, VIEW, 0);
sc_init_one(&gotodir_list[0], NANO_HELP_KEY,
_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help);
sc_init_one(&gotodir_list[1], 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

@@ -5,7 +5,7 @@
* 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) *
* the Free Software Foundation; either version 2, or (at your option) *
* any later version. *
* *
* This program is distributed in the hope that it will be useful, *
@@ -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,7 +60,7 @@ 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 && totlines < editwinrows) {
current = editbot;
@@ -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>

1208
nano.c

File diff suppressed because it is too large Load Diff

138
nano.h
View File

@@ -5,7 +5,7 @@
* 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) *
* the Free Software Foundation; either version 2, or (at your option) *
* any later version. *
* *
* This program is distributed in the hope that it will be useful, *
@@ -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 */
@@ -63,12 +64,28 @@
#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 */
long lineno; /* The line number */
#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 */
long file_totsize; /* Current file's total size */
#endif
int lineno; /* The line number */
} filestruct;
typedef struct shortcut {
@@ -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,32 +276,68 @@ 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
#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 HELP_LIST_LEN 3
#define SPELL_LIST_LEN 1
/* Toggle stuff, these static lengths need to go away RSN */
#ifndef DISABLE_BROWSER
#define WRITEFILE_LIST_LEN 2
#define BROWSER_LIST_LEN 3
#ifndef HAVE_REGEX_H
#define NO_REGEX 1
#define SMALL_TOO 0
#else
#define NO_REGEX 0
#ifdef NANO_SMALL
#define SMALL_TOO 1
#else
#define WRITEFILE_LIST_LEN 1
#define SMALL_TOO 0
#endif /* NANO_SMALL */
#endif /* HAVE_REGEX_H */
#ifdef DISABLE_BROWSER
#define NO_BROWSER 1
#else
#define NO_BROWSER 0
#endif
#ifdef NANO_SMALL
#ifdef HAVE_REGEX_H
#define TOGGLE_LEN 9
#define NO_TOGGLES 3
#else
#define TOGGLE_LEN 8
#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 (9 - NO_REGEX - NO_TOGGLES)
#define REPLACE_LIST_LEN (9 - NO_REGEX - NO_TOGGLES)
#define TOGGLE_LEN (14 - NO_REGEX + MULTI_TOGGLES)
#define WRITEFILE_LIST_LEN (4 - NO_BROWSER)
#define INSERTFILE_LIST_LEN (3 - NO_BROWSER)
#define BROWSER_LIST_LEN 5
#define MAIN_LIST_LEN (27 - NO_REGEX - SMALL_TOO)
#define MAIN_VISIBLE 12
#define REPLACE_LIST_2_LEN 4
#define GOTO_LIST_LEN 4
#define GOTODIR_LIST_LEN 2
#define HELP_LIST_LEN 3
#define SPELL_LIST_LEN 2
#define VIEW 1
#define NOVIEW 0
#define NONE 3
#define TOP 2
#define CENTER 1
#define BOTTOM 0
@@ -276,4 +351,25 @@ know what you're doing */
/* 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 */

401
nano.info
View File

@@ -1,401 +0,0 @@
This is nano.info, produced by makeinfo version 4.0 from nano.texi.
INFO-DIR-SECTION Editors
START-INFO-DIR-ENTRY
* Nano: (nano). Small and friendly text editor.
END-INFO-DIR-ENTRY

File: nano.info, Node: Top, Next: Introduction, Prev: (dir), Up: (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::

File: nano.info, Node: Introduction, Next: Editor Basics, Prev: Top, Up: Top
Introduction
************
GNU `nano' is a small and friendly text editor. Besides basic text
editing, `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::

File: nano.info, Node: Overview, Next: Command Line Options, Prev: Introduction, Up: Introduction
Overview
========
`nano' [GNU long option] [option] +LINE [ FILE ... ]
The original goal for `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
`nano' by typing Meta-P. *Note Pico Compatibility::, for more info.
Email bug reports to <nano@nano-editor.org>.

File: nano.info, Node: Command Line Options, Prev: Overview, Up: Introduction
Command Line Options
====================
`nano' takes the following options from the command line:
`-T [num, --tabsize=[num]'
Set the displayed tab length to [num] columns.
`-R, --regexp'
Turns on regular expression search and search/replace.
`-V, --version'
Print the version number and copyright and quit.
`-c, --const'
Constantly display the cursor posititon and line number on the
statusbar.
`-h, --help'
Print the usage and exit.
`-i, --autoindent'
Automatically indent new lines to the same number of spaces and
tabs as the previous line.
`-k, --cut'
Makes ^K cut from the current cursor position to the end of the
current line.
`-l, --nofollow'
When writing files, if the given file is a symbolic link it is
removed and a new file is created.
`-m, --mouse'
Enables the use of the mouse to select text (currently only useful
for running under the X window system).
`-p, --pico'
Emulate Pico as closely as possible, sacrificing consistency for
correct emulation. *Note Pico Compatibility::, for more info.
`-r [#cols], --fill=[#cols].'
Wrap lines at column #cols. By default this is the width of the
screen, less eight.
`-s [prog], --speller=[prog]'
Invoke [prog] as the spell checker. By default, `nano' uses its
own interactive spell checker that requires the `spell' program be
installed on your system.
`-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 `nano'
as the composer of a mailer program.
`-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 accesing the help system, Expert Mode is temporarily
disabled to display the help system navigation keys.
`-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.
`-w, --nowrap'
Do not wrap long lines at any length. This option overrides any
value for -r.
`-z, --suspend'
Enable suspend ability of `nano' using the system's suspend
keystroke (usually ^Z).
`+LINE'
Start at line number LINE instead of the default of line 1.

File: nano.info, Node: Editor Basics, Next: Online Help, Prev: Introduction, Up: Top
Editor Basics
*************
* Menu:
* Entering Text::
* Special Functions::
* The Titlebar::
* The Statusbar::
* Shortcut Lists::

File: nano.info, Node: Entering Text, Next: Special Functions, Prev: Editor Basics, Up: Editor Basics
Entering Text
=============
All key sequences in `nano' are entered using the keyboard. `nano'
is a "modeless" editor, all keys with the exception of Control and Meta
key sequences will enter text into the file being edited.

File: nano.info, Node: Special Functions, Next: The Titlebar, Prev: Entering Text, Up: Editor Basics
Special Functions
=================
Special functions use the Control key (displayed in the help and
shotcut lists as ^) or the Meta key (displayed as M).
* Control key sequences are entered by holding down the Control key
and pressing the desired letter.
* 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.

File: nano.info, Node: The Titlebar, Next: The Statusbar, Prev: Special Functions, Up: Editor Basics
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 `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 ws 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.
*Note The File Browser::.

File: nano.info, Node: The Statusbar, Next: Shortcut Lists, Prev: The Titlebar, Up: Editor Basics
The Statusbar
=============
The statusbar is located three lines from the bottom of the screen
(or the bottom line in Expert Mode. *Note 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 (serch strings, file names, etc) will be input on the
statusbar.

File: nano.info, Node: Shortcut Lists, Prev: The Statusbar, Up: Editor Basics
Shortcut Lists
==============
The Shorcut 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. *Note Pico Compatibility::, for
more info.

File: nano.info, Node: Online Help, Next: Feature Toggles, Prev: Editor Basics, Up: Top
Online Help
***********
The online help system in `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.

File: nano.info, Node: Feature Toggles, Next: The File Browser, Prev: Online Help, Up: Top
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. *Note Special Functions::, for more info. The
following toggles are available:
`Constant Update Toggle (Meta-C)'
toggles the -c (-const) command line flag.
`Regular Expressions Toggle (Meta-E)'
toggles the -R (-regexp) command line flag.
`AutoIndent Toggle (Meta-I)'
toggles the -i (-autoindent) command line flag.
`Cut To End Toggle (Meta-K)'
toggles the -k (-cut) command line flag.
`Cut To End Toggle (Meta-M)'
toggles the -m (-mouse) command line flag.
`Pico Mode Toggle (Meta-P)'
toggles the -p (-pico) command line flag. *Note Pico
Compatibility::, for more info.
`AutoWrap Toggle (Meta-W)'
toggles the -w (-nowrap) command line flag.
`Expert/Nohelp Toggle (Meta-X)'
toggles the -x (-nohelp) command line flag.
`Suspend Toggle (Meta-Z)'
toggles the -z (-suspend) command line flag.

File: nano.info, Node: The File Browser, Next: Pico Compatibility, Prev: Feature Toggles, Up: Top
The File Browser
****************
When reading or writilg 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 contects of the directory.
If the object is a file, this filename and path are copied to the
statusbar and the file browser is exited.

File: nano.info, Node: Pico Compatibility, Next: Building and Configure Options, Prev: The File Browser, Up: Top
Pico Compatibility
******************
Nano does not completely emulate Pico by default. The following
differences apply to the default mode and Pico Compatibility mode:
`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
`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.
`Interactive Replace and Spell Checker'
It is worth noting that the `nano' replace function is interactive,
i.e. it does not stop after one search string is found and
automatically replace it. The `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.

File: nano.info, Node: Building and Configure Options, Prev: Pico Compatibility, Up: Top
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:
`--disable-tabcomp'
Disable the tab completion code when reading or writing files.
`--disable-justify'
Disable the justify (^J)/unjustify (^U) functions in the editor.
`--disable-speller'
Disables spell checker abillity.
`--disable-help'
Disables the help function (^G). Disabling this option maks the
binary much smaller, but makes it difficult for new users to learn
more than very basic things about using the editor.
`--disable-browser'
Disables the mini file browser (^O) when reading or writing files.
`--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.

Tag Table:
Node: Top199
Node: Introduction507
Node: Overview933
Node: Command Line Options1513
Ref: Expert Mode3236
Node: Editor Basics4078
Node: Entering Text4303
Node: Special Functions4643
Node: The Titlebar5497
Node: The Statusbar6194
Node: Shortcut Lists6774
Node: Online Help7166
Node: Feature Toggles7542
Node: The File Browser8685
Node: Pico Compatibility9394
Node: Building and Configure Options11436

End Tag Table

100
nano.texi
View File

@@ -8,8 +8,8 @@
@c Run `makeinfo' rather than `texinfo-format-buffer'.
@smallbook
@set EDITION 0.1
@set VERSION 1.0.0
@set UPDATED 12 Feb 2001
@set VERSION 1.1.3
@set UPDATED 3 Oct 2001
@dircategory Editors
@direntry
@@ -23,7 +23,7 @@
@titlepage
@title GNU @code{nano}
@subtitle a small and friendly text editor.
@subtitle version 1.0.0
@subtitle version 1.1.3
@author Chris Allegretta
@page
@@ -108,17 +108,29 @@ Email bug reports to @email{nano@@nano-editor.org}.
@code{nano} takes the following options from the command line:
@table @code
@item -T [num, --tabsize=[num]
Set the displayed tab length to [num] columns.
@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 posititon and line number on the statusbar.
Constantly display the cursor position and line number on the statusbar.
@item -h, --help
Print the usage and exit.
@@ -139,13 +151,18 @@ and a new file is created.
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.
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
@@ -163,7 +180,7 @@ 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 accesing the help system, Expert Mode is temporarily disabled
Note: When accessing the help system, Expert Mode is temporarily disabled
to display the help system navigation keys.
@item -v, --view
@@ -179,6 +196,9 @@ Do not wrap long lines at any length. This option overrides any value for
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
@@ -205,7 +225,7 @@ edited.
@section Special Functions
Special functions use the Control key (displayed in the help and
shotcut lists as ^) or the Meta key (displayed as M).
shortcut lists as ^) or the Meta key (displayed as M).
@itemize @bullet
@@ -230,7 +250,7 @@ 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 ws last saved or opened.
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.
@@ -245,13 +265,13 @@ 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 (serch strings, file names, etc) will be input on the
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 Shorcut Lists are the two lines at the bottom of the screen which show
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.
@@ -275,25 +295,43 @@ 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 Cut To End Toggle (Meta-M)
@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.
@@ -303,19 +341,26 @@ 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 writilg files, pressing ^T will invoke 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 contects of the directory. If
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.
@@ -389,10 +434,10 @@ Disable the tab completion code when reading or writing files.
Disable the justify (^J)/unjustify (^U) functions in the editor.
@item --disable-speller
Disables spell checker abillity.
Disables spell checker ability.
@item --disable-help
Disables the help function (^G). Disabling this option maks the
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.
@@ -404,6 +449,27 @@ 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

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

919
po/ca.po

File diff suppressed because it is too large Load Diff

917
po/cs.po

File diff suppressed because it is too large Load Diff

1387
po/da.po Normal file

File diff suppressed because it is too large Load Diff

953
po/de.po

File diff suppressed because it is too large Load Diff

1041
po/es.po

File diff suppressed because it is too large Load Diff

917
po/fi.po

File diff suppressed because it is too large Load Diff

933
po/fr.po

File diff suppressed because it is too large Load Diff

1397
po/gl.po Normal file

File diff suppressed because it is too large Load Diff

905
po/hu.po

File diff suppressed because it is too large Load Diff

966
po/id.po

File diff suppressed because it is too large Load Diff

1268
po/it.po

File diff suppressed because it is too large Load Diff

1408
po/nl.po Normal file

File diff suppressed because it is too large Load Diff

1406
po/no.po Normal file

File diff suppressed because it is too large Load Diff

1375
po/ru.po Normal file

File diff suppressed because it is too large Load Diff

1399
po/sv.po Normal file

File diff suppressed because it is too large Load Diff

1390
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

@@ -5,7 +5,7 @@
* 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) *
* the Free Software Foundation; either version 2, or (at your option) *
* any later version. *
* *
* This program is distributed in the hope that it will be useful, *
@@ -33,9 +33,11 @@ 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 long totsize;
extern int temp_opt;
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 +45,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];
extern shortcut help_list[HELP_LIST_LEN];
#ifndef DISABLE_BROWSER
extern shortcut browser_list[BROWSER_LIST_LEN];
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 +80,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 +92,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 +135,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 +161,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 *newnode, filestruct *end);
void null_at(char *data, int index);
void page_up_center(void);
void null_at(char **data, int index);
void page_up(void);
void blank_edit(void);
void search_init_globals(void);
void replace_abort(void);
@@ -140,12 +174,29 @@ 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);
@@ -154,16 +205,43 @@ 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 newval);
#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
#ifndef DISABLE_HELP
void help_init(void);
#endif

278
rcfile.c Normal file
View File

@@ -0,0 +1,278 @@
/* $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 2, 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
#ifndef DISABLE_WRAPJUSTIFY
#define NUM_RCOPTS 18
#else
#define NUM_RCOPTS 17
#endif
/* 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 */

427
search.c
View File

@@ -5,7 +5,7 @@
* Copyright (C) 2000 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) *
* the Free Software Foundation; either version 2, or (at your option) *
* any later version. *
* *
* This program is distributed in the hope that it will be useful, *
@@ -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"
@@ -54,18 +55,18 @@ void regexp_cleanup(void)
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,14 +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
@@ -113,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])) {
@@ -137,7 +153,10 @@ 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)) {
@@ -147,10 +166,9 @@ int search_init(int replacing)
else
regexp_init(answer);
}
#else
;
#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);
@@ -158,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;
@@ -202,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;
}
@@ -337,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;
}
@@ -352,9 +450,9 @@ void print_replaced(int num)
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();
}
@@ -433,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 {
@@ -446,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);
@@ -462,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,
@@ -506,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 */
@@ -586,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:
@@ -603,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();
@@ -621,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);
@@ -664,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;
@@ -720,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

150
utils.c
View File

@@ -5,7 +5,7 @@
* 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) *
* the Free Software Foundation; either version 2, or (at your option) *
* any later version. *
* *
* This program is distributed in the hope that it will be useful, *
@@ -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;

465
winio.c

File diff suppressed because it is too large Load Diff