Compare commits

...

867 Commits

Author SHA1 Message Date
David Lawrence Ramsey
db5b54767c GNU nano 1.3.12
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3680 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-26 04:01:31 +00:00
David Lawrence Ramsey
1df1c9e4c0 fix #ifdefs
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3679 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-25 17:25:13 +00:00
David Lawrence Ramsey
5c8d316a27 per John M. Gabriele's patch with a few tweaks by me, in README and
README.CVS, add various cosmetic and wording improvements


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3678 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-25 04:37:05 +00:00
David Lawrence Ramsey
d76de38109 in edit_draw(), don't display any statusbar message when we get a
zero-length regex, as we can get one under legitimate circumstances


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3677 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-21 20:51:36 +00:00
David Lawrence Ramsey
5c878088a1 in update_line(), remove unneeded assert, and now-unused function
check_linenumbers()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3676 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-21 16:54:51 +00:00
Jordi Mallach
d4401008a4 ca, fr, hu, nl updates from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3675 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-21 16:49:00 +00:00
David Lawrence Ramsey
a4fc77a5da in digits(), return the proper number of digits when n is exactly 10,
and simplify it to use a for loop instead of a while loop


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3674 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-21 16:01:20 +00:00
David Lawrence Ramsey
5aaa1d7dab comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3673 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-21 01:30:00 +00:00
David Lawrence Ramsey
6885a1523c fix erroneous version number
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3672 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-20 16:12:22 +00:00
David Lawrence Ramsey
af72c16da4 fix incorrect "Project-Id-Version" entries in several translations
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3671 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-20 13:25:49 +00:00
Jordi Mallach
9e2f8ea668 Bulgarian and Irish updates from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3670 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-19 17:46:13 +00:00
David Lawrence Ramsey
23ed015725 in help_init(), display the shortcut list help text even when we have
fewer than 24 columns, for consistency with the toggle help text, and
add various minor consistency fixes


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3669 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-19 16:04:42 +00:00
David Lawrence Ramsey
bd2c8f3d2d in help_init(), make sure we have enough memory in all cases when
displaying the shortcut and toggle lists; and wrap the shortcut list
help text, for consistency with the toggle help text


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3668 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-19 15:35:35 +00:00
David Lawrence Ramsey
df7aaed743 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3667 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-19 14:24:12 +00:00
David Lawrence Ramsey
186c795b88 in help_line_len(), properly handle the case where we can't break the
line of help text, and wrap the line of help text at (COLS - 1) instead
of (COLS - 8), for consistency


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3666 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-19 14:18:22 +00:00
Jordi Mallach
832994804e Updated Bulgarian translation from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3665 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-19 13:01:45 +00:00
David Lawrence Ramsey
bac8908814 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3664 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-18 15:26:51 +00:00
David Lawrence Ramsey
ee995b7d27 fix screen update problem when copying the last line on the screen with
the mark off and CUT_TO_END set to FALSE


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3663 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-18 15:21:11 +00:00
Jordi Mallach
5b0781dbf3 French manpages update by Jean-Philippe.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3662 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-17 19:27:38 +00:00
Jordi Mallach
3dd9d710a1 Several translation updates submitted by translators for the 1.3.12 release.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3661 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-17 02:19:17 +00:00
David Lawrence Ramsey
4f2a073cf9 per Benno Schulenberg's patch, in do_writeout(), fix problem where the
modifiers at the "Write File" prompt were marked for translation via
gettext no-ops but never actually translated; also, in do_insertfile(),
use actual gettext calls instead of no-ops, for consistency


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3660 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-14 13:19:43 +00:00
David Lawrence Ramsey
b0226fb86a in faq.html, update section 5.3, due to the display fix for two-column
Unicode characters


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3659 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-12 20:26:38 +00:00
Jordi Mallach
386cc99385 Hungarian and French updates from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3658 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-12 09:07:01 +00:00
David Lawrence Ramsey
03979d7a08 another comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3657 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-11 19:15:59 +00:00
David Lawrence Ramsey
d4686b8e51 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3656 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-11 19:14:14 +00:00
David Lawrence Ramsey
503bad02fe disable mouse support while suspended
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3655 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-09 18:24:37 +00:00
David Lawrence Ramsey
9134781eaf typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3654 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-09 17:27:17 +00:00
David Lawrence Ramsey
f073884e03 more comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3653 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-09 17:22:32 +00:00
David Lawrence Ramsey
f9d13f02f3 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3652 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-09 17:10:45 +00:00
David Lawrence Ramsey
f32e1dd589 in do_spell(), set currshortcut to main_list before calling
total_refresh() near the end of the function, so that we don't display
the wrong shortcut list


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3651 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-09 17:09:51 +00:00
David Lawrence Ramsey
b5e66d05cb make the changed suspend/continue routines work properly under slang
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3650 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-09 16:57:41 +00:00
David Lawrence Ramsey
3ce7e9dcac in do_spell(), call total_redraw() instead of total_refresh() after
running the spell-checker, since the latter will display the wrong
shortcut list


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3649 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-09 16:34:00 +00:00
David Lawrence Ramsey
85c775a3a3 make suspension clear the screen and put the cursor on the last line
before displaying anything, as Pico does


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3648 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-09 16:04:19 +00:00
David Lawrence Ramsey
8d42a3bfaa remove erroneous #ifdefs
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3647 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-09 15:52:00 +00:00
David Lawrence Ramsey
a6a06a99af add one last TODO entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3646 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-09 12:48:55 +00:00
David Lawrence Ramsey
c9855a7e46 fix changelog entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3645 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-09 12:46:31 +00:00
David Lawrence Ramsey
9c2f7ab341 per Benno Schulenberg's patch, in help_init(), if one of the help
strings ends in newlines followed by a space, move the space to the next
help string to make it easier for translators to see


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3644 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-09 12:44:34 +00:00
Jordi Mallach
11516e0384 ca, ga, it and nl from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3643 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-09 09:37:06 +00:00
David Lawrence Ramsey
1d60d78dbd fix typo
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3642 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-08 16:56:00 +00:00
David Lawrence Ramsey
9368217972 add various minor regex and comment tweaks, mostly by John M. Gabriele
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3641 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-08 12:49:57 +00:00
David Lawrence Ramsey
131909fdea remove now-unneeded changelog entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3640 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-08 02:56:19 +00:00
David Lawrence Ramsey
69395f457d yet more wording fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3639 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-08 02:55:42 +00:00
David Lawrence Ramsey
fed0195f2d still more wording fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3638 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-08 02:54:20 +00:00
David Lawrence Ramsey
4bb60db078 more minor wording fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3637 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-08 02:50:56 +00:00
David Lawrence Ramsey
25bc37e7c8 add minor documentation fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3636 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-08 02:45:38 +00:00
David Lawrence Ramsey
69e1ce56df per Benno Schulenberg's patch with a few tweaks by me, add minor wording
fixes to various messages


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3635 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-08 02:37:45 +00:00
David Lawrence Ramsey
9e553b21f3 per Benno Schulenberg's patch, add a wording fix to help_init()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3634 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-08 02:16:37 +00:00
David Lawrence Ramsey
f94b993535 per Benno Schulenberg's patch, add single quotes around the invalid
string argument in the error message about unterminated strings, to
avoid confusion


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3633 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-08 02:13:37 +00:00
David Lawrence Ramsey
2d0d60b796 fix breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3632 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-08 02:05:34 +00:00
David Lawrence Ramsey
f102208c05 don't display "Unknown Command" on the statusbar if we get an unknown
escape sequence at the statusbar prompt


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3631 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-08 02:01:49 +00:00
David Lawrence Ramsey
c504e40a81 add one more comment tweak by John M. Gabriele
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3630 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-07 02:58:39 +00:00
David Lawrence Ramsey
c923eb9c6a add minor documentation fixes from John M. Gabriele
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3629 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-06 22:15:44 +00:00
David Lawrence Ramsey
6cca33745c wording fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3628 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-06 19:42:22 +00:00
David Lawrence Ramsey
96dce26401 various minor include fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3627 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-06 18:41:58 +00:00
David Lawrence Ramsey
b9c5a5c879 add a few more items to the TODO list
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3626 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-05 20:35:28 +00:00
David Lawrence Ramsey
0e963be59d mention the removal of the workaround for glibc 2.2.3's broken regexec()
in UPGRADE too


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3625 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-05 15:44:55 +00:00
David Lawrence Ramsey
b5a7bbf4f3 remove the workaround for glibc 2.2.3's broken regexec(), and replace it
with a FAQ entry explaining the problem, since it could break anything
using extended regular expressions, and glibc 2.2.3 is old


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3624 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-05 15:41:23 +00:00
David Lawrence Ramsey
57d81ecef9 update changelog entries
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3623 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-04 18:05:17 +00:00
David Lawrence Ramsey
f94fbbc9f4 fix typos from when the old section 4.4 was removed
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3622 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-04 17:27:58 +00:00
David Lawrence Ramsey
7d9e5bfb36 in faq.html, add minor punctuation and wording fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3621 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-04 17:22:16 +00:00
David Lawrence Ramsey
0517d09788 update to deal with nano.html
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3620 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-04 15:39:36 +00:00
David Lawrence Ramsey
888bc14416 amother cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3619 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-04 13:40:39 +00:00
David Lawrence Ramsey
4dbdbd4660 per Benno Schulenberg's patch, fix changelog entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3618 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-04 13:27:50 +00:00
David Lawrence Ramsey
497a9a2032 in ngetdelim(), set errno to EINVAL if stream is not a valid file
stream; this matches the manual page


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3617 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-04 00:15:56 +00:00
David Lawrence Ramsey
106c1bf3d1 beep when we get an unhandled shortcut or toggle, as Pico does
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3616 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-03 19:36:02 +00:00
David Lawrence Ramsey
f70f67bd10 more miscellaneous minor fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3615 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-03 17:31:52 +00:00
David Lawrence Ramsey
299ab27363 add minor nanorc regex tweaks by John M. Gabriele, and minor sh regex
tweaks by Benno Schulenberg


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3614 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-03 12:41:02 +00:00
David Lawrence Ramsey
a95bdee2cf cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3613 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-03 02:09:10 +00:00
David Lawrence Ramsey
76436426de cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3612 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-02 21:21:53 +00:00
David Lawrence Ramsey
5031ddf8ea don't display "Unknown Command" after a mouse click
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3611 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-02 03:09:27 +00:00
David Lawrence Ramsey
8f07329d00 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3610 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-01 20:23:24 +00:00
David Lawrence Ramsey
a004334024 fix breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3609 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-01 19:54:14 +00:00
David Lawrence Ramsey
cb11a20333 add missing blank line
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3608 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-01 18:37:37 +00:00
David Lawrence Ramsey
e4157968fb move the nanorc regexes to a separate file too
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3607 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-01 18:35:39 +00:00
David Lawrence Ramsey
cf876d5396 update to deal with rnano.1.html
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3606 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-01 17:42:22 +00:00
David Lawrence Ramsey
97eb8e6551 update, since we now use nanorc.sample.in instead of nanorc.sample
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3605 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-01 17:40:42 +00:00
David Lawrence Ramsey
5e6434cf54 move color regexes into separate files, and restructure things so that
they're installed properly and nanorc.sample references them properly


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3604 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-01 17:23:28 +00:00
David Lawrence Ramsey
17ab6ed580 in doc/man/Makefile.am, simplify the setting of SUBDIRS
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3603 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-01 16:53:03 +00:00
David Lawrence Ramsey
6119fabdcc in nanorc.sample, per John M. Gabriele's patch with a few tweaks by me,
add regexes for Ruby


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3602 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-01 02:19:54 +00:00
David Lawrence Ramsey
5f90b4fbd8 in nanorc.sample, per John M. Gabriele's patch, tweak the "nanorc"
regexes to color keywords bright green instead of cyan


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3601 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-01 01:58:42 +00:00
David Lawrence Ramsey
3dc0e23e0c in nanorc.sample, simplify the extensions associated with the "nanorc"
regexes


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3600 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-01 01:54:41 +00:00
David Lawrence Ramsey
c1662f2eb7 in nanorc.sample, per John M. Gabriele's patch, tweak the "nanorc"
regexes to color comments bright blue instead of blue


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3599 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-01 01:51:41 +00:00
David Lawrence Ramsey
95ff10ec47 in nanorc.sample, per Benno Schulenberg's patch, tweak the "shellscript"
regexes to properly color all special variables, such as $? and $@


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3598 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-01 01:26:35 +00:00
David Lawrence Ramsey
1f5cf0d111 redundancy fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3597 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-01 01:15:06 +00:00
David Lawrence Ramsey
2888964c76 miscellaneous minor fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3596 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-30 20:51:15 +00:00
David Lawrence Ramsey
f397dae5c5 in src/Makefile.am, remove "-Iintl" from INCLUDES, as we don't use an
intl directory inside the source directory anymore


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3595 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-28 22:33:14 +00:00
David Lawrence Ramsey
a8239c313d another cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3594 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-28 22:24:03 +00:00
David Lawrence Ramsey
8d2d0d9a11 in various functions in rcfile.c, add quotes around invalid string
arguments in error messages, for consistency; also, move
color_to_short() dowm so that it's near parse_colors(), for consistency


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3593 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-28 19:00:16 +00:00
David Lawrence Ramsey
5cadadd4c2 in color_update(), fix incorrect setting of defcolor, which prevented
the reserved "default" syntax from being handled correctly


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3592 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-28 18:51:48 +00:00
David Lawrence Ramsey
8602fd6aaa typo fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3591 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-28 18:43:21 +00:00
David Lawrence Ramsey
7f1b1198a7 more cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3590 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-28 17:30:28 +00:00
David Lawrence Ramsey
a5b1ca2808 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3589 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-28 17:09:49 +00:00
David Lawrence Ramsey
5c7d88dc16 in parse_verbatim_kbinput(), don't include the ability to enter a
Unicode sequence via verbatim input mode if we're not in a UTF-8 locale


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3588 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-28 16:25:15 +00:00
David Lawrence Ramsey
a620e683e7 don't blank the statusbar after getting verbatim input if constant
cursor position display is on


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3587 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-27 18:19:03 +00:00
David Lawrence Ramsey
100bc30d63 in check_statusblank(), avoid redundant updates when statusblank is 0
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3586 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-27 18:06:11 +00:00
David Lawrence Ramsey
184955d0c1 in faq.html, update section 3.8 to mention the new "Unicode Input"
prompt, and how Unicode input only works when Unicode support is enabled


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3585 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-27 17:58:41 +00:00
David Lawrence Ramsey
6fb6689f0f various input/output fixes: allow normal typing of high-bit control
characters, as Pico does; in do_verbatim_input(), unconditionally blank
the statusbar as soon as we're finished getting input; and in
parse_verbatim_kbinput(), don't include the ability to enter a Unicode
sequence via verbatim input mode if ENABLE_UTF8 isn't defined


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3584 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-27 17:39:19 +00:00
David Lawrence Ramsey
a7ca9008bc remove unneeded comment
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3583 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-27 17:17:06 +00:00
David Lawrence Ramsey
f451d6a64a add Benno Schulenberg's translator comments, and fix typos in the last
changelog entry


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3582 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-27 16:02:48 +00:00
David Lawrence Ramsey
12e3708ead per Benno Schulenberg's patch with a few tweaks by me, if we're using
verbatim input to enter a Unicode sequence, indicate it on the
statusbar; also, refactor the Unicode sequence handler function to
remove redundant code


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3581 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-27 15:52:26 +00:00
David Lawrence Ramsey
9a5139e9d3 add missing changelog entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3580 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-27 15:18:05 +00:00
David Lawrence Ramsey
e2afdbb14b another typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3579 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-27 14:46:56 +00:00
David Lawrence Ramsey
5b1d876045 typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3578 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-26 18:50:44 +00:00
David Lawrence Ramsey
f4cf5edd06 error message improvements
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3577 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-26 17:06:05 +00:00
David Lawrence Ramsey
5566e442b1 in parse_rcfile(), properly handle rcfiles that don't end in newlines
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3576 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-26 13:49:00 +00:00
David Lawrence Ramsey
db39a5e80d in parse_rcfile(), change variable i from an int to a size_t, for
consistency


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3575 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-26 13:38:49 +00:00
David Lawrence Ramsey
558d34f5ba handle all syntaxes without associated colors in parse_rcfile()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3574 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-26 13:27:28 +00:00
David Lawrence Ramsey
0b4920adc9 in parse_rcfile(), properly generate an error if we've read in a syntax
without any associated color command


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3573 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-26 12:56:30 +00:00
David Lawrence Ramsey
2ef7dae971 more comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3572 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-26 11:58:37 +00:00
David Lawrence Ramsey
3c780e1d10 fix edit_redraw() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3571 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-26 03:46:03 +00:00
David Lawrence Ramsey
561db3a7c4 comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3570 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-26 03:22:44 +00:00
David Lawrence Ramsey
bd6e968506 redundancy fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3569 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-26 03:12:35 +00:00
David Lawrence Ramsey
d5228b3d82 in edit_redraw(), fix problem where not all lines would be updated
properly if we'd scrolled off the screen and the mark was on


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3568 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-26 03:04:24 +00:00
David Lawrence Ramsey
964722a281 add missing blank line
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3567 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-26 03:02:50 +00:00
David Lawrence Ramsey
1320d29267 remove duplicate escape sequence-interpreting code
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3566 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-25 22:10:27 +00:00
David Lawrence Ramsey
d6eb17515d in parse_kbinput(), if we get Escape followed by an escape sequence,
interpret the escape sequence for consistency; also ignore unhandled
function keys for consistency


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3565 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-25 21:39:25 +00:00
David Lawrence Ramsey
e328ae9423 in shortcut_init(), remove the "Go To Line" shortcut in the replace
shortcut list, for compatibility with Pico


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3564 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-25 04:02:50 +00:00
David Lawrence Ramsey
c7251fa4fc comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3563 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-24 21:12:08 +00:00
David Lawrence Ramsey
0c9551a4dd per Benno Schulenberg's patch, with a few tweaks by me, add miscellaneous
minor fixes to nanorc.sample


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3562 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-24 21:07:10 +00:00
David Lawrence Ramsey
2a56ce79c5 per Benno Schulenberg's patch with some additions of mine, explain the
mouse support in more detail, and sync the text of its description across
all documentation


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3561 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-24 20:55:44 +00:00
David Lawrence Ramsey
0b65402b60 fix more breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3560 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-24 20:39:03 +00:00
David Lawrence Ramsey
305d889e9d more cleanly ignore unhandled meta key sequences and escape sequences;
to get this to work properly, add a shortcut for moving to the next
search/replace string


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3559 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-24 19:48:03 +00:00
David Lawrence Ramsey
8aa9ac3657 don't call wrap_reset() if we use verbatim input
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3558 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-24 18:36:38 +00:00
David Lawrence Ramsey
3af1e50855 per Benno Schulenberg's patch, fix the statusbar's not blanking properly
after verbatim input


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3557 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-24 18:23:21 +00:00
David Lawrence Ramsey
b4428a0268 fix breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3556 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-24 18:10:41 +00:00
David Lawrence Ramsey
592f46bf35 capitalization fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3555 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-24 17:37:39 +00:00
David Lawrence Ramsey
8e341e1b22 ignore unhandled meta key sequences and escape sequences, and indicate
it on the statusbar when we get an unhandled shortcut or toggle, as Pico
does


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3554 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-24 17:36:00 +00:00
David Lawrence Ramsey
5538150e0a more miscellaneous documentation fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3553 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-23 16:23:10 +00:00
David Lawrence Ramsey
4567277310 more various wording fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3552 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-23 16:17:37 +00:00
David Lawrence Ramsey
8816564bf2 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3551 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-22 18:30:09 +00:00
David Lawrence Ramsey
f1e5627ebe add missing blank line to the help text when NANO_TINY is defined and
DISABLE_HELP isn't, plus a formatting fix


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3550 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-22 18:28:20 +00:00
David Lawrence Ramsey
9133cbe258 add missing #ifdef
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3549 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-22 15:45:24 +00:00
David Lawrence Ramsey
6fe4e2be04 avoid unnecessary scrolling when moving to the last line of the help
text


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3548 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-22 02:23:56 +00:00
David Lawrence Ramsey
ef0d5a7637 handle prepending of wrapped text in one place instead of many, so that
it always works consistently


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3547 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-22 02:08:49 +00:00
David Lawrence Ramsey
6b49e9e54e cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3546 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-22 01:29:30 +00:00
David Lawrence Ramsey
139fa65c66 more comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3545 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-22 01:26:24 +00:00
David Lawrence Ramsey
2829aae635 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3544 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-22 01:24:09 +00:00
David Lawrence Ramsey
be231d39ad per Benno Schulenberg's patch, add more shortcut description and
translator comment tweaks


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3543 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-21 21:37:21 +00:00
David Lawrence Ramsey
b7acc735db per Benno Schulenberg's patch, in nano.texi, change all occurrences of
"file name" to "filename"


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3542 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-21 21:32:13 +00:00
David Lawrence Ramsey
ce8623669b handle statusbar blanking in one place instead of many, so that it
always works consistently, per Benno Schulenberg's patch (with a few
tweaks of mine); also, blank the statusbar after 26 keystrokes instead
of 25, for compatibility with Pico


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3541 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-21 21:23:21 +00:00
David Lawrence Ramsey
41b8972dc9 various miscellaneous cutting fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3540 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-21 20:03:43 +00:00
David Lawrence Ramsey
83635c2155 in do_input(), don't blow away the cutbuffer when the shortcut we get is
do_cut_till_end()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3539 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-21 17:58:08 +00:00
David Lawrence Ramsey
124978a5bc in nanorc.sample, further simplify the "groff" regexes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3538 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-21 17:51:54 +00:00
David Lawrence Ramsey
44abeea53c in nanorc.sample, remove unneeded foreground color for the Java source
regex used to highlight trailing whitespace, since we now support
background colors without foreground colors


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3537 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-21 17:27:04 +00:00
David Lawrence Ramsey
252ecebaf7 wording fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3536 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-21 17:15:41 +00:00
David Lawrence Ramsey
376eea3d25 properly highlight the "include" command
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3535 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-21 17:15:06 +00:00
David Lawrence Ramsey
f320d31ef0 in nanorc.sample, replace instances of "\w" with its equivalent
"[0-9A-Za-z_]", and instances of "\W" with its equivalent
"[^0-9A-Za-z_]", for greater readability


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3534 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-21 16:50:16 +00:00
David Lawrence Ramsey
c0899cb8eb remove unneeded blank line
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3533 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-20 17:29:14 +00:00
David Lawrence Ramsey
51cb7fd293 in get_control_kbinput(), fix Ctrl-? breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3532 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-20 17:19:09 +00:00
David Lawrence Ramsey
39bd1b3597 cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3531 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-20 13:11:56 +00:00
David Lawrence Ramsey
cd243f558a in break_line(), handle newlines consistently when searching for the
last blank in the first group of blanks in the range of (goal - 1)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3530 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-19 23:27:16 +00:00
David Lawrence Ramsey
af7677ecb6 in help_init(), add various wording fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3529 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-19 23:07:02 +00:00
David Lawrence Ramsey
d99b0e1cf3 in display_string(), properly display double-column characters if
they're past the first virtual page and their first column is covered by
the "$" displayed at the beginning of the line


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3528 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-19 17:50:01 +00:00
David Lawrence Ramsey
b9446ac429 really fix handling of NANO_CONTROL_8
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3527 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-19 14:26:16 +00:00
David Lawrence Ramsey
c9d76207f3 in src/Makefile.am, if we're uninstalling, remove the "rnano" symlink
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3526 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-18 20:18:36 +00:00
David Lawrence Ramsey
75e9dfe5a4 comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3525 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-18 17:50:08 +00:00
David Lawrence Ramsey
c074edfe36 wording fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3524 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-18 17:29:34 +00:00
David Lawrence Ramsey
2d3d1e9324 in break_line(), fix problem where tab widths in columns are always
calculated as tabsize


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3523 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-18 17:28:16 +00:00
David Lawrence Ramsey
139bae0826 update TODO and UPGRADE for nano 2.0, since we're now in a feature
freeze


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3522 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-17 13:38:07 +00:00
Jordi Mallach
b6aaa8f365 Added Irish translation from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3521 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-17 06:54:47 +00:00
David Lawrence Ramsey
60edb0a989 improve NANO_REFRESH_KEY handling
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3520 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-15 15:17:50 +00:00
David Lawrence Ramsey
10f8e880ba cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3519 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-15 14:47:16 +00:00
David Lawrence Ramsey
e2c9c58104 typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3518 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-15 14:34:11 +00:00
David Lawrence Ramsey
8803dd8768 remove unneeded blank lines
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3517 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-15 14:16:55 +00:00
David Lawrence Ramsey
c1c818ebd5 comment and formatting fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3516 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-14 18:22:01 +00:00
David Lawrence Ramsey
d8d1e26e54 in help_init(), properly use mbstrlen() instead of strlen() when
calculating the amount of space available for "^Space" and "M-Space"


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3515 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-14 17:48:01 +00:00
David Lawrence Ramsey
4239c3c218 remove unneeded whitespace
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3514 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-14 15:38:54 +00:00
David Lawrence Ramsey
e77ebfa3fa more documentation updates from Benno Schulenberg, with a few tweaks and
additions by me


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3513 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-14 15:19:38 +00:00
David Lawrence Ramsey
3fe5acebea cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3512 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-13 18:06:43 +00:00
David Lawrence Ramsey
4f4a0b9abb fix copyright notice in do_credits()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3511 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-13 16:32:24 +00:00
David Lawrence Ramsey
a01f131960 more comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3510 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-13 15:03:09 +00:00
David Lawrence Ramsey
f70eca06be comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3509 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-13 14:59:17 +00:00
David Lawrence Ramsey
9dbd0d26c2 fix bad #ifdef
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3508 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-13 13:02:14 +00:00
David Lawrence Ramsey
b7d8926209 typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3507 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-12 23:59:01 +00:00
David Lawrence Ramsey
660e05be3d miscellaneous cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3506 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-12 19:30:28 +00:00
David Lawrence Ramsey
75850e501a in faq.html, make the link to the nano CVS page a bit more readable
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3505 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-12 15:36:32 +00:00
David Lawrence Ramsey
797c9dd0f6 typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3504 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-12 14:04:08 +00:00
David Lawrence Ramsey
f5d6d9985b drop the Meta-] and Meta-[ aliases for Meta-} and Meta-}, and change the
shortcut to find the matching bracket from Ctrl-] back to Meta-], since
Ctrl-] is used as the telnet escape key


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3503 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-12 12:37:53 +00:00
David Lawrence Ramsey
5b94b8e322 cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3502 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-11 12:42:08 +00:00
David Lawrence Ramsey
0547f51816 cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3501 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-11 11:13:54 +00:00
David Lawrence Ramsey
08f16e2fc7 in free_chararray(), assert that array isn't NULL, for consistency with
the other free_.*() functions; also fix potential memory corruption
problem when copying text


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3500 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-11 01:53:33 +00:00
David Lawrence Ramsey
bbabf9562a fix bracket matching breakage in do_statusbar_input() since its shortcut
was changed to Ctrl-]


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3499 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-11 00:58:26 +00:00
David Lawrence Ramsey
4218206fec still more comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3498 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-10 16:09:36 +00:00
David Lawrence Ramsey
31efe99e20 more comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3497 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-10 16:03:59 +00:00
David Lawrence Ramsey
1c5af644b5 avoid unnecessary state saving for when we resize
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3496 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-10 15:15:06 +00:00
David Lawrence Ramsey
fc0f8f8c57 allow unjustifying if we resize the window immediately after justifying,
as Pico does, and make input handling across resizes more consistent


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3495 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-10 13:41:53 +00:00
David Lawrence Ramsey
d29e861376 in do_(statusbar_)?input(), remove redundant check for allow_funcs'
being TRUE when we get KEY_MOUSE


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3494 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-10 13:06:58 +00:00
David Lawrence Ramsey
8992d0adaa formatting fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3493 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-10 12:48:47 +00:00
David Lawrence Ramsey
02a7f84412 in browser_refresh(), make sure the highlighting of the currently
selected file or directory respects the -D/--boldtext option


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3492 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-10 12:37:15 +00:00
David Lawrence Ramsey
26dd1b66de simplify
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3491 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-10 04:17:21 +00:00
David Lawrence Ramsey
0df4de37c3 in browser_refresh(), change variable i from an int to a size_t in order
to match selected, which it's compared against


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3490 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-10 03:57:16 +00:00
David Lawrence Ramsey
f2fe1fd263 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3489 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-10 03:44:49 +00:00
David Lawrence Ramsey
3cba266d4d comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3488 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-10 03:40:17 +00:00
Jordi Mallach
cf8082f87f Updated Dutch translation by Benno Schulenberg.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3487 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-09 23:25:25 +00:00
David Lawrence Ramsey
560e83f143 in usage(), fix inaccuracies in the usage example
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3486 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-08 19:55:18 +00:00
David Lawrence Ramsey
b02a1950e7 cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3485 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-08 16:25:12 +00:00
David Lawrence Ramsey
a5f833de42 in edit_draw(), properly ignore zero-length regexes in multi-line
regexes as well as single-line ones; this avoids a segfault when trying
to color e.g. "start="$" end="$""


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3484 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-08 15:57:04 +00:00
David Lawrence Ramsey
c7b9e15e9a formatting fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3483 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-08 15:19:42 +00:00
David Lawrence Ramsey
27d5be5e36 per Benno Schulenberg's patch (with a few tweaks by me), add a new
section 4.5, and move all section 4 entries after it down one number, to
explain a problem that can occur when holding down keys to generate Meta
sequences; also add a few more capitalization and wording fixes


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3482 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-08 14:12:36 +00:00
David Lawrence Ramsey
f22fa1341e typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3481 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-08 13:18:01 +00:00
David Lawrence Ramsey
602199da12 comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3480 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-06 15:31:32 +00:00
David Lawrence Ramsey
0ec909cb98 add the ability to move to the first and last file in the file browser
via Meta-\ (Meta-|) and Meta-/ (Meta-?)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3479 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-06 15:07:26 +00:00
David Lawrence Ramsey
5bb7727740 another formatting fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3478 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-06 14:37:33 +00:00
David Lawrence Ramsey
b22c80ad1d remove various redundant key checks
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3477 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-06 13:41:59 +00:00
David Lawrence Ramsey
90b60edc3f fix do_help() meta key breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3476 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-06 02:51:33 +00:00
David Lawrence Ramsey
f629aad27b cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3475 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-06 02:42:42 +00:00
David Lawrence Ramsey
6e7d24dcdc add the ability to move to the first and last line of the help text via
Meta-\ (Meta-|) and Meta-/ (Meta-?)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3474 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-06 02:26:18 +00:00
David Lawrence Ramsey
3f77c77f11 wording fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3473 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-06 02:25:32 +00:00
David Lawrence Ramsey
0a208b3b62 formatting fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3472 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-06 02:22:02 +00:00
David Lawrence Ramsey
2545686481 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3471 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-05 15:43:52 +00:00
David Lawrence Ramsey
80669c34bb in do_indent_marked(), only use line_indent and line_indent_len when
necessary


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3470 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-05 15:41:43 +00:00
David Lawrence Ramsey
9e73d98a60 better handle position shifting when indenting marked text
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3469 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-05 15:20:36 +00:00
David Lawrence Ramsey
eb4f90e182 better handle position shifting when unindenting marked text
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3468 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-05 14:22:42 +00:00
David Lawrence Ramsey
aa4dc9596f typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3467 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-04 03:18:58 +00:00
David Lawrence Ramsey
f0e3ca6e88 clarify error messages
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3466 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-03 13:11:00 +00:00
David Lawrence Ramsey
ac37b04737 typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3465 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-03 12:59:05 +00:00
David Lawrence Ramsey
c7d6f985c7 in faq.html, add a new section 4.4, and move all section 4 entries after
it down one number, to explain how to deal with problems typing Meta-[;
also add a few capitalization and wording fixes


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3464 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-02 00:08:13 +00:00
David Lawrence Ramsey
af9052d7c7 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3463 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-01 17:14:25 +00:00
David Lawrence Ramsey
2ca3fc9fa6 consistency fix for do_indent_marked(): remove indentation from just
before the non-whitespace text on lines instead of the beginnings of
lines


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3462 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-01 16:48:12 +00:00
David Lawrence Ramsey
7a9422b77d more various wording fixes for documentation
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3461 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-01 13:43:02 +00:00
David Lawrence Ramsey
e7f9813284 various wording fixes for documentation
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3460 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-05-01 13:22:47 +00:00
David Lawrence Ramsey
12c1b5913a consistency fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3459 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-30 23:30:47 +00:00
David Lawrence Ramsey
fd3cceee44 fix yet more do_indent_marked() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3458 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-30 01:29:51 +00:00
David Lawrence Ramsey
7194a617c4 fix still more do_indent_marked() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3457 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-29 16:11:21 +00:00
David Lawrence Ramsey
2e8fac6487 fix more do_indent_marked() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3456 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-29 15:44:58 +00:00
David Lawrence Ramsey
5c819b53e1 really fix do_indent_marked() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3455 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-29 15:12:07 +00:00
David Lawrence Ramsey
d9eca4b8bf fix do_indent_marked() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3454 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-29 15:07:37 +00:00
David Lawrence Ramsey
bf7842090b another wording fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3453 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-29 13:59:04 +00:00
David Lawrence Ramsey
5f274c4b49 handle NANO_CONTROL_8 even better by doing it in parse_kbinput()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3452 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-28 19:27:41 +00:00
David Lawrence Ramsey
fbf46a5d88 in do_(statusbar_)?input(), if we get NANO_CONTROL_8, handle it instead
of ignoring it, for consistency


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3451 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-28 18:59:34 +00:00
David Lawrence Ramsey
4d9ef69f8e various fixes for get_control_kbinput()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3450 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-28 18:26:07 +00:00
David Lawrence Ramsey
4527da5e9b when indenting lines, properly keep track of the mark coordinates
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3449 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-28 13:37:42 +00:00
David Lawrence Ramsey
8bf39a38fe in configure.ac, remove the other old warning about color support
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3448 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-28 13:27:20 +00:00
David Lawrence Ramsey
6d1112314b typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3447 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-28 13:23:17 +00:00
David Lawrence Ramsey
f85001a368 add the ability to indent and unindent all marked lines of text, via
Meta-[ (Meta-}) and Meta-] (Meta-}), per Chris' patch with some changes
by me


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3446 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-28 13:19:56 +00:00
David Lawrence Ramsey
cf1879b706 tweak the shortcut list a bit more, and add Space and - as aliases for
PageDown and PageUp in the help browser, per Benno Schulenberg's
suggestions


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3445 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-27 23:39:49 +00:00
David Lawrence Ramsey
9dd268730c preemptively update version numbers and modification dates
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3444 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-27 19:06:05 +00:00
David Lawrence Ramsey
190fae0043 document wording fixes in nanorc.5
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3443 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-27 18:54:24 +00:00
David Lawrence Ramsey
0d0d636e72 in nano.texi, add a "Nanorc Files" section to explain the nanorc file
format in detail, using text from nanorc.5


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3442 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-27 18:52:50 +00:00
David Lawrence Ramsey
3bcca171ae in nanorc.5 and nanorc.sample, mention that the nanorc file should not
be in DOS or Mac format


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3441 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-27 17:29:19 +00:00
David Lawrence Ramsey
c208ef7f23 fix breakage when NO_NEWLINES is FALSE and we copy text that would
require adding a new magicline then


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3440 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-26 19:03:50 +00:00
David Lawrence Ramsey
c838a4cd45 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3439 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-26 18:33:50 +00:00
David Lawrence Ramsey
fe48da7d74 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3438 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-26 18:27:35 +00:00
David Lawrence Ramsey
58fabec261 formatting fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3437 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-26 17:39:41 +00:00
David Lawrence Ramsey
bd5966061c in shortcut_init(), add Meta-} as an alias for Meta-]
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3436 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-26 17:24:46 +00:00
David Lawrence Ramsey
95b9850517 fix inaccurate comment
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3435 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-25 13:07:31 +00:00
David Lawrence Ramsey
7504714882 fix segfault if we try to copy an empty selection
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3432 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-25 02:56:54 +00:00
David Lawrence Ramsey
714c522413 add missing #ifdef
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3431 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-25 02:40:58 +00:00
David Lawrence Ramsey
fcff1e7401 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3430 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-25 02:35:33 +00:00
David Lawrence Ramsey
c87e0c0965 add the ability to copy text into the cutbuffer without cutting it, via
Meta-^ (Meta-6); note that this is disabled when NANO_TINY is defined


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3429 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-25 02:23:28 +00:00
David Lawrence Ramsey
bc80cb1ba7 readd the Cancel -> Exit aliases for the file browser and help browser,
per Benno Schulenberg's suggestion, and clean up a few other
miscellaneous things


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3428 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-24 23:03:21 +00:00
David Lawrence Ramsey
854a44a414 more cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3427 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-24 21:14:55 +00:00
David Lawrence Ramsey
939d4239d4 in shortcut_init(), tweak the descriptions of two more shortcut keys to
make them more uniform, per one of Benno Schulenberg's suggestions and
one of mine


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3426 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-24 21:00:17 +00:00
David Lawrence Ramsey
8137876426 another cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3425 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-24 20:53:43 +00:00
David Lawrence Ramsey
bf487985bc better handle the insertion of blank lines after shortcuts when certain
features are disabled


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3424 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-24 20:50:52 +00:00
David Lawrence Ramsey
9adc445c5c add missing #ifdef
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3423 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-24 20:17:50 +00:00
David Lawrence Ramsey
9ea05902ec comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3422 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-24 19:44:04 +00:00
David Lawrence Ramsey
18dae628d2 reduce NO_RCFILE to a static bool in nano.c, since it's only used there
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3421 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-24 18:54:29 +00:00
David Lawrence Ramsey
891e0ec281 in get_prompt_string(), include the handling of the help key even when
help is disabled, so that we aren't erroneously kicked out of the
statusbar prompt under any circumstances


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3420 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-23 19:32:50 +00:00
David Lawrence Ramsey
40e0572100 in shortcut_init(), tweak the descriptions of some shortcut keys to make
them more uniform, per Benno Schulenberg's patch with minor tweaks by me


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3419 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-23 19:21:12 +00:00
David Lawrence Ramsey
2ca2356802 adjust the main shortcut list a bit more, per Benno Schulenberg's patch,
and better handle the insertion of blank lines after toggles when
certain features are disabled


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3418 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-23 19:15:15 +00:00
David Lawrence Ramsey
5a2dbe26d8 typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3417 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-23 14:53:26 +00:00
David Lawrence Ramsey
b88152d82d more typo fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3416 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-23 01:33:37 +00:00
David Lawrence Ramsey
241771ceb5 typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3415 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-23 01:14:49 +00:00
David Lawrence Ramsey
4fd74e0db4 in help_init(), if we have at least two entries' worth of blank space,
use it to display more of "^Space" and "M-Space"


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3414 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-23 01:10:55 +00:00
David Lawrence Ramsey
97415dfdc7 really fix #ifdef
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3413 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-22 20:03:05 +00:00
David Lawrence Ramsey
03252d4fbc fix #ifdef
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3412 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-22 20:00:23 +00:00
David Lawrence Ramsey
bdf84dd8fb fix more breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3411 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-22 19:52:27 +00:00
David Lawrence Ramsey
1df3e2d0bf reorganize the main shortcut list to make it easier for new users, per
Benno Schulenberg's suggestion


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3410 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-22 19:45:26 +00:00
David Lawrence Ramsey
d7b804ab6d add missing #ifdefs
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3409 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-22 18:20:14 +00:00
David Lawrence Ramsey
3ea0b1d6d8 fix breakage and typos
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3408 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-21 02:30:53 +00:00
David Lawrence Ramsey
5f0a58b055 add missing alternate meta key sequences
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3407 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-21 02:24:34 +00:00
David Lawrence Ramsey
df45365592 add shortcuts to go to the first or last line of the file from the main
list, make all the equivalent shortcuts elsewhere consistent, and
simplify input parsing in do_help()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3406 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-21 02:05:09 +00:00
David Lawrence Ramsey
6397b592fb cleanups: fix M-M/M-N toggle inversion, and reorder toggle #defines in
nano.h to match the new order in toggle_init()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3405 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-20 22:36:10 +00:00
David Lawrence Ramsey
e313f5b2c8 reorganize the global toggle list to make it easier for new users, per
Benno Schulenberg's suggestion


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3404 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-20 22:29:02 +00:00
David Lawrence Ramsey
4879660c9a comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3403 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-20 16:09:32 +00:00
David Lawrence Ramsey
1f09769052 in nano.texi, add minor updates to put some text back in sync with
nano's current feature set


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3402 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-20 15:45:24 +00:00
David Lawrence Ramsey
fe52ae0d54 update modification date again
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3401 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-20 14:43:09 +00:00
David Lawrence Ramsey
728c85a119 in nano.texi, add minor updates to put some text back in sync with
nano's help text


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3400 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-20 14:33:36 +00:00
David Lawrence Ramsey
0aeb50342a still another miscellaneous minor fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3399 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-20 14:15:16 +00:00
David Lawrence Ramsey
e30c308089 another typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3398 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-20 03:20:13 +00:00
David Lawrence Ramsey
57f97538b1 fix changelog entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3397 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-20 03:03:57 +00:00
David Lawrence Ramsey
e904888324 in renumber(), remove invalid assert
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3396 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-20 03:02:33 +00:00
David Lawrence Ramsey
8ff785cf40 in toggle_init(), in the global toggle list, move the "Constant cursor
position display" toggle up to after the "Use more space for editing"
toggle, for consistency


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3395 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-19 23:13:44 +00:00
David Lawrence Ramsey
b9eb2be295 in shortcut_init(), in the main shortcut list, move the "Refresh"
shortcut down to after the "Enter" shortcut, for consistency


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3394 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-19 22:55:37 +00:00
David Lawrence Ramsey
9461dbd72d remove back references from sample Python regex
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3393 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-19 20:56:31 +00:00
David Lawrence Ramsey
efb4b0a96c add several blank entries to the main shortcut list, in order to make
its help text easier to read


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3392 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-19 14:09:01 +00:00
David Lawrence Ramsey
e6757b94d3 still more comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3391 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-19 13:36:56 +00:00
David Lawrence Ramsey
e806ab8473 adjust the shortcut list display and related mouse support to not waste
the last few characters of bottomwin when the screen width isn't a clean
multiple of the column width, per Benno Schulenberg's patch (with a few
tweaks by me)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3390 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-18 16:13:35 +00:00
David Lawrence Ramsey
172aa93f4a another comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3389 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-18 15:58:50 +00:00
David Lawrence Ramsey
e916d67389 in nano.texi, mention that backup files and spell checking are disabled
in restricted mode, as rnano.1 does


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3388 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-16 22:39:15 +00:00
David Lawrence Ramsey
51b1b2f1aa change nano.texi's the license to GPL, in order to match the rest of the
documentation, and because the current license is incompatible with
everything else in any case


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3387 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-16 22:13:10 +00:00
David Lawrence Ramsey
3a0da8bb3b update modification date
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3386 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-16 20:50:36 +00:00
David Lawrence Ramsey
b1bf7cf791 still more miscellaneous minor fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3385 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-16 20:40:29 +00:00
David Lawrence Ramsey
73ff694ce1 more miscellaneous minor fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3384 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-15 18:02:06 +00:00
David Lawrence Ramsey
b61dc89f9a comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3383 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-15 17:21:52 +00:00
David Lawrence Ramsey
39b7189a13 in parse_syntax(), don't generate an error if we find a duplicate syntax
name, since we might be trying to override a syntax in the global nanorc
with one in our local nanorc; instead, free any duplicate syntaxes we
find, so that we always use the last syntax with a given name


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3382 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-15 16:02:02 +00:00
David Lawrence Ramsey
8f6fb3c6b6 change translator-specific comments in search.c so that they show up in
nano.pot


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3381 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-14 22:22:00 +00:00
David Lawrence Ramsey
57c9afb9e6 wording fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3380 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-14 20:21:45 +00:00
David Lawrence Ramsey
f50bd4be88 clarify some help text and documentation
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3379 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-14 20:15:44 +00:00
David Lawrence Ramsey
b43648aae2 in configure.ac, remove old warning about color support
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3378 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-14 18:44:02 +00:00
David Lawrence Ramsey
a33ec1deff in parse_syntax(), properly generate an error if we've read in a
previous syntax without any associated color commands


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3377 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-14 17:20:53 +00:00
David Lawrence Ramsey
33619f1ac5 another error message consistency fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3376 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-13 14:09:45 +00:00
David Lawrence Ramsey
9e9f4e22ad minor wording fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3375 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-13 03:57:12 +00:00
David Lawrence Ramsey
a33671376e comment fixes, plus an explanation of the "include" command
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3374 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-13 03:00:00 +00:00
David Lawrence Ramsey
8e05c315b2 in nanorc.sample, simplify the "nanorc" regex for commands
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3373 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-13 02:50:36 +00:00
David Lawrence Ramsey
cee20e50c6 at long last, add the ability to use self-contained color syntaxes from
separate files, accessible in the nanorc via the "include" command


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3372 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-13 02:43:54 +00:00
David Lawrence Ramsey
03ee332640 another comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3371 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-12 22:03:47 +00:00
David Lawrence Ramsey
f0134ea9b2 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3370 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-12 21:45:41 +00:00
David Lawrence Ramsey
5fac171c8b in do_rcfile(), check for the rcfile's being a directory or device file
and reject it if it is, for consistency with file handling elsewhere;
also remove SYSCONFDIR #ifdef, as SYSCONFDIR should always be set


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3369 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-12 21:44:07 +00:00
David Lawrence Ramsey
4d72de73b1 add the ability to use bold text instead of reverse video text, via the
-D/--boldtext command line option and the "boldtext" rcfile option, and
reduce USE_UTF8 to a static bool in chars.c


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3368 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-12 15:27:40 +00:00
David Lawrence Ramsey
61a70388fe remove inaccurate comment
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3367 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-12 14:34:08 +00:00
David Lawrence Ramsey
af318aaa5c make all translator comments consistent
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3366 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-12 12:54:23 +00:00
David Lawrence Ramsey
cde9039335 change translator-specific comments in global.c and prompt.c so that
they show up in nano.pot


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3365 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-09 18:27:42 +00:00
David Lawrence Ramsey
be7fd8a9be clarify a comment
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3364 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-09 18:24:54 +00:00
David Lawrence Ramsey
0c4e30be7c add updated French manpages
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3363 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-09 18:16:48 +00:00
David Lawrence Ramsey
125b2f0be5 in write_file(), simplify the routine for closing the file just before
we indicate success on the statusbar


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3362 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-07 05:33:05 +00:00
David Lawrence Ramsey
adfecd24b4 simplify the previous fix; also, in write_file(), clarify the error
message when writing a temporary file for prepending fails


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3361 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-07 04:37:14 +00:00
David Lawrence Ramsey
2420794355 in write_file(), if the original file is unreadable when we try to save
the backup, we can save the original file unless we're prepending, so do
it


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3360 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-07 03:59:12 +00:00
David Lawrence Ramsey
d9ae1d6d6a yet another comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3359 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-07 03:57:23 +00:00
David Lawrence Ramsey
8055f0935f in open_file(), remove redundant wording in the error message when we
try to open a device file


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3358 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-06 22:57:22 +00:00
David Lawrence Ramsey
f6287eaf54 fix changelog entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3357 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-06 21:46:09 +00:00
David Lawrence Ramsey
ac8dfca510 in safe_tempfile(), don't ignore $TMPDIR if it's set but blank, for
consistency


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3356 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-06 21:41:48 +00:00
David Lawrence Ramsey
e5af25baef in write_file(), if we can't save the backup file for some reason, at
least save the original file, if possible, since that's better than
saving nothing


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3355 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-06 05:18:23 +00:00
David Lawrence Ramsey
9308e5210b still more comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3354 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-05 21:46:13 +00:00
David Lawrence Ramsey
5cbd990bf5 in parse_argument(), rename variable ptr_bak to ptr_save, for
consistency


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3353 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-05 21:28:52 +00:00
David Lawrence Ramsey
979de2309b open all files in binary mode for consistency and robustness
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3352 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-05 21:25:47 +00:00
David Lawrence Ramsey
b0588ae45e more comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3351 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-05 16:58:45 +00:00
David Lawrence Ramsey
ca70ff69ed comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3350 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-05 15:05:05 +00:00
David Lawrence Ramsey
dd87073020 update modification dates
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3349 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-05 13:43:51 +00:00
David Lawrence Ramsey
6d3485e040 various documentation updates
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3348 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-05 13:40:56 +00:00
David Lawrence Ramsey
22e15eb7ad in write_file(), don't free backupname before displaying it in a
statusbar error message


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3347 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-05 02:56:47 +00:00
David Lawrence Ramsey
71da75e92c in nanorc.sample, in the comment for the "whitespace" option, state
which character values work with which encodings


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3346 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-04-01 19:30:52 +00:00
David Lawrence Ramsey
d9d29c6220 add sample Python regexes to nanorc.sample
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3345 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-31 19:39:55 +00:00
David Lawrence Ramsey
eae8f93026 capitalization fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3344 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-31 19:39:17 +00:00
David Lawrence Ramsey
0320f5bbac in nanorc.sample, change the comment for the "whitespace" option so that
the hexadecimal character values are six digits long


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3343 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-31 14:37:55 +00:00
David Lawrence Ramsey
4e0984775a in nanorc.sample, nention in the comments that more than one start/end
regex can be included per line


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3342 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-30 20:43:44 +00:00
David Lawrence Ramsey
43ef2e8326 fix bounds in the "c-file" character regex
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3341 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-30 20:39:34 +00:00
David Lawrence Ramsey
11ff847cff further simplify the "c-file" regex for characters
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3340 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-30 20:34:20 +00:00
David Lawrence Ramsey
f420bea2ca in nanorc.sample, simplify the "c-file" regex for characters
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3339 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-30 20:26:58 +00:00
David Lawrence Ramsey
aa79925d6a in nanorc.sample, simplify the "shellscript" regex for command line
options


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3338 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-30 18:18:27 +00:00
David Lawrence Ramsey
b8d92feb62 in nanorc.sample, replace instances of \" with ", since quotes inside
string parameters don't need to be escaped with backslashes


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3337 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-30 18:12:50 +00:00
David Lawrence Ramsey
cdf3f22c23 in nanorc.sample, rweak the "c-file" regex for characters to accept '"'
again, as it's apparently valid


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3336 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-30 18:07:38 +00:00
David Lawrence Ramsey
04061e76ad update the copyright years of the manual and info pages to include 2006
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3335 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-30 07:07:48 +00:00
David Lawrence Ramsey
e38b808959 implement filename searches in the file browser
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3334 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-30 07:03:04 +00:00
David Lawrence Ramsey
ce5284b748 typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3333 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-30 07:01:57 +00:00
David Lawrence Ramsey
e3d40d30c7 Back to CVS
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3332 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-30 06:40:25 +00:00
David Lawrence Ramsey
fb7a6bde7b GNU nano 1.3.11, with the version number fixed
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3330 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-30 06:37:00 +00:00
David Lawrence Ramsey
1856ec4425 GNU nano 1.3.11
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3328 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-30 06:34:43 +00:00
David Lawrence Ramsey
3c43d3d688 replace VERMSG #define with PACKAGE_STRING #define (as defined by
autoconf)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3327 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-30 01:18:29 +00:00
David Lawrence Ramsey
1f479ee9fc more formatting fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3326 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-29 19:58:49 +00:00
David Lawrence Ramsey
804e107474 yet more cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3325 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-29 19:43:32 +00:00
David Lawrence Ramsey
81bfd8244b typo fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3324 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-26 17:41:47 +00:00
David Lawrence Ramsey
12c08ddf6e more cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3323 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-25 15:56:40 +00:00
David Lawrence Ramsey
e006c5131d cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3322 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-25 15:23:55 +00:00
David Lawrence Ramsey
354597f0c2 in get_get_buffer(), die gracefully if input fails MAX_BUF_SIZE times,
not (MAX_BUF_SIZE + 1) times


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3321 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-24 16:04:44 +00:00
David Lawrence Ramsey
b8d9fb551b remove unneeded #include
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3320 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-24 15:55:34 +00:00
David Lawrence Ramsey
04716301e0 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3319 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-24 15:32:52 +00:00
David Lawrence Ramsey
9efbdea09c fix breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3318 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-24 05:36:16 +00:00
David Lawrence Ramsey
017dde2c81 formatting fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3317 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-24 05:28:03 +00:00
David Lawrence Ramsey
572207da79 formatting fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3316 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-24 04:22:45 +00:00
David Lawrence Ramsey
231158d61a in do_browser(), make old_selected a size_t too, to match selected
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3315 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-23 23:17:27 +00:00
David Lawrence Ramsey
20323a82be comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3314 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-23 22:14:40 +00:00
David Lawrence Ramsey
e6958d517d cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3313 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-23 21:25:04 +00:00
David Lawrence Ramsey
27ad0cdb37 in do_browser(), make fileline and the static selected size_t's, since
the latter can hold the value of the former, and the former can be that
large


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3312 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-23 20:36:29 +00:00
David Lawrence Ramsey
9b33d51774 in get_key_buffer(), simplify the check for a lost input source, since
the errno check is unreliable


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3311 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-20 04:46:48 +00:00
David Lawrence Ramsey
ec8a055ffd cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3310 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-19 19:26:52 +00:00
David Lawrence Ramsey
9149325400 in get_key_buffer(), if we fail to get a character over MAX_BUF_SIZE
times in a row, hang up regardless of the value of errno; this fixes a
problem where nano doesn't terminate properly under xterm if the user
su's to root, runs nano, and then closes the terminal window


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3309 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-19 19:25:29 +00:00
David Lawrence Ramsey
1ec74ee30c remove unneeded blank line
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3308 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-19 19:14:30 +00:00
David Lawrence Ramsey
7a27f68c5c preemptively update the version number
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3307 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-16 19:31:18 +00:00
David Lawrence Ramsey
5115fa6767 in faq.html, change the character set to UTF-8, and remove broken links
to contributed RedHat nano packages


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3306 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-16 19:30:52 +00:00
David Lawrence Ramsey
167a4b7f9c in faq.html, update the Free Translation Project's address
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3305 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-16 19:16:28 +00:00
David Lawrence Ramsey
7369c75828 remove erroneous assert
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3304 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-16 17:45:12 +00:00
Jordi Mallach
6ac73c9408 Update Swedish credits.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3303 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-15 22:44:43 +00:00
Jordi Mallach
20494f514c Update Swedish from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3302 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-15 22:40:01 +00:00
David Lawrence Ramsey
ee150506d8 cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3301 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-12 19:47:48 +00:00
David Lawrence Ramsey
05454cfb75 preemptively update the version numbers of all manpages, and remove
unneeded comments from rnano.1


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3300 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-12 19:34:22 +00:00
David Lawrence Ramsey
3e7821006d mention that quotes inside string parameters don't need to be escaped
with backslashes in nanorc.5 and nanorc.sample


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3299 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-12 19:27:32 +00:00
Jordi Mallach
535dc9cd13 Updated Vietnamese translation by Phan Vinh Thinh.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3298 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-03-06 17:59:32 +00:00
David Lawrence Ramsey
ac0361df6e in do_writeout(), remove unneeded setting of currshortcut
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3297 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-24 19:38:20 +00:00
David Lawrence Ramsey
6816007242 make sure browser_refresh() is used when refreshing or doing tab
completion at the prompt in the file browser


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3296 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-18 21:32:29 +00:00
David Lawrence Ramsey
1f907c7413 rename browser_draw() to browser_refresh() for consistency
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3295 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-10 19:02:30 +00:00
David Lawrence Ramsey
d83af2fea7 fix file browser breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3294 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-10 03:27:48 +00:00
David Lawrence Ramsey
d4bae13d8d move the browser drawing routines to a separate function, browser_draw()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3293 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-09 23:26:26 +00:00
David Lawrence Ramsey
a8a9050083 really fix input parsing in the file browser
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3292 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-09 22:53:54 +00:00
David Lawrence Ramsey
8326254643 go back to using a while loop in get_prompt_string(), as it's simpler
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3291 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-09 22:42:14 +00:00
David Lawrence Ramsey
162ed2af24 in get_prompt_string(), initialize finished to FALSE so that the
do/while loop works properly


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3290 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-09 22:35:04 +00:00
David Lawrence Ramsey
3326603341 in get_prompt_string(), redraw the prompt and set finished to FALSE when
NANO_HELP_KEY is pressed, so that we don't leave the prompt, enter the
help browser, and restart the prompt after leaving it; this will
properly preserve the cursor position after doing the last of these


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3289 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-09 21:43:14 +00:00
David Lawrence Ramsey
08f4974093 in shortcut_init(), remove erroneous handling of the "Get Help" shortcut
in the file browser shortcut list


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3288 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-08 20:33:45 +00:00
David Lawrence Ramsey
591c409f3f in get_prompt_string(), use a do/while loop instead of a while loop, for
consistency


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3287 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-08 20:14:49 +00:00
David Lawrence Ramsey
c0dcdf43c6 in do_browser(), properly restore the file list display after returning
from the help browser at the "Go To Directory" prompt, and rename
variable j to i, for consistency


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3286 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-08 19:27:02 +00:00
David Lawrence Ramsey
47d917eea7 remove redundant code
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3285 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-08 05:16:32 +00:00
David Lawrence Ramsey
8a1a886fbe add another missing blank line
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3284 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-08 05:01:58 +00:00
David Lawrence Ramsey
5443b46241 add missing blank lines
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3283 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-08 04:02:30 +00:00
David Lawrence Ramsey
9b268c2ebf fix compilation problem
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3282 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-07 21:16:46 +00:00
David Lawrence Ramsey
33f2a08b5c update copyright years
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3281 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-07 21:11:49 +00:00
David Lawrence Ramsey
9d8c284135 allow tab completion of directories at the "Go To Directory" prompt
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3280 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-07 21:11:05 +00:00
David Lawrence Ramsey
ef9dc83a4b fix file browser breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3279 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-07 20:10:28 +00:00
David Lawrence Ramsey
3d8d29d08a another formatting fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3278 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-07 18:35:26 +00:00
David Lawrence Ramsey
fc8e5cb0f2 cosmetic and formatting fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3277 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-07 18:32:22 +00:00
David Lawrence Ramsey
24e0a465c1 in do_browser(), properly set currshortcut back to the file browser
shortcut list after a "Go To Directory" prompt


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3276 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-07 05:14:55 +00:00
David Lawrence Ramsey
91a2a69c4f rework input parsing in the file browser to be more flexible
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3275 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-07 04:41:44 +00:00
David Lawrence Ramsey
9ffe78aa57 update copyright years
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3274 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-03 18:59:17 +00:00
David Lawrence Ramsey
99e3733fc6 fix changelog entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3273 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-03 04:02:25 +00:00
David Lawrence Ramsey
114cfb63f4 in display_string(), fix memory corruption problems caused by not
allocating enough space for converted when a line ends in a tab(s) and
we're not in UTF-8 mode


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3272 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-03 03:58:49 +00:00
David Lawrence Ramsey
1f104f8079 fix a comment in nano.h and a minor memory leak in display_string()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3271 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-03 03:51:51 +00:00
David Lawrence Ramsey
66d3ebf6a6 fix potential infinite loop in mbrevstrpbrk()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3270 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-02-02 22:30:40 +00:00
David Lawrence Ramsey
3a5e6f9317 handle Shift-Delete properly when the -d option is used
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3266 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-01-30 21:23:51 +00:00
David Lawrence Ramsey
475c402b65 in parse_kbinput(), interpret Shift-Begin, Shift-Delete, Shift-End,
Shift-Home, Shift-Insert, and Shift-Suspend as Begin, Delete, End, Home,
Insert, and Suspend, respectively, regardless of whether --rebindkeypad
is used


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3265 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-01-30 01:32:41 +00:00
David Lawrence Ramsey
4a2e0000f7 fix more bracket matching breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3264 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-01-28 06:04:59 +00:00
David Lawrence Ramsey
a6eb8480ea really fix the previous display problem with searches that move the
cursor offscreen and from a page other than the first one onto a
different page by reverting the erroneous change to edit_scroll() and
adding the proper fix to edit_redraw()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3263 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-01-10 07:51:49 +00:00
David Lawrence Ramsey
76f9485b02 in ngetdelim(), do sanity checks manually again instead of in an assert,
and set errno to EINVAL as well as return -1 if they fail; this matches
the manual page


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3262 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-01-09 03:23:29 +00:00
David Lawrence Ramsey
db2dc81cee fix multibyte bracket search breakage, and add documentation fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3261 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-01-06 22:35:52 +00:00
David Lawrence Ramsey
1a16df9284 fix "matchbrackets" breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3260 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-01-06 22:04:38 +00:00
David Lawrence Ramsey
d89617fb17 allow specifying matching bracket characters other than the default via
the "matchbrackets" rcfile option


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3259 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-01-06 21:51:10 +00:00
David Lawrence Ramsey
a248863b43 rework the bracket searching code to handle multibyte bracket characters
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3258 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-01-06 07:10:30 +00:00
David Lawrence Ramsey
5978f9b11d in mbstrchr(), make parameter c const
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3257 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-01-06 05:54:44 +00:00
David Lawrence Ramsey
5329f23345 sort the default strings for brackets and punct, and the "or" atom in
the default regex string for quotestr, in order according to ASCII, and
add minor related documentation updates


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3256 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-01-03 04:53:41 +00:00
David Lawrence Ramsey
cb475886b1 clarify another comment
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3255 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-01-02 17:09:35 +00:00
David Lawrence Ramsey
47cfd197b8 in edit_scroll(), redraw the lines before and after the scrolled region
even if the scrolled region was only one line; this fixes a display
problem that occurs after doing a search that scrolls the screen down
one line and leaves the cursor on the last line of the screen, in which
case we need to update the line after the scrolled region


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3254 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-01-02 04:30:33 +00:00
David Lawrence Ramsey
5b7b3e3c9c cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3253 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-12-31 21:22:54 +00:00
David Lawrence Ramsey
30bdadd4d5 revert previous erroneous change, and clarify comments
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3252 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-12-31 21:08:10 +00:00
David Lawrence Ramsey
89b6e6b9dd in justify_format(), remove redundant character parsing
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3251 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-12-31 20:37:56 +00:00
David Lawrence Ramsey
ce029f2b11 remove unnecessary #ifdef around termios.h #include in nano.c
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3250 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-12-28 05:01:00 +00:00
David Lawrence Ramsey
1e73bcfe29 fix inaccurate comment
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3249 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-12-23 20:18:06 +00:00
David Lawrence Ramsey
da959919fc Back to CVS
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3248 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-12-23 16:15:34 +00:00
David Lawrence Ramsey
2cd986cdef GNU nano 1.3.10
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3246 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-12-23 16:08:19 +00:00
David Lawrence Ramsey
5e4d81c99e in README.CVS, mention that the minimum required version of groff is
1.12, since that's the first version that supports generating HTML


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3245 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-12-23 16:07:00 +00:00
David Lawrence Ramsey
628c4e2928 French manpage updates.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3244 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-12-23 15:46:26 +00:00
David Lawrence Ramsey
e57bd4993e in parse_line_column(), simplify parsing of the column number
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3243 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-12-23 03:15:12 +00:00
Jordi Mallach
bf38aad0be Bulgarian translation from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3242 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-12-21 20:08:59 +00:00
Jordi Mallach
7859d5254c Translation updates from the TP: ca, fr, ms, zh_TW.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3241 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-12-21 20:05:30 +00:00
David Lawrence Ramsey
5aaaad4a63 in README.CVS, update the given cvs commands so that they work again
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3240 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-12-15 04:46:13 +00:00
Jordi Mallach
abaa9a81f7 Updated it, nl and de from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3239 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-12-12 23:08:14 +00:00
David Lawrence Ramsey
b0e04c0de3 a few last comment and consistency fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3238 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-12-08 07:24:54 +00:00
David Lawrence Ramsey
6d6a36c647 add descriptive comments to pretty much all functions and major
variables that don't have them, plus a few miscellaneous minor fixes


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3237 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-12-08 07:09:08 +00:00
David Lawrence Ramsey
034b994eb5 since proto.h includes nano.h, and nano.h includes config.h first,
include proto.h first and remove redundant includes of config.h in all
non-header source files


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3236 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-12-08 02:47:10 +00:00
David Lawrence Ramsey
8befda6490 readd RETSIGTYPE return types for signal handlers, since any problems
with its being defined as the wrong type aren't nano's fault


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3235 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-12-06 19:39:56 +00:00
David Lawrence Ramsey
24777c0740 fix compilation with --enable-debug, and remove unneeded assert
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3234 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-12-01 05:49:08 +00:00
David Lawrence Ramsey
a685468a18 efficiency and comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3233 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-30 21:19:42 +00:00
David Lawrence Ramsey
26ebd35d54 in ngetdelim(), do sanity checks in an assert instead of checking them
manually and returning -1 if they fail


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3232 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-30 19:33:56 +00:00
David Lawrence Ramsey
13b6115894 update the Free Software Foundation's address as needed in the copyright
notices taken from other sources


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3231 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-30 18:57:05 +00:00
David Lawrence Ramsey
783062a0cc cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3230 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-30 16:41:54 +00:00
David Lawrence Ramsey
c7c04bb665 in brak_line(), in the surrounding #ifdef, replace the combination of
!DISABLE_JUSTIFY and !DISABLE_WRAPPING with !DISABLE_WRAPJUSTIFY, for
consistency


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3229 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-29 21:30:00 +00:00
David Lawrence Ramsey
3239ff22c8 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3228 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-29 20:01:06 +00:00
David Lawrence Ramsey
e6fb106cf0 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3227 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-29 19:01:04 +00:00
David Lawrence Ramsey
ad1b64cdfa in do_justify(), renumber after justifying each individual paragraph,
since find_paragraph() needs the line numbers to be right as well as
edit_refresh(); this fixes a potential segfault when doing full justify
with auto-indent turned on


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3226 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-29 19:00:09 +00:00
David Lawrence Ramsey
79383beef3 revert last changes, as they make full justify and justify act
differently


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3225 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-29 18:34:45 +00:00
David Lawrence Ramsey
9a065c089f in find_paragraph(), add parameter begin, the line that we can't move
further back than when searching for a paragraph; this is needed to
ensure that we don't justify the same lines more than once if
auto-indent is turned on, and the indentation of what should be the
previous paragraph matches that of what should be the current paragraph


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3224 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-29 18:25:53 +00:00
David Lawrence Ramsey
1932dfb131 another comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3223 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-29 05:52:49 +00:00
David Lawrence Ramsey
eae8571ae4 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3222 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-29 05:48:06 +00:00
David Lawrence Ramsey
2e2112cad1 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3221 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-29 05:39:31 +00:00
David Lawrence Ramsey
5da68ee193 in execute_command(), instead of hardcoding /bin/sh as the shell to use
when executing a command, use $SHELL, and only fall back to /bin/sh if
$SHELL isn't set


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3220 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-29 05:21:06 +00:00
David Lawrence Ramsey
da1f55cec7 add missing update
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3219 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-29 04:27:07 +00:00
David Lawrence Ramsey
43eee6ed44 sort more configure options consistently
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3218 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-29 04:25:57 +00:00
David Lawrence Ramsey
ace033d834 in configure.ac, disable wrapping entirely when --enable-tiny is used,
as it matches the FAQ, it makes nano even smaller, and it eliminates the
need for --disable-wrapping-as-root in that case (in which it's
impossible to turn wrapping back on without nanorc support)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3217 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-29 04:17:53 +00:00
David Lawrence Ramsey
5453b0accf in version(), if DISABLE_WRAPPING is defined, the code in
DISABLE_ROOTWRAP #ifdefs isn't included, so don't display
"--disable-wrapping-as-root" in that case


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3216 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-29 04:16:43 +00:00
David Lawrence Ramsey
315eb3280a adjust copyright notices in all source files to account for Chris'
reassigning the 2005-2006 copyright on nano to me


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3215 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-28 19:35:29 +00:00
David Lawrence Ramsey
b4e5c02474 more miscellaneous do_wrap() fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3214 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-25 13:48:09 +00:00
David Lawrence Ramsey
4db1b099dd properly update the revision date
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3213 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-23 05:47:06 +00:00
David Lawrence Ramsey
b919f37c85 merge one last update
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3212 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-23 05:46:10 +00:00
David Lawrence Ramsey
219a814de2 remove redundant code
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3211 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-22 22:08:01 +00:00
David Lawrence Ramsey
615f4c71c0 tweak do_wrap() to remove the assumption that the file always ends in a
magicline


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3210 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-22 21:48:24 +00:00
David Lawrence Ramsey
b9b2fd52ff in break_line(), only include the newline parameter if DISABLE_HELP
isn't defined, as it's only used then


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3209 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-22 21:13:36 +00:00
David Lawrence Ramsey
708de360dc in configure.ac, clarify description of --disable-speller
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3208 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-22 20:24:22 +00:00
David Lawrence Ramsey
853a44d3f0 preemptively update the version number
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3207 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-21 21:45:07 +00:00
David Lawrence Ramsey
d1ab408965 in faq.html, clarify section 5.3 to better explain how to enable Unicode
support, and remove the mention of quirks, since they turned out to not
be a nano problem


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3206 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-21 20:08:42 +00:00
David Lawrence Ramsey
fa35aef359 merge a few minor updates from nano.1 into rnano.1
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3205 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-21 16:16:38 +00:00
Jordi Mallach
7949e6ae09 Add rnano manpage from Thijs.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3204 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-21 09:36:11 +00:00
David Lawrence Ramsey
4ffdb1bbec in nano.1, make one non-bold instance of "nano" bold, for consistency
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3203 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-21 03:36:29 +00:00
David Lawrence Ramsey
7a07cdb51e in faq.html, add a new section 5.3 to explain the status of nano's
Unicode support


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3202 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-19 06:14:31 +00:00
David Lawrence Ramsey
ccd1b7b50a miscellaneous minor fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3201 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-18 20:21:48 +00:00
David Lawrence Ramsey
d15c92d41a more comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3200 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-17 18:58:56 +00:00
David Lawrence Ramsey
8dec783333 comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3199 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-17 04:13:01 +00:00
David Lawrence Ramsey
87397ba37b add missing documentation
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3198 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-17 03:53:58 +00:00
David Lawrence Ramsey
391cef12c9 documentation fix: the LGPLed ngetdelim() and ngetline() functions are
converted to the GPL not only to avoid including a copy of the LGPL, but
also because the changes made to integrate these functions with nano
make them dependent on nano's GPLed functions and hence useless
elsewhere


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3197 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-17 03:52:00 +00:00
David Lawrence Ramsey
ad074011c9 in get_prompt_string(), adjust #ifdefs to leave out disabled keys
entirely instead of keeping enough code to just ignore them


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3196 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-16 21:34:46 +00:00
David Lawrence Ramsey
c009ec56f5 breakage and comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3195 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-16 13:57:21 +00:00
David Lawrence Ramsey
5ab56eaa8d refactor the statusbar prompt's bracket searching code to be closer to
the edit window's bracket searching code


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3194 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-16 13:45:41 +00:00
David Lawrence Ramsey
45d344b72c comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3193 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-16 08:14:16 +00:00
David Lawrence Ramsey
29fb951fcd miscellaneous documentation fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3192 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-16 07:35:01 +00:00
David Lawrence Ramsey
4580f1502c add missing changelog entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3191 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-16 06:42:11 +00:00
David Lawrence Ramsey
cf9c34acef only include code related to whole word searches when DISABLE_SPELLER
isn't defined, as only the internal spell checker uses it


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3190 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-16 05:59:06 +00:00
David Lawrence Ramsey
bd0b3cd39b in do_justify(), don't save current_y and restore it if the user
unjustifies, as the reset_cursor() called by edit_refresh() after
restoring edittop and current will ensure that current_y is restored to
its original value


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3189 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-16 04:41:31 +00:00
David Lawrence Ramsey
eba0711939 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3188 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-16 04:26:33 +00:00
David Lawrence Ramsey
c499382fec add the ability to do bracket searches at the statusbar prompt
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3187 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-16 04:14:03 +00:00
David Lawrence Ramsey
ebe4b3b52e remove unneeded variable
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3186 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-16 03:54:22 +00:00
David Lawrence Ramsey
cfffbf71ce in reset_statusbar_cursor(), fix cursor placement problem by modeling
the code more closely after reset_cursor()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3185 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-16 03:14:11 +00:00
David Lawrence Ramsey
9d3a468ad8 in do_statusbar_input(), fix misplaced break when handling
NANO_VERBATIM_KEY


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3184 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-16 02:45:10 +00:00
David Lawrence Ramsey
c5c5230b9d overhaul the bracket searching code so that it no longer requires regex
support to work, and add some miscellaneous search code cleanups


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3183 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-15 23:45:29 +00:00
David Lawrence Ramsey
6c860c07c8 remove unneeded blank line
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3182 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-15 21:58:06 +00:00
David Lawrence Ramsey
1c3b211142 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3181 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-15 21:29:05 +00:00
David Lawrence Ramsey
b299a6a0d9 cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3180 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-15 20:32:18 +00:00
David Lawrence Ramsey
bc8b7d74eb in mbstrchr(), detect the case where the character isn't found in the
string more accurately


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3179 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-15 19:01:07 +00:00
David Lawrence Ramsey
9c92634388 cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3178 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-15 18:42:56 +00:00
David Lawrence Ramsey
979286c65e comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3177 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-15 06:47:22 +00:00
David Lawrence Ramsey
ebe3425f9f rename the NANO_SMALL #define to NANO_TINY
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3176 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-15 03:17:35 +00:00
David Lawrence Ramsey
023db6aa77 per Mike Frysinger's patch, don't install the localized versions of the
manpages if nano is built with --disable-nls


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3175 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-15 02:39:20 +00:00
David Lawrence Ramsey
41dd9122fe formatting fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3174 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-15 02:09:03 +00:00
David Lawrence Ramsey
a1064d4279 for functions originally adapted from other sources, invoke LGPL clause
3 to convert all LGPLed functions to GPLed ones, so that we don't have
to include a copy of the LGPL


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3173 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-14 23:02:03 +00:00
David Lawrence Ramsey
3f7c8c5158 fix copyright years on source files; all functions in browser.c were
originally added in 2001; the oldest function in color.c is
do_colorinit() (now color_init()), which was originally added in 2001;
the oldest function in chars.c is revstrstr(), which was originally
added in 2001; the oldest function in help.c is do_help(), which was
originally added in 2000; the oldest function in prompt.c is statusq()
(now do_prompt()), which was originally added before 0.6.6, which was
apparently in 1999; all functions in rcfile.c were originally added in
2001; one of the oldest functions in search.c is do_search(), which was
originally added in 0.2.7, which was apparently in 1999; and one of the
oldest functions in text.c is do_wrap(), which was originally added in
0.3.1, which was apparently in 1999; also, for functions originally
adapted from other sources, add notices from the original files, as we
do with the tab completion functions adapted from busybox


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3172 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-14 22:20:35 +00:00
David Lawrence Ramsey
bbac1bb047 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3171 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-14 21:32:42 +00:00
David Lawrence Ramsey
aa20fcf7b0 remove unneeded blank line
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3170 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-13 07:05:37 +00:00
David Lawrence Ramsey
eb5e08fb98 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3169 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-12 20:04:18 +00:00
David Lawrence Ramsey
6533e235e8 when building, automatically generate an HTML version of the info page,
nano.html


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3168 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-12 07:50:03 +00:00
David Lawrence Ramsey
de39a2b05b in nano.texi, fix inconsistent punctuation
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3167 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-12 07:23:39 +00:00
David Lawrence Ramsey
fb0c3f85de in get_page_start(), fix test so that we scroll through the line in
8-character chunks when COLS is greater than 8, not when COLS is greater
than 9


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3166 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-12 05:20:14 +00:00
David Lawrence Ramsey
a24da6944c changelog fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3165 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-11 17:05:27 +00:00
David Lawrence Ramsey
b3c846cd98 in nano.texi, add more wording fixes, sort the configure options more
consistently, and add missing --disable-utf8 option


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3164 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-11 17:04:17 +00:00
David Lawrence Ramsey
1520350e20 in nano.texi, per Mike Frysinger's patch, add missing configure options,
so that all of them are documented


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3163 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-11 16:42:45 +00:00
David Lawrence Ramsey
da0691b4ad comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3162 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-11 05:21:38 +00:00
David Lawrence Ramsey
d82dae0925 fix the last of the breakage (I hope) in find_paragraph() and
do_justify()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3161 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-11 05:13:28 +00:00
David Lawrence Ramsey
bdff665b5d fix still more find_paragraph() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3160 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-11 04:14:33 +00:00
David Lawrence Ramsey
1be131a9f9 fix more find_paragraph() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3159 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-11 03:55:52 +00:00
David Lawrence Ramsey
8b203d6f22 fix yet more do_justify() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3158 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-11 03:17:44 +00:00
David Lawrence Ramsey
53f641f909 fix still more do_justify() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3157 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-10 21:57:56 +00:00
David Lawrence Ramsey
57f1bbd991 fix more do_justify() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3156 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-10 21:53:46 +00:00
David Lawrence Ramsey
cd8f73521e fix breakage in both backup_lines() and do_justify(); the latter's
return value is unneeded, as current will point to the same line when
it's done, and making first_par_line point to current in the former
ensures that the two will properly stay in sync


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3155 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-10 21:20:32 +00:00
David Lawrence Ramsey
52161ee3a1 more cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3154 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-10 19:56:26 +00:00
David Lawrence Ramsey
874ec8f259 fix more do_justify() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3153 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-10 19:28:27 +00:00
David Lawrence Ramsey
985d586c3a revert change to do_justify(), since it's used when fileage may be
temporarily out of range


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3152 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-10 16:46:50 +00:00
David Lawrence Ramsey
ae9eea7634 use more intuitive descriptions for the scrolling keys
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3151 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-10 07:40:55 +00:00
David Lawrence Ramsey
e74851451d more comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3150 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-10 07:11:51 +00:00
David Lawrence Ramsey
ad7cf31cbf comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3149 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-10 06:25:01 +00:00
David Lawrence Ramsey
75689f3901 fix still more find_paragraph() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3148 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-10 06:19:47 +00:00
David Lawrence Ramsey
82b5debb1b more do_justify() fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3147 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-10 06:07:57 +00:00
David Lawrence Ramsey
b2d1c5f5b2 fix yet more do_justify() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3146 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-10 06:01:41 +00:00
David Lawrence Ramsey
036a9d5341 comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3145 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-10 05:26:37 +00:00
David Lawrence Ramsey
b885c9c5e9 revert change to edit_update(), since it's used when fileage may be
temporarily out of range, and fix a comment


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3144 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-10 05:20:25 +00:00
David Lawrence Ramsey
e99223dd25 tweak do_wrap(), remove_magicline(), edit_scroll(), and edit_update() to
rely on fileage and filebot instead of NULL for their checks to detect
the top or bottom of the file


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3143 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-10 04:27:30 +00:00
David Lawrence Ramsey
6195f7c34c comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3142 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-10 04:14:51 +00:00
David Lawrence Ramsey
653a5a3a45 tweak do_justify() to rely on fileage instead of NULL for its check to
detect the top of the file


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3141 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-10 04:03:05 +00:00
David Lawrence Ramsey
e8d505ba02 fix still *more* backup_lines() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3140 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-10 03:40:45 +00:00
David Lawrence Ramsey
5d6f127948 fix still more backup_lines() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3139 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-10 03:32:59 +00:00
David Lawrence Ramsey
f0575cfa10 fix still more backup_lines() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3138 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 23:27:51 +00:00
David Lawrence Ramsey
af5a9997fd more do_justify() breakage fixes, and miscellaneous comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3137 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 23:06:44 +00:00
David Lawrence Ramsey
c82bc8ba84 fix more backup_lines() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3136 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 22:59:51 +00:00
David Lawrence Ramsey
1836a0fb7a fix break_lines() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3135 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 22:42:37 +00:00
David Lawrence Ramsey
12090dd320 fix more find_paragraph() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3134 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 21:53:21 +00:00
David Lawrence Ramsey
2101403824 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3133 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 20:33:42 +00:00
David Lawrence Ramsey
5455b6af46 fix more do_justify() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3132 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 20:17:12 +00:00
David Lawrence Ramsey
9bedc4b71c fix breakage in find_paragraph() and do_justify()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3131 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 19:51:48 +00:00
David Lawrence Ramsey
47b693e582 add comment
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3130 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 19:22:29 +00:00
David Lawrence Ramsey
2c5d0ecbb3 tweak find_paragraph() and do_justify() to remove the assumption that
the file always ends in a magicline; note that the latter isn't
completely fixed yet


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3129 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 19:06:01 +00:00
David Lawrence Ramsey
5c33e88b25 finish tweaking backup_lines() to remove the assumption that the file
always ends in a magicline, and add documentation fixes


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3128 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 18:58:04 +00:00
David Lawrence Ramsey
8bd960bbc9 minor backup_lines() cleanups
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3127 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 18:49:16 +00:00
David Lawrence Ramsey
0083bd29d2 tweak begpar() to rely on fileage instead of NULL for its check to
detect the top of the file, and make it return NULL if foo is NULL, just
as inpar() does


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3126 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 18:26:44 +00:00
David Lawrence Ramsey
ce51bb2509 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3125 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 17:01:33 +00:00
David Lawrence Ramsey
c1a28fa9ae in get_next_filename(), store the value of digits(ULONG_MAX) in a
static, since it doesn't change and hence doesn't need to be
recalculated


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3124 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 15:13:00 +00:00
David Lawrence Ramsey
31d7b3667c tweak do_para_end() to remove the assumption that the file always ends
in a magicline


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3123 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 04:20:55 +00:00
David Lawrence Ramsey
32bd29e3cc cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3122 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 03:44:23 +00:00
David Lawrence Ramsey
970a809357 remove unneeded code
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3121 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 03:37:50 +00:00
David Lawrence Ramsey
53bd1ddad7 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3120 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 02:23:54 +00:00
David Lawrence Ramsey
212ab782df simplify cut_line() further
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3119 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 02:13:07 +00:00
David Lawrence Ramsey
1903713225 add prompt.c to the list of translated files, since it now has
translatable strings


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3118 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 00:34:52 +00:00
David Lawrence Ramsey
a016d1939d comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3117 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 00:25:30 +00:00
David Lawrence Ramsey
b387137af7 in cut_line(), since placewewant will always be zero after the line is
cut, set it to zero directly instead of assigning it the value of
xplustabs()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3116 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 00:23:12 +00:00
David Lawrence Ramsey
0f6236f556 *really* make deleting and cutting text consistent with each other, and
fix comments


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3115 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-09 00:08:29 +00:00
David Lawrence Ramsey
c9820ac098 more fixes for files that don't end in magiclines: make cut_line() cut
the text of the current line (if any), minus the nonexistent newline,
when we're on the last line of the file, and make sure again that the
file isn't marked as modified if the magicline is deleted and we're
supposed to have one, as it's more consistent that way (a marked cut of
the magicline adds a newline to the cutbuffer, while deleting the
magicline adds nothing)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3114 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-08 23:59:29 +00:00
David Lawrence Ramsey
0ed7171138 cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3113 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-08 23:09:47 +00:00
David Lawrence Ramsey
4ed8134699 revert last change, as the new bahavior is consistent with the behavior
when you cut the magicline with the mark


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3112 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-08 23:08:08 +00:00
David Lawrence Ramsey
d84cfb03df tweak do_delete() to not mark the file as modified if we delete the
newline before filebot and a magicline is added as a result, as it did
before the NO_NEWLINES flag was added


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3111 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-08 22:59:10 +00:00
David Lawrence Ramsey
126cc1c8dd add missing changelog entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3110 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-08 19:40:59 +00:00
David Lawrence Ramsey
9c984e8e63 in do_alt_speller(), move the code that replaces the text of the current
file with the text of the spell-checked file into its own function,
replace_buffer()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3109 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-08 19:15:58 +00:00
David Lawrence Ramsey
1e0e235cbb make do_int_spell_fix() and do_alt_speller() take the NO_NEWLINES flag
into account


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3108 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-08 18:34:12 +00:00
David Lawrence Ramsey
8779a17ffe initialize the static pid_t pid in text.c, just in case
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3107 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-08 16:45:22 +00:00
David Lawrence Ramsey
f400c23279 tweak do_alt_speller() to remove the assumption that the file always
ends in a magicline


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3106 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-08 16:37:29 +00:00
David Lawrence Ramsey
eb02e3df4c remove unneeded blank line
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3105 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-08 04:55:59 +00:00
David Lawrence Ramsey
c0181c95ee cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3104 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-08 02:27:11 +00:00
David Lawrence Ramsey
f1a717291b correction: in mbwidth(), use the width of Unicode U+FFFD (Replacement
Character) instead of hardcoding a width of one for unprintable
characters


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3103 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-08 02:24:17 +00:00
David Lawrence Ramsey
4a8c9b6124 in mbwidth(), if wcwidth() returns -1 for the character passed in, treat
the character as being one column wide instead of zero columns wide,
since there are display problems that crop up with the latter approach


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3102 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-08 02:20:22 +00:00
David Lawrence Ramsey
069674c2d5 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3101 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-08 02:07:13 +00:00
David Lawrence Ramsey
ea9d03f135 make sure we refresh the statusbar prompt text when tab-completing or
moving through history


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3100 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-08 01:49:14 +00:00
David Lawrence Ramsey
e19449ec50 actually use statusbar_pww in the statusbar prompt code to cut down on
redundant updates, add related functions to do that, and rename a few of
the statusbar prompt functions for consistency


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3099 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-07 21:45:44 +00:00
David Lawrence Ramsey
af3314c376 add the statusbar prompt's equivalent of placewewant,statusbar_pww, to
prompt.c, and convert (most of) its functions to use it


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3098 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-07 06:32:07 +00:00
David Lawrence Ramsey
b3c6b40550 in update_line(), remove now-unneeded logic that set the index parameter
to zero if the fileptr parameter didn't point to current


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3097 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-07 06:20:02 +00:00
David Lawrence Ramsey
37ddfa9dbd move do_verbatim_input() from nano.c to text.c, since it's an advanced
text-based operation


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3096 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-07 06:06:05 +00:00
David Lawrence Ramsey
64844b6959 reorder functions
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3095 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-05 20:04:16 +00:00
David Lawrence Ramsey
43fff01ede move functions specific to the file browser to their own source file,
browser.c


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3094 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-05 20:01:11 +00:00
David Lawrence Ramsey
46f5665da2 tweak do_last_line() to remove the assumption that the file always ends
in a magicline


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3093 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-05 17:50:06 +00:00
David Lawrence Ramsey
c0e54d16cb fix changelog entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3092 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-05 17:37:39 +00:00
David Lawrence Ramsey
a0168ca896 add new -L/--nonewlines command line option, and new "nonewlines" rcfile
option, to control whether nano adds magiclines to the ends of files


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3091 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-05 17:35:44 +00:00
David Lawrence Ramsey
c3b3b9a28f tweak open_buffer() and read_file() to remove the assumption that the
file always ends in a magicline


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3090 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-05 17:20:39 +00:00
David Lawrence Ramsey
6619c43b88 formatting fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3089 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-05 06:08:44 +00:00
David Lawrence Ramsey
4eeff48c5f cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3088 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-05 04:59:00 +00:00
David Lawrence Ramsey
b7dc8f3a12 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3087 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-04 16:34:51 +00:00
David Lawrence Ramsey
72ad7dc602 fix inconsistent wording in nano.texi
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3086 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-04 06:43:02 +00:00
David Lawrence Ramsey
6a0ea821e9 fix breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3085 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-04 06:21:39 +00:00
David Lawrence Ramsey
a50e36c6b2 simplify
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3084 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-04 05:59:41 +00:00
David Lawrence Ramsey
306049666a tweak write_file() to remove the assumption that the file always ends in
a magicline, and remove a bit of apparently unneeded logic from
read_file()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3083 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-04 05:44:01 +00:00
David Lawrence Ramsey
cf0efaab5d remove unneeded assert in do_rcfile()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3082 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-04 04:10:09 +00:00
David Lawrence Ramsey
29bf57ff67 revert erroneous change
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3081 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-03 21:38:51 +00:00
David Lawrence Ramsey
2ffdea4fc1 tweak a few functions to remove the assumption that the file always ends
in a magicline, and to rely on fileage and filebot instead of NULL for
their checks to detect the top or bottom of the file


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3080 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-03 21:08:39 +00:00
David Lawrence Ramsey
38ebba11b7 move do_yesno() to prompt.c too
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3079 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-03 21:07:24 +00:00
David Lawrence Ramsey
626bcd7cc2 remove unneeded sys/wait.h #include from files.c
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3078 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-03 02:45:54 +00:00
David Lawrence Ramsey
ee11c6a62f add missing stdio.h #include to text.c too
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3077 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-02 19:42:02 +00:00
David Lawrence Ramsey
00cc565ddd move check_linenumbers(), dump_buffer(), and dump_buffer_reverse() from
winio.c to utils.c too


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3076 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-02 15:44:01 +00:00
David Lawrence Ramsey
305c6459e9 in do_yesno(), make mouse clicks on the Yes/No/All shortcuts work properly when the MORE_SPACE flag is set
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3075 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-02 15:32:30 +00:00
David Lawrence Ramsey
d420b5a50c more function reordering, plus comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3074 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-01 23:00:56 +00:00
David Lawrence Ramsey
c359301955 reorder functions
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3073 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-01 20:11:55 +00:00
David Lawrence Ramsey
7e2d673b5f move functions specific to the help browser to their own source file,
help.c, and adjust related variables accordingly


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3072 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-01 19:32:45 +00:00
David Lawrence Ramsey
c85e4f43b5 formatting fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3071 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-01 19:29:56 +00:00
David Lawrence Ramsey
56a8aad848 properly handle the case where the user resized the window while at the
statusbar prompt, in which case prompt won't be NULL when statusq() is
called


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3070 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-01 19:06:01 +00:00
David Lawrence Ramsey
bdc038db14 add missing changelog update
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3069 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-01 18:44:29 +00:00
David Lawrence Ramsey
744e97911c fix breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3068 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-01 18:39:07 +00:00
David Lawrence Ramsey
143b8c7b13 free prompt when it isn't used, and add missing stdio.h #includes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3067 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-01 18:35:47 +00:00
David Lawrence Ramsey
2b9d6a0e6c move get_page_start() from winio.c to utils.c too, and fix a few
comments


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3066 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-01 17:45:31 +00:00
David Lawrence Ramsey
d24d0a43e8 move functions specific to the statusbar prompt to their own source
file, prompt.c, and adjust related variables accordingly


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3065 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-11-01 17:37:44 +00:00
David Lawrence Ramsey
81c4e187f5 move xplustabs(), actual_x(), strnlenpt(), and strlenpt() from winio.c
to utils.c, as they're really utility functions


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3064 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-31 23:07:58 +00:00
David Lawrence Ramsey
67d1951e4d refactor the statusbar code to have and use statusbar_xplustabs(), for
consistency


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3063 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-31 19:36:37 +00:00
David Lawrence Ramsey
3e477263da in nanoget_repaint(), rename parameter inputbuf to buf, for consistency
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3062 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-31 01:32:46 +00:00
David Lawrence Ramsey
26f61a4503 remove declaration of the now-static char* prompt
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3061 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-28 17:14:11 +00:00
David Lawrence Ramsey
f726053325 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3060 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-28 17:12:58 +00:00
David Lawrence Ramsey
a0aff67a4d rename edit_add() to edit_draw(), and rename its parameter yval to line
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3059 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-27 20:10:45 +00:00
David Lawrence Ramsey
377098e617 in nanorc.sample, also tweak the "c-file" regex for characters to
properly reject '"' and '''


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3058 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-27 19:06:47 +00:00
David Lawrence Ramsey
20186f8849 in nanorc.sample, tweak the "c-file" regex for characters to properly
handle '\"'


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3057 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-27 18:59:23 +00:00
David Lawrence Ramsey
07a47017d7 fix inaccurate comment
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3056 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-27 15:33:05 +00:00
David Lawrence Ramsey
52320f344d make sure we don't treat a click on an empty area of the shortcut list
as a statusbar prompt click


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3055 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-27 15:27:09 +00:00
David Lawrence Ramsey
b5776ac698 make prompt a static instead of a global, since it's only used in
winio.c


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3054 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-27 05:00:48 +00:00
David Lawrence Ramsey
2c8cf48372 at long last, properly handle mouse clicks on the statusbar prompt text
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3053 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-27 04:51:41 +00:00
David Lawrence Ramsey
874703be5f cosmetically refactor statusbar()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3052 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-27 03:35:42 +00:00
David Lawrence Ramsey
3d12f0f53d refactor nanoget_repaint() to split out the new function
get_statusbar_page_start(), the statusbar prompt's equivalent of
get_page_start(); also make sure that the minimum allowed terminal size
in columns is 4, as the statusbar prompt code relies on this assumption
and will crash otherwise


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3051 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-26 23:14:59 +00:00
David Lawrence Ramsey
b2bf101d0c typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3050 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-25 06:27:38 +00:00
David Lawrence Ramsey
2de84c1c8d add the ability to scroll up or down single lines without scrolling the
cursor, via Meta-- and Meta-+; note that this is disabled when
NANO_SMALL is defined


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3049 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-24 02:12:09 +00:00
David Lawrence Ramsey
ae5d2dffff Back to CVS
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3048 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-24 01:46:27 +00:00
David Lawrence Ramsey
5a9d4935eb GNU nano 1.3.9
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3046 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-24 01:44:23 +00:00
Jordi Mallach
92dd91cd0b French manpage updates.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3045 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-23 19:53:43 +00:00
Jordi Mallach
dad746e6dd Mass update from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3044 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-23 18:50:44 +00:00
David Lawrence Ramsey
45e3452b3e in nanorc.sample, tweak one "TeX" regex to use the "icolor" directive
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3043 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-11 19:20:52 +00:00
David Lawrence Ramsey
4005fc6257 cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3042 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-08 06:12:41 +00:00
David Lawrence Ramsey
90b07fc2fd in do_tab(), make sure that we insert the correct number of spaces if
the TABS_TO_SPACES flag is set and placewewant is greater than the
current column position of the cursor


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3041 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-07 15:57:48 +00:00
David Lawrence Ramsey
7b71f573e7 add missing string translation
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3040 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-06 20:46:11 +00:00
Jordi Mallach
4071de1989 Update Catalan to match the TP file.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3039 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-06 20:20:50 +00:00
David Lawrence Ramsey
6f5de42702 in get_key_buffer(), only save all open buffers and hang up when a
blocking wgetch() returns ERR and errno is set to EIO (input/output
error); if errno is set to something else, recover properly; this fixes
problems with nano's erroneously hanging up while e.g. resizing or
unsuspending in a chroot


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3038 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-06 05:28:37 +00:00
David Lawrence Ramsey
7de4dc8d08 add the last of Mike Frysinger's "c-file" regex improvements, slightly
simplified by me


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3037 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-04 04:52:06 +00:00
David Lawrence Ramsey
0ed9c5fb37 add most of Mike Frysinger's "c-file" regex tweaks and improvements
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3036 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-04 04:21:43 +00:00
David Lawrence Ramsey
37dd775f98 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3035 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-04 03:41:32 +00:00
David Lawrence Ramsey
86b6c3e5db in display_string(), *really* avoid a memory corruption problem by
allocating enough space for (COLS + 1) characters


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3034 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-10-04 03:40:41 +00:00
David Lawrence Ramsey
62a2528ab8 preemptively update the version number
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3033 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-27 19:56:12 +00:00
David Lawrence Ramsey
e283b0d638 cosmetic fix: sort the meta sequence #defines in ASCII order
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3032 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-26 02:58:16 +00:00
David Lawrence Ramsey
d04499202c minor documentation updates
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3031 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-26 02:14:37 +00:00
David Lawrence Ramsey
ec729750b0 cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3030 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-25 18:42:05 +00:00
David Lawrence Ramsey
8f36d09d18 in get_escape_seq_kbinput(), fix a typo preventing the
VT100/VT220/VT320/xterm/rxvt escape sequence for ',' on the numeric
keypad with NumLock off from being interpreted properly


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3029 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-24 19:42:48 +00:00
David Lawrence Ramsey
ae4c3a6206 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3028 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-20 19:46:39 +00:00
David Lawrence Ramsey
95ef337b1a revert previous changes, as lines are broken on tabs regardless of goal
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3027 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-20 19:44:19 +00:00
David Lawrence Ramsey
9c4488bf0c in break_line(), fix another problem where goal could be miscalculated
on lines containing tabs


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3026 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-20 19:36:39 +00:00
David Lawrence Ramsey
5ab12ca761 miscellaneous minor fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3025 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-20 17:52:52 +00:00
David Lawrence Ramsey
ca37ee67d9 *really* fix the previous break_line() problem
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3024 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-20 17:47:27 +00:00
David Lawrence Ramsey
bdc1b9b568 really fix the previous break_line() problem
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3023 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-20 16:36:08 +00:00
David Lawrence Ramsey
cd9a5f0377 in break_line(), fix a problem where a line could be broken in the
middle of a multibyte character


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3022 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-20 06:12:54 +00:00
David Lawrence Ramsey
c4b854d5c7 in display_string(), really avoid a memory corruption problem by
allocating enough space for COLS characters


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3021 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-20 04:15:33 +00:00
David Lawrence Ramsey
a03d9c0ecd fix another minor spacing problem in titlebar()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3020 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-16 17:24:22 +00:00
David Lawrence Ramsey
23bdb27155 comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3019 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-14 20:20:58 +00:00
David Lawrence Ramsey
3c4dc46fdc in (control_)?mbrep(), if crep is an invalid multibyte sequence, copy
Unicode 0xFFFD (Replacement Character) into it using strncpy() instead
of assigning the former to it; this avoids segfaults when freeing crep
later, since it's supposed to be dynamically allocated


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3018 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-14 19:17:56 +00:00
David Lawrence Ramsey
1c3bfa9f2b remove do_(left|right)()'s ability to optionally not update the current
line, as this was only used in do_backspace(), and it didn't always
update the screen properly


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3017 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-13 04:53:44 +00:00
David Lawrence Ramsey
feb89db8a0 more miscellaneous minor fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3016 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-13 04:45:46 +00:00
David Lawrence Ramsey
239b415786 fix changelog entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3015 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-06 06:25:25 +00:00
David Lawrence Ramsey
7f26c7384d in display_string(), if column is less than start_col and the
character's a tab, which can be possible if there are enough tabs and
the terminal size is sufficiently large, don't try to display it using
control_mbrep()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3014 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-05 01:36:47 +00:00
David Lawrence Ramsey
1c367b6949 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3013 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-04 03:29:47 +00:00
David Lawrence Ramsey
f56229948d in configure.ac, update the description of the ENABLE_COLOR option to
mention the need for regex.h


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3012 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-02 19:13:27 +00:00
David Lawrence Ramsey
093d500e15 if we don't have regex.h and hence regex support, disable color support,
as it depends on the use of regexes


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3011 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-02 19:09:36 +00:00
David Lawrence Ramsey
93bef536f7 minor documentation fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3010 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-02 04:42:44 +00:00
David Lawrence Ramsey
e4e6173389 in move_to_filestruct(), fix problem where edittop wouldn't be reset
properly if it was inside the text moved to another filestruct; also add
comment fixes and miscellaneous cleanups to it and
copy_from_filestruct()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3009 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-02 04:35:58 +00:00
David Lawrence Ramsey
be614ec3b4 formatting fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3008 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-09-02 03:08:09 +00:00
David Lawrence Ramsey
e014fbda80 fix compilation with -pedantic
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3007 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-29 19:11:26 +00:00
David Lawrence Ramsey
7fc0ada6cc fix compilation with --enable-debug
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3006 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-29 18:52:06 +00:00
David Lawrence Ramsey
20d3cb0614 fix credits length
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3005 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-29 18:51:27 +00:00
David Lawrence Ramsey
47daf0279d add Mike Frysinger to credits
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3004 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-29 18:29:02 +00:00
David Lawrence Ramsey
79d9795c80 make is_valid_unicode() catch more invalid Unicode
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3003 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-28 03:07:13 +00:00
David Lawrence Ramsey
738893f9c7 more email address updates
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3002 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-27 16:26:57 +00:00
David Lawrence Ramsey
c83512ac6a fix changelog entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3001 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-27 16:18:15 +00:00
David Lawrence Ramsey
111f37a853 update email address
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3000 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-27 16:16:36 +00:00
Jordi Mallach
c6836ec6d5 Credit Bulgarian and Dutch translators.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2999 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-22 08:47:16 +00:00
Jordi Mallach
a8db26010b Convert to UTF-8.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2998 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-22 08:45:37 +00:00
Jordi Mallach
8bcf43b137 New Bulgarian translation.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2997 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-22 08:40:19 +00:00
David Lawrence Ramsey
6834650570 really fix edit_scroll() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2996 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-16 03:03:15 +00:00
David Lawrence Ramsey
8ad58bcde3 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2995 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-16 03:02:46 +00:00
David Lawrence Ramsey
a9b862c804 fix more edit_scroll() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2994 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-16 01:27:05 +00:00
Jordi Mallach
21bec6c96d Updated Catalan translation.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2993 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-15 23:17:33 +00:00
Jordi Mallach
11219babbf Updated Dutch from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2992 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-15 23:12:15 +00:00
David Lawrence Ramsey
c71e031d8a clean up do_credits() even more
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2991 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-14 21:17:37 +00:00
David Lawrence Ramsey
84fdb90e52 use doupdate() instead of refresh() to reenter curses mode
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2990 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-14 20:08:49 +00:00
David Lawrence Ramsey
31de105eec turn the keypad on in topwin again, and clean up do_credits() a bit
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2989 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-14 19:25:16 +00:00
David Lawrence Ramsey
85ea1de1c7 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2988 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-13 20:05:06 +00:00
David Lawrence Ramsey
4fde119362 for consistency, display high-bit single-byte control characters as Unicode FFFD in UTF-8 mode
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2987 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-13 19:54:40 +00:00
David Lawrence Ramsey
4cf2246f04 add missing comment
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2986 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-11 18:30:47 +00:00
David Lawrence Ramsey
9fece9deb0 still more various documentation updates
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2985 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-10 23:32:08 +00:00
David Lawrence Ramsey
d7f0fe9243 various documentation updates
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2984 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-10 22:51:49 +00:00
David Lawrence Ramsey
4f03daff91 add new -W/--wordbounds command line option, and new "wordbounds" rcfile
option, to control whether the word movement functions treat punctuation
characters as part of a word


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2983 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-10 22:12:28 +00:00
David Lawrence Ramsey
6a3ac36420 in usage(), remove unneeded translation of "--quickblank"
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2982 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-10 21:52:59 +00:00
David Lawrence Ramsey
4adb37ed1d clarify changelog entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2981 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-10 21:26:32 +00:00
David Lawrence Ramsey
057edf7384 readd the option to turn the keypad off by default from nano 1.2.x, with
a few tweaks


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2980 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-10 21:22:15 +00:00
David Lawrence Ramsey
abd8993660 in update_history(), add a check to make sure the parameter we pass to
renumber() isn't NULL, and update related comments


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2979 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-10 20:03:58 +00:00
David Lawrence Ramsey
8c7a562394 cover the full range of Unicode
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2978 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-08 23:47:28 +00:00
David Lawrence Ramsey
8b006c2912 store Unicode values in longs instead of ints
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2977 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-08 23:03:25 +00:00
David Lawrence Ramsey
815fb0a2a2 cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2976 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-05 19:38:11 +00:00
David Lawrence Ramsey
6ff695c154 even better handling of invalid Unicode characters
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2975 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-05 03:14:29 +00:00
David Lawrence Ramsey
71dd8c1ca6 don't allow entering invalid Unicode in make_mbchar() either
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2974 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-04 21:38:41 +00:00
David Lawrence Ramsey
8c55d21bd6 add better handling of invalid Unicode, plus a few miscellaneous minor
fixes


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2973 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-04 20:24:26 +00:00
David Lawrence Ramsey
b7bf27a509 more get_unicode_kbinput() fixes: properly discard hexadecimal FFFE to
FFFF instead of xxxE and xxxF, and discard hexadecimal D800 to DFFF as
well, as they're also invalid Unicode characters


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2972 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-02 19:54:25 +00:00
David Lawrence Ramsey
c25ed534eb cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2971 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-01 21:53:54 +00:00
David Lawrence Ramsey
258497fb5c fix misplaced code in previous edit_scroll() fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2970 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-01 21:17:38 +00:00
David Lawrence Ramsey
107e816324 eliminate still more redundant screen updates
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2969 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-01 21:05:29 +00:00
David Lawrence Ramsey
6a83647a11 rename get_word_kbinput() to get_unicode_kbinput(), and also rename
related variables


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2968 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-01 19:12:05 +00:00
David Lawrence Ramsey
56e36ef7b5 in get_word_kbinput(), limit the input word to hexadecimal FFFD instead
of FFFF, as FFFE and FFFF are invalid Unicode characters


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2967 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-01 18:56:46 +00:00
David Lawrence Ramsey
bf0e47dc37 miscellaneous enum cleanups, including making the file-writing
functions' append parameter an enum instead of an int


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2966 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-01 18:27:10 +00:00
David Lawrence Ramsey
5d552195ea cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2965 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-01 05:55:07 +00:00
David Lawrence Ramsey
e796a7b5b9 formatting fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2964 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-01 05:54:11 +00:00
David Lawrence Ramsey
492e501fb3 document the "none" and "default" syntaxes in nanorc.5
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2963 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-01 05:08:01 +00:00
David Lawrence Ramsey
7aec89e9c9 document the explanation of the "none" syntax in nanorc.sample
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2962 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-01 05:01:30 +00:00
David Lawrence Ramsey
d152ad378b port over Brand Huntsman's reserved "none" syntax to counteract his
"default" syntax when necessary (the latter *is* actually ported mostly
from his patch with a few tweaks; the "default-syntax" option is
apparently something else entirely)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2961 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-01 04:59:34 +00:00
David Lawrence Ramsey
5a584ccda3 treat color syntax names case sensitively, for consistency with how
their filename regexes are treated


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2960 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-01 04:34:27 +00:00
David Lawrence Ramsey
179b1bad87 more color updates: add a "default" syntax that takes no extensions for
those files that don't match any other syntax's extensions (ported from
Brand Huntsman's old patch, but modified to work with a syntax named
"default" instead of requiring a "default-syntax" keyword, and to fit
into the existing color architecture)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2959 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-01 04:23:29 +00:00
David Lawrence Ramsey
eab0fd808c the old assert is actually needed, so put it back too
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2958 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-01 03:05:53 +00:00
David Lawrence Ramsey
04f65f2e17 revert previous simplification, as it only moved complexity from one
place to another, and add formatting fixes to the old code


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2957 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-08-01 02:18:05 +00:00
David Lawrence Ramsey
db57ad757f comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2956 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-31 20:57:38 +00:00
David Lawrence Ramsey
5745c0a11f simplify further
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2955 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-31 20:20:37 +00:00
David Lawrence Ramsey
15d6857b27 fix cursor position display breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2954 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-31 20:15:01 +00:00
David Lawrence Ramsey
4ab80154e9 simplify do_cursorpos(), and remove an unneeded assert from it
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2953 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-31 18:51:51 +00:00
David Lawrence Ramsey
c879f55691 in parse_syntax(), flag duplicate syntax names as errors
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2952 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-30 21:53:05 +00:00
David Lawrence Ramsey
6135bf3f6b port over more of Brand Huntsman's old patch: a color syntax specified
on the command line will now override the syntax associated with the
current file extension


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2951 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-30 21:24:56 +00:00
David Lawrence Ramsey
ab73dd4816 fix extension decompilation breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2950 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-29 22:08:56 +00:00
David Lawrence Ramsey
5295cfe72c add missing bit from last patch
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2949 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-29 21:59:44 +00:00
David Lawrence Ramsey
2385c1aa9b port over more of Brand Huntsman's old patch (with a few tweaks):
compile the file extension regexes on an as-needed basis too


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2948 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-29 21:42:08 +00:00
David Lawrence Ramsey
282a940745 formatting fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2947 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-29 21:41:04 +00:00
David Lawrence Ramsey
3f4520b348 fix display breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2946 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-29 03:28:09 +00:00
David Lawrence Ramsey
d4e3c59f27 remove unnecessary can_change_colors() call
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2945 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-27 03:12:22 +00:00
David Lawrence Ramsey
d6c24c4133 cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2944 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-27 03:11:41 +00:00
David Lawrence Ramsey
6d8e495c37 remove still more redundant screen updates; change all wrefresh() calls
to wnoutrefresh() calls, except for those in total_update() and
do_credits(); call doupdate() just before using blocking input, since
nano spends the most time using it, for blocking input; and only do
constant sursor position display if we're just about to use blocking
input


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2943 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-26 14:42:57 +00:00
David Lawrence Ramsey
75a29b749e more comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2942 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-26 14:26:47 +00:00
David Lawrence Ramsey
96452cb60c handle invalid multibyte characters more efficiently
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2941 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-26 06:13:45 +00:00
David Lawrence Ramsey
d4defccded comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2940 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-26 05:20:02 +00:00
David Lawrence Ramsey
f9782e0437 typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2939 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-26 04:18:17 +00:00
David Lawrence Ramsey
3fe08acd27 and don't let a SIGWINCH throw out the changes made by the alternate
spell checker, either


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2938 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-26 01:17:16 +00:00
David Lawrence Ramsey
6969c995d1 remove redundant code, and add a comment
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2937 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-26 00:42:48 +00:00
David Lawrence Ramsey
b18482e1b0 simplify the previous fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2936 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-26 00:06:34 +00:00
David Lawrence Ramsey
4401862e12 fix resizing while the alternate spell checker is running
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2935 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-25 23:40:12 +00:00
David Lawrence Ramsey
3f12ada4ef add various fill-related cleanups, plus some related cosmetic and
formatting fixes


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2934 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-25 22:54:16 +00:00
David Lawrence Ramsey
520a90c8d9 since the total number of lines in a file is the same as the number of
its last line when all its lines are numbered properly, use that in
place of openfile->totlines, and eliminate references to
openfile->totlines


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2933 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-25 21:23:11 +00:00
David Lawrence Ramsey
94d7cb6826 *really* fix mouse support breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2932 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-25 20:36:27 +00:00
David Lawrence Ramsey
56d083779f really fix mouse support breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2931 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-25 20:28:21 +00:00
David Lawrence Ramsey
c35e351dd0 fix mouse support breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2930 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-25 20:08:18 +00:00
David Lawrence Ramsey
22ae034f2d add more miscellaneous mouse support-related fixes, and move
do_statusbar_output() after do_statusbar_mouse(), to match do_output()'s
being after do_mouse() in nano.c


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2929 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-25 20:01:57 +00:00
David Lawrence Ramsey
3d5e94560d in do_mouse(), avoid redundant screen updates by using edit_redraw()
instead of edit_refresh(), and remove now-erroneous code that disables
setting the mark while in view mode


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2928 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-25 19:04:20 +00:00
David Lawrence Ramsey
78a81b29b1 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2927 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-25 18:59:24 +00:00
David Lawrence Ramsey
07d5df4aeb simplify do_wordlinechar_count()'s final message a bit more
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2926 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-25 04:46:58 +00:00
David Lawrence Ramsey
8e94234b00 rename do_word_count() do_wordlinechar_count(), and simplify its final
message a bit


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2925 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-25 04:21:46 +00:00
David Lawrence Ramsey
72936854c4 expand do_word_count() to also count the number of lines and characters
in the file or selection, as wc does


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2924 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-25 03:47:08 +00:00
David Lawrence Ramsey
7ea09e540f move mark setting, deleting, backspacing, tabbing, and entering of
newlines to text.c too


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2923 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-25 02:41:59 +00:00
David Lawrence Ramsey
cc8185fe2b reorder a few functions
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2922 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-25 02:33:45 +00:00
David Lawrence Ramsey
150d889965 make color_to_short() actually return a short
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2921 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-24 20:23:40 +00:00
David Lawrence Ramsey
4e5e1ae1a3 remove erroneous static declaration of fill; it's global now, since
text.c needs it too


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2920 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-24 19:59:54 +00:00
David Lawrence Ramsey
691698a954 move advanced text operations (command execution in a buffer, wrapping,
spell checking, justifying, and word counting) to their own source file,
text.c


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2919 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-24 19:57:51 +00:00
David Lawrence Ramsey
2a73131f0e cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2918 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-24 17:06:56 +00:00
David Lawrence Ramsey
ce78cdb722 really fix inconsistency
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2917 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-23 22:57:46 +00:00
David Lawrence Ramsey
acefd9e9b5 fix inconsistency
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2916 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-23 22:50:02 +00:00
David Lawrence Ramsey
945a91357a eliminate still more redundant screen updates in edit_scroll()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2915 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-23 21:06:22 +00:00
David Lawrence Ramsey
27865304d7 remove more redundant screen updates in edit_scroll(), and add a few
more miscellaneous cleanups


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2914 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-23 20:39:41 +00:00
David Lawrence Ramsey
c00513b65e fix alternate spell checker breakage: don't lose colors after using it
on a file


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2913 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-23 00:41:45 +00:00
David Lawrence Ramsey
c009759c23 allow scrolling more than editwinrows lines via edit_scroll(), take 2
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2912 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-22 23:17:19 +00:00
David Lawrence Ramsey
47bb888ad2 revert broken edit_scroll() changes for now
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2911 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-22 22:56:03 +00:00
David Lawrence Ramsey
44ca4f898c allow scrolling more than editwinrows lines via edit_scroll()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2910 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-22 22:19:36 +00:00
David Lawrence Ramsey
61f567378a display invalid multibyte sequences as Unicode FFFD, take 2; also clean
up the character-parsing functions


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2909 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-21 22:12:03 +00:00
David Lawrence Ramsey
66444c37b3 more function reordering
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2908 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-21 18:05:27 +00:00
David Lawrence Ramsey
d1dc23bd78 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2907 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-21 17:52:36 +00:00
David Lawrence Ramsey
7f343a6dc4 add comment and formatting fixes, and remove now-useless global-specific code
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2906 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-21 05:56:42 +00:00
David Lawrence Ramsey
3a9a32996b in do_find_bracket(), add comments and minor cleanups
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2905 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-21 02:20:01 +00:00
David Lawrence Ramsey
c4037f3055 move do_(next|prev)_word(_void())? to move.c too
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2904 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-20 21:31:19 +00:00
David Lawrence Ramsey
e99494f21a add miscellaneous color and openfilestruct cleanups, and move the
openfilestruct functions to nano.c, since they're no longer specific to
file operations


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2903 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-20 21:08:38 +00:00
David Lawrence Ramsey
ca62f9fa2b move the paragraph-searching functions to move.c, as they're movement
functions, and make them call check_statusblank() too; also reorder some
other movement functions


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2902 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-20 19:24:11 +00:00
David Lawrence Ramsey
38f70a5edd comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2901 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-19 18:46:02 +00:00
Jordi Mallach
7866cd3ef7 Doh, fixup ChangeLog.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2900 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-19 17:10:05 +00:00
Jordi Mallach
03777799d4 Updated Malay translation from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2899 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-19 15:09:09 +00:00
Jordi Mallach
e4b0742e9e Update French manpages by Jean-Philippe Guérard.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2898 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-19 15:07:35 +00:00
David Lawrence Ramsey
239c3d47dd in nanogetstr(), make sure that magichistory is properly updated when we
change it and then move up


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2897 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-19 05:58:00 +00:00
David Lawrence Ramsey
96e6d56571 in find_history() and get_history_completion(), make parameters const
where possible


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2896 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-19 04:53:45 +00:00
David Lawrence Ramsey
826fbea8e1 add missing blank lines
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2895 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-19 04:50:55 +00:00
David Lawrence Ramsey
e3bae98aab in mbstrchr(), don't count matches between valid and invalid multibyte
sequences anymore, for consistency


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2894 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-18 19:47:13 +00:00
David Lawrence Ramsey
91d468d7fd for consistency, revert handling of cases where a search string and a
match to it are not the same length in bytes, since the same technique
can't be made to work with tab completion matches


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2893 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-18 19:29:27 +00:00
David Lawrence Ramsey
7dc531a801 miscellaneous minor fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2892 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-18 18:43:39 +00:00
Jordi Mallach
0dd50d6f62 Updated French translation from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2891 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-18 14:37:11 +00:00
David Lawrence Ramsey
0e581b3524 make sure that the current position in the history list is properly set
to the bottom if we cancel out of the prompt


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2890 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-18 07:48:50 +00:00
David Lawrence Ramsey
24b1563068 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2889 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-18 05:23:04 +00:00
David Lawrence Ramsey
a0aa4df041 properly handle cases where a search string and a match to it are not
the same length in bytes, i.e, when the latter contains invalid
multibyte characters interpreted as normal characters


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2888 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-18 05:17:59 +00:00
David Lawrence Ramsey
091068982d add comment
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2887 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-18 05:16:04 +00:00
David Lawrence Ramsey
f7bcbeb87e don't display invalid multibyte sequences as Unicode 0xFFFD in
display_string() anymore, as it's inconsistent with how we handle them
elsewhere


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2886 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-18 03:23:37 +00:00
David Lawrence Ramsey
de0c5eb899 better edit_scroll() redundancy fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2885 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-17 22:51:44 +00:00
David Lawrence Ramsey
dbeb503316 fix edit_scroll() redundancy
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2884 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-17 15:42:21 +00:00
David Lawrence Ramsey
4c221675a8 comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2883 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-17 15:40:49 +00:00
David Lawrence Ramsey
50a33dbbb7 per DB'S patch, in do_spell(), when displaying an error message from
do_(int|alt)_speller(), don't display the error message corresponding to
errno if errno is zero


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2882 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-17 03:50:22 +00:00
David Lawrence Ramsey
7eb30a8353 change NANO_WIDE #define to ENABLE_UTF8, as the latter is clearer
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2881 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-17 02:40:07 +00:00
David Lawrence Ramsey
a7f488b51f fix glitch in edit_scroll() where scrolling up to the top line of the
file with fewer than nlines lines available to scroll would leave half
the screen unupdated


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2880 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-17 02:19:47 +00:00
David Lawrence Ramsey
c104ef15a6 simplify get_totals() (renamed get_totsize()) to only get the total
number of characters, and eliminate dependence on its old ability to get
the total number of lines by renumber()ing when necessary and using the
number of the last line of a filestruct


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2879 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-17 01:44:35 +00:00
David Lawrence Ramsey
5e146e815f add missing check_statusblank() calls
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2878 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-17 00:01:18 +00:00
David Lawrence Ramsey
157ce9120b speed up character output, and fix edit_refresh() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2877 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-16 23:36:10 +00:00
David Lawrence Ramsey
4d46437f87 properly overhaul edit_scroll() to update the screen on its own this
time, convert the vertical movement functions to use the new version of
it, and simplify them where possible


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2876 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-16 22:50:30 +00:00
David Lawrence Ramsey
5b44f373fd really fix color breakage by decoupling edit_update() and
edit_refresh(); edit_update() is only called without edit_refresh() in
do_gotolinecolumn() if allow_update is FALSE, and in edit_refresh()
itself if edittop is out of range of current


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2875 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-16 22:47:12 +00:00
David Lawrence Ramsey
8f4762a842 cosmetic and #ifdef fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2874 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-16 22:35:11 +00:00
David Lawrence Ramsey
8f1afee813 fix color breakage; also, in main(), when opening files with
"+LINE,COLUMN" arguments on the command line, don't update the screen
when moving to their specified lines and columns


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2873 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-16 07:06:36 +00:00
David Lawrence Ramsey
b00f7e3c6f comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2872 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-16 03:23:56 +00:00
David Lawrence Ramsey
e5806be519 clean up edit_redraw() a bit
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2871 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-16 02:12:18 +00:00
David Lawrence Ramsey
6a74c9224c fix stat breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2870 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-15 19:37:32 +00:00
David Lawrence Ramsey
cb8d845ad7 still more miscellaneous color fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2869 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-15 01:08:52 +00:00
David Lawrence Ramsey
538dc352c5 a few more miscellaneous color fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2868 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-15 00:36:49 +00:00
David Lawrence Ramsey
a74f2f8618 split overly long changelog entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2867 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-15 00:22:28 +00:00
David Lawrence Ramsey
8f948fa1eb handle unspecified foreground colors
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2866 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-15 00:17:13 +00:00
David Lawrence Ramsey
26ee759503 add one last breakage fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2865 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-15 00:08:23 +00:00
David Lawrence Ramsey
0532296a10 more miscellaneous minor fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2864 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-14 23:51:52 +00:00
David Lawrence Ramsey
443a766fe2 more miscellaneous breakage fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2863 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-14 23:06:22 +00:00
David Lawrence Ramsey
fa82853aea fix more color breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2862 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-14 22:28:22 +00:00
David Lawrence Ramsey
47a153f538 comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2861 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-14 22:19:20 +00:00
David Lawrence Ramsey
b802a13c5a it turns out edit_redraw() is needed after all when doing
PageUp/PageDown; revert all the movement code and edit_scroll() changes
except for added comments and edit_scroll() simplifications


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2860 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-14 22:15:09 +00:00
David Lawrence Ramsey
1458891b9f add comments, and fix some edit_scroll() breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2859 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-14 20:37:01 +00:00
David Lawrence Ramsey
d2361f0761 add minor fixes to the new color code, and merge parts of Brand
Huntsman's old patch in where applicable


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2858 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-14 18:33:51 +00:00
David Lawrence Ramsey
43cf7a1be3 prototype fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2857 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-14 18:31:45 +00:00
David Lawrence Ramsey
f00c9612b3 make the movement code simpler by tweaking edit_scroll() to redraw all
necessary lines instead of calling it and then calling edit_redraw()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2856 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-14 18:01:08 +00:00
David Lawrence Ramsey
a8da623410 typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2855 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-14 17:31:39 +00:00
David Lawrence Ramsey
db95802a18 add breakage fixes, type fixes, and as-needed color regex compilation
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2854 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-13 20:18:46 +00:00
David Lawrence Ramsey
0c4ca3509f *really* fix more breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2853 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-12 23:25:00 +00:00
David Lawrence Ramsey
e5c7e928c9 still more breakage fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2852 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-12 23:06:22 +00:00
David Lawrence Ramsey
222b201afe miscellaneous minor fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2851 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-12 20:09:24 +00:00
David Lawrence Ramsey
5128de8308 fix marking breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2850 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-12 17:40:16 +00:00
David Lawrence Ramsey
16349c992a typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2849 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-11 20:50:43 +00:00
David Lawrence Ramsey
112620432a per Ken Tyler's suggestion, simplify do_gotoline_msg further; also, in
usage(), properly mention the support for "[+LINE,COLUMN]" at the
command line when HAVE_GETOPT_LONG isn't defined


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2848 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-11 20:19:59 +00:00
David Lawrence Ramsey
90f772b250 fixing titlebar(), take three
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2847 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-11 07:12:33 +00:00
David Lawrence Ramsey
caa86591f4 *really* fix titlebar()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2846 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-10 23:57:32 +00:00
David Lawrence Ramsey
d4dab46ebc really fix titlebar()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2845 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-10 23:45:23 +00:00
David Lawrence Ramsey
b386a905e6 use blank_line() instead of hblank/mvwhline(), and fix more breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2844 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-10 02:37:38 +00:00
David Lawrence Ramsey
b1ce64a375 remove redundancy
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2843 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-09 05:52:08 +00:00
David Lawrence Ramsey
2d705caec7 fix still more breakage caused by the overhaul
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2842 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-09 05:38:21 +00:00
David Lawrence Ramsey
1d696c0047 work around slang brokenness
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2841 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-09 05:24:33 +00:00
David Lawrence Ramsey
a0ebc813f1 replace almost all mvwaddstr(hblank) calls with mvwhline(' ', COLS)
calls, which do the same thing


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2840 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-09 04:49:09 +00:00
David Lawrence Ramsey
56001845cd yet more breakage fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2839 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-09 04:42:47 +00:00
David Lawrence Ramsey
be5cdb2748 add one last breakage fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2838 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-09 03:40:44 +00:00
David Lawrence Ramsey
76c25f582a still more breakage fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2837 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-08 21:12:39 +00:00
David Lawrence Ramsey
dbcaa3b1fb fix some breakage caused by the restructuring
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2836 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-08 20:59:24 +00:00
David Lawrence Ramsey
6ad59cd29b restructure things so that every file has its own openfilestruct, and so
that the values in it are used directly instead of being periodically
synced up with the globals; accordingly, remove the globals; this
changes pretty much every function


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2835 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-08 20:09:16 +00:00
David Lawrence Ramsey
64661ac140 rename filebuffer to openfile. as it's shorter
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2834 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-08 19:57:25 +00:00
David Lawrence Ramsey
9d8396d340 miscellaneous minor fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2833 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-08 04:53:51 +00:00
David Lawrence Ramsey
f8cb832b50 another formatting fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2832 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-08 03:15:09 +00:00
David Lawrence Ramsey
503f278547 rename variable open_files filebuffer, for consistency
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2831 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-08 02:51:58 +00:00
David Lawrence Ramsey
90573296ea reorder some functions for consistency
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2830 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-08 02:47:05 +00:00
David Lawrence Ramsey
826ab5a4fe formatting fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2829 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-08 02:36:16 +00:00
David Lawrence Ramsey
d41b468975 more cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2828 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-08 02:18:23 +00:00
David Lawrence Ramsey
3e0f523d59 cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2827 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-08 02:05:39 +00:00
David Lawrence Ramsey
de03989e86 add more int -> ssize_t line number fixes, plus one formatting fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2826 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-08 02:01:07 +00:00
David Lawrence Ramsey
757f739367 reword an error message for consistency
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2825 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-08 01:49:43 +00:00
David Lawrence Ramsey
1228699f2c fix renumber_all() as well as renumber()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2824 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-08 01:11:27 +00:00
David Lawrence Ramsey
d72bdf17f4 in renumber(), when renumbering, properly use a ssize_t instead of an
int


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2823 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-08 01:08:25 +00:00
David Lawrence Ramsey
9c1fef04a2 in shortcut_init(), per Jordi's suggestion, simplify wording of
nano_gotoline_msg


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2822 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-07 20:11:17 +00:00
Jordi Mallach
c275f068ab Italian and Catalan update from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2821 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-07 20:02:39 +00:00
David Lawrence Ramsey
62d616b62b comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2820 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-06 19:20:32 +00:00
David Lawrence Ramsey
9838a5182e in display_string(), display invalid multibyte sequences as Unicode
0xFFFD (Replacement Character)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2819 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-06 19:12:41 +00:00
David Lawrence Ramsey
ec01074075 add missing dashes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2818 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-06 19:11:15 +00:00
David Lawrence Ramsey
504ae90a8e in faq.html, update section 4.10 to mention that pasting from the X
clipboard via the middle mouse button also works when the Shift key is
used


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2817 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-05 01:02:11 +00:00
David Lawrence Ramsey
405ed0f822 typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2816 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-05 00:54:40 +00:00
David Lawrence Ramsey
da50e73c40 with the removal of the last snprintf(), we now only use vsnprintf(), so
remove snprintf()-related #ifdefs and checks


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2815 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-04 04:22:30 +00:00
David Lawrence Ramsey
e927ce59d1 more minor variable tweaks
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2814 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-04 03:55:13 +00:00
David Lawrence Ramsey
892396bb7d in do_alt_speller(), if we can't invoke the spell checker, use sprintf()
instead of snprintf() to write the error string we return, as
altspell_error will always be long enough to hold it


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2813 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-04 03:43:54 +00:00
David Lawrence Ramsey
658f7e6630 minor variable tweaks
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2812 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-04 03:26:43 +00:00
David Lawrence Ramsey
32263ede86 add Mike Frysinger's Bourne shell script regexes, with a few minor
tweaks


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2811 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-03 22:00:29 +00:00
David Lawrence Ramsey
0c3d3c9fed add missing colon
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2810 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-02 22:12:27 +00:00
David Lawrence Ramsey
612b41615b clean up the search code a bit
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2809 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-02 17:56:29 +00:00
David Lawrence Ramsey
e3df8788b7 in do_replace(), blank out last_replace properly again just before
displaying the "Replace" prompt


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2808 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-02 17:49:27 +00:00
David Lawrence Ramsey
a549a82c32 more cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2807 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-01 23:11:52 +00:00
David Lawrence Ramsey
9c3249c893 minor cosmetic and constant cursor position display fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2806 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-01 22:58:47 +00:00
David Lawrence Ramsey
d5092294cd Back to CVS
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2805 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-30 17:17:41 +00:00
80 changed files with 32795 additions and 21150 deletions

View File

@@ -6,7 +6,7 @@ nano editor. Please see the ChangeLog for specific changes by author.
Chris Allegretta <chrisa@asty.org>
* Original program author, stable series maintainer.
David Lawrence Ramsey <pooka_regent@sluggy.net>
David Lawrence Ramsey <pooka109@cox.net>
* Development series maintainer. Multiple buffer support,
operating dir (-o) option, bug fixes for display routines,
wrapping code, spelling fixes, const mode, parts of the UTF-8
@@ -35,3 +35,9 @@ David Benbennick <dbenbenn@math.cornell.edu>
* Wrap and justify bugfixes/enhancements, new color syntax
code, memleak fixes, parts of the UTF-8 support, and other
miscellaneous fixes.
Mike Frysinger <vapier@gentoo.org>
* Gentoo package maintainer. Whitespace display mode,
--enable-utf8/--disable-utf8 configure options for ncurses,
many new color regexes and improvements to existing color
regexes for nanorc.sample, and miscellaneous bug fixes.

1525
ChangeLog

File diff suppressed because it is too large Load Diff

73
NEWS
View File

@@ -1,3 +1,72 @@
2006.06.26 - GNU nano 1.3.12 escapes the darkness. This release
contains the last new features that nano will have
before 2.0: copying text into the cutbuffer without
cutting it, indenting lines of marked text with a single
keystroke, reworked help text that should be easier for
new users, searching for filenames in the file browser,
the ability to include color regexes in files separate
from nanorc files, etc. It also contains many bugfixes.
Text can now be unjustified after justifying it and
resizing the window; the screen is now cleared when
suspending; the "default" color syntax is now handled
properly at all times; lines of text containing tabs are
now wrapped at the right place; double-column characters
are now properly displayed when past the right edge of
the screen; invalid multi-line color regexes are now
ignored; and so on. Enjoy.
2006.03.30 - GNU nano 1.3.11 awakens from its fever dream. This release
focuses mostly on bugfixes, which include better
handling of the cursor at the statusbar prompt, support
for certain combinations of Shift and keypad keys in
both normal and --rebind-keypad mode, a fix for a minor
display problem after some searches, a real fix for a
long-standing segfault when displaying overly long
lines, and a real fix for nano's not hanging up properly
in xterm under certain circumstances. There are also
several new features, such as the ability to set the
characters used as brackets when searching for matching
brackets, and tab completion of directories at the "Go
To Directory" prompt. Have fun.
2005.12.23 - GNU nano 1.3.10 rises to the surface. This release
contains several new features as well as fixes for
several longstanding bugs. The former include the
ability to scroll up or down single lines without
scrolling the cursor, reworked bracket searching code
that doesn't require regular expression support,
reworked command execution code that uses $SHELL if
available instead of hardcoding "/bin/sh", and the
ability to no longer add newlines to files that don't
end in them via the -L/--nonewlines option. The latter
include fixes to the statusbar prompt so that mouse
clicks work properly on it, fixes to the Yes/No/All
prompt so that mouse clicks on it work properly when
-O/--morespace is used, and fixes to the resize handling
so that nano dies properly when the terminal is too
small to display a prompt. Enjoy.
2005.10.23 - GNU nano 1.3.9 breaks through the wall. This release
includes major enhancements as well as bugfixes. The
enhancements include better handling of invalid UTF-8,
expansion of the word count option to also count lines
and characters in the file or selection, more efficient
screen update routines, a readded -K/--rebindkeypad
option to work around numeric keypad problems on
terminals that don't show the usual NumLock glitch, a
new -W/--wordbounds option to properly detect words
containing punctuation when moving among them, and
massive improvements to the color code such as handling
of unspecified foreground colors, more efficient memory
usage for color regexes, and new reserved syntaxes
"default" and "none". The bugfixes include fixes for
the rewritten history code, fixes for potential line
numbering problems on 64-bit platforms, fixes for a few
long-standing minor display problems, a fix for erroneous
hangups occurring while waiting for input, and a fix for
a segfault when displaying certain overly long lines.
Have fun with it.
2005.06.30 - GNU nano 1.3.8 floats at its own level. This release
contains several new features. Among other things, you
can now move to a specified column number as well as
@@ -245,7 +314,7 @@
direct to the development list (nano-devel@gnu.org).
10/24/2002 - GNU nano 1.1.12 "Make Jordi happy" is released. This
release demonstrated that nano is starting to freeze for
release demonstrates that nano is starting to freeze for
version 1.2. New features include a Meta-Y toggle for
syntax highlighting, pluralized i18n, and a handler for
SIGTERM. Nano now ignores XOFF (^S) to stop accidental
@@ -323,7 +392,7 @@
shows column as well as character position, and
multibuffer allows duplicate files, even unnamed ones.
Also, the static shortcut and toggle lengths are
history, nano now reads $SYSCONFDIR/nanorc if rc file
history, nano now reads SYSCONFDIR/nanorc if rc file
support is enabled, and nano is now built with (and
requires for rebuilding) autoconf 2.5.
This release also includes fixes for some memory

13
README
View File

@@ -9,16 +9,16 @@ Overview
First and foremost is its license: the Pine suite does not use the
GPL or a GPL-friendly license, and has unclear restrictions on
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.
with many GNU/Linux distributions. Also, other features (like go
to line number or search and replace) were unavailable until
recently or require a command line flag. Yuck.
nano aims to solve these problems by emulating the functionality of
Pico as closely as possible while addressing the problems above and
perhaps providing other extra functionality.
The nano editor is now an official GNU package. For more
information on GNU and the Free Software Foundation please see
information on GNU and the Free Software Foundation, please see
http://www.gnu.org.
How to compile and install nano
@@ -32,6 +32,11 @@ How to compile and install nano
It's that simple. Use --prefix with configure to override the
default installation directory of /usr/local.
If you configured with the "--enable-nanorc" option, after
installation you might copy the doc/nanorc.sample to your home
directory, rename it to ".nanorc", and then edit it according to
your taste.
Web Page

View File

@@ -1,46 +1,94 @@
INSTRUCTIONS TO COMPILE AND INSTALL NANO CVS VERSIONS
-----------------------------------------------------
=====================================================
GNU nano is available from CVS, but building this needs a bit more care
than the official stable and unstable tarballs.
Prerequisites
-------------
To successfully compile GNU nano from CVS, you'll need the following
packages:
- autoconf (version >= 2.54)
- automake (version >= 1.7)
- gettext (version >= 0.11.5)
- groff
- texinfo
- gettext (version >= 0.11.5)
- groff (version >= 1.12)
- texinfo (version >= 4.0)
- cvs
- ssh (with support for the SSH version 2 protocol)
- glib 2.x (if your system doesn't have snprintf() and/or vsnprintf())
- glib 2.x (if your system doesn't have vsnprintf(), which the configure
script will check for)
- make, gcc and the normal development libraries (curses or slang, etc.)
These should be available on your GNU mirror. Note that you'll need a
version of curses or slang with wide character support if you want nano
to use UTF-8.
Download the source
-------------------
First, you need to set up cvs to download the CVS tree using ssh. If
you're using a Bourne shell (e.g. bash or sh), do
$ export CVS_RSH=ssh
If you're using a C shell (e.g. tcsh or csh), do
$ setenv CVS_RSH ssh
After it's set up, use the following command to download the CVS tree:
$ cvs -z3 -d:ext:anoncvs@savannah.gnu.org:/cvsroot/nano checkout nano
$ export CVS_RSH=ssh
If you're using a C shell (e.g. tcsh or csh), do
$ setenv CVS_RSH ssh
After that's set up, cd to your src directory and use the following
command to download the CVS tree:
$ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/nano checkout nano
If you want to download the stable CVS branch, add "-r nano_1_2_branch":
$ cvs -z3 -d:ext:anoncvs@savannah.gnu.org:/cvsroot/nano checkout -r nano_1_2_branch nano
Once you have the sources in the "nano" directory, cd into it, and
execute the "autogen.sh" script in the top directory. This will set up
a configure script and Makefile.in, and you will be ready to compile
with
$ ./configure [--add-options-here] && make
$ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/nano checkout -r nano_1_2_branch nano
Once it's done compiling,
$ make install
(as root) should put the required files in their respective directories.
Generate the configure script
-----------------------------
Once you have the sources in the "nano" directory,
$ cd nano
$ ./autogen.sh
This will set up a configure script and a Makefile.in file.
Configure your build
--------------------
To configure your build, run the configure script from the nano source
directory:
$ ./configure [--add-options-here]
Build and install
-----------------
From the nano source directory, build the code with:
$ make
Then, once it's done compiling, run
$ make install
which should copy various files (i.e, the nano executable, the info and
man pages, and syntax highlighting pattern files) to their appropriate
directories.
If you're installing into the default install directory (/usr/local),
you'll need to run that "make install" command with root privileges.
Problems?
---------
Please submit any bugs in the CVS branch to nano-devel@gnu.org.

21
THANKS
View File

@@ -1,40 +1,44 @@
The following people have helped GNU nano in some way or another.
If we missed you here, let us know!
Sharuzzaman Ahmat Raslan <sharuzzaman@excite.com>
Malay translator
Laurentiu Buzdugan <buzdugan@voyager.net> Romanian translator
CHAO Wei-Lun <chaoweilun@pcmail.com.tw> Traditional Chinese translator
Ricardo Cárdenes Medina <ricardo@conisys.com> Spanish translator
Ricardo Cárdenes Medina <ricardo@conisys.com> Spanish translator
Marco Colombo <magicdice@inwind.it> Italian translator
Yavor Doganov <yavor@doganov.org> Bulgarian translator
Karl Eichwalder <keichwa@gmx.net> German translator
Doruk Fisek <dfisek@fisek.com.tr> Turkish translator
Jean-Philippe Guérard <jean-philippe.guerard@laposte.net>
Jean-Philippe Guérard <jean-philippe.guerard@laposte.net>
French translator
Geir Helland Norwegian bokmål translator
Geir Helland Norwegian bokmål translator
Tedi Heriyanto <tedi_h@gmx.net> Indonesian translator
Václav Haisman <V.Haisman@sh.cvut.cz> Czech translator
Václav Haisman <V.Haisman@sh.cvut.cz> Czech translator
Szabolcs Horvath <horvaths@janus.gimsz.sulinet.hu>
Hungarian translator
Kalle Kivimaa <kalle.kivimaa@iki.fi> Finnish Translator
Eivind Kjørstad <ekj@vestdata.no> Norwegian nynorsk translator
Florian König <floki@bigfoot.com> German translator
Eivind Kjørstad <ekj@vestdata.no> Norwegian nynorsk translator
Florian König <floki@bigfoot.com> German translator
Wojciech Kotwica <wkotwica@post.pl> Polish translator
Clement Laforet <clem_laf@wanadoo.fr> French translator
Gergely Nagy <algernon@debian.org> Hungarian translator
Kalle Olavi Niemitalo <kon@iki.fi> Finnish Translator
Claudio Neves <cneves@nextis.com> Brazilian Portuguese translator
Daniel Nylander <po@danielnylander.se> Swedish Translator
Michael Piefel <piefel@informatik.hu-berlin.de> German translator
Sergey A. Ribalchenko <fisher@obu.ck.ua> Russian, Ukrainian translator
Michel Robitaille <robitail@IRO.UMontreal.CA> French translator
Christian Rose <menthos@menthos.com> Swedish translator
Stig E Sandoe <stig@ii.uib.no> Norwegian bokmål translator
Stig E Sandoe <stig@ii.uib.no> Norwegian bokmål translator
Benno Schulenberg <benno@nietvergeten.nl> Dutch translator
Danilo Segan <dsegan@gmx.net> Serbian translator
Keld Simonsen <keld@dkuug.dk> Danish translator
Guus Sliepen <guus@nl.linux.org> Dutch translator
Cezary Sliwa <sliwa@cft.edu.pl> Polish translator
Pierre Tane <tanep@bigfoot.com> French translator
Jacobo Tarrío <jtarrio@trasno.net> Galician translator
Jacobo Tarrío <jtarrio@trasno.net> Galician translator
Kjetil Torgrim Homme <kjetilho@linpro.no> Norwegian nynorsk translator
Miquel Vidal <miquel@sindominio.net> Catalan translator
Phan Vinh Thinh <teppi82@gmail.com> Vietnamese translator
@@ -44,6 +48,7 @@ Peio Ziarsolo <peio@sindominio.net> Basque translator
Ben Armstrong <synrg@sanctuary.nslug.ns.ca> Negative -r value idea, code
Thomas Dickey <dickey@herndon4.his.com> Curses help and advice
Sven Guckes <guckes@math.fu-berlin.de> Advice and Advocacy
Thijs Kinkhorst <thijs@kinkhorst.com> rnano.1 manpage
Jim Knoble <jmknoble@pobox.com> Pico compat for browser
Ryan Krebs <fluffy@highwire.stanford.edu> Many bug fixes and testing
Roy Lanek <lanek@ranahminang.net> Advice and advocacy

42
TODO
View File

@@ -1,13 +1,42 @@
TODO file (? means the feature may be implemented, but not definitely)
-----------------------------------------------------------------------------
------------------------------------------------------------------------
For version 1.4:
For the next version:
- Undo/Redo keys?
- Rebindable keys?
- FriBidi support?
- Port to DJGPP?
- Make matching bracket searches sophisticated enough to skip over
brackets inside comments?
- Allow indentation of marked text by spaces as well as tabs?
- Rewrite the nano FAQ in SGML.
- Allow conversion between different character sets. Maybe use glib's
iconv() if the system's iconv() is inadequate, since we already use
glib's vsnprintf() if the system lacks vsnprintf()?
- Properly preserve the cursor position when going from the "Read File"
or "Save File As" prompt to the file browser to the "Go To Directory"
prompt, and then canceling back to the "Read File" or "Save File As"
prompt.
- Allow color syntaxes to apply to more than just color, so that we can
e.g. specify a different alternate spell checker depending on which
file type we have open.
- Allow color syntaxes to be selected based on more than just filename
extension, e.g. through libmagic?
- Allow text searches in the help browser.
- Allow setting marks (saved positions, not to be confused with the mark
set via Ctrl-^) at various lines and/or columns in the buffer, and
allow movement between them with a single keystroke.
- Add the ability to move to different lines of the screen with a single
keystroke, e.g. M-` to go to the top line, M-& to go to the center
line, and M-' to go to the last line.
Old requests:
For version 2.0:
- UTF-8 support. [DONE]
- Support for paragraph searches. [DONE]
- Support for justifying the entire file at once. [DONE]
- Support for filename searches in the file browser.
- Undo/Redo keys?
- Rebindable keys?
- Support for filename searches in the file browser. [DONE]
- Keystroke to implement "Add next sequence as raw" like vi's ^V. [DONE]
- Spell check selected text only. [DONE]
- Make "To Line" (^W^T) and "Read from Command" (^R^X) reenter their
@@ -15,9 +44,6 @@ For version 1.4:
(^R^X^X) (requires figuring out when to keep cursor position and when
not to). [DONE]
- Fix resetstatuspos global which we shouldn't have. [DONE]
- Rewrite the nano FAQ in SGML.
Old requests:
For version 1.2:
- Single line scroll up/down? [DONE]

71
UPGRADE
View File

@@ -1,6 +1,73 @@
GNU nano upgrading information
==============================
Visible changes since 1.2
-------------------------
* Editor Features
- Support for UTF-8.
- Moving to a specified line and column of a file, instead of just a
line (+LINE[,COLUMN]).
- Smart home key (-A).
- Creation of unique backup files in a specified directory (-C <dir>).
- Insertion of spaces instead of a tab when Tab is pressed (-E).
- The long option for -K is now --rebindkeypad.
- Regular expression searching can now be toggled when nano is built
with --enable-tiny, so -R now means something else (see below).
- Restricted mode that provides more security than -o (-R).
- Blanking of the statusbar after 1 keystroke instead of 25 (-U).
- Word searches can optionally skip over punctuation (-W).
- Workaround for Delete's acting like Backspace (-d).
- Many more options are supported in the nanorc.
- Improvements to color syntax highlighting support: case insensitive
matching, the ability to include color syntaxes in separate files,
the ability to specify background colors without foreground colors,
etc.
- Insertion of single-byte characters via Esc Esc <000-255>.
- Insertion of all characters via "Verbatim Input" mode.
- Workaround for the "NumLock glitch".
- Meta-W now repeats the last search. Wrapping is now toggled via
Meta-L.
- Replacing and spell checking only selected text.
- Indenting all marked lines with one keystroke.
- Copying text into the cutbuffer without cutting it.
- Scrolling the text up and down single lines without moving the
cursor.
- PageUp and PageDown work more smoothly when using -S.
- Scrolling the help text up and down single lines.
- Cutting all text from the current position to the end of the file
with one keystroke.
- Justifying the entire file with one keystroke.
- Justifying without removing spaces from the ends of lines.
- Unjustifying after justifying and immediately resizing.
- Going to the first or last line of the current paragraph.
- Going to the first or last line of the file without having to go to
the "Search" prompt.
- Searching for filenames in the file browser.
- Displaying spaces and tabs differently to make it easier to tell
them apart.
- Many more functions available at the statusbar prompt: moving to the
next or previous word, searching for matching brackets, "Verbatim
Input" mode, etc.
- The glibc 2.2.3 crashes involving extended regular expressions are
no longer worked around, as they can break anything using extended
regular expressions, and glibc 2.2.3 is old. You should upgrade to
at least glibc 2.2.4.
* File Handling
- Automatic adding of newlines to the ends of files without them can
now be disabled (-L).
- Converting from and to DOS/Mac file format is now toggled only at
the "Write File" prompt, via Meta-D and Meta-M, and the default file
format to save in is now set depending on what format the file was
originally in. -D now makes nano use bold text instead of reverse
video text, and Meta-D at the edit window now does a
word/line/character count. -O now makes the unused second line of
the screen part of the edit window, and Meta-O at the edit window
now toggles this behavior.
- Converting files that contain a mix of DOS and Mac format lines.
- Automatic switching on of -N with binary files has been removed, as
it causes problems with UTF-8 support.
Visible changes since 1.0
-------------------------
* Editor Features
@@ -8,10 +75,10 @@ Visible changes since 1.0
something else, see below).
- nanorc support (see nanorc.sample included in sources).
- Smooth scrolling (-S).
- Searching of matching brace/bracket/etc.
- Support for searching for matching braces, brackets, etc.
- Help for all editor features.
- Color syntax highlighting support.
- Quote string support, useful for mail agents, etc (-Q).
- Quote string support, useful for mail agents, etc. (-Q).
- Insertion of output of external commands.
- Optional enabling of XON and XOFF control characters (-p).
- Tons of bugfixes/enhancements for already existing features.

View File

@@ -19,7 +19,7 @@
#
# $Id$
AC_INIT([GNU nano], [1.3.8], [nano-devel@gnu.org], [nano])
AC_INIT([GNU nano], [1.3.12], [nano-devel@gnu.org], [nano])
AC_CONFIG_SRCDIR([src/nano.c])
AC_CANONICAL_TARGET([])
AM_INIT_AUTOMAKE
@@ -39,30 +39,17 @@ dnl Internationalization macros.
AM_GNU_GETTEXT_VERSION(0.11.5)
AM_GNU_GETTEXT([external], [need-ngettext])
AM_CONDITIONAL(USE_NLS, test "x$USE_NLS" = "xyes")
dnl Data location.
pkgdatadir=${datadir}/${PACKAGE}
AC_DEFINE_DIR([PKGDATADIR], [pkgdatadir], [Where data are placed to.])
dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS(fcntl.h getopt.h libintl.h limits.h regex.h termios.h wchar.h wctype.h)
AC_CHECK_HEADER(regex.h,
AC_MSG_CHECKING([for broken regexec from glibc 2.2.3])
AC_TRY_RUN([
#include <sys/types.h>
#include <regex.h>
int main(void)
{
regex_t reg;
size_t n = 1;
regmatch_t r;
regcomp(&reg, "\\<", 0);
regexec(&reg, "", n, &r, 0);
regfree(&reg);
return 0;
}],
AC_MSG_RESULT(no),
AC_MSG_RESULT(yes)
AC_DEFINE(BROKEN_REGEXEC, 1, [Define this if your regexec() function segfaults when passed an empty string under certain conditions, as the one from glibc 2.2.3 does.]),
AC_MSG_RESULT([cross-compiling; assuming no])))
AC_CHECK_HEADERS(getopt.h libintl.h limits.h regex.h sys/param.h wchar.h wctype.h)
dnl Checks for options.
@@ -86,14 +73,15 @@ fi])
AC_ARG_ENABLE(tiny,
[ --enable-tiny Disable features for the sake of size],
[if test x$enableval = xyes; then
AC_DEFINE(NANO_SMALL, 1, [Define this to make the nano executable as small as possible.]) tiny_support=yes
AC_DEFINE(DISABLE_BROWSER, 1, [Define this to disable the built-in file browser.])
AC_DEFINE(DISABLE_HELP, 1, [Define this to disable the help menu.])
AC_DEFINE(DISABLE_JUSTIFY, 1, [Define this to disable the justify routine.])
AC_DEFINE(DISABLE_MOUSE, 1, [Define this to disable the mouse functions.])
AC_DEFINE(DISABLE_OPERATINGDIR, 1, [Define this to disable setting of the operating directory (chroot of sorts).])
AC_DEFINE(DISABLE_SPELLER, 1, [Define this to disable the use(full|less) spelling functions.])
AC_DEFINE(DISABLE_TABCOMP, 1, [Define to disable the tab completion code Chris worked so hard on!])
AC_DEFINE(NANO_TINY, 1, [Define this to make the nano executable as small as possible.]) tiny_support=yes
AC_DEFINE(DISABLE_BROWSER, 1, [Define this to disable the built-in file browser.])
AC_DEFINE(DISABLE_HELP, 1, [Define this to disable the help text display.])
AC_DEFINE(DISABLE_JUSTIFY, 1, [Define this to disable the justify routine.])
AC_DEFINE(DISABLE_MOUSE, 1, [Define this to disable the mouse functions.])
AC_DEFINE(DISABLE_OPERATINGDIR, 1, [Define this to disable setting of the operating directory (chroot of sorts).])
AC_DEFINE(DISABLE_SPELLER, 1, [Define this to disable the spell checker functions.])
AC_DEFINE(DISABLE_TABCOMP, 1, [Define to disable the tab completion code Chris worked so hard on!])
AC_DEFINE(DISABLE_WRAPPING, 1, [Define this to disable any and all text wrapping.])
fi])
AC_ARG_ENABLE(browser,
@@ -105,7 +93,7 @@ fi])
AC_ARG_ENABLE(help,
[ --disable-help Disable help function],
[if test x$enableval != xyes; then
AC_DEFINE(DISABLE_HELP, 1, [Define this to disable the help menu.])
AC_DEFINE(DISABLE_HELP, 1, [Define this to disable the help text display.])
fi])
AC_ARG_ENABLE(justify,
@@ -127,9 +115,9 @@ AC_ARG_ENABLE(operatingdir,
fi])
AC_ARG_ENABLE(speller,
[ --disable-speller Disable spell checker function],
[ --disable-speller Disable spell checker functions],
[if test x$enableval != xyes; then
AC_DEFINE(DISABLE_SPELLER, 1, [Define this to disable the use(full|less) spelling functions.])
AC_DEFINE(DISABLE_SPELLER, 1, [Define this to disable the spell checker functions.])
fi])
AC_ARG_ENABLE(tabcomp,
@@ -154,13 +142,7 @@ AC_ARG_ENABLE(color,
[ --enable-color Enable color and syntax highlighting],
[if test x$enableval = xyes; then
AC_DEFINE(ENABLE_NANORC, 1, [Define this to use the .nanorc file.]) nanorc_support=yes
AC_DEFINE(ENABLE_COLOR, 1, [Define this to have syntax highlighting, requires ENABLE_NANORC too!]) color_support=yes
AC_MSG_WARN([
***********************************************************************
*** WARNING: Color support is far from perfect, but functional. ***
*** Be careful with syntax in your .nanorc or nano may malfunction. ***
***********************************************************************
])
AC_DEFINE(ENABLE_COLOR, 1, [Define this to have syntax highlighting, requires regex.h and ENABLE_NANORC too!]) color_support=yes
fi])
AC_ARG_ENABLE(multibuffer,
@@ -179,15 +161,9 @@ AC_ARG_ENABLE(all,
[ --enable-all Enable ALL extra nano functionality (kitchen sink option)],
[if test x$enableval = xyes; then
AC_DEFINE(ENABLE_NANORC, 1, [Define this to use the .nanorc file.]) nanorc_support=yes
AC_DEFINE(ENABLE_COLOR, 1, [Define this to have syntax highlighting, requires ENABLE_NANORC too!]) color_support=yes
AC_DEFINE(ENABLE_COLOR, 1, [Define this to have syntax highlighting, requires regex.h and ENABLE_NANORC too!]) color_support=yes
AC_DEFINE(ENABLE_MULTIBUFFER, 1, [Define this to enable multiple file buffers.]) multibuffer_support=yes
AC_DEFINE(NANO_EXTRA, 1, [Define this to enable the extra stuff.]) extra_support=yes
AC_MSG_WARN([
***********************************************************************
*** WARNING: Color support is far from perfect, but functional. ***
*** Be careful with syntax in your .nanorc or nano may malfunction. ***
***********************************************************************
])
fi])
AC_MSG_CHECKING([whether to enable UTF-8 support])
@@ -396,20 +372,22 @@ int main(void)
;;
esac], [AC_MSG_RESULT(no)])
AM_CONDITIONAL(USE_COLOR, test "x$color_support" = "xyes")
dnl Checks for functions.
AC_CHECK_FUNCS(getdelim getline isblank snprintf strcasecmp strcasestr strncasecmp strnlen vsnprintf)
AC_CHECK_FUNCS(getdelim getline isblank strcasecmp strcasestr strncasecmp strnlen vsnprintf)
if test x$enable_utf8 != xno; then
AC_CHECK_FUNCS(iswalnum iswblank iswpunct iswspace mblen mbstowcs mbtowc wctomb wcwidth)
fi
if test x$ac_cv_func_snprintf = xno || test x$ac_cv_func_vsnprintf = xno; then
if test x$ac_cv_func_vsnprintf = xno; then
AM_PATH_GLIB_2_0(2.0.0,,
AC_MSG_ERROR([
*** snprintf() and/or vsnprintf() not found. GLIB 2.x not found either.
*** You need both snprintf() and vsnprintf(). Alternatively you can
*** install the GLIB library which can be found at ftp://ftp.gtk.org/.]),
*** vsnprintf() not found. GLIB 2.x not found either. You should
*** install the GLIB 2.x library which can be found at
*** ftp://ftp.gtk.org/.]),
glib)
fi
@@ -455,7 +433,7 @@ else
AC_MSG_RESULT([Using $CURSES_LIB_NAME as the curses library])
fi
AC_CHECK_LIB([$CURSES_LIB_NAME], use_default_colors, AC_DEFINE(HAVE_USE_DEFAULT_COLORS, 1, [Define this if your curses library has the use_default_colors command.]))
AC_CHECK_LIB([$CURSES_LIB_NAME], use_default_colors, AC_DEFINE(HAVE_USE_DEFAULT_COLORS, 1, [Define this if your curses library has the use_default_colors() command.]))
dnl Parse any configure options.
@@ -480,7 +458,7 @@ if test x$enable_utf8 != xno && \
test x$ac_cv_func_mbtowc = xyes && \
test x$ac_cv_func_wctomb = xyes && \
test x$ac_cv_func_wcwidth = xyes; then
AC_DEFINE(NANO_WIDE, 1, [Define this if your system has sufficient wide character support (a wide curses library, iswalnum(), iswpunct(), iswblank() or iswspace(), mblen(), mbstowcs(), mbtowc(), wctomb(), and wcwidth()).])
AC_DEFINE(ENABLE_UTF8, 1, [Define this if your system has sufficient UTF-8 support (a wide curses library, iswalnum(), iswpunct(), iswblank() or iswspace(), mblen(), mbstowcs(), mbtowc(), wctomb(), and wcwidth()).])
else
if test x$enable_utf8 = xyes; then
AC_MSG_ERROR([
@@ -502,8 +480,10 @@ fi
AC_CONFIG_FILES([
Makefile
doc/Makefile
doc/nanorc.sample
doc/man/Makefile
doc/man/fr/Makefile
doc/syntax/Makefile
doc/texinfo/Makefile
m4/Makefile
po/Makefile.in

View File

@@ -1,2 +1,3 @@
Makefile
Makefile.in
nanorc.sample

View File

@@ -1,3 +1,7 @@
SUBDIRS = man texinfo
if USE_COLOR
SUBDIRS += syntax
endif
EXTRA_DIST = faq.html nanorc.sample

View File

@@ -2,7 +2,7 @@
<html>
<head>
<title>The GNU nano editor FAQ</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#330000" bgcolor="#ffffff" link="#0000ef" vlink="#51188e" alink="#ff0000">
<h1>The GNU nano editor FAQ</h1>
@@ -32,19 +32,23 @@
<a href="#3.9">3.9. How do I make a .nanorc file that nano will read when I start it?</a></p></blockquote>
<h2><a href="#4">4. Running</a></h2>
<blockquote><p><a href="#4.1">4.1. How do I open a file with a name beginning with '+' from the command line?</a><br>
<a href="#4.2">4.2. Ack! My backspace/delete/enter/double bucky/meta key doesn't seem to work! What can I do?</a><br>
<a href="#4.3">4.3. How do I type the F13-F16 keys shown in the help browser? My keyboard only has F1-F12!</a><br>
<a href="#4.4">4.4. Nano crashes when I type &lt;insert keystroke here&gt;!</a><br>
<a href="#4.5">4.5. Nano crashes when I resize my window. How can I fix that?</a><br>
<a href="#4.6">4.6. [version 1.1.12 and earlier] Why does nano show ^\ in the shortcut list instead of ^J?</a><br>
<a href="#4.7a">4.7a. [version 1.1.12 and earlier] When I type in a search string, the string I last searched for is already in front of my cursor! What happened?!</a><br>
<a href="#4.7b">4.7b. [version 1.1.99pre1 and later] Hey, the search string behavior has reverted, it's now like Pico, what happened to the consistency?</a><br>
<a href="#4.8">4.8. How do I make nano my default editor (in Pine, mutt, etc.)?</a><br>
<a href="#4.9">4.9. I've compiled nano with color support, but I don't see any color when I run it!</a><br>
<a href="#4.10">4.10. How do I select text for the clipboard in an X terminal when I'm running nano in one and nano's mouse support is turned on?</a></p></blockquote>
<a href="#4.2">4.2. Ack! My Backspace/Delete/Enter/Meta/double bucky key doesn't seem to work! What can I do?</a><br>
<a href="#4.3">4.3. Ack! My numeric keypad's keys don't work properly when NumLock is off! What can I do?</a><br>
<a href="#4.4">4.4. Ack! When I hold down a Meta key combination for a while, the character of the held key gets inserted now and then. What gives?</a><br>
<a href="#4.5">4.5. How do I type the F13-F16 keys shown in the help browser? My keyboard only has F1-F12!</a><br>
<a href="#4.6">4.6. Nano crashes when I type &lt;insert keystroke here&gt;!</a><br>
<a href="#4.7">4.7. Nano crashes when I resize my window. How can I fix that?</a><br>
<a href="#4.8">4.8. [version 1.3.12 and later] I'm using glibc 2.2.3, and nano crashes when I use color support or do regular expression searches. How can I fix that?</a><br>
<a href="#4.9">4.9. [version 1.1.12 and earlier] Why does nano show ^\ in the shortcut list instead of ^J?</a><br>
<a href="#4.10a">4.10a. [version 1.1.12 and earlier] When I type in a search string, the string I last searched for is already in front of my cursor! What happened?!</a><br>
<a href="#4.10b">4.10b. [version 1.1.99pre1 and later] Hey, the search string behavior has reverted, it's now like Pico, what happened to the consistency?</a><br>
<a href="#4.11">4.11. How do I make nano my default editor (in Pine, mutt, etc.)?</a><br>
<a href="#4.12">4.12. I've compiled nano with color support, but I don't see any color when I run it!</a><br>
<a href="#4.13">4.13. How do I select text for the clipboard in an X terminal when I'm running nano in one and nano's mouse support is turned on?</a></p></blockquote>
<h2><a href="#5">5. Internationalization</a></h2>
<blockquote><p><a href="#5.1">5.1. There's no translation for my language!</a><br>
<a href="#5.2">5.2. I don't like the translation for &lt;x&gt; in my language. How can I fix it?</a></p></blockquote>
<a href="#5.2">5.2. I don't like the translation for &lt;x&gt; in my language. How can I fix it?</a><br>
<a href="#5.3">5.3. What is the status of Unicode support?</a></p></blockquote>
<h2><a href="#6">6. Advocacy and Licensing</a></h2>
<blockquote><p><a href="#6.1">6.1. Why should I use nano instead of Pico?</a><br>
<a href="#6.2">6.2. Why should I use Pico instead of nano?</a><br>
@@ -62,7 +66,7 @@
<hr width="100%">
<h1><a name="1"></a>1. General</h1>
<h2><a name="1.1"></a>1.1 About this FAQ</h2>
<blockquote><p>This FAQ was originally written and maintained by Chris Allegretta &lt;<a href="mailto:chrisa@asty.org">chrisa@asty.org</a>&gt;, who also happens to be the creator of nano. It is currently maintained by David Lawrence Ramsey &lt;<a href="mailto:pooka_regent@sluggy.net">pooka_regent@sluggy.net</a>&gt;. Maybe someone else will volunteer to maintain this FAQ someday, who knows...</p></blockquote>
<blockquote><p>This FAQ was originally written and maintained by Chris Allegretta &lt;<a href="mailto:chrisa@asty.org">chrisa@asty.org</a>&gt;, who also happens to be the creator of nano. It is currently maintained by David Lawrence Ramsey &lt;<a href="mailto:pooka109@cox.net">pooka109@cox.net</a>&gt;. Maybe someone else will volunteer to maintain this FAQ someday, who knows...</p></blockquote>
<h2><a name="1.2"></a>1.2. How do I contribute to it?</h2>
<blockquote><p>Your best bet is to send it to the nano email address, <a href="mailto:nano@nano-editor.org">nano@nano-editor.org</a> and if it is useful enough it will be included in future versions.</p></blockquote>
<h2><a name="1.3"></a>1.3. What is GNU nano?</h2>
@@ -75,12 +79,12 @@
<p>The <a href="http://www.debian.org/">Debian GNU/Linux</a> distribution, known for its strict standards in distributing truly &quot;free&quot; software (i.e. software with no restrictions on redistribution), would not include a binary package for Pine or Pico. Many people had a serious dilemma: they loved these programs, but they were not truly free software in the <a href="http://www.gnu.org/philosophy/free-sw.html">GNU</a> sense of the word.</p>
<p><b>The event...</b></p>
<p>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 1000 makefiles that came with it and how just a few small improvements could make it the Best Editor in the World (TM). 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.</p>
<p>Finally something snapped inside and Chris coded 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). The program could not be invoked without a filename, could not save files, had no help menu, spell checker, and so forth. But over time it improved, and with the help of a few great coders it matured to the (hopefully) stable state it is today.</p>
<p>Finally something snapped inside and Chris coded 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). The program could not be invoked without a filename, could not save files, had no help text display, spell checker, and so forth. But over time it improved, and with the help of a few great coders it matured to the (hopefully) stable state it is today.</p>
<p>In February 2001, nano was declared an official GNU program by Richard Stallman. Nano also reached its first production release on March 22, 2001.</p></blockquote>
<h2><a name="1.5"></a>1.5. Why the name change from TIP?</h2>
<blockquote><p>On January 10, 2000, TIP was officially renamed to nano because of a namespace conflict with another program called 'tip'. The original 'tip' program &quot;establishes a full duplex terminal connection to a remote host&quot;, and was included with many older Unix systems (and newer ones like Solaris). The conflict was not noticed at first because there is no 'tip' utility included with most GNU/Linux distributions (where nano was developed).</p></blockquote>
<h2><a name="1.6"></a>1.6. What is the current version of nano?</h2>
<blockquote><p>The current version of nano *should* be 1.3.8. Of course you should always check the nano homepage to see what the latest and greatest version is.</p></blockquote>
<blockquote><p>The current version of nano *should* be 1.3.12. Of course you should always check the nano homepage to see what the latest and greatest version is.</p></blockquote>
<h2><a name="1.7"></a>1.7. I want to read the man page without having to download the program!</h2>
<blockquote><p>Jeez, demanding, aren't we? Okay, look <a href="http://www.nano-editor.org/dist/v1.3/nano.1.html">here</a>.</p></blockquote>
<hr width="100%">
@@ -99,11 +103,6 @@
<li><a href="http://www.nano-editor.org/dist/v1.2/RPMS/">http://www.nano-editor.org/dist/v1.2/RPMS/</a></li>
<li><a href="http://www.ewtoo.org/~astyanax/nano/dist/v1.2/RPMS/">http://www.ewtoo.org/~astyanax/nano/dist/v1.2/RPMS/</a></li>
</ul>
<p>Additionally, check out the RedHat contribs section at:</p>
<ul>
<li><a href="http://distro.ibiblio.org/pub/Linux/distributions/redhat/contrib/libc6/i386/">http://distro.ibiblio.org/pub/Linux/distributions/redhat/contrib/libc6/i386/</a></li>
<li><a href="ftp://distro.ibiblio.org/pub/Linux/distributions/redhat/contrib/libc6/i386/">ftp://distro.ibiblio.org/pub/Linux/distributions/redhat/contrib/libc6/i386/</a></li>
</ul>
</blockquote>
<h2><a name="2.3"></a>2.3. Debian (.deb) packages.</h2>
<blockquote><p>Debian users can check out the current nano packages for:</p>
@@ -115,7 +114,7 @@
<p>You can also have a look at the <a href="ftp://ftp.debian.org/debian/pool/main/n/nano/">Package Pool</a> to see all the available binary and source packages.</p>
<p>Note that versions &lt; 0.9.10 are probably not for 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.</p></blockquote>
<h2><a name="2.4"></a>2.4. By CVS (for the brave).</h2>
<blockquote><p>For the 'bleeding edge' current version of nano, you can use CVS to download the current source code. <b>Note:</b> believe it or not, by downloading code that has not yet stabilized into an official release, there could quite possibly be bugs, in fact the code may not even compile! Anyway, see <a href="http://savannah.gnu.org/cvs/?group_id=1025">the nano CVS page</a> for info on anonymous CVS access to the nano source.</p></blockquote>
<blockquote><p>For the 'bleeding edge' current version of nano, you can use CVS to download the current source code. <b>Note:</b> believe it or not, by downloading code that has not yet stabilized into an official release, there could quite possibly be bugs, in fact the code may not even compile! Anyway, see <a href="http://savannah.gnu.org/cvs/?group=nano">the nano CVS page</a> for info on anonymous CVS access to the nano source.</p></blockquote>
<hr width="100%">
<h1><a name="3"></a>3. Installation and Configuration</h1>
<h2><a name="3.1"></a>3.1. How do install the RPM or DEB package?</h2>
@@ -167,7 +166,7 @@
<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 &quot;Close&quot;, instead of the normal &quot;Exit&quot; when only one buffer is open.</p></blockquote>
<h2><a name="3.8"></a>3.8. Tell me more about this verbatim input stuff!</h2>
<blockquote><p>To use verbatim input, you must be using nano 1.3.1 or newer. When you want to insert a literal character into the file you're editing, such as a control character that nano usually treats as a command, first press <b>Meta-V</b>. (If you're not at a prompt, you'll get the message &quot;Verbatim Input&quot;.) Then press the key(s) that generate the character you want.</p>
<p>Alternatively, you can press <b>Meta-V</b> and then type a four-digit hexadecimal code from 0000 to ffff (case-insensitive), and the character with the corresponding value will be inserted instead.</p></blockquote>
<p>Alternatively, if you've enabled Unicode support (see section <a href="#5.3">5.3</a>), you can press <b>Meta-V</b> and then type a six-digit hexadecimal code from 000000 to 10FFFF (case-insensitive), and the character with the corresponding value will be inserted instead. The prompt will change to &quot;Unicode Input&quot; when you do this.</p></blockquote>
<h2><a name="3.9"></a>3.9. How do I make a .nanorc file that nano will read when I start it?</h2>
<blockquote><p>It's not hard at all! But, your version of nano must have been compiled with <b>--enable-nanorc</b>, and again must be version 1.1.12 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 &quot;set nowrap&quot; or &quot;set suspend&quot;.</p></blockquote>
<hr width="100%">
@@ -177,47 +176,55 @@
<p>To open '+filename.txt' starting on line 1: <b>nano +filename.txt</b><br>
To open '+filename.txt' starting on line 10: <b>nano +10 +filename.txt</b><br>
To open '+filename.txt' starting on line 1 and 'filename.txt' starting on line 10 (if nano has been compiled with multibuffer support): <b>nano +1 +filename.txt +20 filename.txt</b></p></blockquote>
<h2><a name="4.2"></a>4.2. Ack! My backspace/delete/enter/double bucky/meta key doesn't seem to work! What can I do?</h2>
<h2><a name="4.2"></a>4.2. Ack! My Backspace/Delete/Enter/Meta/double bucky key doesn't seem to work! What can I do?</h2>
<blockquote><p>Try setting your $TERM variable to 'vt100'. Nano doesn't yet support every term entry under the sun.</p>
<p>Bourne shell users (bash and sh): <b>export TERM=vt100</b><br>
C Shell users (tcsh and csh): <b>setenv TERM vt100</b></p></blockquote>
<h2><a name="4.3"></a>4.3. How do I type the F13-F16 keys shown in the help browser? My keyboard only has F1-F12!</h2>
<blockquote><p>It depends on the terminal type you're using. On some terminals, such as the FreeBSD console, xterm, konsole, and gnome-terminal, Shift-F1 to Shift-F4 will generate F13 to F16. On other terminals, such as the Linux console, rxvt, or Eterm, Shift-F3 to Shift-F6 will generate F13 to F16.</p></blockquote>
<h2><a name="4.4"></a>4.4. Nano crashes when I type &lt;insert keystroke here&gt;!</h2>
<h2><a name="4.3"></a>4.3. Ack! My numeric keypad's keys don't work properly when NumLock is off! What can I do?</h2>
<blockquote><p>You can use the <b>-K</b> or <b>--rebindkeypad</b> options on the command line, or add the line <b>set rebindkeypad</b> to your .nanorc. However, nano's mouse support won't work properly if you do any of these things.</p></blockquote>
<h2><a name="4.4"></a>4.4. Ack! When I hold down a Meta key combination for a while, the character of the held key gets inserted now and then. What gives?</h2>
<blockquote><p>This is a bug in the terminal, not in nano. When a key is repeating faster than nano can process it, the keyboard buffer becomes full and starts dropping incoming keystrokes. Unfortunately, it doesn't just drop whole keystrokes; it can also drop parts of multibyte key combinations, resulting in nano's receiving a wrong key.</p></blockquote>
<h2><a name="4.5"></a>4.5. How do I type the F13-F16 keys shown in the help browser? My keyboard only has F1-F12!</h2>
<blockquote><p>It depends on the terminal type you're using. On some terminals, such as the FreeBSD console, xterm, konsole, and gnome-terminal, Shift-F1 to Shift-F4 will generate F13 to F16. On other terminals, such as the Linux console, rxvt, and Eterm, Shift-F3 to Shift-F6 will generate F13 to F16.</p></blockquote>
<h2><a name="4.6"></a>4.6. Nano crashes when I type &lt;insert keystroke here&gt;!</h2>
<blockquote><p>If you aren't trying some bizarre keystroke combination with some bizarre $TERM entry, chances are you have found a bug. You are welcome to submit it to the <a href="mailto:nano-devel@gnu.org">nano-devel</a> list or to <a href="mailto:nano@nano-editor.org">nano@nano-editor.org</a>.</p></blockquote>
<h2><a name="4.5"></a>4.5. Nano crashes when I resize my window. How can I fix that?</h2>
<h2><a name="4.7"></a>4.7. Nano crashes when I resize my window. How can I fix that?</h2>
<blockquote><p>Older versions of nano had this problem, please upgrade to a newer version (at least 0.9.9 would be great, 0.9.12 is recommended).</p></blockquote>
<h2><a name="4.6"></a>4.6. [version 1.1.12 and earlier] Why does nano show ^\ in the shortcut list instead of ^J?</h2>
<h2><a name="4.8"></a>4.8. [version 1.3.12 and later] I'm using glibc 2.2.3, and nano crashes when I use color support or do regular expression searches. How can I fix that?</h2>
<blockquote><p>It's a bug in glibc 2.2.3. You should upgrade to at least glibc 2.2.4.</p></blockquote>
<h2><a name="4.9"></a>4.9. [version 1.1.12 and earlier] Why does nano show ^\ in the shortcut list instead of ^J?</h2>
<blockquote><p>The help (^G) and justify (^J) function were among the last to be written. To show the improvements that nano had over Pico (go to line # and replace), ^_ and ^\ were put on the shortcut list. 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.</p></blockquote>
<h2><a name="4.7a"></a>4.7a. [version 1.1.12 and earlier] When I type in a search string, the string I last searched for is already in front of my cursor! What happened?!</h2>
<h2><a name="4.10a"></a>4.10a. [version 1.1.12 and earlier] When I type in a search string, the string I last searched for is already in front of my cursor! What happened?!</h2>
<blockquote><p>In nano version 0.9.20, the default is to have a completely consistent user interface across all user input functions. This means that regardless of whether you're being asked for a filename to insert or write, or a string to search for, the previous value is already inserted before the cursor. If you prefer the old behavior, use the Pico emulation mode (-p or --pico) or just hit Meta-P while in nano (see the ^G help text for more details).</p></blockquote>
<h2><a name="4.7b"></a>4.7b. [version 1.1.99pre1 and later] Hey, the search string behavior has reverted, it's now like Pico, what happened to the consistency?</h2>
<h2><a name="4.10b"></a>4.10b. [version 1.1.99pre1 and later] Hey, the search string behavior has reverted, it's now like Pico, what happened to the consistency?</h2>
<blockquote><p>It was decided that consistency was nice, but people are used to Pico's inconsistent behavior. Also, in version 1.1.99pre1, search and replace history was introduced. If you wish to edit your previous search/replace entry (or any previous entry), you can do so by hitting the up arrow to cycle through your history. This method allows the best of both worlds: You don't need to erase the previous string if you want to enter a new one, but you can with one keystroke recall previous entries for editing. Therefore there is now no "Pico mode", nano is and has always been a Pico <b>clone</b>, and clones by default should be compatible.</p></blockquote>
<h2><a name="4.8"></a>4.8. How do I make nano my default editor (in Pine, mutt, etc.)?</h2>
<h2><a name="4.11"></a>4.11. How do I make nano my default editor (in Pine, mutt, etc.)?</h2>
<blockquote><p>You need to make nano your $EDITOR. If you want this to be saved, you should put a line like this in your <b>.bashrc</b> if you use bash (or <b>.zshrc</b> if you believe in zsh):</p>
<p><b>export EDITOR=/usr/local/bin/nano</b></p>
<p>or if you use tcsh put this in your <b>.cshrc</b> file:</p>
<p>or, if you use tcsh, put this in your <b>.cshrc</b> file:</p>
<p><b>setenv EDITOR /usr/local/bin/nano</b></p>
<p>Change /usr/local/bin/nano to wherever nano is installed on your system. Type &quot;which nano&quot; to find out. This will not take effect until the next time you login. So log out and back in again.</p>
<p>Then on top that if you use Pine you must go into setup (type <b>S</b> at the main menu), then configure (type <b>C</b>). Hit enter on the lines that say:</p>
<p>Then, on top of that, if you use Pine, you must go into setup (type <b>S</b> at the main menu), and then configure (type <b>C</b>). Hit Enter on the lines that say:</p>
<p><b>[ ] enable-alternate-editor-cmd</b><br>
<b>[ ] enable-alternate-editor-implicitly</b></p>
<p>Then exit (<b>E</b>) and select Yes (<b>Y</b>).</p>
<p>Mutt users should see an effect immediately the next time you log in, no further configuration is needed. However, if you want to let people know you use nano to compose your email messages, you can put a line like this in your <b>.muttrc</b>:</p>
<p>If you're a mutt user, you should see an effect immediately the next time you log in. No further configuration is needed. However, if you want to let people know you use nano to compose your email messages, you can put a line like this in your <b>.muttrc</b>:</p>
<p><b>my_hdr X-Composer: nano x.y.z</b></p>
<p>Again, replace x.y.z with the version of nano you use.</p></blockquote>
<h2><a name="4.9"></a>4.9. I've compiled nano with color support, but I don't see any color when I run it!</h2>
<h2><a name="4.12"></a>4.12. I've compiled nano with color support, but I don't see any color when I run it!</h2>
<blockquote><p>If you want nano to actually use color, you have to specify the color configurations you want it to use in your .nanorc. Some example configurations are in the <b>nanorc.sample</b> that comes with the nano source or your nano package. See Section <a href="#3.9">3.9</a>.</p></blockquote>
<h2><a name="4.10"></a>4.10. How do I select text for the clipboard in an X terminal when I'm running nano in one and nano's mouse support is turned on?</h2>
<blockquote><p>Try holding down the Shift key and selecting the text as you normally would.</p></blockquote>
<h2><a name="4.13"></a>4.13. How do I select text for or paste text from the clipboard in an X terminal when I'm running nano in one and nano's mouse support is turned on?</h2>
<blockquote><p>Try holding down the Shift key and selecting or pasting the text as you normally would.</p></blockquote>
<hr width="100%">
<h1><a name="5"></a>5. Internationalization</h1>
<h2><a name="5.1"></a>5.1. There's no translation for my language!</h2>
<blockquote><p>On June of 2001, GNU nano entered the <a href="http://www.iro.umontreal.ca/contrib/po/HTML/">Free Translation Project</a> and since then, translations should be managed from there.</p>
<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 translate 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 <b>not</b> mean that you transfer the rights of your work to the FSF, it's just so the FSF can legally manage them).</p>
<blockquote><p>On June of 2001, GNU nano entered the <a href="http://www.iro.umontreal.ca/translation/HTML/">Free Translation Project</a> and since then, translations should be managed from there.</p>
<p>If there isn't a translation for your language, you could ask <a href="http://www.iro.umontreal.ca/translation/HTML/teams.html">your language team</a> to translate 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/translation/HTML/disclaim.html">translation disclaimer to the FSF</a> (this is necessary as nano is an official GNU package, but it does <b>not</b> mean that you transfer the rights of your work to the FSF, it's just so the FSF can legally manage them).</p>
<p>In any case, translating nano is very easy. 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. When you're done, you should send it to the TP's central po repository.</p></blockquote>
<h2><a name="5.2"></a>5.2. I don't like the translation for &lt;x&gt; in my language. How can I fix it?</h2>
<blockquote><p>The best way would probably be to e-mail the person listed in the <code>Last-Translator:</code> field in the <b>&lt;your_language&gt;.po</b> file with your suggested corrections and they can make the changes reach the nano-devel list.</p></blockquote>
<h2><a name="5.3"></a>5.3. What is the status of Unicode support?</h2>
<blockquote><p>With the latest development version (1.3.12+), Unicode should be usable. With your terminal, locale (LC_ALL and similar environment variables), and encoding configured to properly support UTF-8, you should be able to enter and save Unicode text.</p></blockquote>
<hr width="100%">
<h1><a name="6"></a>6. Advocacy and Licensing</h1>
<h2><a name="6.1"></a>6.1. Why should I use nano instead of Pico?</h2>
@@ -249,7 +256,21 @@
<blockquote><p>Re-read Section <a href="#7.4">7.4</a> and you should know the answer.</p></blockquote>
<h2><a name="8"></a>8. ChangeLog</h2>
<blockquote>
<p>
<p>2006/06/12 - Update section 5.3, due to the display fix for two-column Unicode characters. (DLR)<br>
2006/06/05 - Add a new section 4.8, and move all section 4 entries after it down one number, to explain how to deal with glibc 2.2.3's crashes involving extended regular expressions. (DLR)<br>
2006/06/04 - Add minor punctuation, wording, and typo fixes. (DLR)<br>
2006/05/27 - Update section 3.8 to mention the new "Unicode Input" prompt, and how Unicode input only works when Unicode support is enabled. (DLR)<br>
2006/05/12 - Remove section 4.4, and move all section 4 entries after it up one number, since it no longer applies. Meta-] and Meta-[ are no longer used to indent and unindent marked text, since they require that the bracket matching key change to Ctrl-], which is used as the telnet escape key (found by Chris). Also, make the link to the nano CVS page a bit more readable. (DLR)<br>
2006/05/08 - Add a new section 4.5, and move all section 4 entries after it down one number, to explain a problem that can occur when holding down keys to generate Meta sequences. Also add a few more capitalization and wording fixes. (Benno Schulenberg, minor tweaks by DLR)<br>
2006/05/01 - Add a new section 4.4, and move all section 4 entries after it down one number, to explain how to deal with problems typing Meta-[. Also add a few capitalization and wording fixes. (DLR)<br>
2006/04/14 - Clarify section 1.4: help menu -> help text display. (DLR, suggested by Benno Schulenberg)<br>
2006/03/16 - Update the Free Translation Project's address, change the character set to UTF-8, and remove broken links to contributed RedHat nano packages. (DLR)<br>
2005/11/21 - Clarify section 5.3 to better explain how to enable Unicode support, and remove the mention of quirks, since they turned out to not be a nano problem. (Mike Frysinger and DLR)<br>
2005/11/19 - Add a new section 5.3 to explain the status of nano's Unicode support. (Mike Frysinger, minor tweaks by DLR)<br>
2005/08/27 - Update email address. (DLR)<br>
2005/08/10 - Add a new section 4.3, and move all section 4 entries after it down one number, to explain how to deal with numeric keypad problems. (DLR)<br>
2005/08/08 - Update section 3.8 to mention that verbatim input mode now takes a six-digit hexadecimal number. (DLR)<br>
2005/07/04 - Update section 4.10 to mention that pasting from the X clipboard via the middle mouse button also works when the Shift key is used. (DLR)<br>
2005/06/15 - Update description of --enable-extra, and add missing line breaks. (DLR)<br>
2005/06/13 - Minor capitalization and wording fixes. (DLR)<br>
2005/06/08 - Updated section 1.1 to mention the current maintainer. (DLR)<br>

View File

@@ -1,4 +1,5 @@
Makefile
Makefile.in
nanorc.5.html
nano.1.html
nanorc.5.html
rnano.1.html

View File

@@ -1,12 +1,18 @@
SUBDIRS = fr
SUBDIRS =
man_MANS = nano.1 nanorc.5
if USE_NLS
SUBDIRS += fr
endif
BUILT_SOURCES = nano.1.html nanorc.5.html
man_MANS = nano.1 nanorc.5 rnano.1
BUILT_SOURCES = nano.1.html nanorc.5.html rnano.1.html
nano.1.html: nano.1
cat $< | groff -t -mandoc -Thtml > $@
nanorc.5.html: nanorc.5
cat $< | groff -t -mandoc -Thtml > $@
rnano.1.html: rnano.1
cat $< | groff -t -mandoc -Thtml > $@
EXTRA_DIST = $(man_MANS) $(BUILT_SOURCES)

View File

@@ -1,4 +1,5 @@
Makefile
Makefile.in
nanorc.5.html
nano.1.html
nanorc.5.html
rnano.1.html

View File

@@ -1,12 +1,14 @@
man_MANS = nano.1 nanorc.5
man_MANS = nano.1 nanorc.5 rnano.1
mandir = @mandir@/fr
BUILT_SOURCES = nano.1.html nanorc.5.html
BUILT_SOURCES = nano.1.html nanorc.5.html rnano.1.html
nano.1.html: nano.1
cat $< | groff -t -mandoc -Thtml > $@
nanorc.5.html: nanorc.5
cat $< | groff -t -mandoc -Thtml > $@
rnano.1.html: rnano.1
cat $< | groff -t -mandoc -Thtml > $@
EXTRA_DIST = $(man_MANS) $(BUILT_SOURCES)

View File

@@ -1,30 +1,31 @@
.\" Hey, EMACS: -*- nroff -*-
.\" nano.1 is copyright (C) 1999, 2000, 2001, 2002, 2003 by
.\" Chris Allegretta <chrisa@asty.org>
.\" nano.1 is copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005,
.\" 2006 by Chris Allegretta <chrisa@asty.org>
.\"
.\" (c) 2003-2004 Jean-Philippe Guérard <jean-philippe.guerard@corbeaunoir.org>
.\" pour l'adaptation française
.\" Adaptation française (c) 2003-2006 par
.\" Jean-Philippe Guérard <jean-philippe.guerard@corbeaunoir.org>.
.\"
.\" This is free documentation, see the latest version of the GNU General
.\" Public License for copying conditions. There is NO warranty.
.\" This is free documentation, see the latest version of the GNU
.\" General Public License for copying conditions. There is NO
.\" warranty.
.\"
.\" Ce document est libre. Reportez-vous à la dernière version de la
.\" licence publique générale GNU (GNU GPL) pour connaître ses
.\" conditions d'utilisation. AUCUNE garantie n'est offerte.
.\" conditions d'utilisation. Ce document est distribué sans
.\" AUCUNE garantie.
.\"
.\" $Id$
.TH NANO 1 "version 1.3.4" "17 août 2004"
.TH NANO 1 "version 1.3.12" "17\ juin\ 2006"
.\" Please adjust this date whenever revising the manpage.
.\" Merci de modifier ces dates à chaque mise à jour de cette page.
.\"
.SH NOM
nano \- NAno un NOuvel éditeur, un clone libre et amélioré de Pico
.SH SYNOPSIS
.B nano
.I [\+LIGNE]\ [options]\ [fichier]
.I [OPTIONS]\ [[\+LIGNE[,COLONNE]]\ FICHIER]...
.br
.SH DESCRIPTION
@@ -34,7 +35,7 @@ Cette page de manuel d
.\" \fI<whatever>\fP escape sequences to invoke bold face and italics,
.\" respectively.
\fBnano\fR est un éditeur petit, sympathique et libre, qui vise à remplacer
Pico, l'éditeur par défaut du paquet non libre Pine. \fBnano\fR ne se
Pico, l'éditeur par défaut du logiciel non libre Pine. \fBnano\fR ne se
contentant pas de copier l'interface et l'ergonomie de Pico, il offre
également certaines fonctions manquantes (ou désactivées par défaut)
dans Pico. Ces fonctionnalités sont, par exemple, les fonctions de
@@ -43,31 +44,38 @@ num
.SH OPTIONS
.TP
.B \+\fILIGNE\fR
Démarre avec le curseur positionné à la ligne numéro \fILIGNE\fR.
.B \+\fILIGNE\fP[,\fICOLONNE\fP]
Démarre avec le curseur positionné à la colonne \fICOLONNE\fP de
la ligne \fILIGNE\fR au lieu de démarrer à la colonne\ 1, ligne\ 1.
.TP
.B \-?
Identique à \fB-h (\-\-help)\fP.
.TP
.B \-A (\-\-smarthome)
Active le fonctionnement évolué de la touche «\ Début\ ». Lorsque cette
touche est pressée à n'importe quel endroit excepté au tout début du
texte d'une ligne (i.\ e. au premier caractère non blanc), le curseur se
positionnera à ce début de ligne (qu'il soit en avant ou en arrière). Si
le curseur est déjà au tout début de la ligne, il se placera au vrai
début de la ligne.
Rend plus malin le fonctionnement de la touche «\ Début\ ». Lorsque l'on
appuie sur cette touche à n'importe quel endroit excepté au tout début
du texte d'une ligne (i.\ e. au premier caractère non blanc), le curseur
se positionnera au début du texte de la ligne (qu'il soit en avant ou en
arrière). Si le curseur est déjà , il se placera au vrai début de la
ligne.
.TP
.B \-B (\-\-backup)
Lors de l'écriture d'un fichier, crée une copie de sécurité de la
version précédente, en ajoutant un tilde (~) au nom du fichier.
.TP
.B \-D (\-\-dos)
Écrit le fichier au format DOS.
.B \-D (\-\-boldtext)
Utilise des caractères gras à la place de la vidéo inverse.
.TP
.B \-E \fIrépertoire\fP (\-\-backupdir=\fIrépertoire\fP)
.B \-C \fIrépertoire\fP (\-\-backupdir=\fIrépertoire\fP)
Définit le répertoire utilisé par \fBnano\fP pour enregistrer les copies
de sécurité si celles-ci sont activées.
de sécurité uniques si celles-ci sont activées.
.TP
.B \-E (\-\-tabstospaces)
Convertit les tabulations clavier en espaces.
.TP
.B \-F (\-\-multibuffer)
Active le mode multifichier, autorisant l'édition simultanée de plusieurs
fichiers, si ce mode est disponible.
Active le mode multi-espace, autorisant l'édition simultanée de
plusieurs fichiers, si ce mode est disponible.
.TP
.B \-H (\-\-historylog)
Enregistre les chaînes ayant fait l'objet d'une recherche ou d'un
@@ -76,83 +84,106 @@ r
utiliser les fichiers nanorc.
.TP
.B \-I (\-\-ignorercfiles)
N'utilise pas les fichiers \fISYSCONFDIR/nanorc\fR et \fI~/.nanorc\fR, même si
\fBnano\fR est capable de les utiliser.
Ne pas utiliser pas les fichiers \fISYSCONFDIR/nanorc\fR et
\fI~/.nanorc\fR (si \fBnano\fR est capable de les utiliser).
.TP
.B \-M (\-\-mac)
Écrit le fichier au format Mac.
.B \-K (\-\-rebindkeypad)
Interprète les touches du pavé numérique afin qu'elles fonctionnent
toutes correctement. Vous ne devriez utiliser cette option que si ce
n'est pas le cas, car nano ne sera plus capable d'utiliser la souris
correctement lorsque cette option sera activée.
.TP
.B \-L (\-\-nonewlines)
Ne pas ajouter de passage à la ligne à la fin des fichiers.
.TP
.B \-N (\-\-noconvert)
Désactive la conversion automatique des fichiers depuis les formats Mac et
DOS.
.TP
.B \-O (\-\-morespace)
Utiliser la ligne blanche située sous la ligne de titre comme
espace supplémentaire d'édition.
.TP
.B \-Q \fIchaîne\fP (\-\-quotestr=\fIchaîne\fP)
Définit le préfixe par défaut des citations. Nano utilise ce préfixe
pour réaliser une justification correcte des citations. Si nano est
capable d'utiliser des expressions rationnelles, le préfixe par défaut
sera "^([\ \\t]*[|>:}#])+", sinon, ce sera ">\ ".
sera "\fI^([\ \\t]*[#:>\\|}])+\fP", sinon, ce sera "\fI>\ \fP". Dans
l'expression rationnelle précédente, «\ \fI\\t\fP\ » représente une
tabulation.
.TP
.B \-R (\-\-regexp)
Active l'utilisation d'expressions rationnelles lors des recherches, ainsi
que la possibilité d'utiliser \\n dans les chaînes de remplacement pour
faire référence à la n-ième sous-expression du motif de recherche, si
cette fonction est disponible.
.B \-R (\-\-restricted)
Mode restreint\ : aucune lecture ou écriture de fichiers non indiqués
sur la ligne de commande, pas de lecture des fichiers nanorc,
interdiction de suspendre, interdiction d'ajouter au début, à la fin,
de sauvegarder un fichier ayant déjà un nom sous un nom différent,
d'utiliser une copie de sécurité ou le correcteur orthographique. Cette
option peut aussi être activée en appelant \fBnano\fP sous un nom
commençant par «\ r\ » (par exemple «\ rnano\ »).
.TP
.B \-S (\-\-smooth)
Active le défilement progressif. Le texte défilera ligne-par-ligne au lieu
de défiler morceau-par-morceau.
.TP
.B \-T \fInombre\fP (\-\-tabsize=\fInombre\fP)
Définit la taille (largeur) des tabulations.
Définit la taille (largeur) des tabulations en nombre de colonnes. Le
nombre indiqué doit être strictement supérieur à 0. La valeur par défaut
est de 8.
.TP
.B \-U (\-\-quickblank)
Effacement rapide de la ligne d'état. Les messages affichés par la ligne
d'état disparaîtront après une frappe clavier au lieu de 25. Notez que
l'option \fB-c\fP prend le pas sur cette option.
.TP
.B \-V (\-\-version)
Affiche le numéro de version et l'auteur.
Affiche la version, puis s'arrête.
.TP
.B \-W (\-\-wordbounds)
Détection plus précise des limites de mots, obtenue en considérant les
caractères de ponctuation comme faisant partie des mots.
.TP
.B \-Y \fIchaîne\fP (\-\-syntax=\fIchaîne\fP)
Indique quel mode de colorisation syntaxique adopter, parmi les modes
définis dans le fichier \fI.nanorc\fR, si cette fonctionnalité est
disponible.
.TP
.B \-Z (\-\-restricted)
Mode restreint\ : aucune lecture ou écriture de fichiers non indiqués
sur la ligne de commande, pas de lecture des fichiers nanorc,
interdiction de suspendre et interdiction de sauvegarder (ou d'ajouter
en tête ou en fin) un fichier ayant déjà un nom sous un nom différent.
Cette option peut aussi être activée en appelant \fBnano\fP sous un nom
commençant par «\ r\ » (par exemple «\ rnano\ »).
.TP
.B \-c (\-\-const)
Affiche en permanence la position du curseur.
Affiche en permanence la position du curseur. Notez que cette option
prend le pas sur l'option \fB-U\fP.
.TP
.B \-d (\-\-rebinddelete)
Interprète différemment la touche «\ Supprimer\ », afin que les touches
Interprète différemment la touche «\ Supprimer\ », afin que les touches
«\ Effacement arrière\ » et «\ Supprimer\ » fonctionnent correctement.
Vous devriez n'avoir besoin de cette option que si la touche
«\ Effacement arrière\ » produit l'effet de la touche «\ Supprimer\ »
sur votre système.
Vous ne devriez avoir besoin de cette option que si, sur votre système,
la touche «\ Effacement arrière\ » produit l'effet de la touche
«\ Supprimer\ ».
.TP
.B \-h (\-\-help)
Affiche un résumé des options disponibles en ligne de commande.
Affiche un résumé des options de lancement de nano, puis s'arrête.
.TP
.B \-i (\-\-autoindent)
Indentation automatique. Commence chaque nouvelle ligne au même niveau que
la ligne précédente. Utile pour l'édition de code source.
.TP
.B \-k (\-\-cut)
^K coupe le texte du curseur à la fin de la ligne, au lieu de couper la
Coupe le texte du curseur à la fin de la ligne, au lieu de couper la
ligne entière.
.TP
.B \-l (\-\-nofollow)
Si le fichier édité est un lien symbolique, remplace le lien par le
nouveau fichier, sans le suivre. Ce mode ne serait-il pas utile pour éditer
les fichiers de \fI/tmp\fR ?
Si le fichier édité est un lien symbolique, au lieu de le suivre,
remplace le lien par le nouveau fichier. Sans doute utile pour éditer
les fichiers de \fI/tmp\fR, non\ ?
.TP
.B \-m (\-\-mouse)
Active l'utilisation de la souris (si elle est disponible sur votre
système).
Active l'utilisation de la souris, si elle est disponible pour votre
système. Lorsque celle-ci est activée, il est possible d'utiliser la
souris pour positionner le curseur, pour marquer le texte (avec un
double-clic) et pour lancer les fonctions correspondant aux raccourcis.
Il est possible d'utiliser la souris sous X\ Window ou en mode console
avec gpm.
.TP
.B \-o \fIrépertoire\fP (\-\-operatingdir=\fIrépertoire\fP)
Définit le répertoire de travail. Demande à nano de mettre en place
Définit le répertoire de travail. Demande à \fBnano\fP de mettre en place
quelque chose de similaire à un environnement d'exécution restreint
(\fIchroot\fR).
.TP
@@ -161,18 +192,18 @@ Pr
par le terminal.
.TP
.B \-r \fIcolonne\fP (\-\-fill=\fIcolonne\fP)
Passe automatiquement à la ligne à la colonne \fIcolonne\fR. Par défaut, le
passage à la ligne se fait à la taille de l'écran moins huit. Si la
valeur indiquée est négative, le point de passage à la ligne sera
calculé relativement au bord droit de l'écran. Cela permet de faire varier
le point de passage à la ligne lorsque l'on change la taille de l'écran.
Passe automatiquement à la ligne une fois arrivé à la colonne
\fIcolonne\fR. Si la valeur indiquée est de 0 ou moins, le point de
passage à la ligne aura lieu à la taille de l'écran moins \fIcolonne\fR.
Cela permet de faire varier le point de passage à la ligne lorsque l'on
change la taille de l'écran. La valeur par défaut est de -8.
.TP
.B \-s \fIprogramme\fP (\-\-speller=\fIprogramme\fP)
Choix d'un correcteur orthographique de remplacement.
.TP
.B \-t (\-\-tempfile)
S'il a été modifié, le fichier sera sauvegardé automatiquement sans
demande de confirmation. Identique à l'option -t de Pico.
demande de confirmation. Identique à l'option \fB-t\fP de Pico.
.TP
.B \-v (\-\-view)
Mode visualisation (lecture seule).
@@ -190,14 +221,14 @@ Autorise
Ignoré, pour être compatible avec Pico.
.SH "FICHIERS D'INITIALISATION"
\fBnano\fR lit les fichiers d'initialisation dans l'ordre suivant\ :
\fISYSCONFDIR/nanorc\fR, puis \fI~/.nanorc\fR. Référez-vous à la page de manuel
de \fBnanorc\fR(5) et au fichier-exemple \fInanorc.sample\fR qui devrait être
livré avec \fBnano\fR.
\fBnano\fR lit les fichiers d'initialisation dans l'ordre suivant\ :
\fISYSCONFDIR/nanorc\fR, puis \fI~/.nanorc\fR. Référez-vous à la page de
manuel de \fBnanorc(5)\fR et au fichier d'exemple \fInanorc.sample\fR,
qui devraient tous les deux être livrés avec \fBnano\fR.
.SH NOTES
Si aucun correcteur orthographique de remplacement n'est indiqué dans la
ligne de commande ou dans le fichier nanorc, \fBnano\fR prendra
ligne de commande ou dans l'un des fichiers nanorc, \fBnano\fR prendra
la commande indiquée par la variable d'environnement \fBSPELL\fR si
elle est définie.
@@ -209,7 +240,7 @@ cours n'avait pas encore de nom, ou sera compos
suivi du suffixe «\ .save\ ». Si un fichier de ce nom existe déjà dans
le répertoire, un «\ .save\ » et un nombre seront ajoutés à la fin du
nom du fichier en cours afin de le rendre unique (par exemple,
«\ .save.1\ »). En mode multifichier, \fBnano\fR réalisera une
«\ .save.1\ »). En mode multi-espace, \fBnano\fR réalisera une
sauvegarde de tous les fichiers en cours dans leurs fichiers de secours
respectifs.
@@ -217,12 +248,16 @@ respectifs.
Merci de nous faire parvenir vos commentaires et de nous signaler les
bogues, en écrivant, en anglais, à \fBnano@nano-editor.org\fR.
La liste de discussion anglophone \fBnano\fR est disponible via
La liste de discussion anglophone \fBnano\fR est disponible à l'adresse
\fBnano-devel@gnu.org\fR.
Pour vous abonner, envoyez un courrier électronique à
\fBnano-devel-request@gnu.org\fR, ayant pour objet «\ subscribe\ ».
N'hésitez pas également à envoyez vos commentaires, suggestions et
corrections relatives à l'adaptation française de cette page de manuel
ou du logiciel à \fBjean-philippe.guerard@corbeaunoir.org\fR.
.SH "SITE INTERNET"
http://www.nano-editor.org/
@@ -234,13 +269,25 @@ http://www.nano-editor.org/
\fI/usr/share/doc/nano/\fR (ou son équivalent sur votre système)
.SH AUTEUR
Chris Allegretta <chrisa@asty.org> et d'autres (voir les fichiers
\fIAUTHORS\fR et \fITHANKS\fR pour plus d'information). Cette page de manuel a
été initialement rédigée par Jordi Mallach
<jordi@sindominio.net> pour le système GNU Debian (mais elle peut
être utilisée par d'autres).
Chris Allegretta <chrisa@asty.org> et d'autres (voir les fichiers
\fIAUTHORS\fR et \fITHANKS\fR pour plus d'information). Cette page de
manuel a été initialement rédigée par Jordi Mallach
<jordi@sindominio.net> pour le système GNU Debian (mais elle peut être
utilisée par d'autres).
.SH TRADUCTION
Cette adaptation française a été réalisé par Jean-Philippe\ Guérard
<jean-philippe.guerard@corbeaunoir.org> le 17\ juin\ 2006 à partir
de la version du 8\ juin\ 2006 de la page de manuel de nano 1.3.12.
Cette page a été relue par Gérard Delafond.
Adaptation française du 4\ septembre\ 2004 par
Jean-Philippe\ Guérard\ <jean-philippe.guerard@corbeaunoir.org>.
Un maximum de soin a été apporté lors de l'élaboration de cette
traduction\ ; néanmoins, quelques imperfections peuvent subsister. Si
vous en rencontrez, que ce soit dans la version française ou dans la
version originale, n'hésitez pas à les signaler à l'auteur ou au
traducteur.
La version originale la plus à jour de ce document est toujours
consultable via la commande\ :
LANGUAGE=en man nano

View File

@@ -1,18 +1,21 @@
.\" Hey, EMACS: -*- nroff -*-
.\" nanorc.5 is Copyright (C) 2003 Free Software Foundation, Inc.
.\" nanorc.5 is Copyright (C) 2003, 2004, 2005, 2006 by the Free
.\" Software Foundation, Inc.
.\"
.\" (c) 2003-2004 Jean-Philippe Guérard <jean-philippe.guerard@corbeaunoir.org>
.\" pour l'adaptation française
.\" (c) 2003-2006 Jean-Philippe Guérard <jean-philippe.guerard@corbeaunoir.org>
.\" pour l'adaptation française.
.\"
.\" This is free documentation, see the latest version of the GNU General
.\" Public License for copying conditions. There is NO warranty.
.\" This is free documentation, see the latest version of the GNU
.\" General Public License for copying conditions. There is NO
.\" warranty.
.\"
.\" Ce document est libre. Reportez-vous à la dernière version de la
.\" licence publique générale GNU (GNU GPL) pour connaître ses
.\" conditions d'utilisation. AUCUNE garantie n'est offerte.
.\" conditions d'utilisation. Ce document est distribué sans
.\" AUCUNE garantie.
.\"
.\" $Id$
.TH NANORC 5 "version 1.3.4" "17 août 2004"
\" $Id$
.TH NANORC 5 "version 1.3.12" "17\ juin\ 2006"
.\" Please adjust this date whenever revising the manpage.
.\" Merci de modifier ces dates à chaque mise à jour de cette page.
@@ -21,187 +24,283 @@ nanorc \- fichier de configuration de l'
.SH DESCRIPTION
Cette page de manuel décrit brièvement le fichier de configuration de
l'éditeur \fBnano\fP du projet GNU.
l'éditeur \fBnano\fP GNU.
.PP
\fBnano\fP est un petit éditeur sympathique et libre, qui vise à
remplacer Pico, l'éditeur par défaut du paquet non-libre Pine.
remplacer Pico, l'éditeur par défaut du logiciel non libre Pine.
\fBnano\fP ne se contentant pas de copier l'interface et l'ergonomie de
Pico, il offre également certaines fonctionnalités manquantes (ou
désactivées par défaut) de Pico. Ces fonctionnalités sont, par exemple,
les fonctions de recherche et de remplacement, et la possibilité de
les fonctions de recherche et de remplacement et la possibilité de
sauter directement à un numéro de ligne.
.PP
Le fichier \fInanorc\fP contient les paramètres par défaut de
\fBnano\fP. Lors de son démarrage, nano commence par lire le fichier de
configuration général \fISYSCONFDIR/nanorc\fP, puis lit le fichier de
configuration personnel de l'utilisateur \fI~/.nanorc\fP.
\fBnano\fP. Il ne doit pas être au format DOS ou Mac. Lors de son
démarrage, nano commencera par lire le fichier de configuration général
\fISYSCONFDIR/nanorc\fP, puis lira le fichier de configuration personnel
de l'utilisateur \fI~/.nanorc\fP.
.SH OPTIONS
Le fichier de configuration accepte une série de commandes «\ set\ »
(activer) et «\ unset\ » (désactiver), qui permettent de définir la
configuration de nano au démarrage sans avoir à utiliser d'options sur
la ligne de commande.
De plus, les mots clefs «\ syntax\ » (syntaxe) et «\ color\ » (couleur)
Le fichier de configuration accepte une série de commandes \fBset\fP
(activer) et \fBunset\fP (désactiver), qui permettent de définir le
paramétrage de nano au démarrage sans avoir à utiliser d'options de
ligne de commande. De plus, les mots clefs \fBsyntax\fP (syntaxe),
\fBcolor\fP (couleur) et \fBicolor\fP (couleur insensible à la casse)
sont utilisés pour définir les règles de colorisation pour différents
motifs de texte. Nano lira une commande par ligne.
motifs de texte. \fBnano\fP lit une commande par ligne.
Les options du fichier de configuration ont priorité sur les valeurs par
défaut utilisées par nano. Les options de la ligne de commande sont
prioritaires par rapport aux options du fichier de configuration.
Les options du fichier de configuration ont priorité sur les valeurs par
défaut utilisées par nano. Les options de la ligne de commande sont
prioritaires par rapport aux options du fichier de configuration. Les
options sont désactivées (unset) par défaut, sauf les options prenant un
argument.
Les options sont désactivées (unset) par défaut, sauf les options
prenant un argument.
Les apostrophes («\ \fI'\fP\ ») et les guillemets droits («\ \fI"\fP\ »)
présents dans des chaînes de caractères utilisées comme paramètres n'ont
pas besoin d'être précédées d'une barre oblique inversée
\ \fI\\\fP\ »). La chaîne sera terminée par le dernier guillemet
droit. Par exemple, pour l'option \fBbrackets\fP, "\fI"')>]}\fP"
correspondra à \fI"\fP, \fI'\fP, \fI)\fP, \fI>\fP, \fI]\fP et \fI}\fP.
Les commandes et arguments reconnus sont\ :
.TP 3
\fBset/unset autoindent\fP
.B set/unset autoindent
Active l'indentation automatique.
.TP
\fBset/unset backup\fP
Crée des copie de sécurité nommées
.B set/unset backup
Crée des copies de sécurité nommées
.IR nom_du_fichier~ .
.TP
\fBset/unset const\fP
.B set backupdir "\fIrépertoire\fP"
Définit le répertoire utilisé par \fBnano\fP pour enregistrer les copies
de sécurité uniques, si l'enregistrement de copies de sécurité est
activé.
.TP
.B set/unset backwards
Par défaut, les recherches se font vers l'arrière.
.TP
.B set/unset boldtext
Utilise des caractères gras à la place de la vidéo inverse.
.TP
.B set brackets "\fIchaîne\fP"
Définit les caractères considérés comme des crochets fermants lors de la
justification des paragraphes. Ces caractères ne doivent pas contenir
d'espaces. Seules les ponctuations terminales, éventuellement suivies
de crochets fermants, peuvent terminer une phrase.
(N.D.T.\ : reportez-vous au paragraphe sur l'option \fBpunct\fR pour
plus d'informations.)
La valeur par défaut de cette option est\ : "\fI"')>]}\fP".
.TP
.B set/unset casesensitive
Par défaut, les recherches ne tiennent pas compte de la casse.
.TP
.B set/unset const
Affiche en permanence la position du curseur dans la ligne d'état.
.TP
\fBset/unset cut\fP
Par défaut, ^K coupe le texte du curseur jusqu'à la fin de la ligne, au
lieu de couper la ligne entière.
.B set/unset cut
Par défaut, coupe le texte du curseur à la fin de la ligne, au lieu de
couper la ligne entière.
.TP
\fBset fill \fIn\fP\fP
Passe automatiquement à la ligne à la colonne \fIn\fP. Si la valeur
indiquée est 0 ou moins, la longueur de la ligne sera égale à la largeur
de l'écran moins \fIn\fP. La valeur par défaut est -8.
.B set fill \fIn\fP
Passe automatiquement à la ligne une fois arrivé à la colonne
\fIn\fR. Si la valeur indiquée est de 0 ou moins, le point de passage à
la ligne aura lieu à la taille de l'écran moins \fIn\fR. Cela permet de
faire varier le point de passage à la ligne lorsque l'on change la
taille de l'écran. La valeur par défaut est de -8.
.TP
\fBset/unset historylog\fP
.B set/unset historylog
Active l'utilisation de
.I ~/.nano_history
pour enregistrer et relire les chaînes ayant fait l'objet d'une
recherche ou d'un remplacement.
.TP
\fBset/unset multibuffer\fP
Mode multifichier\ : permet de charger les fichiers dans leur propre
.B set matchbrackets "\fIchaîne\fP"
Définit les crochets ouvrants et fermant pour la recherche de crochets
correspondants. Cette liste ne doit pas contenir de blancs. L'ensemble
des crochets ouvrants doit être indiqué en premier, suivi de l'ensemble
des crochets fermant, qui doit être dans le même ordre. La valeur par
défaut de cette option est "\fI(<[{)>]}\fP".
.TP
.B set/unset morespace
Utiliser la ligne blanche située sous la ligne de titre comme espace
supplémentaire d'édition.
.TP
.B set/unset mouse
Active l'utilisation de la souris, si elle est disponible pour votre
système. Lorsque celle-ci est activée, il est possible d'utiliser la
souris pour positionner le curseur, pour marquer le texte (avec un
double-clic) et pour lancer les fonctions correspondant aux raccourcis.
Il est possible d'utiliser la souris sous X\ Window ou en mode console
avec gpm.
.TP
.B set/unset multibuffer
Mode multi-espace\ : permet de charger les fichiers dans leur propre
espace.
.TP
\fBset/unset noconvert\fP
.B set/unset noconvert
Pas de conversion depuis les formats DOS et Mac.
.TP
\fBset/unset nofollow\fP
.B set/unset nofollow
Ne suit pas les liens symboliques lors de l'écriture des fichiers.
.TP
\fBset/unset nohelp\fP
.B set/unset nohelp
Désactive les lignes d'aide affichée en bas de l'écran.
.TP
\fBset/unset nowrap\fP
.B set/unset nonewlines
Ne pas ajouter de passage à la ligne à la fin des fichiers.
.TP
.B set/unset nowrap
Désactive le passage automatique à la ligne.
.TP
\fBset operatingdir "\fIrépertoire\fP"\fP
.B set operatingdir "\fIrépertoire\fP"
\fBnano\fP ne lira et n'écrira des fichiers qu'à l'intérieur du
\fIrépertoire\fP et de ses sous-répertoires. De plus, celui-ci devient
le répertoire courant, afin que les fichiers soient lus depuis ce
répertoire. Par défaut, cette fonction est désactivée.
.TP
\fBset/unset preserve\fP
.B set/unset preserve
Préserve les séquences XON et XOFF (^Q et ^S).
.TP
\fBset punct "\fIchaîne\fP"\fP
Définit les caractères interprétés comme des ponctuations terminales.
Ces caractères ne peuvent inclure d'espaces ou de tabulations. Seules les
ponctuations terminales, éventuellement suivies de crochets fermants,
peuvent terminer une phrase.
.B set punct "\fIchaîne\fP"
Définit les caractères interprétés comme des ponctuations terminales
lors de la justification des paragraphes. Ces caractères ne peuvent
inclure de blancs. Seules les ponctuations terminales, éventuellement
suivies de crochets fermants, peuvent terminer une phrase. La valeur par
défaut de cette option est "\fI!.?\fP".
(N.D.T.\ : ce réglage permet de conserver 2\ espaces au lieu d'une
derrière les ponctuations terminales lors de la justification, ce qui
(N.D.T.\ : ce réglage permet, lors de la justification, de conserver
2\ espaces au lieu d'une derrière les ponctuations terminales, ce qui
correspond aux normes typographiques anglo-saxonnes, mais n'a pas lieu
d'être en français. Pour le français, le plus simple est d'indiquer dans
le fichier nanorc une chaîne vide pour ce paramètre.)
d'être en français. Pour le français, le plus simple est d'indiquer,
dans le fichier nanorc, une chaîne vide pour ce paramètre.)
.TP
\fBset quotestr "\fIchaîne\fP"\fP
.B set/unset quickblank
Effacement rapide de la ligne d'état. Les messages affichés par la ligne
d'état disparaîtront après une frappe clavier au lieu de 25.
.TP
.B set quotestr "\fIchaîne\fP"
Définit le préfixe par défaut utilisé pour les citations dans les
courriers électroniques. Ce préfixe est utilisé pour réaliser une
justification correcte de ces citations. Il s'agira, si votre système le
permet, d'une «\ expression rationnelle étendue\ ». Dans le cas
permet, d'une expression rationnelle étendue. Dans le cas
contraire, il s'agira d'une chaîne de texte brut. Si vous disposez des
expressions rationnelles, la valeur par défaut sera\ :
set quotestr "^([\ \\t]*[|>:}#])+"
Sinon, ce sera ">\ ". Notez que le «\ \\t\ » ci-dessus correspond à un
caractère de tabulation.
expressions rationnelles, la valeur par défaut de cette option sera
"\fI^([\ \\t]*[#:>\\|}])+\fP", sinon, ce sera ">\ ". Notez que le
«\ \\t\ » ci-dessus correspond à un caractère de tabulation.
.TP
\fBset/unset rebinddelete\fP
Interprète différemment la touche «\ Supprimer\ », afin que les touches
«\ Effacement arrière\ » et «\ Supprimer\ » fonctionnent correctement.
Vous devriez uniquement avoir besoin de cette option si la touche
«\ Effacement arrière\ » produit l'effet de la touche «\ Supprimer\ »
sur votre système.
.B set/unset rebinddelete
Interprète différemment la touche «\ Supprimer\ », afin que les touches
«\ Effacement arrière\ » et «\ Supprimer\ » fonctionnent correctement.
Vous ne devriez avoir besoin de cette option que si, sur votre système,
la touche «\ Effacement arrière\ » produit l'effet de la touche «\
Supprimer\ ».
.TP
\fBset/unset regexp\fP
Utilise par défaut des expressions rationnelles pour les recherches.
.B set/unset rebindkeypad
Interprète les touches du pavé numérique afin qu'elles fonctionnent
toutes correctement. Vous ne devriez utiliser cette option que si ce
n'est pas le cas, car nano ne sera plus capable d'utiliser la souris
correctement lorsque cette option sera activée.
.TP
\fBset/unset smarthome\fP
Active le fonctionnement évolué de la touche «\ Début\ ». Lorsque cette
touche est pressée à n'importe quel endroit excepté au tout début du
texte d'une ligne (i.\ e. au premier caractère non-blanc), le curseur se
positionnera à ce début de ligne (qu'il soit en avant ou en arrière). Si
le curseur est déjà au tout début de la ligne, il se placera au vrai
début de la ligne.
.B set/unset regexp
Utilise par défaut des expressions rationnelles étendues pour les
recherches.
.TP
\fBset/unset smooth\fP
.B set/unset smarthome
Rend plus malin le fonctionnement de la touche «\ Début\ ». Lorsque
cette touche est pressée à n'importe quel endroit excepté au tout début
du texte d'une ligne (i.\ e. au premier caractère non blanc), le curseur
se positionnera au début du texte de la ligne (qu'il soit en avant ou en
arrière). Si le curseur est déjà là, il se placera au vrai début de la
ligne.
.TP
.B set/unset smooth
Active le défilement ligne-par-ligne du texte.
.TP
\fBset speller \fIprogramme\fP\fP
.B set speller "\fIprogramme\fP"
Utilise le correcteur orthographique \fIprogramme\fP au lieu du
correcteur intégré, qui s'appuie sur \fIspell\fP.
.TP
\fBset/unset suspend\fP
Autorise à suspendre nano avec ^Z.
.B set/unset suspend
Autorise à suspendre \fBnano\fP.
.TP
\fBset tabsize \fIn\fP\fP
Utilise une largeur de tabulation de \fIn\fP au lieu de la valeur par
défaut (8). Cette valeur doit être supérieur à 0.
.B set tabsize \fIn\fP
Utilise une taille de tabulation de \fIn\fP colonnes. Cette valeur doit
être strictement supérieure à 0. La valeur par défaut est de\ 8.
.TP
\fBset/unset tempfile\fP
.B set/unset tabstospaces
Convertit les tabulations clavier en espaces.
.TP
.B set/unset tempfile
S'il a été modifié, le fichier sera sauvegardé automatiquement en
quittant, sans demande de confirmation.
.TP
\fBset/unset view\fP
Interdit la modification du fichier.
.B set/unset view
Interdit de modifier les fichiers.
.TP
\fBset whitespace "\fIchaîne\fP"\fP
.B set whitespace "\fIchaîne\fP"
Définit les deux caractères utilisés pour afficher les premiers
caractères de tabulations et d'espaces. Cela ne doit pas être
des caractère de contrôle.
caractères des tabulations et des espaces. Ces deux caractères doivent
être mono-colonne.
.TP
.B set/unset wordbounds
Détection plus précise des limites de mots, obtenue en considérant les
caractères de ponctuation comme faisant partie des mots.
.TP
.B syntax "\fIchaîne\fP" ["\fImotif_de_fichier\fP" ... ]
Définit une syntaxe nommée \fIchaîne\fP qui pourra être activé via
l'option \fB-Y\fP, ou qui sera automatiquement activé si le nom du
fichier en cours correspond au \fImotif_de_fichier\fP. Toutes les
instructions suivantes de colorisation \fBcolor\fP s'appliqueront à
l'option \fB-Y\fP (ou \fB--syntax\fP) ou qui sera automatiquement
activée si le nom du fichier en cours correspond à l'expression
rationnelle étendue \fImotif_de_fichier\fP. Toutes les instructions
suivantes de colorisation \fBcolor\fP ou \fBicolor\fP s'appliqueront à
cette syntaxe, jusqu'à la définition d'une nouvelle syntaxe.
La syntaxe nommée \fInone\fP (aucune) est réservée\ ; si elle est
indiquée dans la ligne de commande, cela revient à ne définir aucune
syntaxe. La syntaxe nommée \fIdefault\fP (par défaut) est spéciale, elle
ne nécessite aucun motif de \fImotif_de_fichier\fP, et s'applique aux
fichiers ne correspondant à aucun des \fImotif_de_fichier\fP des autres
syntaxes.
.TP
.B color \fIcouleur_texte\fP[,\fIcouleur_fond\fP] "\fImotif\fP" ...
Pour la syntaxe en cours, affiche toutes les expressions correspondant à
l'expression rationnelle \fImotif\fP en utilisant la couleur de texte
\fIcouleur_texte\fP et éventuellement la couleur de fond
\fIcouleur_fond\fP. Les couleurs acceptées par \fBnano\fP pour le
texte et le fond sont\ : \fIwhite\fP (blanc), \fIblack\fP (noir),
\fIred\fP (rouge), \fIblue\fP (bleu), \fIgreen\fP (vert), \fIyellow\fP
(jaune), \fImagenta\fP, et \fIcyan\fP. Vous pouvez ajouter à
ces couleurs le préfixe \fIbright\fP pour obtenir une couleur plus
lumineuse. Si votre terminal est capable de gérer la transparence, ne
pas spécifier de \fIcouleur_fond\fP indique à \fBnano\fP d'essayer
d'utiliser un fond transparent.
l'expression rationnelle étendue \fImotif\fP en utilisant la couleur de
texte \fIcouleur_texte\fP et la couleur de fond \fIcouleur_fond\fP,
l'une de ces deux couleurs au moins devant être définie. Les couleurs
acceptées par \fBnano\fP pour le texte et le fond sont\ : \fIwhite\fP
(blanc), \fIblack\fP (noir), \fIred\fP (rouge), \fIblue\fP (bleu),
\fIgreen\fP (vert), \fIyellow\fP (jaune), \fImagenta\fP, et \fIcyan\fP.
Pour la couleur du texte, vous pouvez ajouter à ces couleurs le préfixe
\fIbright\fP (lumineux) pour obtenir une couleur plus lumineuse. Si
votre terminal est capable de gérer la transparence, ne pas spécifier de
\fIcouleur_fond\fP indique à \fBnano\fP d'essayer d'utiliser un fond
transparent.
.TP
.B icolor \fIcouleur_texte\fP[,\fIcouleur_fond\fP] "\fImotif\fP" ...
Comme ci-dessus, mais la recherche des motifs est effectuée sans tenir
compte de la casse.
.TP
.B color \fIcouleur_texte\fP[,\fIcouleur_fond\fP] start="\fImotif_début\fP" end="\fImotif_fin\fP"
Affiche les expressions commençant par \fImotif_début\fP et se terminant
par \fImotif_fin\fP en utilisant la couleur de texte \fIcouleur_texte\fP
et éventuellement la couleur de fond \fIcouleur_fond\fP. Cela permet à
la colorisation syntaxique de s'étendre sur plusieurs lignes. Notez que
toutes les occurrences successives de \fImotif_début\fP après le
\fImotif_début\fP initial seront surlignées jusqu'à la prochaine instance
de \fImotif_fin\fP.
Affiche les expressions commençant par l'expression rationnelle étendue
\fImotif_début\fP et se terminant par l'expression rationnelle étendue
\fImotif_fin\fP en utilisant la couleur de texte \fIcouleur_texte\fP
et la couleur de fond \fIcouleur_fond\fP, l'une de ces deux couleurs au
moins devant être définie. Cela permet à la colorisation syntaxique de
s'étendre sur plusieurs lignes. Notez que toutes les occurrences
successives de \fImotif_début\fP après le \fImotif_début\fP initial
seront surlignées jusqu'à la prochaine instance de \fImotif_fin\fP.
.TP
.B icolor \fIcouleur_texte\fP[,\fIcouleur_fond\fP] start="\fImotif_début\fP" end="\fImotif_fin\fP"
Comme ci-dessus, mais la recherche des motifs est effectuée sans tenir
compte de la casse.
.TP
.B include "\fIfichier_de_syntaxes\fP"
Lit le fichier \fIfichier_de_syntaxes\fP contenant une liste
autosuffisante de définitions de syntaxes. Ce fichier ne doit contenir
que des commandes \fBsyntax\fP, \fBcolor\fP et \fBicolor\fP.
.SH FICHIERS
.TP
@@ -225,6 +324,19 @@ Chris Allegretta <chrisa@asty.org> et d'autres (voir les fichiers
manuel a été rédigée par Jordi Mallach <jordi@gnu.org>.
.SH TRADUCTION
Cette adaptation française a été réalisé par Jean-Philippe\ Guérard
<jean-philippe.guerard@corbeaunoir.org> le 17\ juin\ 2006 à partir de
la version du 24\ mai\ 2006 de la page de manuel de nanorc (pour la
version 1.3.12 de nano). Cette page a été relue par Gérard
Delafond.
Adaptation française du 4\ septembre\ 2004 par
Jean-Philippe\ Guérard\ <jean-philippe.guerard@corbeaunoir.org>.
Un maximum de soin a été apporté lors de l'élaboration de cette
traduction\ ; néanmoins, quelques imperfections peuvent subsister. Si
vous en rencontrez, que ce soit dans la version française ou dans la
version originale, n'hésitez pas à les signaler à l'auteur ou au
traducteur.
La version originale la plus à jour de ce document est toujours
consultable via la commande\ :
LANGUAGE=en man nano

121
doc/man/fr/rnano.1 Normal file
View File

@@ -0,0 +1,121 @@
.\" Hey, EMACS: -*- nroff -*-
.\" rnano.1 is Copyright 2005, 2006 by Thijs Kinkhorst
.\" <thijs@kinkhorst.com>; skeleton based on nano-tiny.1 by Jordi
.\" Mallach <jordi@debian.org>.
.\"
.\" Adaptation française (c) 2006 par
.\" Jean-Philippe Guérard <jean-philippe.guerard@corbeaunoir.org>.
.\"
.\" This is free documentation, see the latest version of the GNU
.\" General Public License for copying conditions. There is NO
.\" warranty.
.\"
.\" Ce document est libre. Reportez-vous à la dernière version de la
.\" licence publique générale GNU (GNU GPL) pour connaître ses
.\" conditions d'utilisation. Ce document est distribué sans
.\" AUCUNE garantie.
.\"
.\" $Id$
.TH RNANO 1 "version 1.3.12" "17\ juin\ 20O6"
.\" Please adjust this date whenever revising the manpage.
.\" Merci de modifier ces dates à chaque mise à jour de cette page.
.\"
.SH NOM
rnano \- Le mode restreint de NAno un NOuvel éditeur, un clone libre et
amélioré de Pico
.SH SYNOPSIS
.B rnano
.I [OPTIONS]\ [[\+LIGNE[,COLONNE]]\ FICHIER]...
.br
.SH DESCRIPTION
Cette page de manuel décrit brièvement la commande \fBrnano\fR.
.PP
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
.\" \fI<whatever>\fP escape sequences to invoke bold face and italics,
.\" respectively.
\fBnano\fR est un éditeur petit, sympathique et libre, qui vise à
remplacer Pico, l'éditeur par défaut du logiciel non libre Pine.
\fBnano\fR ne se contentant pas de copier l'interface et l'ergonomie de
Pico, il offre également certaines fonctions manquantes (ou désactivées
par défaut) dans Pico. Ces fonctionnalités sont, par exemple, les
fonctions de recherche et de remplacement, et la possibilité de sauter
directement à un numéro de ligne.
.PP
\fBrnano\fP est une version de \fBnano\fP fonctionnant en mode
restreint, qui ne permet d'éditer que les fichiers indiqués et qui
n'autorise pas l'utilisateur à accéder au système de fichier ou à un
interpréteur de commandes.
.PP
En mode restreint, \fBnano\fP refusera\ :
.IP \[bu] 2
de lire ou d'écrire dans un fichier n'ayant pas été indiqué dans la
ligne de commande\ ;
.IP \[bu]
de lire un fichier nanorc\ ;
.IP \[bu]
de permettre de suspendre l'édition\ ;
.IP \[bu]
de permettre d'ajouter en début ou en fin d'un fichier, ou de
l'enregistrer sous un nom différent\ ;
.IP \[bu]
l'utilisation de copies de sécurité ou de la correction orthographique.
.SH OPTIONS
.TP
.B \+\fILIGNE\fP[,\fICOLONNE\fP]
Démarre avec le curseur positionné à la colonne \fICOLONNE\fP de
la ligne \fILIGNE\fR au lieu de démarrer à la colonne\ 1, ligne\ 1.
.TP
.B \-?
Identique à \fB-h (\-\-help)\fP.
.TP
.B \-h (\-\-help)
Affiche un résumé des options de lancement de nano, puis s'arrête.
.TP
.B \-V (\-\-version)
Affiche la version, puis s'arrête.
.PP
Reportez-vous à la page de manuel \fBnano\fP(1) si vous souhaitez
consulter la documentation complète de \fBnano\fP.
.SH BOGUES
Merci de nous faire parvenir vos commentaires et de nous signaler les
bogues, en écrivant, en anglais, à \fBnano@nano-editor.org\fR.
La liste de discussion anglophone \fBnano\fR est disponible à l'adresse
\fBnano-devel@gnu.org\fR.
Pour vous abonner, envoyez un courrier électronique à
\fBnano-devel-request@gnu.org\fR, ayant pour objet «\ subscribe\ ».
N'hésitez pas également à envoyez vos commentaires, suggestions et
corrections relatives à l'adaptation française de cette page de manuel
ou du logiciel à \fBjean-philippe.guerard@corbeaunoir.org\fR.
.SH "SITE INTERNET"
http://www.nano-editor.org/
.SH AUTEUR
Chris Allegretta <chrisa@asty.org> et d'autres (voir le fichier
\fIAUTHORS\fR). Cette page de manuel a été initialement rédigée par
Thijs Kinkhorst <thijs@kinkhorst.com>, pour le système GNU Debian (mais
elle peut être utilisée par d'autres).
.SH TRADUCTION
Cette adaptation française a été réalisé par Jean-Philippe\ Guérard
<jean-philippe.guerard@corbeaunoir.org> le 17\ juin\ 2006 à partir
de la version du 1er\ mai\ 2006 de la page de manuel de rnano
(pour la version 1.3.12 de nano).
Un maximum de soin a été apporté lors de l'élaboration de cette
traduction\ ; néanmoins, quelques imperfections peuvent subsister. Si
vous en rencontrez, que ce soit dans la version française ou dans la
version originale, n'hésitez pas à les signaler à l'auteur ou au
traducteur.
La version originale la plus à jour de ce document est toujours
consultable via la commande\ :
LANGUAGE=en man nano

View File

@@ -1,12 +1,13 @@
.\" Hey, EMACS: -*- nroff -*-
.\" nano.1 is copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 by
.\" Chris Allegretta <chrisa@asty.org>
.\" nano.1 is Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005,
.\" 2006 by Chris Allegretta <chrisa@asty.org>
.\"
.\" This is free documentation, see the latest version of the GNU General
.\" Public License for copying conditions. There is NO warranty.
.\" This is free documentation, see the latest version of the GNU
.\" General Public License for copying conditions. There is NO
.\" warranty.
.\"
.\" $Id$
.TH NANO 1 "version 1.3.8" "June 27, 2005"
.TH NANO 1 "version 1.3.12" "June 7, 2006"
.\" Please adjust this date whenever revising the manpage.
.\"
@@ -15,11 +16,11 @@ nano \- Nano's ANOther editor, an enhanced free Pico clone
.SH SYNOPSIS
.B nano
.I [\+LINE,COLUMN]\ [options]\ [file]
.I [OPTIONS]\ [[\+LINE[,COLUMN]]\ FILE]...
.br
.SH DESCRIPTION
This manual page documents briefly the \fBnano\fP command.
This manual page briefly documents the \fBnano\fP command.
.PP
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
.\" \fI<whatever>\fP escape sequences to invoke bold face and italics,
@@ -32,7 +33,7 @@ replace" and "go to line number".
.SH OPTIONS
.TP
.B \+\fILINE\fP,\fICOLUMN\fP
.B \+\fILINE\fP[,\fICOLUMN\fP]
Places cursor at line number \fILINE\fP and column number \fICOLUMN\fP
on startup, instead of the default of line 1, column 1.
.TP
@@ -54,6 +55,9 @@ filename suffixed with a ~.
Set the directory where \fBnano\fP puts unique backup files if file
backups are enabled.
.TP
.B \-D (\-\-boldtext)
Use bold text instead of reverse video text.
.TP
.B \-E (\-\-tabstospaces)
Convert typed tabs to spaces.
.TP
@@ -61,13 +65,21 @@ Convert typed tabs to spaces.
Enable multiple file buffers, if available.
.TP
.B \-H (\-\-historylog)
Log search and replace strings to \fI~/.nano_history\fP so they can be
stored for later editing, if nanorc support is configured.
Log search and replace strings to \fI~/.nano_history\fP, so they can be
retrieved in later sessions, if nanorc support is available.
.TP
.B \-I (\-\-ignorercfiles)
Don't look at \fISYSCONFDIR/nanorc\fP or \fI~/.nanorc\fP, if nanorc
support is available.
.TP
.B \-K (\-\-rebindkeypad)
Interpret the numeric keypad keys so that they all work properly. You
should only need to use this option if they don't, as mouse support
won't work properly with this option enabled.
.TP
.B \-L (\-\-nonewlines)
Don't add newlines to the ends of files.
.TP
.B \-N (\-\-noconvert)
Disable automatic conversion of files from DOS/Mac format.
.TP
@@ -76,15 +88,16 @@ Use the blank line below the titlebar as extra editing space.
.TP
.B \-Q \fIstr\fP (\-\-quotestr=\fIstr\fP)
Set the quoting string for justifying. The default is
"^([\ \\t]*[|>:}#])+" if regular expression support is available, or
">\ " otherwise.
"\fI^([\ \\t]*[#:>\\|}])+\fP" if extended regular expression support is
available, or "\fI>\ \fP" otherwise. Note that \fI\\t\fP stands for a
Tab.
.TP
.B \-R (\-\-restricted)
Restricted mode: Don't read or write to any file not specified on the
command line, read any nanorc files, allow suspending, or allow a file
Restricted mode: don't read or write to any file not specified on the
command line; read any nanorc files; allow suspending; allow a file
to be appended to, prepended to, or saved under a different name if it
already has one. Also accessible by invoking \fBnano\fP with any name
beginning with 'r' (e.g. "rnano").
already has one; or use backup files or spell checking. Also accessible
by invoking \fBnano\fP with any name beginning with 'r' (e.g. "rnano").
.TP
.B \-S (\-\-smooth)
Enable smooth scrolling. Text will scroll line-by-line, instead of the
@@ -96,18 +109,21 @@ Set the size (width) of a tab to \fIcols\fP columns. The value of
.TP
.B \-U (\-\-quickblank)
Do quick statusbar blanking. Statusbar messages will disappear after 1
keystroke instead of 25. Note that \fB-c\fP cancels this out.
keystroke instead of 25. Note that \fB-c\fP overrides this.
.TP
.B \-V (\-\-version)
Show the current version number and author.
Show the current version number and exit.
.TP
.B \-W (\-\-wordbounds)
Detect word boundaries more accurately by treating punctuation
characters as part of a word.
.TP
.B \-Y \fIstr\fP (\-\-syntax=\fIstr\fP)
Specify a specific syntax highlighting from the \fInanorc\fP to use, if
available.
.TP
.B \-c (\-\-const)
Constantly show the cursor position. Note that this cancels out
\fB-U\fP.
Constantly show the cursor position. Note that this overrides \fB-U\fP.
.TP
.B \-d (\-\-rebinddelete)
Interpret the Delete key differently so that both Backspace and Delete
@@ -115,7 +131,7 @@ work properly. You should only need to use this option if Backspace
acts like Delete on your system.
.TP
.B \-h (\-\-help)
Display a summary of command line options.
Show a summary of command line options and exit.
.TP
.B \-i (\-\-autoindent)
Indent new lines to the previous line's indentation. Useful when
@@ -130,10 +146,13 @@ a new file instead of following it. Good for editing files in
\fI/tmp\fP, perhaps?
.TP
.B \-m (\-\-mouse)
Enable mouse support (if available for your system).
Enable mouse support, if available for your system. When enabled, mouse
clicks can be used to place the cursor, set the mark (with a double
click), and execute shortcuts. The mouse will work in the X Window
System, and on the console when gpm is running.
.TP
.B \-o \fIdir\fP (\-\-operatingdir=\fIdir\fP)
Set operating directory. Makes nano set up something similar to a
Set operating directory. Makes \fBnano\fP set up something similar to a
chroot.
.TP
.B \-p (\-\-preserve)
@@ -179,14 +198,14 @@ If no alternative spell checker command is specified on the command
line or in one of the nanorc files, \fBnano\fP will check the
\fBSPELL\fP environment variable for one.
\fBnano\fP will try to dump the buffer into an emergency file in some
cases. Mainly, this will happen if \fBnano\fP receives a SIGHUP or
SIGTERM or runs out of memory, when it will write the buffer into a file
In some cases \fBnano\fP will try to dump the buffer into an emergency
file. This will happen mainly if \fBnano\fP receives a SIGHUP or
SIGTERM or runs out of memory. It will write the buffer into a file
named \fInano.save\fP if the buffer didn't have a name already, or will
add a ".save" suffix to the current filename. If an emergency file with
that name already exists in the current directory, ".save" and a number
(e.g. ".save.1") will be suffixed to the current filename in order to
make it unique. In multibuffer mode, \fBnano\fP will write all the open
that name already exists in the current directory, it will add ".save"
plus a number (e.g. ".save.1") to the current filename in order to make
it unique. In multibuffer mode, \fBnano\fP will write all the open
buffers to their respective emergency files.
.SH BUGS

View File

@@ -1,18 +1,19 @@
.\" Hey, EMACS: -*- nroff -*-
.\" nanorc.5 is Copyright (C) 2003, 2004, 2005 Free Software
.\" Foundation, Inc.
.\" nanorc.5 is Copyright (C) 2003, 2004, 2005, 2006 by the Free
.\" Software Foundation, Inc.
.\"
.\" This is free documentation, see the latest version of the GNU General
.\" Public License for copying conditions. There is NO warranty.
.\" This is free documentation, see the latest version of the GNU
.\" General Public License for copying conditions. There is NO
.\" warranty.
.\"
.\" $Id$
.TH NANORC 5 "version 1.3.8" "June 27, 2005"
.TH NANORC 5 "version 1.3.12" "May 24, 2006"
.\" Please adjust this date whenever revising the manpage.
.\"
.SH NAME
nanorc \- GNU nano's rcfile
.SH DESCRIPTION
This manual page documents GNU \fBnano\fP's rcfile.
This manual page briefly documents GNU \fBnano\fP's rcfile.
.PP
\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
@@ -20,22 +21,26 @@ than just copying Pico's look and feel, \fBnano\fP also implements some
missing (or disabled by default) features in Pico, such as "search and
replace" and "go to line number".
.PP
The \fInanorc\fP file contains the default settings for \fBnano\fP.
During startup, \fBnano\fP will first read its system-wide settings from
\fISYSCONFDIR/nanorc\fP, and then user-specific settings from
\fI~/.nanorc\fP.
The \fInanorc\fP file contains the default settings for \fBnano\fP. It
should not be in DOS or Mac format. During startup, \fBnano\fP will
first read its system-wide settings from \fISYSCONFDIR/nanorc\fP, and
then user-specific settings from \fI~/.nanorc\fP.
.SH OPTIONS
The configuration file accepts a series of "set" and "unset" commands,
which can be used to configure nano on startup without using the
command-line options. Additionally, the "syntax", "color", and "icolor"
keywords are used to define syntax highlighting rules for different text
patterns. GNU nano will read one command per line.
The configuration file accepts a series of \fBset\fP and \fBunset\fP
commands, which can be used to configure nano on startup without using
the command line options. Additionally, the \fBsyntax\fP, \fBcolor\fP,
and \fBicolor\fP keywords are used to define syntax highlighting rules
for different text patterns. \fBnano\fP will read one command per line.
Options in rcfiles take precedence over nano's defaults, and command
line options override rcfile settings.
Options in nanorc files take precedence over nano's defaults, and
command line options override nanorc settings. Also, options are unset
by default, except for those that take arguments.
Options are unset by default, except for options that take an argument.
Quotes inside string parameters don't have to be escaped with
backslashes. The last double quote in the string will be treated as its
end. For example, for the \fBbrackets\fP option, "\fI"')>]}\fP" will
match \fI"\fP, \fI'\fP, \fI)\fP, \fI>\fP, \fI]\fP, and \fI}\fP.
The supported commands and arguments are:
@@ -53,10 +58,14 @@ backups are enabled.
.B set/unset backwards
Do backwards searches by default.
.TP
.B set/unset boldtext
Use bold text instead of reverse video text.
.TP
.B set brackets "\fIstring\fP"
Set the characters treated as closing brackets. They cannot contain
blank characters. Only closing punctuation, optionally followed by
closing brackets, can end sentences.
Set the characters treated as closing brackets when justifying
paragraphs. They cannot contain blank characters. Only closing
punctuation, optionally followed by closing brackets, can end sentences.
The default value is "\fI"')>]}\fP".
.TP
.B set/unset casesensitive
Do case sensitive searches by default.
@@ -76,12 +85,20 @@ default value is -8.
Enable \fI~/.nano_history\fP for saving and reading search/replace
strings.
.TP
.B set matchbrackets "\fIstring\fP"
Set the opening and closing brackets that can be found by bracket
searches. They cannot contain blank characters. The former set must
come before the latter set, and both must be in the same order. The
default value is "\fI(<[{)>]}\fP".
.TP
.B set/unset morespace
Allow use of the blank line below the titlebar as extra editing space.
.TP
.B set/unset mouse
Enable mouse support, so that mouse clicks can be used to set the mark
and run shortcuts.
Enable mouse support, if available for your system. When enabled, mouse
clicks can be used to place the cursor, set the mark (with a double
click), and execute shortcuts. The mouse will work in the X Window
System, and on the console when gpm is running.
.TP
.B set/unset multibuffer
Allow inserting files into their own buffers.
@@ -95,44 +112,51 @@ Don't follow symlinks when writing files.
.B set/unset nohelp
Don't display the help lists at the bottom of the screen.
.TP
.B set/unset nonewlines
Don't add newlines to the ends of files.
.TP
.B set/unset nowrap
Don't wrap text at all.
.TP
.B set operatingdir "\fIdirectory\fP"
\fBnano\fP will only read and write files inside \fIdirectory\fP and its
subdirectories. Also, the current directory is changed to here, so
files are inserted from this dir. By default the operating directory
feature is turned off.
files are inserted from this diractory. By default, the operating
directory feature is turned off.
.TP
.B set/unset preserve
Preserve the XON and XOFF keys (^Q and ^S).
.TP
.B set punct "\fIstring\fP"
Set the characters treated as closing punctuation. They cannot contain
blank characters. Only closing punctuation, optionally followed by
closing brackets, can end sentences.
Set the characters treated as closing punctuation when justifying
paragraphs. They cannot contain blank characters. Only closing
punctuation, optionally followed by closing brackets, can end sentences.
The default value is "\fI!.?\fP".
.TP
.B set quickblank
.B set/unset quickblank
Do quick statusbar blanking. Statusbar messages will disappear after 1
keystroke instead of 25.
.TP
.B set quotestr "\fIstring\fP"
The email-quote string, used to justify email-quoted paragraphs. This
is an "extended regular expression" if your system supports them,
is an extended regular expression if your system supports them,
otherwise a literal string. The default value is
set quotestr "^([\ \\t]*[|>:}#])+"
if you have regexps, otherwise set quotestr ">\ ". Note that '\\t'
above stands for a literal Tab character.
"\fI^([\ \\t]*[#:>\\|}])+\fP" if you have extended regular expression
support, or "\fI>\ \fP" otherwise. Note that '\\t' stands for a literal
Tab character.
.TP
.B set/unset rebinddelete
Interpret the Delete key differently so that both Backspace and Delete
work properly. You should only need to use this option if Backspace
acts like Delete on your system.
.TP
.B set/unset rebindkeypad
Interpret the numeric keypad keys so that they all work properly. You
should only need to use this option if they don't, as mouse support
won't work properly with this option enabled.
.TP
.B set/unset regexp
Do regular expression searches by default.
Do extended regular expression searches by default.
.TP
.B set/unset smarthome
Make the Home key smarter. When Home is pressed anywhere but at the
@@ -144,12 +168,12 @@ line.
.B set/unset smooth
Use smooth scrolling by default.
.TP
.B set speller \fIspellprog\fP
.B set speller "\fIspellprog\fP"
Use spelling checker \fIspellprog\fP instead of the built-in one, which
calls \fIspell\fP.
.TP
.B set/unset suspend
Allow nano to be suspended.
Allow \fBnano\fP to be suspended.
.TP
.B set tabsize \fIn\fP
Use a tab size of \fIn\fP columns. The value of \fIn\fP must be greater
@@ -168,28 +192,40 @@ Disallow file modification.
Set the two characters used to display the first characters of tabs and
spaces. They must be single-column characters.
.TP
.B set/unset wordbounds
Detect word boundaries more accurately by treating punctuation
characters as part of a word.
.TP
.B syntax "\fIstr\fP" ["\fIfileregex\fP" ... ]
Defines a syntax named \fIstr\fP which can be activated via the \fB-Y\fP
flag, or will be automatically activated if the current filename matches
Defines a syntax named \fIstr\fP which can be activated via the
-Y/--syntax command line option, or will be automatically activated if
the current filename matches the extended regular expression
\fIfileregex\fP. All following \fBcolor\fP and \fBicolor\fP statements
will apply to \fIsyntax\fP until a new syntax is defined.
The \fInone\fP syntax is reserved; specifying it on the command line is
the same as not having a syntax at all. The \fIdefault\fP syntax is
special: it takes no \fIfileregex\fP, and applies to files that don't
match any other syntax's \fIfileregex\fP.
.TP
.B color \fIfgcolor\fP,\fIbgcolor\fP "\fIregex\fP" ...
For the currently defined syntax, display all expressions matching
\fIregex\fP with foreground color \fIfgcolor\fP and background color
\fIbgcolor\fP, at least one of which must be specified. Legal colors
for foreground and background color are: white, black, red, blue, green,
yellow, magenta, and cyan. You may use the prefix "bright" to force a
stronger color highlight for the foreground. If your terminal supports
transparency, not specifying a \fIbgcolor\fP tells \fBnano\fP to attempt
to use a transparent background.
the extended regular expression \fIregex\fP with foreground color
\fIfgcolor\fP and background color \fIbgcolor\fP, at least one of which
must be specified. Legal colors for foreground and background color
are: white, black, red, blue, green, yellow, magenta, and cyan. You may
use the prefix "bright" to force a stronger color highlight for the
foreground. If your terminal supports transparency, not specifying a
\fIbgcolor\fP tells \fBnano\fP to attempt to use a transparent
background.
.TP
.B icolor \fIfgcolor\fP,\fIbgcolor\fP "\fIregex\fP" ...
Same as above, except that the expression matching is case insensitive.
.TP
.B color \fIfgcolor\fP,\fIbgcolor\fP start="\fIsr\fP" end="\fIer\fP"
Display expressions which start with \fIsr\fP and end with \fIer\fP
with foreground color \fIfgcolor\fP and background color \fIbgcolor\fP,
Display expressions which start with the extended regular expression
\fIsr\fP and end with the extended regular expression \fIer\fP with
foreground color \fIfgcolor\fP and background color \fIbgcolor\fP,
at least one of which must be specified. This allows syntax
highlighting to span multiple lines. Note that all subsequent instances
of \fIsr\fP after an initial \fIsr\fP is found will be highlighted until
@@ -197,7 +233,11 @@ the first instance of \fIer\fP.
.TP
.B icolor \fIfgcolor\fP,\fIbgcolor\fP start="\fIsr\fP" end="\fIer\fP"
Same as above, except that the expression matching is case insensitive.
.TP
.B include "\fIsyntaxfile\fP"
Read in self-contained color syntaxes from \fIsyntaxfile\fP. Note that
\fIsyntaxfile\fP can only contain \fBsyntax\fP, \fBcolor\fP, and
\fBicolor\fP commands.
.SH FILES
.TP
.I SYSCONFDIR/nanorc

85
doc/man/rnano.1 Normal file
View File

@@ -0,0 +1,85 @@
.\" Hey, EMACS: -*- nroff -*-
.\" rnano.1 is Copyright 2005, 2006 by Thijs Kinkhorst
.\" <thijs@kinkhorst.com>; skeleton based on nano-tiny.1 by Jordi
.\" Mallach <jordi@debian.org>.
.\"
.\" This is free documentation, see the latest version of the GNU
.\" General Public License for copying conditions. There is NO
.\" warranty.
.\"
.\" $Id$
.TH RNANO 1 "version 1.3.12" "May 1, 2006"
.\" Please adjust this date whenever revising the manpage.
.\"
.SH NAME
rnano \- Restricted mode for Nano's ANOther editor, an enhanced free
Pico clone
.SH SYNOPSIS
.B rnano
.I [OPTIONS]\ [[\+LINE[,COLUMN]]\ FILE]...
.br
.SH DESCRIPTION
This manual page briefly documents the \fBrnano\fP command.
.PP
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
.\" \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
than just copying Pico's look and feel, \fBnano\fP also implements some
missing (or disabled by default) features in Pico, such as "search and
replace" and "go to line number".
.PP
\fBrnano\fP is a restricted version of \fBnano\fP, which only edits
specific files and doesn't allow the user access to the filesystem or a
command shell.
.PP
In restricted mode, \fBnano\fP will \fInot\fP:
.IP \[bu] 2
read or write to any file not specified on the command line;
.IP \[bu]
read any nanorc files;
.IP \[bu]
allow suspending;
.IP \[bu]
allow a file to be appended to, prepended to, or saved under a different
name;
.IP \[bu]
use backup files or spell checking.
.SH OPTIONS
.TP
.B \+\fILINE\fP[,\fICOLUMN\fP]
Places cursor at line number \fILINE\fP and column number \fICOLUMN\fP
on startup, instead of the default of line 1, column 1.
.TP
.B \-?
Same as \fB-h (\-\-help)\fP.
.TP
.B \-h (\-\-help)
Show a summary of command line options and exit.
.TP
.B \-V (\-\-version)
Show the current version number and exit.
.PP
See the \fBnano\fP(1) manpage for the complete documentation of
\fBnano\fP.
.SH BUGS
Please send any comments or bug reports to \fBnano@nano-editor.org\fP.
The \fBnano\fP mailing list is available from \fBnano-devel@gnu.org\fP.
To subscribe, email to \fBnano-devel-request@gnu.org\fP with a subject
of "subscribe".
.SH HOMEPAGE
http://www.nano-editor.org/
.SH AUTHOR
Chris Allegretta <chrisa@asty.org>, et al (see AUTHORS for details).
This manual page was originally written by Thijs Kinkhorst
<thijs@kinkhorst.com>, for the Debian system (but may be used by
others).

View File

@@ -1,314 +0,0 @@
## Sample initialization file for GNU nano
## Please note that you must have configured nano with --enable-nanorc
## for this file to be read! Also note that characters specially
## interpreted by the shell should not be escaped here.
##
## To make sure a value is not enabled, use "unset <option>"
##
## For the options that take parameters, the default value is given.
## Other options are unset by default.
## Use auto-indentation.
# set autoindent
## Backup files to filename~.
# set backup
## The directory to put unique backup files in.
# set backupdir ""
## Do backwards searches by default.
# set backwards
## The characters treated as closing brackets. They cannot contain
## blank characters. Only closing punctuation, optionally followed by
## closing brackets, can end sentences.
##
# set brackets "'")}]>"
## Do case sensitive searches by default.
# set casesensitive
## Constantly display the cursor position in the statusbar. Note that
## this cancels out "quickblank".
# set const
## Use cut to end of line by default.
# set cut
## Set the line length for wrapping text and justifying paragraphs.
## If fill is 0 or less, the line length will be the screen width less
## this number.
##
# set fill -8
## Enable ~/.nano_history for saving and reading search/replace strings.
# set historylog
## Use the blank line below the titlebar as extra editing space.
# set morespace
## Enable mouse support, so that mouse clicks can be used to set the
## mark and run shortcuts.
# set mouse
## Allow multiple file buffers (inserting a file will put it into a
## separate buffer). You must have configured with --enable-multibuffer
## for this to work.
##
# set multibuffer
## Don't convert files from DOS/Mac format.
# set noconvert
## Don't follow symlinks when writing files.
# set nofollow
## Don't display the helpful shortcut lists at the bottom of the screen.
# set nohelp
## Don't wrap text at all.
# set nowrap
## Set operating directory. nano will not read or write files outside
## this directory and its subdirectories. Also, the current directory
## is changed to here, so files are inserted from this dir. A blank
## string means the operating directory feature is turned off.
##
# set operatingdir ""
## Preserve the XON and XOFF keys (^Q and ^S).
# set preserve
## The characters treated as closing punctuation. They cannot contain
## blank characters. Only closing punctuation, optionally followed by
## closing brackets, can end sentences.
##
# set punct ".?!"
## Do quick statusbar blanking. Statusbar messages will disappear after
## 1 keystroke instead of 25. Note that "const" cancels this out.
##
# set quickblank
## The email-quote string, used to justify email-quoted paragraphs.
## This is an extended regular expression if your system supports them,
## otherwise a literal string. Default:
# set quotestr "^([ ]*[\|>:}#])+"
## if you have regexps, otherwise:
# set quotestr "> "
## You can get old nano quoted-justify behavior via:
# set quotestr "(> )+"
## Fix Backspace/Delete confusion problem.
# set rebinddelete
## Do extended regular expression searches by default.
# set regexp
## Make the Home key smarter. When Home is pressed anywhere but at the
## very beginning of non-whitespace characters on a line, the cursor
## will jump to that beginning (either forwards or backwards). If the
## cursor is already at that position, it will jump to the true
## beginning of the line.
# set smarthome
## Use smooth scrolling as the default.
# set smooth
## Use this spelling checker instead of the internal one. This option
## does not properly have a default value.
##
# set speller "aspell -x -c"
## Allow nano to be suspended.
# set suspend
## Use this tab size instead of the default; it must be greater than 0.
# set tabsize 8
## Convert typed tabs to spaces.
# set tabstospaces
## Save automatically on exit, don't prompt.
# set tempfile
## Disallow file modification; why would you want this in an rcfile? ;)
# set view
## The two single-column characters used to display the first characters
## of tabs and spaces. 187 decimal (00BB hexadecimal) and 183 decimal
## (00B7 hexadecimal) seem to be good values for these.
# set whitespace " "
## Color setup
##
## Format:
##
## syntax "short description" ["filename regex" ...]
##
## color foreground,background "regex" ["regex"...]
## or
## icolor foreground,background "regex" ["regex"...]
##
## "color" will do case sensitive matches, while "icolor" will do case
## insensitive matches.
##
## Legal colors: white, black, red, blue, green, yellow, magenta, cyan.
## You may use the prefix "bright" to mean a stronger color highlight
## for the foreground.
##
## To use multi-line regexes, use the start="regex" end="regex" format.
##
## If your system supports transparency, not specifying a background
## color will use a transparent color. If you don't want this, be sure
## to set the background color to black or white.
##
# syntax "c-file" "\.(c|C|cc|cpp|cxx|h|H|hh|hpp|hxx)$"
# color red "\<[A-Z_]{2,}\>"
# color green "\<(float|double|bool|char|int|short|long|sizeof|enum|void|static|const|struct|union|typedef|extern|signed|unsigned|inline)\>"
# color green "\<(class|namespace|template|public|protected|private|typename|this|friend|virtual|using|mutable|volatile|register|explicit)\>"
# color brightyellow "\<(for|if|while|do|else|case|default|switch|goto|continue|break|return)\>"
# color brightyellow "\<(try|throw|catch|operator|new|delete)\>"
# color brightcyan "^[[:space:]]*#[[:space:]]*(define|undef|include|ifn?def|endif|elif|else|if|warning|error)"
# color brightmagenta "'([^\]|(\\['abfnrtv\\]))'" "'\\(([0-7][0-7]?)|([0-3][0-7][0-7]))'" "'\\x[0-9A-Fa-f][0-9A-Fa-f]?'"
##
## GCC builtins
##
# color cyan "__attribute__[[:space:]]*\(\([^)]*\)\)" "__(asm|builtin|inline|restrict|typeof)__"
##
## You will in general want your comments and strings to come last,
## because syntax highlighting rules will be applied in the order they
## are read in.
##
# color brightyellow "<[^= ]*>" ""(\\.|[^\"])*""
##
## This string is VERY resource intensive!!!
# color brightyellow start=""(\\.|[^\"])*\\[[:space:]]*$" end="^(\\.|[^\"])*""
##
## And we want to have some nice comment highlighting too
# color brightblue "//.*"
# color brightblue start="/\*" end="\*/"
## Here is a short example for HTML
# syntax "HTML" "\.html$"
# color blue start="<" end=">"
# color red "&[^;[[:space:]]]*;"
## Here is a short example for TeX files
# syntax "TeX" "\.tex$"
# color green "\\.|\\[A-Za-z]*"
# color magenta "[{}]"
# color blue "%.*"
## Here is an example for quoted emails (under e.g. mutt)
# syntax "mutt"
# color green "^>.*"
## Here is an example for groff
##
# syntax "groff" "\.m[ems]$" "\.tmac$" "^tmac." ".rof"
## The argument of .nr or .ds
# color cyan "^\.ds [^[[:space:]]]*"
# color cyan "^\.nr [^[[:space:]]]*"
## Single character escapes
# color brightmagenta "\\."
## Highlight the argument of \f or \s in the same color
# color brightmagenta "\\f."
# color brightmagenta "\\f\(.."
# color brightmagenta "\\s(\+|\-)?[0-9]"
## \n
# color cyan "(\\|\\\\)n."
# color cyan "(\\|\\\\)n\(.."
# color cyan start="(\\|\\\\)n\[" end="]"
## Requests
# color brightgreen "^\.[[:space:]]*[^[[:space:]]]*"
## Comments
# color yellow "^\.\\\".*$"
## Strings
# color green "(\\|\\\\)\*."
# color green "(\\|\\\\)\*\(.."
# color green start="(\\|\\\\)\*\[" end="]"
## Characters
# color brightred "\\\(.."
# color brightred start="\\\[" end="]"
## Macro arguments
# color brightcyan "\\\\\$[1-9]"
## Here is an example for perl
##
# syntax "perl" "\.p[lm]$"
# color red "\<(accept|alarm|atan2|bin(d|mode)|c(aller|h(dir|mod|op|own|root)|lose(dir)?|onnect|os|rypt)|d(bm(close|open)|efined|elete|ie|o|ump)|e(ach|of|val|x(ec|ists|it|p))|f(cntl|ileno|lock|ork))\>" "\<(get(c|login|peername|pgrp|ppid|priority|pwnam|(host|net|proto|serv)byname|pwuid|grgid|(host|net)byaddr|protobynumber|servbyport)|([gs]et|end)(pw|gr|host|net|proto|serv)ent|getsock(name|opt)|gmtime|goto|grep|hex|index|int|ioctl|join)\>" "\<(keys|kill|last|length|link|listen|local(time)?|log|lstat|m|mkdir|msg(ctl|get|snd|rcv)|next|oct|open(dir)?|ord|pack|pipe|pop|printf?|push|q|qq|qx|rand|re(ad(dir|link)?|cv|do|name|quire|set|turn|verse|winddir)|rindex|rmdir|s|scalar|seek(dir)?)\>" "\<(se(lect|mctl|mget|mop|nd|tpgrp|tpriority|tsockopt)|shift|shm(ctl|get|read|write)|shutdown|sin|sleep|socket(pair)?|sort|spli(ce|t)|sprintf|sqrt|srand|stat|study|substr|symlink|sys(call|read|tem|write)|tell(dir)?|time|tr(y)?|truncate|umask)\>" "\<(un(def|link|pack|shift)|utime|values|vec|wait(pid)?|wantarray|warn|write)\>"
# color magenta "\<(continue|else|elsif|do|for|foreach|if|unless|until|while|eq|ne|lt|gt|le|ge|cmp|x|my|sub|use|package|can|isa)\>"
# color cyan start="[$@%]" end="( |\\W|-)"
# color yellow "".*"|qq\|.*\|"
# color white "[sm]/.*/"
# color white start="(^use| = new)" end=";"
# color green "#.*"
# color yellow start="<< 'STOP'" end="STOP"
## Here is an example for Java source
##
# syntax "Java source" "\.java$"
# color green "\<(boolean|byte|char|double|float|int|long|new|short|this|transient|void)\>"
# color red "\<(break|case|catch|continue|default|do|else|finally|for|if|return|switch|throw|try|while)\>"
# color cyan "\<(abstract|class|extends|final|implements|import|instanceof|interface|native|package|private|protected|public|static|strictfp|super|synchronized|throws|volatile)\>"
# color red ""[^\"]*""
# color yellow "\<(true|false|null)\>"
# color blue "//.*"
# color blue start="/\*" end="\*/"
# color brightblue start="/\*\*" end="\*/"
# color brightgreen,green "[[:space:]]+$"
## Here is an example for patch files
##
# syntax "patch" "\.(patch|diff)$"
# color brightgreen "^\+.*"
# color green "^\+\+\+.*"
# color brightblue "^ .*"
# color brightred "^-.*"
# color red "^---.*"
# color brightyellow "^@@.*"
# color magenta "^diff.*"
## Here is an example for manpages
##
# syntax "manpage" "\.[1-9]x?$"
# color green "\.(S|T)H.*$"
# color brightgreen "\.(S|T)H" "\.TP"
# color brightred "\.(BR?|I[PR]?).*$"
# color brightblue "\.(BR?|I[PR]?|PP)"
# color brightwhite "\\f[BIPR]"
# color yellow "\.(br|DS|RS|RE|PD)"
## Here is an example for assembler
##
# syntax "asm-file" "\.(S|s|asm)$"
# color red "\<[A-Z_]{2,}\>"
# color brightgreen "\.(data|subsection|text)"
# color green "\.(align|file|globl|global|hidden|section|size|type|weak)"
# color brightyellow "\.(ascii|asciz|byte|double|float|hword|int|long|short|single|struct|word)"
# icolor brightred "^[[:space:]]*[._A-Z0-9]*:"
# color brightcyan "^[[:space:]]*#[[:space:]]*(define|undef|include|ifn?def|endif|elif|else|if|warning|error)"
## Highlight strings (note: VERY resource intensive)
# color brightyellow "<[^= ]*>" ""(\\.|[^\"])*""
# color brightyellow start=""(\\.|[^\"])*\\[[:space:]]*$" end="^(\\.|[^\"])*""
## Highlight comments
# color brightblue "//.*"
# color brightblue start="/\*" end="\*/"
## Here is an example for your .nanorc
##
# syntax "nanorc" "(\.|/|)nanorc$"
## highlight possible errors and parameters
# icolor brightwhite "^[[:space:]]*(set|unset|syntax|i?color).*$"
## set, unset and syntax
# icolor cyan "^[[:space:]]*(set|unset)[[:space:]]+(autoindent|backup|backupdir|backwards|brackets|casesensitive|const|cut|fill|historylog|morespace|mouse|multibuffer|noconvert|nofollow|nohelp|nowrap|operatingdir|preserve|punct|quickblank|quotestr|rebinddelete)\>" "^[[:space:]]*(set|unset)[[:space:]]+(regexp|smarthome|smooth|speller|suspend|tabsize|tabstospaces|tempfile|view|whitespace)\>"
# icolor green "^[[:space:]]*(set|unset|syntax)\>"
## colors
# icolor yellow "^[[:space:]]*i?color[[:space:]]*(bright)?(white|black|red|blue|green|yellow|magenta|cyan)?(,(white|black|red|blue|green|yellow|magenta|cyan))?\>"
# icolor magenta "^[[:space:]]*i?color\>" "\<(start|end)="
## strings
# icolor white "\"(\\.|[^\"])*\""
## comments
# icolor blue "^[[:space:]]*#.*$"

257
doc/nanorc.sample.in Normal file
View File

@@ -0,0 +1,257 @@
## Sample initialization file for GNU nano.
##
## Please note that you must have configured nano with --enable-nanorc
## for this file to be read! Also note that this file should not be in
## DOS or Mac format, and that characters specially interpreted by the
## shell should not be escaped here.
##
## To make sure a value is disabled, use "unset <option>".
##
## For the options that take parameters, the default value is given.
## Other options are unset by default.
##
## Quotes inside string parameters don't have to be escaped with
## backslashes. The last double quote in the string will be treated as
## its end. For example, for the "brackets" option, ""')>]}" will match
## ", ', ), >, ], and }.
## Use auto-indentation.
# set autoindent
## Backup files to filename~.
# set backup
## The directory to put unique backup files in.
# set backupdir ""
## Do backwards searches by default.
# set backwards
## Use bold text instead of reverse video text.
# set boldtext
## The characters treated as closing brackets when justifying
## paragraphs. They cannot contain blank characters. Only closing
## punctuation, optionally followed by closing brackets, can end
## sentences.
##
# set brackets ""')>]}"
## Do case sensitive searches by default.
# set casesensitive
## Constantly display the cursor position in the statusbar. Note that
## this overrides "quickblank".
# set const
## Use cut to end of line by default.
# set cut
## Set the line length for wrapping text and justifying paragraphs.
## If fill is 0 or less, the line length will be the screen width less
## this number.
##
# set fill -8
## Enable ~/.nano_history for saving and reading search/replace strings.
# set historylog
## The opening and closing brackets that can be found by bracket
## searches. They cannot contain blank characters. The former set must
## come before the latter set, and both must be in the same order.
##
# set matchbrackets "(<[{)>]}"
## Use the blank line below the titlebar as extra editing space.
# set morespace
## Enable mouse support, if available for your system. When enabled,
## mouse clicks can be used to place the cursor, set the mark (with a
## double click), and execute shortcuts. The mouse will work in the X
## Window System, and on the console when gpm is running.
##
# set mouse
## Allow multiple file buffers (inserting a file will put it into a
## separate buffer). You must have configured with --enable-multibuffer
## for this to work.
##
# set multibuffer
## Don't convert files from DOS/Mac format.
# set noconvert
## Don't follow symlinks when writing files.
# set nofollow
## Don't display the helpful shortcut lists at the bottom of the screen.
# set nohelp
## Don't add newlines to the ends of files.
# set nonewlines
## Don't wrap text at all.
# set nowrap
## Set operating directory. nano will not read or write files outside
## this directory and its subdirectories. Also, the current directory
## is changed to here, so any files are inserted from this dir. A blank
## string means the operating directory feature is turned off.
##
# set operatingdir ""
## Preserve the XON and XOFF keys (^Q and ^S).
# set preserve
## The characters treated as closing punctuation when justifying
## paragraphs. They cannot contain blank characters. Only closing
## punctuation, optionally followed by closing brackets, can end
## sentences.
##
# set punct "!.?"
## Do quick statusbar blanking. Statusbar messages will disappear after
## 1 keystroke instead of 26. Note that "const" overrides this.
##
# set quickblank
## The email-quote string, used to justify email-quoted paragraphs.
## This is an extended regular expression if your system supports them,
## otherwise a literal string. Default:
# set quotestr "^([ ]*[#:>\|}])+"
## if you have extended regular expression support, otherwise:
# set quotestr "> "
## Fix Backspace/Delete confusion problem.
# set rebinddelete
## Fix numeric keypad key confusion problem.
# set rebindkeypad
## Do extended regular expression searches by default.
# set regexp
## Make the Home key smarter. When Home is pressed anywhere but at the
## very beginning of non-whitespace characters on a line, the cursor
## will jump to that beginning (either forwards or backwards). If the
## cursor is already at that position, it will jump to the true
## beginning of the line.
# set smarthome
## Use smooth scrolling as the default.
# set smooth
## Use this spelling checker instead of the internal one. This option
## does not properly have a default value.
##
# set speller "aspell -x -c"
## Allow nano to be suspended.
# set suspend
## Use this tab size instead of the default; it must be greater than 0.
# set tabsize 8
## Convert typed tabs to spaces.
# set tabstospaces
## Save automatically on exit, don't prompt.
# set tempfile
## Disallow file modification; why would you want this in an rcfile? ;)
# set view
## The two single-column characters used to display the first characters
## of tabs and spaces. 187 in ISO 8859-1 (0000BB in Unicode) and 183 in
## ISO-8859-1 (0000B7 in Unicode) seem to be good values for these.
# set whitespace " "
## Detect word boundaries more accurately by treating punctuation
## characters as part of a word.
# set wordbounds
## Color setup
##
## Format:
##
## syntax "short description" ["filename regex" ...]
##
## The "none" syntax is reserved; specifying it on the command line is
## the same as not having a syntax at all. The "default" syntax is
## special: it takes no filename regexes, and applies to files that
## don't match any other syntax's filename regexes.
##
## color foreground,background "regex" ["regex"...]
## or
## icolor foreground,background "regex" ["regex"...]
##
## "color" will do case sensitive matches, while "icolor" will do case
## insensitive matches.
##
## Valid colors: white, black, red, blue, green, yellow, magenta, cyan.
## For foreground colors, you may use the prefix "bright" to get a
## stronger highlight.
##
## To use multi-line regexes, use the start="regex" end="regex"
## [start="regex" end="regex"...] format.
##
## If your system supports transparency, not specifying a background
## color will use a transparent color. If you don't want this, be sure
## to set the background color to black or white.
##
## If you wish, you may put your syntaxes in separate files. You can
## make use of such files (which can only include "syntax", "color", and
## "icolor" commands) as follows:
##
## include "/path/to/syntax_file.nanorc"
##
## Unless otherwise noted, the name of the syntax file (without the
## ".nanorc" extension) should be the same as the "short description"
## name inside that file. These names are kept fairly short to make
## them easier to remember and faster to type using nano's -Y option.
##
## All regexes should be extended regular expressions.
## Nanorc files
# include "@PKGDATADIR@/nanorc.nanorc"
## C/C++
# include "@PKGDATADIR@/c.nanorc"
## HTML
# include "@PKGDATADIR@/html.nanorc"
## TeX
# include "@PKGDATADIR@/tex.nanorc"
## Quoted emails (under e.g. mutt)
# include "@PKGDATADIR@/mutt.nanorc"
## Patch files
# include "@PKGDATADIR@/patch.nanorc"
## Manpages
# include "@PKGDATADIR@/man.nanorc"
## Groff
# include "@PKGDATADIR@/groff.nanorc"
## Perl
# include "@PKGDATADIR@/perl.nanorc"
## Python
# include "@PKGDATADIR@/python.nanorc"
## Ruby
# include "@PKGDATADIR@/ruby.nanorc"
## Java
# include "@PKGDATADIR@/java.nanorc"
## Assembler
# include "@PKGDATADIR@/asm.nanorc"
## Bourne shell scripts
# include "@PKGDATADIR@/sh.nanorc"

2
doc/syntax/.cvsignore Normal file
View File

@@ -0,0 +1,2 @@
Makefile
Makefile.in

16
doc/syntax/Makefile.am Normal file
View File

@@ -0,0 +1,16 @@
pkgdata_DATA = asm.nanorc \
c.nanorc \
groff.nanorc \
html.nanorc \
java.nanorc \
man.nanorc \
mutt.nanorc \
nanorc.nanorc \
patch.nanorc \
perl.nanorc \
python.nanorc \
ruby.nanorc \
sh.nanorc \
tex.nanorc
EXTRA_DIST = $(pkgdata_DATA)

15
doc/syntax/asm.nanorc Normal file
View File

@@ -0,0 +1,15 @@
## Here is an example for assembler.
##
syntax "asm" "\.(S|s|asm)$"
color red "\<[A-Z_]{2,}\>"
color brightgreen "\.(data|subsection|text)"
color green "\.(align|file|globl|global|hidden|section|size|type|weak)"
color brightyellow "\.(ascii|asciz|byte|double|float|hword|int|long|short|single|struct|word)"
icolor brightred "^[[:space:]]*[.0-9A-Z_]*:"
color brightcyan "^[[:space:]]*#[[:space:]]*(define|undef|include|ifn?def|endif|elif|else|if|warning|error)"
## Highlight strings (note: VERY resource intensive)
color brightyellow "<[^= ]*>" ""(\\.|[^"])*""
color brightyellow start=""(\\.|[^"])*\\[[:space:]]*$" end="^(\\.|[^"])*""
## Highlight comments
color brightblue "//.*"
color brightblue start="/\*" end="\*/"

27
doc/syntax/c.nanorc Normal file
View File

@@ -0,0 +1,27 @@
## Here is an example for C/C++.
##
syntax "c" "\.(c|C|cc|cpp|cxx|h|H|hh|hpp|hxx)$"
color brightred "\<[A-Z_][0-9A-Z_]+\>"
color green "\<(float|double|bool|char|int|short|long|sizeof|enum|void|static|const|struct|union|typedef|extern|signed|unsigned|inline)\>"
color green "\<(u_?)?int(8|16|32|64|ptr)_t\>"
color green "\<(class|namespace|template|public|protected|private|typename|this|friend|virtual|using|mutable|volatile|register|explicit)\>"
color brightyellow "\<(for|if|while|do|else|case|default|switch)\>"
color brightyellow "\<(try|throw|catch|operator|new|delete)\>"
color magenta "\<(goto|continue|break|return)\>"
color brightcyan "^[[:space:]]*#[[:space:]]*(define|undef|include|ifn?def|endif|elif|else|if|warning|error)"
color brightmagenta "'([^'\]|(\\["'abfnrtv\\]))'" "'\\(([0-3]?[0-7]{1,2}))'" "'\\x[0-9A-Fa-f]{1,2}'"
##
## GCC builtins
color cyan "__attribute__[[:space:]]*\(\([^)]*\)\)" "__(aligned|asm|builtin|hidden|inline|packed|restrict|section|typeof|weak)__"
##
## String highlighting. You will in general want your comments and
## strings to come last, because syntax highlighting rules will be
## applied in the order they are read in.
color brightyellow "<[^= ]*>" ""(\\.|[^"])*""
##
## This string is VERY resource intensive!
color brightyellow start=""(\\.|[^"])*\\[[:space:]]*$" end="^(\\.|[^"])*""
## Comment highlighting
color brightblue "//.*"
color brightblue start="/\*" end="\*/"

24
doc/syntax/groff.nanorc Normal file
View File

@@ -0,0 +1,24 @@
## Here is an example for groff.
##
syntax "groff" "\.m[ems]$" "\.rof" "\.tmac$" "^tmac."
## The argument of .ds or .nr
color cyan "^\.(ds|nr) [^[[:space:]]]*"
## Single character escapes
color brightmagenta "\\."
## Highlight the argument of \f or \s in the same color
color brightmagenta "\\f." "\\f\(.." "\\s(\+|\-)?[0-9]"
## Newlines
color cyan "(\\|\\\\)n(.|\(..)"
color cyan start="(\\|\\\\)n\[" end="]"
## Requests
color brightgreen "^\.[[:space:]]*[^[[:space:]]]*"
## Comments
color yellow "^\.\\".*$"
## Strings
color green "(\\|\\\\)\*(.|\(..)"
color green start="(\\|\\\\)\*\[" end="]"
## Characters
color brightred "\\\(.."
color brightred start="\\\[" end="]"
## Macro arguments
color brightcyan "\\\\\$[1-9]"

5
doc/syntax/html.nanorc Normal file
View File

@@ -0,0 +1,5 @@
## Here is a short example for HTML.
##
syntax "html" "\.html$"
color blue start="<" end=">"
color red "&[^;[[:space:]]]*;"

12
doc/syntax/java.nanorc Normal file
View File

@@ -0,0 +1,12 @@
## Here is an example for Java.
##
syntax "java" "\.java$"
color green "\<(boolean|byte|char|double|float|int|long|new|short|this|transient|void)\>"
color red "\<(break|case|catch|continue|default|do|else|finally|for|if|return|switch|throw|try|while)\>"
color cyan "\<(abstract|class|extends|final|implements|import|instanceof|interface|native|package|private|protected|public|static|strictfp|super|synchronized|throws|volatile)\>"
color red ""[^"]*""
color yellow "\<(true|false|null)\>"
color blue "//.*"
color blue start="/\*" end="\*/"
color brightblue start="/\*\*" end="\*/"
color ,green "[[:space:]]+$"

9
doc/syntax/man.nanorc Normal file
View File

@@ -0,0 +1,9 @@
## Here is an example for manpages.
##
syntax "man" "\.[1-9]x?$"
color green "\.(S|T)H.*$"
color brightgreen "\.(S|T)H" "\.TP"
color brightred "\.(BR?|I[PR]?).*$"
color brightblue "\.(BR?|I[PR]?|PP)"
color brightwhite "\\f[BIPR]"
color yellow "\.(br|DS|RS|RE|PD)"

4
doc/syntax/mutt.nanorc Normal file
View File

@@ -0,0 +1,4 @@
## Here is an example for quoted emails (under e.g. mutt).
##
syntax "mutt"
color green "^>.*"

16
doc/syntax/nanorc.nanorc Normal file
View File

@@ -0,0 +1,16 @@
## Here is an example for nanorc files.
##
syntax "nanorc" "\.?nanorc$"
## Possible errors and parameters
icolor brightwhite "^[[:space:]]*((un)?set|include|syntax|i?color).*$"
## Keywords
icolor brightgreen "^[[:space:]]*(set|unset)[[:space:]]+(autoindent|backup|backupdir|backwards|boldtext|brackets|casesensitive|const|cut|fill|historylog|matchbrackets|morespace|mouse|multibuffer|noconvert|nofollow|nohelp|nonewlines|nowrap|operatingdir|preserve|punct)\>" "^[[:space:]]*(set|unset)[[:space:]]+(quickblank|quotestr|rebinddelete|rebindkeypad|regexp|smarthome|smooth|speller|suspend|tabsize|tabstospaces|tempfile|view|whitespace|wordbounds)\>"
icolor green "^[[:space:]]*(set|unset|include|syntax)\>"
## Colors
icolor yellow "^[[:space:]]*i?color[[:space:]]*(bright)?(white|black|red|blue|green|yellow|magenta|cyan)?(,(white|black|red|blue|green|yellow|magenta|cyan))?\>"
icolor magenta "^[[:space:]]*i?color\>" "\<(start|end)="
## Strings
icolor white ""(\\.|[^"])*""
## Comments
icolor brightblue "^[[:space:]]*#.*$"
icolor cyan "^[[:space:]]*##.*$"

10
doc/syntax/patch.nanorc Normal file
View File

@@ -0,0 +1,10 @@
## Here is an example for patch files.
##
syntax "patch" "\.(patch|diff)$"
color brightgreen "^\+.*"
color green "^\+\+\+.*"
color brightblue "^ .*"
color brightred "^-.*"
color red "^---.*"
color brightyellow "^@@.*"
color magenta "^diff.*"

11
doc/syntax/perl.nanorc Normal file
View File

@@ -0,0 +1,11 @@
## Here is an example for Perl.
##
syntax "perl" "\.p[lm]$"
color red "\<(accept|alarm|atan2|bin(d|mode)|c(aller|h(dir|mod|op|own|root)|lose(dir)?|onnect|os|rypt)|d(bm(close|open)|efined|elete|ie|o|ump)|e(ach|of|val|x(ec|ists|it|p))|f(cntl|ileno|lock|ork))\>" "\<(get(c|login|peername|pgrp|ppid|priority|pwnam|(host|net|proto|serv)byname|pwuid|grgid|(host|net)byaddr|protobynumber|servbyport)|([gs]et|end)(pw|gr|host|net|proto|serv)ent|getsock(name|opt)|gmtime|goto|grep|hex|index|int|ioctl|join)\>" "\<(keys|kill|last|length|link|listen|local(time)?|log|lstat|m|mkdir|msg(ctl|get|snd|rcv)|next|oct|open(dir)?|ord|pack|pipe|pop|printf?|push|q|qq|qx|rand|re(ad(dir|link)?|cv|do|name|quire|set|turn|verse|winddir)|rindex|rmdir|s|scalar|seek(dir)?)\>" "\<(se(lect|mctl|mget|mop|nd|tpgrp|tpriority|tsockopt)|shift|shm(ctl|get|read|write)|shutdown|sin|sleep|socket(pair)?|sort|spli(ce|t)|sprintf|sqrt|srand|stat|study|substr|symlink|sys(call|read|tem|write)|tell(dir)?|time|tr(y)?|truncate|umask)\>" "\<(un(def|link|pack|shift)|utime|values|vec|wait(pid)?|wantarray|warn|write)\>"
color magenta "\<(continue|else|elsif|do|for|foreach|if|unless|until|while|eq|ne|lt|gt|le|ge|cmp|x|my|sub|use|package|can|isa)\>"
icolor cyan start="[$@%]" end="( |[^0-9A-Z_]|-)"
color yellow "".*"|qq\|.*\|"
color white "[sm]/.*/"
color white start="(^use| = new)" end=";"
color green "#.*"
color yellow start="<< 'STOP'" end="STOP"

8
doc/syntax/python.nanorc Normal file
View File

@@ -0,0 +1,8 @@
## Here is an example for Python.
##
syntax "python" "\.py$"
icolor brightblue "def [0-9A-Z_]+"
color brightcyan "\<(and|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|map|not|or|pass|print|raise|return|try|while)\>"
color brightgreen "["'].*[^\\]["']" "["']{3}.*[^\\]["']{3}"
color brightgreen start=""""[^"]" end=""""" start="'''[^']" end="'''"
color brightred "#.*$"

29
doc/syntax/ruby.nanorc Normal file
View File

@@ -0,0 +1,29 @@
## Here is an example for Ruby.
syntax "ruby" "\.rb$"
## Asciibetical list of reserved words
color yellow "\<(BEGIN|END|alias|and|begin|break|case|class|def|defined\?|do|else|elsif|end|ensure|false|for|if|in|module|next|nil|not|or|redo|rescue|retry|return|self|super|then|true|undef|unless|until|when|while|yield)\>"
## Constants
color brightblue "(\$|@|@@)?[A-Z]+[0-9A-Z_a-z]*"
## Ruby "symbols"
icolor magenta "([ ]|^):[0-9A-Z_]+\>"
## Some unique things we want to stand out
color brightyellow "\<(__FILE__|__LINE__)\>"
## Regular expressions
color brightmagenta "/([^/]|(\\/))*/[iomx]*" "%r\{([^}]|(\\}))*\}[iomx]*"
## Shell command expansion is in `backticks` or like %x{this}. These are
## "double-quotish" (to use a perlism).
color brightblue "`[^`]*`" "%x\{[^}]*\}"
## Strings, double-quoted
color green ""([^"]|(\\"))*"" "%[QW]?\{[^}]*\}" "%[QW]?\([^)]*\)" "%[QW]?<[^>]*>" "%[QW]?\[[^]]*\]" "%[QW]?\$[^$]*\$" "%[QW]?\^[^^]*\^" "%[QW]?![^!]*!"
## Expression substitution. These go inside double-quoted strings,
## "like #{this}".
color brightgreen "#\{[^}]*\}"
## Strings, single-quoted
color green "'([^']|(\\'))*'" "%[qw]\{[^}]*\}" "%[qw]\([^)]*\)" "%[qw]<[^>]*>" "%[qw]\[[^]]*\]" "%[qw]\$[^$]*\$" "%[qw]\^[^^]*\^" "%[qw]![^!]*!"
## Comments
color cyan "#[^{].*$" "#$"
color brightcyan "##[^{].*$" "##$"
## "Here" docs
color green start="<<-?'?EOT'?" end="^EOT"
## Some common markers
color brightcyan "(XXX|TODO|FIXME|\?\?\?)"

12
doc/syntax/sh.nanorc Normal file
View File

@@ -0,0 +1,12 @@
## Here is an example for Bourne shell scripts.
##
syntax "sh" "\.sh$"
icolor brightgreen "^[0-9A-Z_]+\(\)"
color green "\<(case|do|done|elif|else|esac|exit|fi|for|function|if|in|local|read|return|select|shift|then|time|until|while)\>"
color green "(\{|\}|\(|\)|\;|\]|\[|`|\\|\$|<|>|!|=|&|\|)"
color green "-[Ldefgruwx]\>"
color green "-(eq|ne|gt|lt|ge|le|s|n|z)\>"
color brightblue "\<(cat|cd|chmod|chown|cp|echo|env|export|grep|install|let|ln|make|mkdir|mv|rm|sed|set|tar|touch|umask|unset)\>"
icolor brightred "\$\{?[0-9A-Z_!@#$*?-]+\}?"
color cyan "(^|[[:space:]])#.*$"
color brightyellow ""(\\.|[^"])*"" "'(\\.|[^'])*'"

6
doc/syntax/tex.nanorc Normal file
View File

@@ -0,0 +1,6 @@
## Here is a short example for TeX files.
##
syntax "tex" "\.tex$"
icolor green "\\.|\\[A-Z]*"
color magenta "[{}]"
color blue "%.*"

View File

@@ -1,4 +1,5 @@
Makefile
Makefile.in
nano.info
nano.html
texinfo.tex

View File

@@ -2,4 +2,9 @@ info_TEXINFOS = nano.texi
MAKEINFO = makeinfo --no-split
EXTRA_DIST = nano.info
BUILT_SOURCES = nano.html
nano.html: nano.texi
cat $< | makeinfo --no-split --html > $@
EXTRA_DIST = $(info_TEXINFOS) $(BUILT_SOURCES)

View File

@@ -5,11 +5,11 @@
@c %**end of header
@c This file has the new style title page commands.
@c Run `makeinfo' rather than `texinfo-format-buffer'.
@c Run 'makeinfo' rather than 'texinfo-format-buffer'.
@smallbook
@set EDITION 0.1
@set VERSION 1.3.8
@set UPDATED 27 Jun 2005
@set VERSION 1.3.12
@set UPDATED 20 Jun 2006
@dircategory Editors
@direntry
@@ -23,7 +23,7 @@
@titlepage
@title GNU @code{nano}
@subtitle a small and friendly text editor.
@subtitle version 1.3.8
@subtitle version 1.3.12
@author Chris Allegretta
@page
@@ -33,28 +33,11 @@ editor.
This manual is part of the GNU @code{nano} distribution.@*
@sp4
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 Chris Allegretta.
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 by Chris
Allegretta.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.
@iftex
Permission is granted to process this file through @TeX{} and print the
results, provided the printed document carries copying permission notice
identical to this one except for the removal of this paragraph (this
paragraph not being relevant to the printed manual).
@end iftex
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the
entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions,
except that this permission notice may be stated in a translation
approved by the Foundation.
This is free documentation, see the latest version of the GNU General
Public License for copying conditions. There is NO warranty.
You may contact the author by
e-mail: @email{chrisa@@asty.org}@*
@@ -70,6 +53,7 @@ editor.
* Editor Basics::
* Online Help::
* Feature Toggles::
* Nanorc Files::
* The File Browser::
* Pico Compatibility::
* Building and Configure Options::
@@ -80,8 +64,8 @@ editor.
GNU @code{nano} is a small and friendly text editor. Besides basic text
editing, @code{nano} offers many extra features like an interactive
search and replace, goto line number, auto-indentation, feature toggles,
internationalization support, and filename tab completion.
search and replace, go to line number, auto-indentation, feature
toggles, internationalization support, and filename tab completion.
@menu
* Overview::
@@ -91,12 +75,27 @@ internationalization support, and filename tab completion.
@node Overview, Command Line Options, Introduction, Introduction
@section Overview
@code{nano} +LINE,COLUMN [GNU long option] [option] [ @var{file ...} ]
The original goal for @code{nano} was a complete bug-for-bug compatible
emulation of Pico, but @code{nano}'s main goal is to be as compatible as
possible while offering a superset of Pico's functionality. Also see
@xref{Pico Compatibility}, for other differences.
emulation of Pico, but @code{nano}'s current goal is to be as compatible
as possible while offering a superset of Pico's functionality. See
@xref{Pico Compatibility}, for more info.
The usual way to invoke @code{nano} is:
@quotation
@code{nano [OPTION]@dots{} [FILE]}
@end quotation
But it is also possible to edit several files in a row. Additionally,
the cursor can be put on a desired line number by adding this number
with a plus sign before any filename, and even in a desired column by
adding it with a comma. So the complete synopsis is:
@quotation
@code{nano [OPTION]@dots{} [[+LINE] FILE]@dots{}}
@code{nano [OPTION]@dots{} [[+LINE,COLUMN] FILE]@dots{}}
@end quotation
Email bug reports to @email{nano@@nano-editor.org}.
@@ -106,7 +105,7 @@ Email bug reports to @email{nano@@nano-editor.org}.
@code{nano} takes the following options from the command line:
@table @code
@item +LINE,COLUMN
@item +LINE[,COLUMN]
Start at line number LINE and column number COLUMN instead of the
default of line 1, column 1.
@@ -124,61 +123,81 @@ line.
When saving a file, back up the previous version of it to the current
filename suffixed with a ~.
@item -C, --backupdir=[dir]
@item -C <dir>, --backupdir=<dir>
Set the directory where @code{nano} puts unique backup files if file
backups are enabled.
@item -D, --boldtext
Use bold text instead of reverse video text.
@item -E, --tabstospaces
Convert typed tabs to spaces.
@item -F, --multibuffer
Enable multiple file buffers, if available.
@item -H, --historylog
Log search and replace strings to ~/.nano_history, so they can be
retrieved in later sessions, if nanorc support is available.
@item -I, --ignorercfiles
Don't look at SYSCONFDIR/nanorc or ~/.nanorc, if nanorc support is
available.
@item -N, --noconvert
Do not convert files from DOS/Mac format.
@item -K, --rebindkeypad
Interpret the numeric keypad keys so that they all work properly. You
should only need to use this option if they don't, as mouse support
won't work properly with this option enabled.
@item -Q [str], --quotestr [str]
Set the quoting string for justifying. The default is
@item -L, --nonewlines
Don't add newlines to the ends of files.
@item -N, --noconvert
Don't convert files from DOS/Mac format.
@item -Q <str>, --quotestr=<str>
Set the quoting string for justifying. The default value is
@quotation
@code{^([ \t]*[|>:@}#])+}
@end quotation
if regular expression support is available, or ``> '' otherwise. Note
that @code{\t} above stands for a literal Tab character.
if extended regular expression support is available, or "> " otherwise.
Note that @code{\t} above stands for a literal Tab character.
@item -R, --restricted
Restricted mode: Don't read or write to any file not specified on the
command line, read any nanorc files, allow suspending, or allow a file
to be appended to, prepended to, or saved under a different name if it
already has one. Also accessible by invoking @code{nano} with any name
beginning with 'r' (e.g. "rnano").
Restricted mode: don't read or write to any file not specified on the
command line; read any nanorc files; allow suspending; allow a file to
be appended to, prepended to, or saved under a different name if it
already has one; or use backup files or spell checking. Also accessible
by invoking @code{nano} with any name beginning with 'r' (e.g. "rnano").
@item -S, --smooth
Enable smooth scrolling.
Enable smooth scrolling. Text will scroll line-by-line, instead of the
usual chunk-by-chunk behavior.
@item -T [num], --tabsize=[#cols]
@item -T <#cols>, --tabsize=<#cols>
Set the displayed tab length to #cols columns. The value of #cols must
be greater than 0. The default value is 8.
@item -U, --quickblank
Do quick statusbar blanking. Statusbar messages will disappear after 1
keystroke instead of 25. Note that -c cancels this out.
keystroke instead of 25. Note that -c overrides this.
@item -V, --version
Print the version number and copyright and quit.
Show the current version number and exit.
@item -Y, --syntax=[str]
Specify a specific syntax highlighting from the .nanorc to use, if
available.
@item -W, --wordbounds
Detect word boundaries more accurately by treating punctuation
characters as part of a word.
@item -Y <str>, --syntax=<str>
Specify a specific syntax highlighting from the nanorc to use, if
available. See @xref{Nanorc Files}, for more info.
@item -c, --const
Constantly display the cursor position and line number on the statusbar.
Note that this cancels out -U.
Note that this overrides -U.
@item -d, --rebinddelete
Interpret the Delete key differently so that both Backspace and Delete
@@ -186,7 +205,7 @@ work properly. You should only need to use this option if Backspace
acts like Delete on your system.
@item -h, --help
Print the usage and exit.
Show a summary of command line options and exit.
@item -i, --autoindent
Automatically indent new lines to the same number of spaces and tabs as
@@ -200,10 +219,12 @@ When writing files, if the given file is a symbolic link, it is removed
and a new file is created.
@item -m, --mouse
Enables the use of the mouse to select text (currently only useful for
running under the X Window System).
Enable mouse support, if available for your system. When enabled, mouse
clicks can be used to place the cursor, set the mark (with a double
click), and execute shortcuts. The mouse will work in the X Window
System, and on the console when gpm is running.
@item -o [dir], --operatingdir=[dir]
@item -o <dir>, --operatingdir=<dir>
Set operating directory. Makes @code{nano} set up something similar to
a chroot.
@@ -211,49 +232,50 @@ a chroot.
Preserve the ^Q (XON) and ^S (XOFF) sequences so data being sent to the
editor can be can be stopped and started.
@item -r [#cols], --fill=[#cols].
@item -r <#cols>, --fill=<#cols>
Wrap lines at column #cols. If this value is 0 or less, wrapping will
occur at #cols less the width of the screen, allowing it to vary along
occur at the width of the screen less #cols, allowing it to vary along
with the width of the screen if the screen is resized. The default
value is -8.
@item -s [prog], --speller=[prog]
Invoke [prog] as the spell checker. By default, @code{nano} uses the
command specified in the SPELL environment variable, or, if SPELL is not
set, its own interactive spell checker that requires the @code{spell}
program to be installed on your system.
@item -s <prog>, --speller=<prog>
Invoke the given program as the spell checker. By default, @code{nano}
uses the command specified in the SPELL environment variable, or, if
SPELL is not set, its own interactive spell checker that requires the
@code{spell} program to be installed on your system.
@item -t, --tempfile
Do not ask whether or not to save the current contents of the file when
Don't ask whether or not to save the current contents of the file when
exiting, assume yes. This is most useful when using @code{nano} as the
composer of a mailer program.
@item -v, --view
Don't allow the contents of the file to be altered. Note that this
option should NOT be used in place of correct file permissions to
implement a read-only file.
@item -w, --nowrap
Don't wrap long lines at any length. This option overrides any value
for -r.
@anchor{Expert Mode}
@item -x, --nohelp
In Expert Mode, the Shortcut Lists will not appear at the bottom of the
screen. This affects the location of the statusbar as well, as in
Expert Mode it is located at the very bottom of the editor.
Expert Mode: don't show the Shortcut Lists at the bottom of the screen.
This affects the location of the statusbar as well, as in Expert Mode it
is located at the very bottom of the editor.
Note: When accessing the help system, Expert Mode is temporarily
disabled to display the help system navigation keys.
@item -v, --view
Do not allow the contents of the file to be altered. Note that this
flag should NOT be used in place of correct file permissions to
implement a read-only file.
@item -w, --nowrap
Do not wrap long lines at any length. This option overrides any value
for -r.
@item -z, --suspend
Enable suspend ability of @code{nano} using the system's suspend
Enable @code{nano}'s suspend ability using the system's suspend
keystroke (usually ^Z).
@item -a, -b, -e, -f, -g, -j
Ignored, for compatibility with Pico.
@end table
@node Editor Basics, Online Help, Introduction, Top
@chapter Editor Basics
@menu
@@ -262,38 +284,39 @@ Ignored, for compatibility with Pico.
* The Titlebar::
* The Statusbar::
* Shortcut Lists::
* Using the Mouse::
@end menu
@node Entering Text, Special Functions, Editor Basics, Editor Basics
@section Entering Text
All key sequences in @code{nano} are entered using the keyboard.
@code{nano} is a ``modeless'' editor. All keys with the exception of
Control and Meta key sequences will enter text into the file being
@code{nano} is a "modeless" editor. All keys, with the exception of
Control and Meta key sequences, will enter text into the file being
edited.
@node Special Functions, The Titlebar, Entering Text, Editor Basics
@section Special Functions
Special functions use the Control key (displayed in the help and
shortcut lists as ^), the Meta key (displayed as M), or the Esc key.
Special functions use the Control (Ctrl) key, displayed in the help and
shortcut lists as ^; the Meta key, displayed as M; or the Escape (Esc)
key.
@itemize @bullet
@item
Control key sequences are entered by holding down the Control key and
Control key sequences are entered by holding down the Ctrl key and
pressing the desired key, or by pressing the Esc key twice and pressing
the desired key.
@item
Pressing Esc twice and then typing a three-digit number from 000 to 255
will enter the character with the corresponding ASCII code.
will enter the character with the corresponding value.
@item
Meta key sequences can be entered in a number of possible ways: Pressing
the Escape key, then releasing it and pressing the desired key, or
holding down the Alt key while pressing the desired key. This varies
from keyboard to keyboard, and certain commercial operating systems
``swallow'' the Alt key so that it never reaches the application. If
your operating system does this, you should use the Escape key to
generate Meta key sequences.
Meta key sequences are entered by holding down the Meta key (normally
the Alt key) and pressing the desired key, or by pressing the Esc key
once and pressing the desired key. Certain operating systems "swallow"
the Alt key so that it never reaches the application; if your operating
system does this, you should use the Esc key to generate Meta key
sequences.
@end itemize
@node The Titlebar, The Statusbar, Special Functions, Editor Basics
@@ -302,32 +325,42 @@ generate Meta key sequences.
The titlebar is the line displayed at the top of the editor. There are
three sections: left, center and right. The section on the left
displays the version of @code{nano} being used. The center section
displays the current file name, or ``New Buffer'' if the file has not
yet been named. The section on the right will display ``Modified'' if
the file has been modified since it was last saved or opened.
displays the current filename, or "New Buffer" if the file has not yet
been named. The section on the right will display "Modified" if the
file has been modified since it was last saved or opened.
Special modes: When @code{nano} is in ``File browser'' mode, the center
section will display the current directory instead of the filename.
@xref{The File Browser}.
Special modes: When @code{nano} is in "File browser" mode, the center
section will display the current directory instead of the filename. See
@xref{The File Browser}, for more info.
@node The Statusbar, Shortcut Lists, The Titlebar, Editor Basics
@section The Statusbar
The statusbar is located three lines from the bottom of the screen (or
the bottom line in Expert Mode. @xref{Expert Mode}, for more info).
The statusbar is the third line from the bottom of the screen, or the
bottom line in Expert Mode. See @xref{Expert Mode}, for more info. It
shows important and informational messages. Any error messages that
occur from using the editor will appear on the statusbar. Any questions
that are asked of the user will be asked on the statusbar, and any user
input (search strings, filenames, etc.) will be input on the statusbar.
The Statusbar shows important and informational messages. Any error
messages that occur from using the editor will appear on the statusbar.
Any questions that are asked of the user will be asked on the statusbar,
and any user input (search strings, file names, etc) will be input on
the statusbar.
@node Shortcut Lists, , The Statusbar, Editor Basics
@node Shortcut Lists, Using the Mouse, The Statusbar, Editor Basics
@section Shortcut Lists
The Shortcut Lists are the two lines at the bottom of the screen which
show some of the more commonly used functions in the editor.
@node Using the Mouse, , Shortcut Lists, Editor Basics
@section Using the Mouse
When mouse support has been configured and enabled, a single mouse click
places the cursor at the indicated position. Clicking a second time in
the same position toggles the mark. Clicking in the shortcut list
executes the selected shortcut.
The mouse will work in the X Window System, and on the console when gpm
is running.
@node Online Help, Feature Toggles, Editor Basics, Top
@chapter Online Help
@@ -337,82 +370,320 @@ editor and available keystrokes. Navigation is via the ^Y (Page Up)
and ^V (Page Down) keys. ^X exits the help system.
@node Feature Toggles, The File Browser, Online Help, Top
@node Feature Toggles, Nanorc Files, Online Help, Top
@chapter Feature Toggles
Toggles allow you to change certain aspects of the editor that
would normally be done via command line flags. They are invoked via
certain Meta key sequences. @xref{Special Functions}, for more info.
The following global toggles are available:
Toggles allow you to change certain aspects of the editor that would
normally be done via command line options. They are invoked via Meta
key sequences. See @xref{Special Functions}, for more info. The
following global toggles are available:
@table @code
@item Backup Files Toggle (Meta-B)
toggles the -B (@code{--backup}) command line flag.
toggles the -B (@code{--backup}) command line option.
@item Constant Cursor Position Display Toggle (Meta-C)
toggles the -c (@code{--const}) command line flag.
toggles the -c (@code{--const}) command line option.
@item Multiple File Buffers Toggle (Meta-F)
toggles the -F (@code{--multibuffer}) command line flag.
toggles the -F (@code{--multibuffer}) command line option.
@item Smart Home Key Toggle (Meta-H)
toggles the -A (@code{--smarthome}) command line flag.
toggles the -A (@code{--smarthome}) command line option.
@item Auto Indent Toggle (Meta-I)
toggles the -i (@code{--autoindent}) command line flag.
toggles the -i (@code{--autoindent}) command line option.
@item Cut To End Toggle (Meta-K)
toggles the -k (@code{--cut}) command line flag.
toggles the -k (@code{--cut}) command line option.
@item Long Line Wrapping Toggle (Meta-L)
toggles the -w (@code{--nowrap}) command line flag.
toggles the -w (@code{--nowrap}) command line option.
@item Mouse Support Toggle (Meta-M)
toggles the -m (@code{--mouse}) command line flag.
toggles the -m (@code{--mouse}) command line option.
@item No Conversion From DOS/Mac Format Toggle (Meta-N)
toggles the -N (@code{--noconvert}) command line flag.
toggles the -N (@code{--noconvert}) command line option.
@item More Space For Editing Toggle (Meta-O)
toggles the -O (@code{--morespace}) command line flag.
toggles the -O (@code{--morespace}) command line option.
@item Whitespace Display Toggle (Meta-P)
toggles whitespace display mode if you have a "whitespace" option in
your .nanorc.
your nanorc. See @xref{Nanorc Files}, for more info.
@item Tabs to Spaces Toggle (Meta-Q)
toggles the -E (@code{--tabstospaces}) command line flag.
toggles the -E (@code{--tabstospaces}) command line option.
@item Smooth Scrolling Toggle (Meta-S)
toggles the -S (@code{--smooth}) command line flag.
toggles the -S (@code{--smooth}) command line option.
@item Expert/No Help Toggle (Meta-X)
toggles the -x (@code{--nohelp}) command line flag.
toggles the -x (@code{--nohelp}) command line option.
@item Color Syntax Highlighting Toggle (Meta-Y)
toggles color syntax highlighting if you have color syntaxes in your
.nanorc.
nanorc. See @xref{Nanorc Files}, for more info.
@item Suspend Toggle (Meta-Z)
toggles the -z (@code{--suspend}) command line flag.
toggles the -z (@code{--suspend}) command line option.
@end table
@node The File Browser, Pico Compatibility, Feature Toggles, Top
@node Nanorc Files, The File Browser, Feature Toggles, Top
@chapter Nanorc Files
The nanorc files contain the default settings for @code{nano}. They
should not be in DOS or Mac format. During startup, @code{nano} will
first read its system-wide settings from SYSCONFDIR/nanorc, and then
user-specific settings from ~/.nanorc.
A nanorc file accepts a series of "set" and "unset" commands, which can
be used to configure @code{nano} on startup without using the command
line options. Additionally, the "syntax", "color", and "icolor"
keywords are used to define syntax highlighting rules for different text
patterns. @code{nano} will read one command per line.
Options in nanorc files take precedence over @code{nano}'s defaults, and
command line options override nanorc settings. Options are also unset
by default, except for those that take arguments.
Quotes inside string parameters don't have to be escaped with
backslashes. The last double quote in the string will be treated as its
end. For example, for the "brackets" option,
@quotation
@code{""')>]@}"}
@end quotation
will match @code{"}, @code{'}, @code{)}, @code{>}, @code{]}, and
@code{@}}.
The supported commands and arguments are:
@table @code
@item set/unset autoindent
Use auto-indentation.
@item set/unset backup
Create backup files in "filename~".
@item set backupdir "directory"
Set the directory where @code{nano} puts unique backup files if file
backups are enabled.
@item set/unset backwards
Do backwards searches by default.
@item set/unset boldtext
Use bold text instead of reverse video text.
@item set brackets "string"
Set the characters treated as closing brackets when justifying
paragraphs. They cannot contain blank characters. Only closing
punctuation, optionally followed by closing brackets, can end sentences.
The default value is
@quotation
@code{""')>]@}"}
@end quotation
@item set/unset casesensitive
Do case sensitive searches by default.
@item set/unset const
Constantly display the cursor position in the status bar.
@item set/unset cut
Use cut to end of line by default, instead of cutting the whole line.
@item set fill "n"
Wrap lines at column number "n". If "n" is 0 or less, the maximum line
length will be the screen width less "n" columns. The default value is
-8.
@item set/unset historylog
Enable ~/.nano_history for saving and reading search/replace strings.
@item set matchbrackets "string"
Set the opening and closing brackets that can be found by bracket
searches. They cannot contain blank characters. The former set must
come before the latter set, and both must be in the same order. The
default value is
@quotation
@code{"(<[@{)>]@}"}
@end quotation
@item set/unset morespace
Allow use of the blank line below the titlebar as extra editing space.
@item set/unset mouse
Enable mouse support, so that mouse clicks can be used to place the
cursor, set the mark (with a double click), or execute shortcuts.
@item set/unset multibuffer
Allow inserting files into their own buffers.
@item set/unset noconvert
Don't convert files from DOS/Mac format.
@item set/unset nofollow
Don't follow symlinks when writing files.
@item set/unset nohelp
Don't display the help lists at the bottom of the screen.
@item set/unset nonewlines
Don't add newlines to the ends of files.
@item set/unset nowrap
Don't wrap text at all.
@item set operatingdir "directory"
@code{nano} will only read and write files inside "directory" and its
subdirectories. Also, the current directory is changed to here, so
files are inserted from this directory. By default, the operating
directory feature is turned off.
@item set/unset preserve
Preserve the XON and XOFF keys (^Q and ^S).
@item set punct "string"
Set the characters treated as closing punctuation when justifying
paragraphs. They cannot contain blank characters. Only closing
punctuation, optionally followed by closing brackets, can end sentences.
The default value is @code{"!.?"}.
@item set/unset quickblank
Do quick statusbar blanking. Statusbar messages will disappear after 1
keystroke instead of 25.
@item set quotestr "string"
The email-quote string, used to justify email-quoted paragraphs. This
is an extended regular expression if your system supports them,
otherwise a literal string. The default value is
@quotation
@code{"^([ \\t]*[#:>\\|@}])+"}
@end quotation
if you have extended regular expression support, or "> " otherwise.
Note that '\\t' stands for a literal Tab character.
@item set/unset rebinddelete
Interpret the Delete key differently so that both Backspace and Delete
work properly. You should only need to use this option if Backspace
acts like Delete on your system.
@item set/unset rebindkeypad
Interpret the numeric keypad keys so that they all work properly. You
should only need to use this option if they don't, as mouse support
won't work properly with this option enabled.
@item set/unset regexp
Do extended regular expression searches by default.
@item set/unset smarthome
Make the Home key smarter. When Home is pressed anywhere but at the
very beginning of non-whitespace characters on a line, the cursor will
jump to that beginning (either forwards or backwards). If the cursor is
already at that position, it will jump to the true beginning of the
line.
@item set/unset smooth
Use smooth scrolling by default.
@item set speller "spellprog"
Use spelling checker "spellprog" instead of the built-in one, which
calls "spell".
@item set/unset suspend
Allow @code{nano} to be suspended.
@item set tabsize "n"
Use a tab size of "n" columns. The value of "n" must be greater than 0.
The default value is 8.
@item set/unset tabstospaces
Convert typed tabs to spaces.
@item set/unset tempfile
Save automatically on exit, don't prompt.
@item set/unset view
Disallow file modification.
@item set whitespace "string"
Set the two characters used to display the first characters of tabs and
spaces. They must be single-column characters.
@item set/unset wordbounds
Detect word boundaries more accurately by treating punctuation
characters as part of a word.
@item syntax "str" ["fileregex" @dots{} ]
Defines a syntax named "str" which can be activated via the -Y/--syntax
command line option, or will be automatically activated if the current
filename matches the extended regular expression "fileregex". All
following "color" and "icolor" statements will apply to "syntax" until a
new syntax is defined.
The "none" syntax is reserved; specifying it on the command line is the
same as not having a syntax at all. The "default" syntax is special: it
takes no "fileregex", and applies to files that don't match any other
syntax's "fileregex".
@item color fgcolor,bgcolor "regex" @dots{}
For the currently defined syntax, display all expressions matching the
extended regular expression "regex" with foreground color "fgcolor" and
background color "bgcolor", at least one of which must be specified.
Legal colors for foreground and background color are: white, black, red,
blue, green, yellow, magenta, and cyan. You may use the prefix "bright"
to force a stronger color highlight for the foreground. If your
terminal supports transparency, not specifying a "bgcolor" tells "nano"
to attempt to use a transparent background.
@item icolor fgcolor,bgcolor "regex" @dots{}
Same as above, except that the expression matching is case insensitive.
@item color fgcolor,bgcolor start="sr" end="er"
Display expressions which start with the extended regular expression
"sr" and end with the extended regular expression "er" with foreground
color "fgcolor" and background color "bgcolor", at least one of which
must be specified. This allows syntax highlighting to span multiple
lines. Note that all subsequent instances of "sr" after an initial "sr"
is found will be highlighted until the first instance of "er".
@item icolor fgcolor,bgcolor start="sr" end="er"
Same as above, except that the expression matching is case insensitive.
@item include "syntaxfile"
Read in self-contained color syntaxes from "syntaxfile". Note that
"syntaxfile" can only contain "syntax", "color", and "icolor" commands.
@end table
@node The File Browser, Pico Compatibility, Nanorc Files, Top
@chapter The File Browser
When reading or writing files, pressing ^T will invoke the file browser.
Here, one can navigate directories in a graphical manner in order to
find the desired file.
Basic movement in the file browser is accomplished with the arrow keys
and page up/down. The behavior of the enter (or `s') key varies by what
is currently selected. If the currently selected object is a directory,
the file browser will enter and display the contents of the directory.
If the object is a file, this filename and path are copied to the
statusbar and the file browser is exited.
Basic movement in the file browser is accomplished with the arrow keys,
page up, and page down. More advanced movement is accomplished by
searching via ^W (or 'w') and changing directories via ^_ (or 'g'). The
behavior of the Enter (or 's') key varies by what is currently selected.
If the currently selected object is a directory, the file browser will
enter and display the contents of the directory. If the object is a
file, this filename and path are copied to the statusbar, and the file
browser exits.
@node Pico Compatibility, Building and Configure Options, The File Browser, Top
@chapter Pico Compatibility
@@ -429,24 +700,24 @@ incompatible with Pico, method for entering search and replace strings.
In the old method, previous entries would be displayed by default as
editable text in front of the cursor, as opposed to being bracketed and
uneditable as it is in Pico. The old behavior could be made compatible
with Pico via the @code{-p} flag, but recent versions of Pico use the
@code{-p} flag to preserve the XON and XOFF sequences within the editor.
Since with the new method search and replace strings can still be edited
by simply hitting the up arrow key once, the old method was removed
completely.
with Pico via the @code{-p} option, but recent versions of Pico use the
@code{-p} option to preserve the XON and XOFF sequences within the
editor. Since, with the new method, search and replace strings can
still be edited by simply hitting the up arrow key once, the old method
was removed completely.
@item Writing or Appending Selected Text to Files
Text selected using the Control-Caret (^^) key can be written out or
appended to a new or existing file using the Writeout key (^O).
@item Writing, Appending, or Prepending Selected Text to Files
Text selected using the marking key (^^) can be written out, appended,
or prepended to a new or existing file using the WriteOut key (^O).
@item Toggles
Many options which alter the functionality of the program can be
"toggled" on or off using Meta key sequences, meaning the program does
not have to be restarted to turn a particular feature of the editor on
or off. Please see the internal help function (^G) for a list of what
functions can be toggled for a particular version of @code{nano}. Also
see @xref{Feature Toggles}, though this may be out of date.
functions can be toggled for a particular version of @code{nano}. See
@xref{Feature Toggles}, for more info.
@item Cursor Position Display
The output of the "Display Cursor Position" in @code{nano} displays
@@ -454,11 +725,11 @@ the given column position, as well as the row and total character
position of the cursor.
@item Interactive Replace and Spell Checker
It is worth noting that the @code{nano} replace function is interactive,
It is worth noting that @code{nano}'s replace function is interactive,
i.e, it does not stop after one search string is found and automatically
replace it. The @code{nano} implementation will stop at each search
replace it. The @code{nano} implementation will pause 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
internal spell checker operates similarly. Note that there is no way to
force these functions to behave in the Pico fashion. As of version
1.1.99pre1, misspelled words are sorted and trimmed for uniqueness in
the internal spell checker such that the words 'apple' and 'Apple' will
@@ -480,50 +751,84 @@ familiar with compiling programs with autoconf support:
@item make install
@end itemize
if you are looking to optimize @code{nano} for size, you may want to
consider the following command line options:
The possible options to @code{./configure} are:
@table @code
@item --disable-browser
Disable the mini file browser when reading or writing files.
@item --disable-help
Disable the help function. Doing this makes the binary much smaller,
but makes it difficult for new users to learn more than very basic
things about using the editor.
@item --disable-justify
Disable the justify and unjustify functions.
@item --disable-mouse
Disable all mouse functionality. This also disables the -m command line
option, which enables the mouse functionality.
@item --disable-operatingdir
Disable setting the operating directory. This also disables the -o
command line option, which sets the operating directory.
@item --disable-speller
Disable use of the spell checker. This also disables the -s command
line option, which allows specifying an alternate spell checker.
@item --disable-tabcomp
Disable the tab completion code when reading or writing files.
@item --disable-justify
Disable the justify (^J)/unjustify (^U) functions in the editor.
@item --disable-speller
Disable spell checker ability.
@item --disable-help
Disable the help function (^G). Disabling this option makes the binary
much smaller, but makes it difficult for new users to learn more than
very basic things about using the editor.
@item --disable-browser
Disable the mini file browser (^T) when reading or writing files.
@item --disable-mouse
Disable all mouse functionality. This also disables the -m command line
flag, which enables the mouse functions.
@item --disable-operatingdir
Disable setting the operating directory. This also disables the -o
command line flag.
@item --disable-wrapping
Disable all long line wrapping. This also eliminates the -w command
line option, which enables long line wrapping.
@item --enable-tiny
This option 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 depends on the marker code to work properly. It also
disables the function toggles.
internals of the editor, like the marking code and the cut to line code.
It also disables the function toggles.
@item --disable-wrapping
Disable all word wrapping in the editor. This also eliminates the -w
command line flag, as nonwrapping is then the default behavior.
@item --enable-debug
Enable support for runtime debug output. This can get pretty messy, so
chances are you only want this feature to work on the nano source.
@item --enable-extra
Enable extra features. At the moment, this is just easter egg-type
stuff.
@item --enable-color
Enable support for syntax coloring of files using the nanorc file. This
enables nanorc support as well.
@item --enable-multibuffer
Enable support for opening multiple files at a time and switching
between them on the fly.
@item --enable-nanorc
Enable support for reading the nanorc file at startup. You can store
custom settings in the nanorc file rather than having to pass command
line options to get desired behavior. See @xref{Nanorc Files}, for
more info.
@item --enable-all
Shortcut for enabling the above four features (extra, color,
multibuffer, and nanorc).
@item --disable-nls
Disables Native Language support. This will make the available GNU
@code{nano} translations unusable.
Disables Native Language support. This will disable use of the
available GNU @code{nano} translations.
@item --disable-wrapping-as-root
Disable long line wrapping by default when nano is run as root.
@item --enable-utf8
Enable support for reading and writing Unicode files. This will require
either the wide version of ncurses, or a UTF-8-enabled version of Slang.
@item --disable-utf8
Disable support for reading and writing Unicode files.
@item --with-slang
Compiling @code{nano} with Slang is supported, and will make the binary

View File

@@ -1,5 +1,5 @@
EXTRA_DIST = codeset.m4 gettext.m4 glib-2.0.m4 glibc21.m4 iconv.m4 \
intdiv0.m4 inttypes_h.m4 inttypes.m4 inttypes-pri.m4 \
isc-posix.m4 lcmessage.m4 lib-ld.m4 lib-link.m4 \
lib-prefix.m4 progtest.m4 stdint_h.m4 uintmax_t.m4 \
ulonglong.m4
EXTRA_DIST = ac_define_dir.m4 codeset.m4 gettext.m4 glib-2.0.m4 \
glibc21.m4 iconv.m4 intdiv0.m4 inttypes_h.m4 \
inttypes.m4 inttypes-pri.m4 isc-posix.m4 lcmessage.m4 \
lib-ld.m4 lib-link.m4 lib-prefix.m4 progtest.m4 \
stdint_h.m4 uintmax_t.m4 ulonglong.m4

34
m4/ac_define_dir.m4 Normal file
View File

@@ -0,0 +1,34 @@
dnl @synopsis AC_DEFINE_DIR(VARNAME, DIR [, DESCRIPTION])
dnl
dnl This macro sets VARNAME to the expansion of the DIR variable,
dnl taking care of fixing up ${prefix} and such.
dnl
dnl VARNAME is then offered as both an output variable and a C
dnl preprocessor symbol.
dnl
dnl Example:
dnl
dnl AC_DEFINE_DIR([DATADIR], [datadir], [Where data are placed to.])
dnl
dnl @category Misc
dnl @author Stepan Kasal <kasal@ucw.cz>
dnl @author Andreas Schwab <schwab@suse.de>
dnl @author Guido Draheim <guidod@gmx.de>
dnl @author Alexandre Oliva
dnl @version 2005-07-29
dnl @license AllPermissive
AC_DEFUN([AC_DEFINE_DIR], [
prefix_NONE=
exec_prefix_NONE=
test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix
test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix
dnl In Autoconf 2.60, ${datadir} refers to ${datarootdir}, which in turn
dnl refers to ${prefix}. Thus we have to use `eval' twice.
eval ac_define_dir="\"[$]$2\""
eval ac_define_dir="\"$ac_define_dir\""
AC_SUBST($1, "$ac_define_dir")
AC_DEFINE_UNQUOTED($1, "$ac_define_dir", [$3])
test "$prefix_NONE" && prefix=NONE
test "$exec_prefix_NONE" && exec_prefix=NONE
])

View File

@@ -8,7 +8,7 @@ Version : %{ver}
Release : %{rel}
Copyright : GPL
Group : Console/Editors
URL : http://www.nano-editor.org
URL : http://www.nano-editor.org/
Source : http://www.nano-editor.org/dist/v1.3/%{name}-%{ver}.tar.gz
BuildRoot : /var/tmp/%{name}-buildroot
Requires : ncurses
@@ -34,6 +34,7 @@ make DESTDIR="$RPM_BUILD_ROOT" install
%{_bindir}/*
%{_mandir}/*/*
%{_datadir}/locale/*/LC_MESSAGES/nano.mo
%{_datadir}/nano/*
%{_infodir}/nano.info*
%changelog

View File

@@ -1,9 +1,139 @@
2005-06-28 David Lawrence Ramsey <pooka_regent@sluggy.net>
2006-06-20 Jordi Mallach <jordi@gnu.org>
* ca.po: Updated Catalan translation.
* fr.po: Updated French translation by Jean-Philippe Guérard.
* hu.po: Updated Hungarian translation by Gabor Kelemen.
* nl.po: Updated Dutch translation by Benno Schulenberg.
2006-06-20 David Lawrence Ramsey <pooka109@cox.net>
* fr.po: Fixed incorrect "Project-Id-Version" entry.
* hu.po: Fixed incorrect "Project-Id-Version" entry.
* it.po: Fixed incorrect "Project-Id-Version" entry.
2006-06-19 Jordi Mallach <jordi@gnu.org>
* bg.po: Updated Bulgarian translation by Anton Zinoviev.
* ga.po: Updated Irish translation by Kevin Patrick Scannell.
2006-06-17 Jordi Mallach <jordi@gnu.org>
* ca.po: Updated Catalan translation.
* de.po: Updated German translation by Michael Piefel.
* fr.po: Updated French translation by Jean-Philippe Guérard.
* hu.po: Updated Hungarian translation by Gabor Kelemen.
* it.po: Updated Italian translation by Marco Colombo.
* nl.po: Updated Dutch translation by Benno Schulenberg.
2006-06-12 Jordi Mallach <jordi@gnu.org>
* fr.po: Updated French translation by Jean-Philippe Guérard.
* hu.po: Updated Hungarian translation by Gabor Kelemen.
2006-06-09 Jordi Mallach <jordi@gnu.org>
* ca.po: Updated Catalan translation.
* ga.po: Updated Irish translation by Kevin Patrick Scannell.
* it.po: Updated Italian translation by Marco Colombo.
* nl.po: Updated Dutch translation by Benno Schulenberg.
2006-05-17 Jordi Mallach <jordi@gnu.org>
* LINGUAS: Added "ga".
* ga.po: New Irish translation by
Kevin Patrick Scannell <scannell@SLU.EDU>.
2006-05-10 Jordi Mallach <jordi@gnu.org>
* nl.po: Updated Dutch translation by Benno Schulenberg.
2006-03-15 Jordi Mallach <jordi@gnu.org>
* sv.po: Updated Swedish translation by Daniel Nylander.
2006-03-06 Jordi Mallach <jordi@gnu.org>
* ca.po: Updated Vietnamese translation by
Phan Vinh Thinh.
2005-12-21 Jordi Mallach <jordi@gnu.org>
* bg.po: Updated Bulgarian translation by Anton Zinoviev.
* ca.po: Updated Catalan translation.
* fr.po: Updated French translation by Jean-Philippe Guérard.
* ms.po: Updated Malay translation by Sharuzzaman Ahmat Raslan.
* zh_TW: Updated Traditional Chinese translation by
Wei-Lun Chao.
2005-12-13 Jordi Mallach <jordi@gnu.org>
* it.po: Updated Italian translation by Marco Colombo.
* de.po: Updated German translation by Michael Piefel.
* nl.po: Updated Dutch translation by Benno Schulenberg.
2005-11-08 David Lawrence Ramsey <pooka109@cox.net>
* POTFILES.in: Add prompt.c.
2005-11-05 David Lawrence Ramsey <pooka109@cox.net>
* POTFILES.in: Add browser.c.
2005-11-01 David Lawrence Ramsey <pooka109@cox.net>
* POTFILES.in: Add help.c.
2006-10-23 Jordi Mallach <jordi@gnu.org>
* ca.po: Updated Catalan translation.
* eu.po: Updated Basque translation by Mikel Olasagasti.
* fr.po: Updated French translation by Jean-Philippe Guérard.
* it.po: Updated Italian translation by Marco Colombo.
* ms.po: Updated Malay translation by Sharuzzaman Ahmat Raslan.
* nl.po: Updated Dutch translation by Benno Schulenberg.
* zh_TW: Updated Traditional Chinese translation by
Wei-Lun Chao.
2006-08-22 Jordi Mallach <jordi@gnu.org>
* bg.po: New Bulgarian translation by
Yavor Doganov <yavor@doganov.org>.
* LINGUAS: Added "bg".
2005-08-16 Jordi Mallach <jordi@gnu.org>
* ca.po: Updated Catalan translation.
2005-08-16 Jordi Mallach <jordi@gnu.org>
* nl.po: Updated Dutch translation by
Benno Schulenberg and Reinout van Schouwen.
2005-07-24 David Lawrence Ramsey <pooka109@cox.net>
* POTFILES.in: Add text.c.
2005-07-19 Jordi Mallach <jordi@gnu.org>
* ms.po: Updated Malay translation by
Sharuzzaman Ahmat Raslan.
2005-07-18 Jordi Mallach <jordi@gnu.org>
* fr.po: Updated French translation by
Jean-Philippe Guérard.
2005-07-07 Jordi Mallach <jordi@gnu.org>
* it.po: Updated Italian translation by Marco Colombo.
* ca.po: Updated Catalan translation.
2005-06-28 David Lawrence Ramsey <pooka109@cox.net>
* POTFILES.in: Remove source files that contain no translatable
strings.
2005-06-19 David Lawrence Ramsey <pooka_regent@sluggy.net>
2005-06-19 David Lawrence Ramsey <pooka109@cox.net>
* pt_BR.po: Typo fix.

View File

@@ -1,2 +1,2 @@
# List of available languages.
ca cs da de es eu fi fr gl hu id it ms nb nl nn pl pt_BR ro ru rw sr sv tr uk vi zh_TW
bg ca cs da de es eu fi fr ga gl hu id it ms nb nl nn pl pt_BR ro ru rw sr sv tr uk vi zh_TW

View File

@@ -1,10 +1,14 @@
# $Id$
# List of source files containing translatable strings.
src/browser.c
src/files.c
src/global.c
src/help.c
src/nano.c
src/prompt.c
src/rcfile.c
src/search.c
src/text.c
src/utils.c
src/winio.c

1832
po/bg.po Normal file

File diff suppressed because it is too large Load Diff

1922
po/ca.po

File diff suppressed because it is too large Load Diff

2672
po/de.po

File diff suppressed because it is too large Load Diff

1545
po/eu.po

File diff suppressed because it is too large Load Diff

3389
po/fr.po

File diff suppressed because it is too large Load Diff

1828
po/ga.po Normal file

File diff suppressed because it is too large Load Diff

3325
po/hu.po

File diff suppressed because it is too large Load Diff

2266
po/it.po

File diff suppressed because it is too large Load Diff

1722
po/ms.po

File diff suppressed because it is too large Load Diff

3112
po/nl.po

File diff suppressed because it is too large Load Diff

1692
po/sv.po

File diff suppressed because it is too large Load Diff

1725
po/vi.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,20 +1,24 @@
localedir = $(datadir)/locale
INCLUDES = -Iintl -DLOCALEDIR=\"$(localedir)\" -DSYSCONFDIR=\"$(sysconfdir)\"
INCLUDES = -DLOCALEDIR=\"$(localedir)\" -DSYSCONFDIR=\"$(sysconfdir)\"
ACLOCAL_AMFLAGS = -I m4
bin_PROGRAMS = nano
nano_SOURCES = chars.c \
nano_SOURCES = browser.c \
chars.c \
color.c \
cut.c \
files.c \
global.c \
help.c \
move.c \
nano.c \
nano.h \
prompt.c \
proto.h \
rcfile.c \
search.c \
text.c \
utils.c \
winio.c
@@ -22,3 +26,5 @@ nano_LDADD = @GLIB_LIBS@ @LIBINTL@
install-exec-hook:
cd $(DESTDIR)$(bindir) && rm -f rnano && $(LN_S) nano rnano
uninstall-hook:
cd $(DESTDIR)$(bindir) && rm -f rnano

919
src/browser.c Normal file
View File

@@ -0,0 +1,919 @@
/* $Id$ */
/**************************************************************************
* browser.c *
* *
* Copyright (C) 2001-2004 Chris Allegretta *
* Copyright (C) 2005-2006 David Lawrence Ramsey *
* 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., 51 Franklin St, Fifth Floor, Boston, MA *
* 02110-1301, USA. *
* *
**************************************************************************/
#include "proto.h"
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#ifndef DISABLE_BROWSER
static char **filelist = NULL;
/* The list of files to display in the browser. */
static size_t filelist_len = 0;
/* The number of files in the list. */
static int width = 0;
/* The number of columns to display the list in. */
static int longest = 0;
/* The number of columns in the longest filename in the list. */
static size_t selected = 0;
/* The currently selected filename in the list. This variable
* is zero-based. */
static bool search_last_file = FALSE;
/* Have we gone past the last file while searching? */
/* Our browser function. path is the tilde-expanded path to start
* browsing from. */
char *do_browser(char *path, DIR *dir)
{
int kbinput;
bool meta_key, func_key;
bool old_const_update = ISSET(CONST_UPDATE);
char *ans = mallocstrcpy(NULL, "");
/* The last answer the user typed on the statusbar. */
char *retval = NULL;
curs_set(0);
blank_statusbar();
#if !defined(DISABLE_HELP) || !defined(DISABLE_MOUSE)
currshortcut = browser_list;
#endif
bottombars(browser_list);
wnoutrefresh(bottomwin);
UNSET(CONST_UPDATE);
change_browser_directory:
/* We go here after the user selects a new directory. */
kbinput = ERR;
meta_key = FALSE;
func_key = FALSE;
width = 0;
selected = 0;
path = mallocstrassn(path, get_full_path(path));
/* Assume that path exists and ends with a slash. */
assert(path != NULL && path[strlen(path) - 1] == '/');
/* Get the list of files. */
browser_init(path, dir);
assert(filelist != NULL);
/* Sort the list. */
qsort(filelist, filelist_len, sizeof(char *), diralphasort);
titlebar(path);
do {
bool abort = FALSE;
struct stat st;
int i;
size_t fileline;
char *new_path;
/* Used by the "Go To Directory" prompt. */
#ifndef DISABLE_MOUSE
MEVENT mevent;
#endif
/* Compute the line number we're on now, so that we don't divide
* by zero. */
fileline = selected;
if (width != 0)
fileline /= width;
switch (kbinput) {
#ifndef DISABLE_MOUSE
case KEY_MOUSE:
if (getmouse(&mevent) == ERR)
break;
/* If we clicked in the edit window, we probably clicked
* on a file. */
if (wenclose(edit, mevent.y, mevent.x)) {
size_t old_selected = selected;
/* Subtract out the size of topwin. */
mevent.y -= 2 - no_more_space();
/* longest is the width of each column. There are
* two spaces between each column. */
selected = (fileline / editwinrows) * (editwinrows *
width) + (mevent.y * width) + (mevent.x /
(longest + 2));
/* If they clicked beyond the end of a row, select
* the end of that row. */
if (mevent.x > width * (longest + 2))
selected--;
/* If we're off the screen, reset to the last item.
* If we clicked the same place as last time, select
* this name! */
if (selected > filelist_len - 1)
selected = filelist_len - 1;
else if (old_selected == selected)
/* Put back the "Select" key, so that the file
* is selected. */
unget_kbinput(NANO_ENTER_KEY, FALSE, FALSE);
} else {
/* We must have clicked a shortcut. Put back the
* equivalent shortcut key. */
int mouse_x, mouse_y;
get_mouseinput(&mouse_x, &mouse_y, TRUE);
}
break;
#endif /* !DISABLE_MOUSE */
/* Redraw the screen. */
case NANO_REFRESH_KEY:
total_redraw();
break;
case NANO_HELP_KEY:
#ifndef DISABLE_HELP
do_browser_help();
curs_set(0);
#else
nano_disabled_msg();
#endif
break;
/* Search for a filename. */
case NANO_WHEREIS_KEY:
curs_set(1);
do_filesearch();
curs_set(0);
break;
/* Search for another filename. */
case NANO_WHEREIS_NEXT_KEY:
do_fileresearch();
break;
case NANO_PREVPAGE_KEY:
if (selected >= (editwinrows + fileline % editwinrows) *
width)
selected -= (editwinrows + fileline % editwinrows) *
width;
else
selected = 0;
break;
case NANO_NEXTPAGE_KEY:
selected += (editwinrows - fileline % editwinrows) *
width;
if (selected >= filelist_len)
selected = filelist_len - 1;
break;
case NANO_FIRSTFILE_ALTKEY:
if (meta_key)
selected = 0;
break;
case NANO_LASTFILE_ALTKEY:
if (meta_key)
selected = filelist_len - 1;
break;
/* Go to a specific directory. */
case NANO_GOTODIR_KEY:
curs_set(1);
i = do_prompt(TRUE,
#ifndef DISABLE_TABCOMP
FALSE,
#endif
gotodir_list, ans,
#ifndef NANO_TINY
NULL,
#endif
browser_refresh, _("Go To Directory"));
curs_set(0);
#if !defined(DISABLE_HELP) || !defined(DISABLE_MOUSE)
currshortcut = browser_list;
#endif
bottombars(browser_list);
if (i < 0) {
/* We canceled. Indicate that on the statusbar, and
* blank out ans, since we're done with it. */
statusbar(_("Cancelled"));
ans = mallocstrcpy(ans, "");
break;
} else if (i != 0) {
/* Put back the "Go to Directory" key and save
* answer in ans, so that the file list is displayed
* again, the prompt is displayed again, and what we
* typed before at the prompt is displayed again. */
unget_kbinput(NANO_GOTOLINE_KEY, FALSE, FALSE);
ans = mallocstrcpy(ans, answer);
break;
}
/* We have a directory. Blank out ans, since we're done
* with it. */
ans = mallocstrcpy(ans, "");
new_path = real_dir_from_tilde(answer);
if (new_path[0] != '/') {
new_path = charealloc(new_path, strlen(path) +
strlen(answer) + 1);
sprintf(new_path, "%s%s", path, answer);
}
#ifndef DISABLE_OPERATINGDIR
if (check_operating_dir(new_path, FALSE)) {
statusbar(
_("Can't go outside of %s in restricted mode"),
operating_dir);
free(new_path);
break;
}
#endif
dir = opendir(new_path);
if (dir == NULL) {
/* We can't open this dir for some reason.
* Complain. */
statusbar(_("Error reading %s: %s"), answer,
strerror(errno));
beep();
free(new_path);
break;
}
/* Start over again with the new path value. */
free(path);
path = new_path;
free_chararray(filelist, filelist_len);
goto change_browser_directory;
case NANO_PREVLINE_KEY:
if (selected >= width)
selected -= width;
break;
case NANO_BACK_KEY:
if (selected > 0)
selected--;
break;
case NANO_NEXTLINE_KEY:
if (selected + width <= filelist_len - 1)
selected += width;
break;
case NANO_FORWARD_KEY:
if (selected < filelist_len - 1)
selected++;
break;
case NANO_ENTER_KEY:
/* You can't move up from "/". */
if (strcmp(filelist[selected], "/..") == 0) {
statusbar(_("Can't move up a directory"));
beep();
break;
}
#ifndef DISABLE_OPERATINGDIR
/* Note: the selected file can be outside the operating
* directory if it's ".." or if it's a symlink to a
* directory outside the operating directory. */
if (check_operating_dir(filelist[selected], FALSE)) {
statusbar(
_("Can't go outside of %s in restricted mode"),
operating_dir);
beep();
break;
}
#endif
if (stat(filelist[selected], &st) == -1) {
/* We can't open this file for some reason.
* Complain. */
statusbar(_("Error reading %s: %s"),
filelist[selected], strerror(errno));
beep();
break;
}
if (!S_ISDIR(st.st_mode)) {
retval = mallocstrcpy(retval, filelist[selected]);
abort = TRUE;
break;
}
dir = opendir(filelist[selected]);
if (dir == NULL) {
/* We can't open this directory for some reason.
* Complain. */
statusbar(_("Error reading %s: %s"),
filelist[selected], strerror(errno));
beep();
break;
}
path = mallocstrcpy(path, filelist[selected]);
/* Start over again with the new path value. */
free_chararray(filelist, filelist_len);
goto change_browser_directory;
/* Abort the browser. */
case NANO_EXIT_KEY:
abort = TRUE;
break;
}
if (abort)
break;
browser_refresh();
kbinput = get_kbinput(edit, &meta_key, &func_key);
parse_browser_input(&kbinput, &meta_key, &func_key);
} while (kbinput != NANO_EXIT_KEY);
blank_edit();
titlebar(NULL);
edit_refresh();
curs_set(1);
if (old_const_update)
SET(CONST_UPDATE);
/* Clean up. */
free(path);
free(ans);
free_chararray(filelist, filelist_len);
return retval;
}
/* The file browser front end. We check to see if inpath has a
* directory in it. If it does, we start do_browser() from there.
* Otherwise, we start do_browser() from the current directory. */
char *do_browse_from(const char *inpath)
{
struct stat st;
char *path;
/* This holds the tilde-expanded version of inpath. */
DIR *dir = NULL;
assert(inpath != NULL);
path = real_dir_from_tilde(inpath);
/* Perhaps path is a directory. If so, we'll pass it to
* do_browser(). Or perhaps path is a directory / a file. If so,
* we'll try stripping off the last path element and passing it to
* do_browser(). Or perhaps path doesn't have a directory portion
* at all. If so, we'll just pass the current directory to
* do_browser(). */
if (stat(path, &st) == -1 || !S_ISDIR(st.st_mode)) {
striponedir(path);
if (stat(path, &st) == -1 || !S_ISDIR(st.st_mode)) {
free(path);
path = charalloc(PATH_MAX + 1);
path = getcwd(path, PATH_MAX + 1);
if (path != NULL)
align(&path);
}
}
#ifndef DISABLE_OPERATINGDIR
/* If the resulting path isn't in the operating directory, use
* the operating directory instead. */
if (check_operating_dir(path, FALSE)) {
if (path != NULL)
free(path);
path = mallocstrcpy(NULL, operating_dir);
}
#endif
if (path != NULL)
dir = opendir(path);
if (dir == NULL) {
beep();
free(path);
return NULL;
}
return do_browser(path, dir);
}
/* Set filelist to the list of files contained in the directory path,
* set filelist_len to the number of files in that list, and set longest
* to the width in columns of the longest filename in that list, up to
* COLS - 1 (but at least 7). Assume path exists and is a directory. */
void browser_init(const char *path, DIR *dir)
{
const struct dirent *nextdir;
size_t i = 0, path_len;
assert(dir != NULL);
longest = 0;
while ((nextdir = readdir(dir)) != NULL) {
size_t d_len;
/* Don't show the "." entry. */
if (strcmp(nextdir->d_name, ".") == 0)
continue;
i++;
d_len = strlenpt(nextdir->d_name);
if (d_len > longest)
longest = (d_len > COLS - 1) ? COLS - 1 : d_len;
}
filelist_len = i;
rewinddir(dir);
longest += 10;
filelist = (char **)nmalloc(filelist_len * sizeof(char *));
path_len = strlen(path);
i = 0;
while ((nextdir = readdir(dir)) != NULL && i < filelist_len) {
/* Don't show the "." entry. */
if (strcmp(nextdir->d_name, ".") == 0)
continue;
filelist[i] = charalloc(path_len + strlen(nextdir->d_name) + 1);
sprintf(filelist[i], "%s%s", path, nextdir->d_name);
i++;
}
/* Maybe the number of files in the directory changed between the
* first time we scanned and the second. i is the actual length of
* filelist, so record it. */
filelist_len = i;
closedir(dir);
if (longest > COLS - 1)
longest = COLS - 1;
if (longest < 7)
longest = 7;
}
/* Determine the shortcut key corresponding to the values of kbinput
* (the key itself), meta_key (whether the key is a meta sequence), and
* func_key (whether the key is a function key), if any. In the
* process, convert certain non-shortcut keys into their corresponding
* shortcut keys. */
void parse_browser_input(int *kbinput, bool *meta_key, bool *func_key)
{
get_shortcut(browser_list, kbinput, meta_key, func_key);
/* Pico compatibility. */
if (*meta_key == FALSE) {
switch (*kbinput) {
case ' ':
*kbinput = NANO_NEXTPAGE_KEY;
break;
case '-':
*kbinput = NANO_PREVPAGE_KEY;
break;
case '?':
*kbinput = NANO_HELP_KEY;
break;
/* Cancel is equivalent to Exit here. */
case NANO_CANCEL_KEY:
case 'E':
case 'e':
*kbinput = NANO_EXIT_KEY;
break;
case 'G':
case 'g':
*kbinput = NANO_GOTODIR_KEY;
break;
case 'S':
case 's':
*kbinput = NANO_ENTER_KEY;
break;
case 'W':
case 'w':
*kbinput = NANO_WHEREIS_KEY;
break;
}
}
}
/* Calculate the number of columns needed to display the list of files
* in the array filelist, if necessary, and then display the list of
* files. */
void browser_refresh(void)
{
struct stat st;
size_t i = 0;
int col = 0, line = 0, filecols = 0;
size_t foo_len = mb_cur_max() * 7;
char *foo = charalloc(foo_len + 1);
if (width != 0)
i = width * editwinrows * ((selected / width) / editwinrows);
blank_edit();
wmove(edit, 0, 0);
for (; i < filelist_len && line <= editwinrows - 1; i++) {
char *disp = display_string(tail(filelist[i]), 0, longest,
FALSE);
/* Highlight the currently selected file or directory. */
if (i == selected)
wattron(edit, reverse_attr);
blank_line(edit, line, col, longest);
mvwaddstr(edit, line, col, disp);
free(disp);
col += longest;
filecols++;
/* Show file info also. We don't want to report file sizes for
* links, so we use lstat(). Also, stat() and lstat() return an
* error if, for example, the file is deleted while the file
* browser is open. In that case, we report "--" as the file
* info. */
if (lstat(filelist[i], &st) == -1 || S_ISLNK(st.st_mode)) {
/* Aha! It's a symlink! Now, is it a dir? If so, mark it
* as such. */
if (stat(filelist[i], &st) == 0 && S_ISDIR(st.st_mode)) {
strncpy(foo, _("(dir)"), foo_len);
foo[foo_len] = '\0';
} else
strcpy(foo, "--");
} else if (S_ISDIR(st.st_mode)) {
strncpy(foo, _("(dir)"), foo_len);
foo[foo_len] = '\0';
} else if (st.st_size < (1 << 10)) /* less than 1 k. */
sprintf(foo, "%4u B", (unsigned int)st.st_size);
else if (st.st_size < (1 << 20)) /* less than 1 meg. */
sprintf(foo, "%4u KB", (unsigned int)(st.st_size >> 10));
else if (st.st_size < (1 << 30)) /* less than 1 gig. */
sprintf(foo, "%4u MB", (unsigned int)(st.st_size >> 20));
else
sprintf(foo, "%4u GB", (unsigned int)(st.st_size >> 30));
mvwaddnstr(edit, line, col - strlen(foo), foo, foo_len);
if (i == selected)
wattroff(edit, reverse_attr);
/* Add some space between the columns. */
col += 2;
/* If the next entry isn't going to fit on the current line,
* move to the next line. */
if (col > COLS - longest) {
line++;
col = 0;
/* Set the number of columns to display the list in, if
* necessary, so that we don't divide by zero. */
if (width == 0)
width = filecols;
}
wmove(edit, line, col);
}
free(foo);
wnoutrefresh(edit);
}
/* Set up the system variables for a filename search. Return -1 if the
* search should be canceled (due to Cancel, a blank search string, or a
* failed regcomp()), return 0 on success, and return 1 on rerun calling
* program. */
int filesearch_init(void)
{
int i = 0;
char *buf;
static char *backupstring = NULL;
/* The search string we'll be using. */
/* If backupstring doesn't exist, initialize it to "". */
if (backupstring == NULL)
backupstring = mallocstrcpy(NULL, "");
/* We display the search prompt below. If the user types a partial
* search string and then Replace or a toggle, we will return to
* do_search() or do_replace() and be called again. In that case,
* we should put the same search string back up. */
search_init_globals();
if (last_search[0] != '\0') {
char *disp = display_string(last_search, 0, COLS / 3, FALSE);
buf = charalloc(strlen(disp) + 7);
/* We use (COLS / 3) here because we need to see more on the
* line. */
sprintf(buf, " [%s%s]", disp,
(strlenpt(last_search) > COLS / 3) ? "..." : "");
free(disp);
} else
buf = mallocstrcpy(NULL, "");
/* This is now one simple call. It just does a lot. */
i = do_prompt(FALSE,
#ifndef DISABLE_TABCOMP
TRUE,
#endif
whereis_file_list, backupstring,
#ifndef NANO_TINY
&search_history,
#endif
browser_refresh, "%s%s%s%s%s%s", _("Search"),
#ifndef NANO_TINY
/* This string is just a modifier for the search prompt; no
* grammar is implied. */
ISSET(CASE_SENSITIVE) ? _(" [Case Sensitive]") :
#endif
"",
#ifdef HAVE_REGEX_H
/* This string is just a modifier for the search prompt; no
* grammar is implied. */
ISSET(USE_REGEXP) ? _(" [Regexp]") :
#endif
"",
#ifndef NANO_TINY
/* This string is just a modifier for the search prompt; no
* grammar is implied. */
ISSET(BACKWARDS_SEARCH) ? _(" [Backwards]") :
#endif
"", "", buf);
/* Release buf now that we don't need it anymore. */
free(buf);
free(backupstring);
backupstring = NULL;
/* Cancel any search, or just return with no previous search. */
if (i == -1 || (i < 0 && last_search[0] == '\0') ||
(i == 0 && answer[0] == '\0')) {
statusbar(_("Cancelled"));
return -1;
} else {
switch (i) {
case -2: /* It's an empty string. */
case 0: /* It's a new string. */
#ifdef HAVE_REGEX_H
/* Use last_search if answer is an empty string, or
* answer if it isn't. */
if (ISSET(USE_REGEXP) &&
regexp_init((i == -2) ? last_search :
answer) == 0)
return -1;
#endif
break;
#ifndef NANO_TINY
case TOGGLE_CASE_KEY:
TOGGLE(CASE_SENSITIVE);
backupstring = mallocstrcpy(backupstring, answer);
return 1;
case TOGGLE_BACKWARDS_KEY:
TOGGLE(BACKWARDS_SEARCH);
backupstring = mallocstrcpy(backupstring, answer);
return 1;
#endif
#ifdef HAVE_REGEX_H
case NANO_REGEXP_KEY:
TOGGLE(USE_REGEXP);
backupstring = mallocstrcpy(backupstring, answer);
return 1;
#endif
default:
return -1;
}
}
return 0;
}
/* Look for needle. If no_sameline is TRUE, skip over selected when
* looking for needle. begin is the location of the filename where we
* first started searching. The return value specifies whether we found
* anything. */
bool findnextfile(bool no_sameline, size_t begin, const char *needle)
{
size_t currselected = selected;
/* The location in the current file list of the match we
* find. */
const char *rev_start = tail(filelist[currselected]), *found = NULL;
#ifndef NANO_TINY
if (ISSET(BACKWARDS_SEARCH))
rev_start += strlen(tail(filelist[currselected]));
#endif
/* Look for needle in the current filename we're searching. */
while (TRUE) {
found = strstrwrapper(tail(filelist[currselected]), needle,
rev_start);
/* We've found a potential match. If we're not allowed to find
* a match on the same filename we started on and this potential
* match is on that line, continue searching. */
if (found != NULL && (!no_sameline || currselected != begin))
break;
/* We've finished processing the filenames, so get out. */
if (search_last_file) {
not_found_msg(needle);
return FALSE;
}
/* Move to the previous or next filename in the list. If we've
* reached the start or end of the list, wrap around. */
#ifndef NANO_TINY
if (ISSET(BACKWARDS_SEARCH)) {
if (currselected > 0)
currselected--;
else {
currselected = filelist_len - 1;
statusbar(_("Search Wrapped"));
}
} else {
#endif
if (currselected < filelist_len - 1)
currselected++;
else {
currselected = 0;
statusbar(_("Search Wrapped"));
}
#ifndef NANO_TINY
}
#endif
/* We've reached the original starting file. */
if (currselected == begin)
search_last_file = TRUE;
rev_start = tail(filelist[currselected]);
#ifndef NANO_TINY
if (ISSET(BACKWARDS_SEARCH))
rev_start += strlen(tail(filelist[currselected]));
#endif
}
/* We've definitely found something. */
selected = currselected;
return TRUE;
}
/* Clear the flag indicating that a search reached the last file in the
* list. We need to do this just before a new search. */
void findnextfile_wrap_reset(void)
{
search_last_file = FALSE;
}
/* Abort the current filename search. Clean up by setting the current
* shortcut list to the browser shortcut list, displaying it, and
* decompiling the compiled regular expression we used in the last
* search, if any. */
void filesearch_abort(void)
{
currshortcut = browser_list;
bottombars(browser_list);
#ifdef HAVE_REGEX_H
regexp_cleanup();
#endif
}
/* Search for a filename. */
void do_filesearch(void)
{
size_t begin = selected;
int i;
bool didfind;
i = filesearch_init();
if (i == -1) /* Cancel, blank search string, or regcomp()
* failed. */
filesearch_abort();
#if !defined(NANO_TINY) || defined(HAVE_REGEX_H)
else if (i == 1) /* Case Sensitive, Backwards, or Regexp search
* toggle. */
do_filesearch();
#endif
if (i != 0)
return;
/* If answer is now "", copy last_search into answer. */
if (answer[0] == '\0')
answer = mallocstrcpy(answer, last_search);
else
last_search = mallocstrcpy(last_search, answer);
#ifndef NANO_TINY
/* If answer is not "", add this search string to the search history
* list. */
if (answer[0] != '\0')
update_history(&search_history, answer);
#endif
findnextfile_wrap_reset();
didfind = findnextfile(FALSE, begin, answer);
/* Check to see if there's only one occurrence of the string and
* we're on it now. */
if (selected == begin && didfind) {
/* Do the search again, skipping over the current line. We
* should only end up back at the same position if the string
* isn't found again, in which case it's the only occurrence. */
didfind = findnextfile(TRUE, begin, answer);
if (selected == begin && !didfind)
statusbar(_("This is the only occurrence"));
}
filesearch_abort();
}
/* Search for the last filename without prompting. */
void do_fileresearch(void)
{
size_t begin = selected;
bool didfind;
search_init_globals();
if (last_search[0] != '\0') {
#ifdef HAVE_REGEX_H
/* Since answer is "", use last_search! */
if (ISSET(USE_REGEXP) && regexp_init(last_search) == 0)
return;
#endif
findnextfile_wrap_reset();
didfind = findnextfile(FALSE, begin, answer);
/* Check to see if there's only one occurrence of the string and
* we're on it now. */
if (selected == begin && didfind) {
/* Do the search again, skipping over the current line. We
* should only end up back at the same position if the
* string isn't found again, in which case it's the only
* occurrence. */
didfind = findnextfile(TRUE, begin, answer);
if (selected == begin && !didfind)
statusbar(_("This is the only occurrence"));
}
} else
statusbar(_("No current search pattern"));
filesearch_abort();
}
void do_first_file(void)
{
selected = 0;
}
void do_last_file(void)
{
selected = filelist_len - 1;
}
/* Strip one directory from the end of path. */
void striponedir(char *path)
{
char *tmp;
assert(path != NULL);
tmp = strrchr(path, '/');
if (tmp != NULL)
*tmp = '\0';
}
#endif /* !DISABLE_BROWSER */

View File

@@ -2,7 +2,8 @@
/**************************************************************************
* chars.c *
* *
* Copyright (C) 2005 Chris Allegretta *
* Copyright (C) 2001-2004 Chris Allegretta *
* Copyright (C) 2005-2006 David Lawrence Ramsey *
* 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) *
@@ -20,23 +21,40 @@
* *
**************************************************************************/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <assert.h>
#include "proto.h"
#ifdef NANO_WIDE
#include <string.h>
#include <ctype.h>
#ifdef ENABLE_UTF8
#ifdef HAVE_WCHAR_H
#include <wchar.h>
#endif
#ifdef HAVE_WCTYPE_H
#include <wctype.h>
#endif
static bool use_utf8 = FALSE;
/* Whether we've enabled UTF-8 support. */
static const wchar_t bad_wchar = 0xFFFD;
/* If we get an invalid multibyte sequence, we treat it as
* Unicode FFFD (Replacement Character), unless we're
* determining if it's a control character or searching for a
* match to it. */
static const char *bad_mbchar = "\xEF\xBF\xBD";
static const int bad_mbchar_len = 3;
/* Enable UTF-8 support. */
void utf8_init(void)
{
use_utf8 = TRUE;
}
/* Is UTF-8 support enabled? */
bool using_utf8(void)
{
return use_utf8;
}
#endif
#ifndef HAVE_ISBLANK
@@ -47,7 +65,7 @@ bool nisblank(int c)
}
#endif
#if !defined(HAVE_ISWBLANK) && defined(NANO_WIDE)
#if !defined(HAVE_ISWBLANK) && defined(ENABLE_UTF8)
/* This function is equivalent to iswblank(). */
bool niswblank(wchar_t wc)
{
@@ -67,14 +85,13 @@ bool is_alnum_mbchar(const char *c)
{
assert(c != NULL);
#ifdef NANO_WIDE
if (ISSET(USE_UTF8)) {
#ifdef ENABLE_UTF8
if (use_utf8) {
wchar_t wc;
int c_mb_len = mbtowc(&wc, c, MB_CUR_MAX);
if (c_mb_len <= 0) {
if (mbtowc(&wc, c, MB_CUR_MAX) < 0) {
mbtowc(NULL, NULL, 0);
wc = (unsigned char)*c;
wc = bad_wchar;
}
return iswalnum(wc);
@@ -88,14 +105,13 @@ bool is_blank_mbchar(const char *c)
{
assert(c != NULL);
#ifdef NANO_WIDE
if (ISSET(USE_UTF8)) {
#ifdef ENABLE_UTF8
if (use_utf8) {
wchar_t wc;
int c_mb_len = mbtowc(&wc, c, MB_CUR_MAX);
if (c_mb_len <= 0) {
if (mbtowc(&wc, c, MB_CUR_MAX) < 0) {
mbtowc(NULL, NULL, 0);
wc = (unsigned char)*c;
wc = bad_wchar;
}
return iswblank(wc);
@@ -104,15 +120,22 @@ bool is_blank_mbchar(const char *c)
return isblank((unsigned char)*c);
}
/* This function is equivalent to iscntrl(), except in that it only
* handles non-high-bit control characters. */
bool is_ascii_cntrl_char(int c)
{
return (0 <= c && c < 32);
}
/* This function is equivalent to iscntrl(), except in that it also
* handles control characters with their high bits set. */
* handles high-bit control characters. */
bool is_cntrl_char(int c)
{
return (-128 <= c && c < -96) || (0 <= c && c < 32) ||
(127 <= c && c < 160);
}
#ifdef NANO_WIDE
#ifdef ENABLE_UTF8
/* This function is equivalent to iscntrl() for wide characters, except
* in that it also handles wide control characters with their high bits
* set. */
@@ -129,14 +152,13 @@ bool is_cntrl_mbchar(const char *c)
{
assert(c != NULL);
#ifdef NANO_WIDE
if (ISSET(USE_UTF8)) {
#ifdef ENABLE_UTF8
if (use_utf8) {
wchar_t wc;
int c_mb_len = mbtowc(&wc, c, MB_CUR_MAX);
if (c_mb_len <= 0) {
if (mbtowc(&wc, c, MB_CUR_MAX) < 0) {
mbtowc(NULL, NULL, 0);
wc = (unsigned char)*c;
wc = bad_wchar;
}
return is_cntrl_wchar(wc);
@@ -150,14 +172,14 @@ bool is_punct_mbchar(const char *c)
{
assert(c != NULL);
#ifdef NANO_WIDE
if (ISSET(USE_UTF8)) {
#ifdef ENABLE_UTF8
if (use_utf8) {
wchar_t wc;
int c_mb_len = mbtowc(&wc, c, MB_CUR_MAX);
if (c_mb_len <= 0) {
if (c_mb_len < 0) {
mbtowc(NULL, NULL, 0);
wc = (unsigned char)*c;
wc = bad_wchar;
}
return iswpunct(wc);
@@ -178,9 +200,11 @@ bool is_word_mbchar(const char *c, bool allow_punct)
}
/* c is a control character. It displays as ^@, ^?, or ^[ch], where ch
* is c + 64. We return that character. */
* is (c + 64). We return that character. */
char control_rep(char c)
{
assert(is_cntrl_char(c));
/* Treat newlines embedded in a line as encoded nulls. */
if (c == '\n')
return '@';
@@ -190,11 +214,13 @@ char control_rep(char c)
return c + 64;
}
#ifdef NANO_WIDE
#ifdef ENABLE_UTF8
/* c is a wide control character. It displays as ^@, ^?, or ^[ch],
* where ch is c + 64. We return that wide character. */
* where ch is (c + 64). We return that wide character. */
wchar_t control_wrep(wchar_t wc)
{
assert(is_cntrl_wchar(wc));
/* Treat newlines embedded in a line as encoded nulls. */
if (wc == '\n')
return '@';
@@ -206,31 +232,69 @@ wchar_t control_wrep(wchar_t wc)
#endif
/* c is a multibyte control character. It displays as ^@, ^?, or ^[ch],
* where ch is c + 64. We return that multibyte character. */
* where ch is (c + 64). We return that multibyte character. If crep
* is an invalid multibyte sequence, it will be replaced with Unicode
* 0xFFFD (Replacement Character). */
char *control_mbrep(const char *c, char *crep, int *crep_len)
{
assert(c != NULL && crep != NULL && crep_len != NULL);
#ifdef NANO_WIDE
if (ISSET(USE_UTF8)) {
#ifdef ENABLE_UTF8
if (use_utf8) {
wchar_t wc;
if (mbtowc(&wc, c, MB_CUR_MAX) <= 0) {
if (mbtowc(&wc, c, MB_CUR_MAX) < 0) {
mbtowc(NULL, NULL, 0);
wc = (unsigned char)*c;
}
*crep_len = bad_mbchar_len;
strncpy(crep, bad_mbchar, *crep_len);
} else {
*crep_len = wctomb(crep, control_wrep(wc));
*crep_len = wctomb(crep, control_wrep(wc));
if (*crep_len <= 0) {
wctomb(NULL, 0);
*crep_len = 0;
if (*crep_len < 0) {
wctomb(NULL, 0);
*crep_len = 0;
}
}
} else {
#endif
*crep_len = 1;
*crep = control_rep(*c);
#ifdef NANO_WIDE
#ifdef ENABLE_UTF8
}
#endif
return crep;
}
/* c is a multibyte non-control character. We return that multibyte
* character. If crep is an invalid multibyte sequence, it will be
* replaced with Unicode 0xFFFD (Replacement Character). */
char *mbrep(const char *c, char *crep, int *crep_len)
{
assert(c != NULL && crep != NULL && crep_len != NULL);
#ifdef ENABLE_UTF8
if (use_utf8) {
wchar_t wc;
/* Reject invalid Unicode characters. */
if (mbtowc(&wc, c, MB_CUR_MAX) < 0 || !is_valid_unicode(wc)) {
mbtowc(NULL, NULL, 0);
*crep_len = bad_mbchar_len;
strncpy(crep, bad_mbchar, *crep_len);
} else {
*crep_len = wctomb(crep, wc);
if (*crep_len < 0) {
wctomb(NULL, 0);
*crep_len = 0;
}
}
} else {
#endif
*crep_len = 1;
*crep = *c;
#ifdef ENABLE_UTF8
}
#endif
@@ -242,20 +306,22 @@ int mbwidth(const char *c)
{
assert(c != NULL);
#ifdef NANO_WIDE
if (ISSET(USE_UTF8)) {
#ifdef ENABLE_UTF8
if (use_utf8) {
wchar_t wc;
int c_mb_len = mbtowc(&wc, c, MB_CUR_MAX), width;
int width;
if (c_mb_len <= 0) {
if (mbtowc(&wc, c, MB_CUR_MAX) < 0) {
mbtowc(NULL, NULL, 0);
wc = (unsigned char)*c;
wc = bad_wchar;
}
width = wcwidth(wc);
if (width == -1)
width++;
if (width == -1) {
wc = bad_wchar;
width = wcwidth(wc);
}
return width;
} else
@@ -267,29 +333,30 @@ int mbwidth(const char *c)
int mb_cur_max(void)
{
return
#ifdef NANO_WIDE
ISSET(USE_UTF8) ? MB_CUR_MAX :
#ifdef ENABLE_UTF8
use_utf8 ? MB_CUR_MAX :
#endif
1;
}
/* Convert the value in chr to a multibyte character with the same
* wide character value as chr, if possible. If the conversion
/* Convert the Unicode value in chr to a multibyte character with the
* same wide character value as chr, if possible. If the conversion
* succeeds, return the (dynamically allocated) multibyte character and
* its length. Otherwise, return an undefined (dynamically allocated)
* multibyte character and a length of zero. */
char *make_mbchar(int chr, int *chr_mb_len)
char *make_mbchar(long chr, int *chr_mb_len)
{
char *chr_mb;
assert(chr_mb_len != NULL);
#ifdef NANO_WIDE
if (ISSET(USE_UTF8)) {
#ifdef ENABLE_UTF8
if (use_utf8) {
chr_mb = charalloc(MB_CUR_MAX);
*chr_mb_len = wctomb(chr_mb, chr);
*chr_mb_len = wctomb(chr_mb, (wchar_t)chr);
if (*chr_mb_len <= 0) {
/* Reject invalid Unicode characters. */
if (*chr_mb_len < 0 || !is_valid_unicode((wchar_t)chr)) {
wctomb(NULL, 0);
*chr_mb_len = 0;
}
@@ -297,7 +364,7 @@ char *make_mbchar(int chr, int *chr_mb_len)
#endif
*chr_mb_len = 1;
chr_mb = mallocstrncpy(NULL, (char *)&chr, 1);
#ifdef NANO_WIDE
#ifdef ENABLE_UTF8
}
#endif
@@ -306,33 +373,26 @@ char *make_mbchar(int chr, int *chr_mb_len)
/* Parse a multibyte character from buf. Return the number of bytes
* used. If chr isn't NULL, store the multibyte character in it. If
* bad_chr isn't NULL, set it to TRUE if we have a bad multibyte
* character. If col isn't NULL, store the new display width in it. If
* *str is '\t', we expect col to have the current display width. */
int parse_mbchar(const char *buf, char *chr, bool *bad_chr, size_t
*col)
* col isn't NULL, store the new display width in it. If *buf is '\t',
* we expect col to have the current display width. */
int parse_mbchar(const char *buf, char *chr, size_t *col)
{
int buf_mb_len;
assert(buf != NULL);
if (bad_chr != NULL)
*bad_chr = FALSE;
#ifdef NANO_WIDE
if (ISSET(USE_UTF8)) {
#ifdef ENABLE_UTF8
if (use_utf8) {
/* Get the number of bytes in the multibyte character. */
buf_mb_len = mblen(buf, MB_CUR_MAX);
/* If buf contains a null byte or an invalid multibyte
* character, set bad_chr to TRUE (if it contains the latter)
* and interpret buf's first byte. */
if (buf_mb_len <= 0) {
/* If buf contains an invalid multibyte character, only
* interpret buf's first byte. */
if (buf_mb_len < 0) {
mblen(NULL, 0);
if (buf_mb_len < 0 && bad_chr != NULL)
*bad_chr = TRUE;
buf_mb_len = 1;
}
} else if (buf_mb_len == 0)
buf_mb_len++;
/* Save the multibyte character in chr. */
if (chr != NULL) {
@@ -393,7 +453,7 @@ int parse_mbchar(const char *buf, char *chr, bool *bad_chr, size_t
else
(*col)++;
}
#ifdef NANO_WIDE
#ifdef ENABLE_UTF8
}
#endif
@@ -411,10 +471,9 @@ size_t move_mbleft(const char *buf, size_t pos)
/* There is no library function to move backward one multibyte
* character. Here is the naive, O(pos) way to do it. */
while (TRUE) {
int buf_mb_len = parse_mbchar(buf + pos - pos_prev, NULL, NULL,
NULL);
int buf_mb_len = parse_mbchar(buf + pos - pos_prev, NULL, NULL);
if (pos_prev <= (size_t)buf_mb_len)
if (pos_prev <= buf_mb_len)
break;
pos_prev -= buf_mb_len;
@@ -427,7 +486,7 @@ size_t move_mbleft(const char *buf, size_t pos)
* after the one at pos. */
size_t move_mbright(const char *buf, size_t pos)
{
return pos + parse_mbchar(buf + pos, NULL, NULL, NULL);
return pos + parse_mbchar(buf + pos, NULL, NULL);
}
#ifndef HAVE_STRCASECMP
@@ -466,8 +525,8 @@ int nstrncasecmp(const char *s1, const char *s2, size_t n)
* strings. */
int mbstrncasecmp(const char *s1, const char *s2, size_t n)
{
#ifdef NANO_WIDE
if (ISSET(USE_UTF8)) {
#ifdef ENABLE_UTF8
if (use_utf8) {
char *s1_mb = charalloc(MB_CUR_MAX);
char *s2_mb = charalloc(MB_CUR_MAX);
wchar_t ws1, ws2;
@@ -478,17 +537,17 @@ int mbstrncasecmp(const char *s1, const char *s2, size_t n)
bool bad_s1_mb = FALSE, bad_s2_mb = FALSE;
int s1_mb_len, s2_mb_len;
s1_mb_len = parse_mbchar(s1, s1_mb, NULL, NULL);
s1_mb_len = parse_mbchar(s1, s1_mb, NULL);
if (mbtowc(&ws1, s1_mb, s1_mb_len) <= 0) {
if (mbtowc(&ws1, s1_mb, s1_mb_len) < 0) {
mbtowc(NULL, NULL, 0);
ws1 = (unsigned char)*s1_mb;
bad_s1_mb = TRUE;
}
s2_mb_len = parse_mbchar(s2, s2_mb, NULL, NULL);
s2_mb_len = parse_mbchar(s2, s2_mb, NULL);
if (mbtowc(&ws2, s2_mb, s2_mb_len) <= 0) {
if (mbtowc(&ws2, s2_mb, s2_mb_len) < 0) {
mbtowc(NULL, NULL, 0);
ws2 = (unsigned char)*s2_mb;
bad_s2_mb = TRUE;
@@ -513,8 +572,31 @@ int mbstrncasecmp(const char *s1, const char *s2, size_t n)
}
#ifndef HAVE_STRCASESTR
/* This function is equivalent to strcasestr(). It was adapted from
* mutt's mutt_stristr() function. */
/* This function, nstrcasestr() (originally mutt_stristr()), was adapted
* from mutt 1.2.4i (lib.c). Here is the notice from that file, with
* the Free Software Foundation's address updated:
*
* Copyright (C) 1996-2000 Michael R. Elkins <me@cs.hmc.edu>
* Copyright (C) 1999-2000 Thomas Roessler <roessler@guug.de>
*
* 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 of the License, 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., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301, USA. */
/* This function is equivalent to strcasestr(). */
const char *nstrcasestr(const char *haystack, const char *needle)
{
assert(haystack != NULL && needle != NULL);
@@ -536,8 +618,8 @@ const char *nstrcasestr(const char *haystack, const char *needle)
/* This function is equivalent to strcasestr() for multibyte strings. */
const char *mbstrcasestr(const char *haystack, const char *needle)
{
#ifdef NANO_WIDE
if (ISSET(USE_UTF8)) {
#ifdef ENABLE_UTF8
if (use_utf8) {
char *r_mb = charalloc(MB_CUR_MAX);
char *q_mb = charalloc(MB_CUR_MAX);
wchar_t wr, wq;
@@ -552,17 +634,17 @@ const char *mbstrcasestr(const char *haystack, const char *needle)
while (*q != '\0') {
bool bad_r_mb = FALSE, bad_q_mb = FALSE;
r_mb_len = parse_mbchar(r, r_mb, NULL, NULL);
r_mb_len = parse_mbchar(r, r_mb, NULL);
if (mbtowc(&wr, r_mb, r_mb_len) <= 0) {
if (mbtowc(&wr, r_mb, r_mb_len) < 0) {
mbtowc(NULL, NULL, 0);
wr = (unsigned char)*r;
bad_r_mb = TRUE;
}
q_mb_len = parse_mbchar(q, q_mb, NULL, NULL);
q_mb_len = parse_mbchar(q, q_mb, NULL);
if (mbtowc(&wq, q_mb, q_mb_len) <= 0) {
if (mbtowc(&wq, q_mb, q_mb_len) < 0) {
mbtowc(NULL, NULL, 0);
wq = (unsigned char)*q;
bad_q_mb = TRUE;
@@ -593,7 +675,7 @@ const char *mbstrcasestr(const char *haystack, const char *needle)
return strcasestr(haystack, needle);
}
#if !defined(NANO_SMALL) || !defined(DISABLE_TABCOMP)
#if !defined(NANO_TINY) || !defined(DISABLE_TABCOMP)
/* This function is equivalent to strstr(), except in that it scans the
* string in reverse, starting at rev_start. */
const char *revstrstr(const char *haystack, const char *needle, const
@@ -613,9 +695,9 @@ const char *revstrstr(const char *haystack, const char *needle, const
return NULL;
}
#endif /* !NANO_SMALL || !DISABLE_TABCOMP */
#endif /* !NANO_TINY || !DISABLE_TABCOMP */
#ifndef NANO_SMALL
#ifndef NANO_TINY
/* This function is equivalent to strcasestr(), except in that it scans
* the string in reverse, starting at rev_start. */
const char *revstrcasestr(const char *haystack, const char *needle,
@@ -642,8 +724,8 @@ const char *revstrcasestr(const char *haystack, const char *needle,
const char *mbrevstrcasestr(const char *haystack, const char *needle,
const char *rev_start)
{
#ifdef NANO_WIDE
if (ISSET(USE_UTF8)) {
#ifdef ENABLE_UTF8
if (use_utf8) {
char *r_mb = charalloc(MB_CUR_MAX);
char *q_mb = charalloc(MB_CUR_MAX);
wchar_t wr, wq;
@@ -658,17 +740,17 @@ const char *mbrevstrcasestr(const char *haystack, const char *needle,
while (*q != '\0') {
bool bad_r_mb = FALSE, bad_q_mb = FALSE;
r_mb_len = parse_mbchar(r, r_mb, NULL, NULL);
r_mb_len = parse_mbchar(r, r_mb, NULL);
if (mbtowc(&wr, r_mb, r_mb_len) <= 0) {
if (mbtowc(&wr, r_mb, r_mb_len) < 0) {
mbtowc(NULL, NULL, 0);
wr = (unsigned char)*r;
bad_r_mb = TRUE;
}
q_mb_len = parse_mbchar(q, q_mb, NULL, NULL);
q_mb_len = parse_mbchar(q, q_mb, NULL);
if (mbtowc(&wq, q_mb, q_mb_len) <= 0) {
if (mbtowc(&wq, q_mb, q_mb_len) < 0) {
mbtowc(NULL, NULL, 0);
wq = (unsigned char)*q;
bad_q_mb = TRUE;
@@ -702,7 +784,7 @@ const char *mbrevstrcasestr(const char *haystack, const char *needle,
#endif
return revstrcasestr(haystack, needle, rev_start);
}
#endif /* !NANO_SMALL */
#endif /* !NANO_TINY */
/* This function is equivalent to strlen() for multibyte strings. */
size_t mbstrlen(const char *s)
@@ -730,13 +812,13 @@ size_t mbstrnlen(const char *s, size_t maxlen)
{
assert(s != NULL);
#ifdef NANO_WIDE
if (ISSET(USE_UTF8)) {
#ifdef ENABLE_UTF8
if (use_utf8) {
size_t n = 0;
int s_mb_len;
while (*s != '\0') {
s_mb_len = parse_mbchar(s, NULL, NULL, NULL);
s_mb_len = parse_mbchar(s, NULL, NULL);
if (maxlen == 0)
break;
@@ -752,8 +834,126 @@ size_t mbstrnlen(const char *s, size_t maxlen)
return strnlen(s, maxlen);
}
#ifndef DISABLE_JUSTIFY
#ifdef ENABLE_NANORC
#if !defined(NANO_TINY) || !defined(DISABLE_JUSTIFY)
/* This function is equivalent to strchr() for multibyte strings. */
char *mbstrchr(const char *s, const char *c)
{
assert(s != NULL && c != NULL);
#ifdef ENABLE_UTF8
if (use_utf8) {
bool bad_s_mb = FALSE, bad_c_mb = FALSE;
char *s_mb = charalloc(MB_CUR_MAX);
const char *q = s;
wchar_t ws, wc;
int c_mb_len = mbtowc(&wc, c, MB_CUR_MAX);
if (c_mb_len < 0) {
mbtowc(NULL, NULL, 0);
wc = (unsigned char)*c;
bad_c_mb = TRUE;
}
while (*s != '\0') {
int s_mb_len = parse_mbchar(s, s_mb, NULL);
if (mbtowc(&ws, s_mb, s_mb_len) < 0) {
mbtowc(NULL, NULL, 0);
ws = (unsigned char)*s;
bad_s_mb = TRUE;
}
if (bad_s_mb == bad_c_mb && ws == wc)
break;
s += s_mb_len;
q += s_mb_len;
}
free(s_mb);
if (*s == '\0')
q = NULL;
return (char *)q;
} else
#endif
return strchr(s, *c);
}
#endif /* !NANO_TINY || !DISABLE_JUSTIFY */
#ifndef NANO_TINY
/* This function is equivalent to strpbrk() for multibyte strings. */
char *mbstrpbrk(const char *s, const char *accept)
{
assert(s != NULL && accept != NULL);
#ifdef ENABLE_UTF8
if (use_utf8) {
while (*s != '\0') {
if (mbstrchr(accept, s) != NULL)
return (char *)s;
s += move_mbright(s, 0);
}
return NULL;
} else
#endif
return strpbrk(s, accept);
}
/* This function is equivalent to strpbrk(), except in that it scans the
* string in reverse, starting at rev_start. */
char *revstrpbrk(const char *s, const char *accept, const char
*rev_start)
{
assert(s != NULL && accept != NULL && rev_start != NULL);
for (; rev_start >= s; rev_start--) {
const char *q = (*rev_start == '\0') ? NULL : strchr(accept,
*rev_start);
if (q != NULL)
return (char *)rev_start;
}
return NULL;
}
/* This function is equivalent to strpbrk() for multibyte strings,
* except in that it scans the string in reverse, starting at
* rev_start. */
char *mbrevstrpbrk(const char *s, const char *accept, const char
*rev_start)
{
assert(s != NULL && accept != NULL && rev_start != NULL);
#ifdef ENABLE_UTF8
if (use_utf8) {
bool begin_line = FALSE;
while (!begin_line) {
const char *q = (*rev_start == '\0') ? NULL :
mbstrchr(accept, rev_start);
if (q != NULL)
return (char *)rev_start;
if (rev_start == s)
begin_line = TRUE;
else
rev_start = s + move_mbleft(s, rev_start - s);
}
return NULL;
} else
#endif
return revstrpbrk(s, accept, rev_start);
}
#endif /* !NANO_TINY */
#if defined(ENABLE_NANORC) && (!defined(NANO_TINY) || !defined(DISABLE_JUSTIFY))
/* Return TRUE if the string s contains one or more blank characters,
* and FALSE otherwise. */
bool has_blank_chars(const char *s)
@@ -774,15 +974,15 @@ bool has_blank_mbchars(const char *s)
{
assert(s != NULL);
#ifdef NANO_WIDE
if (ISSET(USE_UTF8)) {
#ifdef ENABLE_UTF8
if (use_utf8) {
char *chr_mb = charalloc(MB_CUR_MAX);
bool retval = FALSE;
while (*s != '\0') {
int chr_mb_len;
chr_mb_len = parse_mbchar(s, chr_mb, NULL, NULL);
chr_mb_len = parse_mbchar(s, chr_mb, NULL);
if (is_blank_mbchar(chr_mb)) {
retval = TRUE;
@@ -799,51 +999,17 @@ bool has_blank_mbchars(const char *s)
#endif
return has_blank_chars(s);
}
#endif /* ENABLE_NANORC */
#endif /* ENABLE_NANORC && (!NANO_TINY || !DISABLE_JUSTIFY) */
/* This function is equivalent to strchr() for multibyte strings. */
char *mbstrchr(const char *s, char *c)
#ifdef ENABLE_UTF8
/* Return TRUE if wc is valid Unicode, and FALSE otherwise. */
bool is_valid_unicode(wchar_t wc)
{
assert(s != NULL && c != NULL);
#ifdef NANO_WIDE
if (ISSET(USE_UTF8)) {
char *s_mb = charalloc(MB_CUR_MAX);
const char *q = s;
wchar_t ws, wc;
int c_mb_len = mbtowc(&wc, c, MB_CUR_MAX);
if (c_mb_len <= 0) {
mbtowc(NULL, NULL, 0);
wc = (unsigned char)*c;
}
while (*s != '\0') {
int s_mb_len = parse_mbchar(s, s_mb, NULL, NULL);
if (mbtowc(&ws, s_mb, s_mb_len) <= 0) {
mbtowc(NULL, NULL, 0);
ws = (unsigned char)*s;
}
if (ws == wc)
break;
s += s_mb_len;
q += s_mb_len;
}
free(s_mb);
if (ws != wc)
q = NULL;
return (char *)q;
} else
#endif
return strchr(s, *c);
return ((0 <= wc && wc <= 0x10FFFF) && (wc <= 0xD7FF || 0xE000 <=
wc) && (wc <= 0xFDCF || 0xFDF0 <= wc) && ((wc & 0xFFFF) <=
0xFFFD));
}
#endif /* !DISABLE_JUSTIFY */
#endif
#ifdef ENABLE_NANORC
/* Check if the string s is a valid multibyte string. Return TRUE if it
@@ -853,11 +1019,10 @@ bool is_valid_mbstring(const char *s)
assert(s != NULL);
return
#ifdef NANO_WIDE
ISSET(USE_UTF8) ?
#ifdef ENABLE_UTF8
use_utf8 ?
(mbstowcs(NULL, s, 0) != (size_t)-1) :
#endif
TRUE;
}
#endif /* ENABLE_NANORC */

View File

@@ -2,7 +2,8 @@
/**************************************************************************
* color.c *
* *
* Copyright (C) 1999-2005 Chris Allegretta *
* Copyright (C) 2001-2004 Chris Allegretta *
* Copyright (C) 2005-2006 David Lawrence Ramsey *
* 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) *
@@ -20,21 +21,15 @@
* *
**************************************************************************/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include "proto.h"
#include <stdio.h>
#include <string.h>
#ifdef ENABLE_COLOR
/* For each syntax list entry, we go through the list of colors and
* assign color pairs. */
/* For each syntax list entry, go through the list of colors and assign
* color pairs. */
void set_colorpairs(void)
{
const syntaxtype *this_syntax = syntaxes;
@@ -63,70 +58,147 @@ void set_colorpairs(void)
}
}
void do_colorinit(void)
/* Initialize the color information. */
void color_init(void)
{
assert(openfile != NULL);
if (has_colors()) {
const colortype *tmpcolor = NULL;
const colortype *tmpcolor;
#ifdef HAVE_USE_DEFAULT_COLORS
bool defok;
#endif
start_color();
/* Add in colors, if available. */
#ifdef HAVE_USE_DEFAULT_COLORS
/* Use the default colors, if available. */
defok = (use_default_colors() != ERR);
#endif
for (tmpcolor = colorstrings; tmpcolor != NULL;
for (tmpcolor = openfile->colorstrings; tmpcolor != NULL;
tmpcolor = tmpcolor->next) {
short background = tmpcolor->bg;
short foreground = tmpcolor->fg, background = tmpcolor->bg;
if (foreground == -1) {
#ifdef HAVE_USE_DEFAULT_COLORS
if (!defok)
#endif
foreground = COLOR_WHITE;
}
if (background == -1)
if (background == -1) {
#ifdef HAVE_USE_DEFAULT_COLORS
if (!defok)
#endif
background = COLOR_BLACK;
}
init_pair(tmpcolor->pairnum, tmpcolor->fg, background);
init_pair(tmpcolor->pairnum, foreground, background);
#ifdef DEBUG
fprintf(stderr, "init_pair(): fg = %d, bg = %d\n",
tmpcolor->fg, tmpcolor->bg);
fprintf(stderr, "init_pair(): fg = %hd, bg = %hd\n", tmpcolor->fg, tmpcolor->bg);
#endif
}
}
}
/* Update the color information based on the current filename. */
void update_color(void)
void color_update(void)
{
const syntaxtype *tmpsyntax;
colortype *tmpcolor, *defcolor = NULL;
colorstrings = NULL;
for (tmpsyntax = syntaxes; tmpsyntax != NULL;
tmpsyntax = tmpsyntax->next) {
const exttype *e;
assert(openfile != NULL);
for (e = tmpsyntax->extensions; e != NULL; e = e->next) {
/* Set colorstrings if we matched the extension regex. */
if (regexec(&e->val, filename, 0, NULL, 0) == 0)
colorstrings = tmpsyntax->color;
openfile->colorstrings = NULL;
if (colorstrings != NULL)
/* If we specified a syntax override string, use it. */
if (syntaxstr != NULL) {
/* If the syntax override is "none", it's the same as not having
* a syntax at all, so get out. */
if (strcmp(syntaxstr, "none") == 0)
return;
for (tmpsyntax = syntaxes; tmpsyntax != NULL;
tmpsyntax = tmpsyntax->next) {
if (strcmp(tmpsyntax->desc, syntaxstr) == 0)
openfile->colorstrings = tmpsyntax->color;
if (openfile->colorstrings != NULL)
break;
}
}
/* If we haven't found a match, use the override string. */
if (colorstrings == NULL && syntaxstr != NULL) {
/* If we didn't specify a syntax override string, or if we did and
* there was no syntax by that name, get the syntax based on the
* file extension. */
if (openfile->colorstrings == NULL) {
for (tmpsyntax = syntaxes; tmpsyntax != NULL;
tmpsyntax = tmpsyntax->next) {
if (mbstrcasecmp(tmpsyntax->desc, syntaxstr) == 0)
colorstrings = tmpsyntax->color;
exttype *e;
/* If this is the default syntax, it has no associated
* extensions. (We've checked for this and for duplicate
* syntax names elsewhere.) Skip over it here, but keep
* track of its color regexes. */
if (strcmp(tmpsyntax->desc, "default") == 0) {
defcolor = tmpsyntax->color;
continue;
}
for (e = tmpsyntax->extensions; e != NULL; e = e->next) {
bool not_compiled = (e->ext == NULL);
/* e->ext_regex has already been checked for validity
* elsewhere. Compile its specified regex if we haven't
* already. */
if (not_compiled) {
e->ext = (regex_t *)nmalloc(sizeof(regex_t));
regcomp(e->ext, e->ext_regex, REG_EXTENDED);
}
/* Set colorstrings if we matched the extension
* regex. */
if (regexec(e->ext, openfile->filename, 0, NULL,
0) == 0)
openfile->colorstrings = tmpsyntax->color;
if (openfile->colorstrings != NULL)
break;
/* Decompile e->ext_regex's specified regex if we aren't
* going to use it. */
if (not_compiled) {
regfree(e->ext);
free(e->ext);
e->ext = NULL;
}
}
}
}
/* If we didn't get a syntax based on the file extension, and we
* have a default syntax, use it. */
if (openfile->colorstrings == NULL && defcolor != NULL)
openfile->colorstrings = defcolor;
for (tmpcolor = openfile->colorstrings; tmpcolor != NULL;
tmpcolor = tmpcolor->next) {
/* tmpcolor->start_regex and tmpcolor->end_regex have already
* been checked for validity elsewhere. Compile their specified
* regexes if we haven't already. */
if (tmpcolor->start == NULL) {
tmpcolor->start = (regex_t *)nmalloc(sizeof(regex_t));
regcomp(tmpcolor->start, tmpcolor->start_regex,
REG_EXTENDED | (tmpcolor->icase ? REG_ICASE : 0));
}
if (tmpcolor->end_regex != NULL && tmpcolor->end == NULL) {
tmpcolor->end = (regex_t *)nmalloc(sizeof(regex_t));
regcomp(tmpcolor->end, tmpcolor->end_regex,
REG_EXTENDED | (tmpcolor->icase ? REG_ICASE : 0));
}
}
do_colorinit();
}
#endif /* ENABLE_COLOR */

226
src/cut.c
View File

@@ -2,7 +2,8 @@
/**************************************************************************
* cut.c *
* *
* Copyright (C) 1999-2005 Chris Allegretta *
* Copyright (C) 1999-2004 Chris Allegretta *
* Copyright (C) 2005-2006 David Lawrence Ramsey *
* 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) *
@@ -20,41 +21,42 @@
* *
**************************************************************************/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "proto.h"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <assert.h>
#include "proto.h"
static bool keep_cutbuffer = FALSE;
/* Should we keep the contents of the cutbuffer? */
static filestruct *cutbottom = NULL;
/* Pointer to end of cutbuffer. */
/* Pointer to the end of the cutbuffer. */
/* Indicate that we should no longer keep the contents of the
* cutbuffer. */
void cutbuffer_reset(void)
{
keep_cutbuffer = FALSE;
}
/* If we're not on the magicline, move all the text of the current line,
* plus the newline at the end, to the cutbuffer, and set the current
* place we want to where the line used to start. */
/* If we aren't on the last line of the file, move all the text of the
* current line, plus the newline at the end, into the cutbuffer. If we
* are, move all of the text of the current line into the cutbuffer. In
* both cases, set the current place we want to the beginning of the
* current line. */
void cut_line(void)
{
if (current->next != NULL) {
move_to_filestruct(&cutbuffer, &cutbottom, current, 0,
current->next, 0);
placewewant = xplustabs();
}
if (openfile->current != openfile->filebot)
move_to_filestruct(&cutbuffer, &cutbottom, openfile->current, 0,
openfile->current->next, 0);
else
move_to_filestruct(&cutbuffer, &cutbottom, openfile->current, 0,
openfile->current, strlen(openfile->current->data));
openfile->placewewant = 0;
}
#ifndef NANO_SMALL
/* Move all currently marked text to the cutbuffer, and set the current
* place we want to where the text used to start. */
#ifndef NANO_TINY
/* Move all currently marked text into the cutbuffer, and set the
* current place we want to where the text used to start. */
void cut_marked(void)
{
filestruct *top, *bot;
@@ -64,45 +66,71 @@ void cut_marked(void)
(const filestruct **)&bot, &bot_x, NULL);
move_to_filestruct(&cutbuffer, &cutbottom, top, top_x, bot, bot_x);
placewewant = xplustabs();
openfile->placewewant = xplustabs();
}
/* If we're not at the end of the current line, move all the text from
* the current cursor position to the end of the current line,
* not counting the newline at the end, to the cutbuffer. If we are,
* and we're not on the magicline, move the newline at the end to the
* cutbuffer, and set the current place we want to where the newline
* used to be. */
/* If we aren't at the end of the current line, move all the text from
* the current cursor position to the end of the current line, not
* counting the newline at the end, into the cutbuffer. If we are, and
* we're not on the last line of the file, move the newline at the end
* into the cutbuffer, and set the current place we want to where the
* newline used to be. */
void cut_to_eol(void)
{
size_t data_len = strlen(current->data);
size_t data_len = strlen(openfile->current->data);
assert(current_x <= data_len);
assert(openfile->current_x <= data_len);
if (current_x < data_len)
if (openfile->current_x < data_len)
/* If we're not at the end of the line, move all the text from
* the current position up to it, not counting the newline at
* the end, to the cutbuffer. */
move_to_filestruct(&cutbuffer, &cutbottom, current, current_x,
current, data_len);
else if (current->next != NULL) {
/* If we're at the end of the line, and it isn't the magicline,
* move all the text from the current position up to the
* beginning of the next line, i.e, the newline at the end, to
* the cutbuffer. */
move_to_filestruct(&cutbuffer, &cutbottom, current, current_x,
current->next, 0);
placewewant = xplustabs();
* the end, into the cutbuffer. */
move_to_filestruct(&cutbuffer, &cutbottom, openfile->current,
openfile->current_x, openfile->current, data_len);
else if (openfile->current != openfile->filebot) {
/* If we're at the end of the line, and it isn't the last line
* of the file, move all the text from the current position up
* to the beginning of the next line, i.e, the newline at the
* end, into the cutbuffer. */
move_to_filestruct(&cutbuffer, &cutbottom, openfile->current,
openfile->current_x, openfile->current->next, 0);
openfile->placewewant = xplustabs();
}
}
#endif /* !NANO_SMALL */
/* Move text from the current filestruct into the cutbuffer. */
void do_cut_text(void)
/* Move all the text from the current cursor position to the end of the
* file into the cutbuffer. */
void cut_to_eof(void)
{
assert(current != NULL && current->data != NULL);
move_to_filestruct(&cutbuffer, &cutbottom, openfile->current,
openfile->current_x, openfile->filebot,
strlen(openfile->filebot->data));
}
#endif /* !NANO_TINY */
check_statusblank();
/* Move text from the current filestruct into the cutbuffer. If
* copy_text is TRUE, copy the text back into the filestruct afterward.
* If cut_till_end is TRUE, move all text from the current cursor
* position to the end of the file into the cutbuffer. */
void do_cut_text(
#ifndef NANO_TINY
bool copy_text, bool cut_till_end
#else
void
#endif
)
{
#ifndef NANO_TINY
filestruct *cb_save = NULL;
/* The current end of the cutbuffer, before we add text to
* it. */
size_t cb_save_len = 0;
/* The length of the string at the current end of the cutbuffer,
* before we add text to it. */
bool old_no_newlines = ISSET(NO_NEWLINES);
#endif
assert(openfile->current != NULL && openfile->current->data != NULL);
/* If keep_cutbuffer is FALSE and the cutbuffer isn't empty, blow
* away the text in the cutbuffer. */
@@ -114,17 +142,36 @@ void do_cut_text(void)
#endif
}
#ifndef NANO_TINY
if (copy_text) {
if (cutbuffer != NULL) {
/* If the cutbuffer isn't empty, save where it currently
* ends. This is where the new text will be added. */
cb_save = cutbottom;
cb_save_len = strlen(cutbottom->data);
}
/* Set NO_NEWLINES to TRUE, so that we don't disturb the last
* line of the file when moving text to the cutbuffer. */
SET(NO_NEWLINES);
}
#endif
/* Set keep_cutbuffer to TRUE, so that the text we're going to move
* into the cutbuffer will be added to the text already in the
* cutbuffer instead of replacing it. */
keep_cutbuffer = TRUE;
#ifndef NANO_SMALL
if (ISSET(MARK_ISSET)) {
/* If the mark is on, move the marked text to the cutbuffer and
#ifndef NANO_TINY
if (cut_till_end) {
/* If cut_till_end is TRUE, move all text up to the end of the
* file into the cutbuffer. */
cut_to_eof();
} else if (openfile->mark_set) {
/* If the mark is on, move the marked text to the cutbuffer, and
* turn the mark off. */
cut_marked();
UNSET(MARK_ISSET);
openfile->mark_set = FALSE;
} else if (ISSET(CUT_TO_END))
/* Otherwise, if the CUT_TO_END flag is set, move all text up to
* the end of the line into the cutbuffer. */
@@ -134,44 +181,68 @@ void do_cut_text(void)
/* Otherwise, move the entire line into the cutbuffer. */
cut_line();
#ifndef NANO_TINY
if (copy_text) {
/* Copy the text in the cutbuffer, starting at its saved end if
* there is one, back into the filestruct. This effectively
* uncuts the text we just cut without marking the file as
* modified. */
if (cutbuffer != NULL) {
if (cb_save != NULL) {
cb_save->data += cb_save_len;
copy_from_filestruct(cb_save, cutbottom);
cb_save->data -= cb_save_len;
} else
copy_from_filestruct(cutbuffer, cutbottom);
}
/* Set NO_NEWLINES back to what it was before, since we're done
* disturbing the text. */
if (!old_no_newlines)
UNSET(NO_NEWLINES);
} else
#endif
/* Leave the text in the cutbuffer, and mark the file as
* modified. */
set_modified();
/* Update the screen. */
edit_refresh();
set_modified();
#ifdef DEBUG
dump_buffer(cutbuffer);
dump_filestruct(cutbuffer);
#endif
}
#ifndef NANO_SMALL
/* Move text from the current filestruct into the cutbuffer. */
void do_cut_text_void(void)
{
do_cut_text(
#ifndef NANO_TINY
FALSE, FALSE
#endif
);
}
#ifndef NANO_TINY
/* Move text from the current filestruct into the cutbuffer, and copy it
* back into the filestruct afterward. */
void do_copy_text(void)
{
do_cut_text(TRUE, FALSE);
}
/* Cut from the current cursor position to the end of the file. */
void do_cut_till_end(void)
{
assert(current != NULL && current->data != NULL);
check_statusblank();
move_to_filestruct(&cutbuffer, &cutbottom, current, current_x,
filebot, 0);
edit_refresh();
set_modified();
#ifdef DEBUG
dump_buffer(cutbuffer);
#endif
do_cut_text(FALSE, TRUE);
}
#endif /* !NANO_SMALL */
#endif /* !NANO_TINY */
/* Copy text from the cutbuffer into the current filestruct. */
void do_uncut_text(void)
{
assert(current != NULL && current->data != NULL);
#ifndef DISABLE_WRAPPING
wrap_reset();
#endif
check_statusblank();
assert(openfile->current != NULL && openfile->current->data != NULL);
/* If the cutbuffer is empty, get out. */
if (cutbuffer == NULL)
@@ -183,12 +254,15 @@ void do_uncut_text(void)
/* Set the current place we want to where the text from the
* cutbuffer ends. */
placewewant = xplustabs();
openfile->placewewant = xplustabs();
edit_refresh();
/* Mark the file as modified. */
set_modified();
/* Update the screen. */
edit_refresh();
#ifdef DEBUG
dump_buffer_reverse();
dump_filestruct_reverse();
#endif
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

608
src/help.c Normal file
View File

@@ -0,0 +1,608 @@
/* $Id$ */
/**************************************************************************
* help.c *
* *
* Copyright (C) 2000-2004 Chris Allegretta *
* Copyright (C) 2005-2006 David Lawrence Ramsey *
* 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., 51 Franklin St, Fifth Floor, Boston, MA *
* 02110-1301, USA. *
* *
**************************************************************************/
#include "proto.h"
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#ifndef DISABLE_HELP
static char *help_text = NULL;
/* The text displayed in the help window. */
/* Our dynamic, shortcut list-compliant help function. refresh_func is
* the function we will call to refresh the edit window.*/
void do_help(void (*refresh_func)(void))
{
size_t line = 0;
/* The line number in help_text of the first displayed help
* line. This variable is zero-based. */
size_t last_line = 0;
/* The line number in help_text of the last help line. This
* variable is zero-based. */
int kbinput = ERR;
bool meta_key, func_key;
bool old_no_help = ISSET(NO_HELP);
#ifndef DISABLE_MOUSE
const shortcut *oldshortcut = currshortcut;
/* We will set currshortcut to allow clicking on the help
* screen's shortcut list. */
#endif
const char *ptr;
curs_set(0);
blank_edit();
wattroff(bottomwin, reverse_attr);
blank_statusbar();
/* Set help_text as the string to display. */
help_init();
assert(help_text != NULL);
#ifndef DISABLE_MOUSE
/* Set currshortcut to allow clicking on the help screen's shortcut
* list, after help_init() is called. */
currshortcut = help_list;
#endif
if (ISSET(NO_HELP)) {
/* Make sure that the help screen's shortcut list will actually
* be displayed. */
UNSET(NO_HELP);
window_init();
}
bottombars(help_list);
/* Get the last line of the help text. */
ptr = help_text;
for (; *ptr != '\0'; last_line++) {
ptr += help_line_len(ptr);
if (*ptr == '\n')
ptr++;
}
if (last_line > 0)
last_line--;
do {
size_t i;
/* Generic loop variable. */
size_t old_line = line;
/* We redisplay the help only if it moved. */
ptr = help_text;
switch (kbinput) {
#ifndef DISABLE_MOUSE
case KEY_MOUSE:
{
int mouse_x, mouse_y;
get_mouseinput(&mouse_x, &mouse_y, TRUE);
}
break;
#endif
case NANO_REFRESH_KEY:
total_redraw();
break;
case NANO_PREVPAGE_KEY:
if (line > editwinrows - 2)
line -= editwinrows - 2;
else
line = 0;
break;
case NANO_NEXTPAGE_KEY:
if (line + (editwinrows - 2) <= last_line)
line += editwinrows - 2;
break;
case NANO_PREVLINE_KEY:
if (line > 0)
line--;
break;
case NANO_NEXTLINE_KEY:
if (line + editwinrows <= last_line)
line++;
break;
case NANO_FIRSTLINE_ALTKEY:
if (meta_key)
line = 0;
break;
case NANO_LASTLINE_ALTKEY:
if (meta_key) {
if (line + (editwinrows - 1) < last_line)
line = last_line - (editwinrows - 1);
}
break;
}
if ((kbinput != ERR && line == old_line) || kbinput ==
NANO_REFRESH_KEY)
goto skip_redisplay;
blank_edit();
/* Calculate where in the text we should be, based on the
* page. */
for (i = 0; i < line; i++) {
ptr += help_line_len(ptr);
if (*ptr == '\n')
ptr++;
}
for (i = 0; i < editwinrows && *ptr != '\0'; i++) {
size_t j = help_line_len(ptr);
mvwaddnstr(edit, i, 0, ptr, j);
ptr += j;
if (*ptr == '\n')
ptr++;
}
skip_redisplay:
kbinput = get_kbinput(edit, &meta_key, &func_key);
parse_help_input(&kbinput, &meta_key, &func_key);
} while (kbinput != NANO_EXIT_KEY);
#ifndef DISABLE_MOUSE
currshortcut = oldshortcut;
#endif
if (old_no_help) {
blank_bottombars();
wnoutrefresh(bottomwin);
SET(NO_HELP);
window_init();
} else
bottombars(currshortcut);
curs_set(1);
refresh_func();
/* The help_init() at the beginning allocated help_text. Since
* help_text has now been written to the screen, we don't need it
* anymore. */
free(help_text);
help_text = NULL;
}
/* Start the help browser for the edit window. */
void do_help_void(void)
{
do_help(&edit_refresh);
}
#ifndef DISABLE_BROWSER
/* Start the help browser for the file browser. */
void do_browser_help(void)
{
do_help(&browser_refresh);
}
#endif
/* This function allocates help_text, and stores the help string in it.
* help_text should be NULL initially. */
void help_init(void)
{
size_t allocsize = 0; /* Space needed for help_text. */
const char *htx[3]; /* Untranslated help message. We break
* it up into three chunks in case the
* full string is too long for the
* compiler to handle. */
char *ptr;
const shortcut *s;
#ifndef NANO_TINY
const toggle *t;
#ifdef ENABLE_NANORC
bool old_whitespace = ISSET(WHITESPACE_DISPLAY);
UNSET(WHITESPACE_DISPLAY);
#endif
#endif
/* First, set up the initial help text for the current function. */
if (currshortcut == whereis_list || currshortcut == replace_list ||
currshortcut == replace_list_2) {
htx[0] = N_("Search Command Help Text\n\n "
"Enter the words or characters you would like to "
"search for, and then press Enter. If there is a "
"match for the text you entered, the screen will be "
"updated to the location of the nearest match for the "
"search string.\n\n The previous search string will be "
"shown in brackets after the search prompt. Hitting "
"Enter without entering any text will perform the "
"previous search. ");
htx[1] = N_("If you have selected text with the mark and then "
"search to replace, only matches in the selected text "
"will be replaced.\n\n The following function keys are "
"available in Search mode:\n\n");
htx[2] = NULL;
} else if (currshortcut == gotoline_list) {
htx[0] = N_("Go To Line Help Text\n\n "
"Enter the line number that you wish to go to and hit "
"Enter. If there are fewer lines of text than the "
"number you entered, you will be brought to the last "
"line of the file.\n\n The following function keys are "
"available in Go To Line mode:\n\n");
htx[1] = NULL;
htx[2] = NULL;
} else if (currshortcut == insertfile_list) {
htx[0] = N_("Insert File Help Text\n\n "
"Type in the name of a file to be inserted into the "
"current file buffer at the current cursor "
"location.\n\n If you have compiled nano with multiple "
"file buffer support, and enable multiple file buffers "
"with the -F or --multibuffer command line flags, the "
"Meta-F toggle, or a nanorc file, inserting a file "
"will cause it to be loaded into a separate buffer "
"(use Meta-< and > to switch between file buffers). ");
htx[1] = N_("If you need another blank buffer, do not enter "
"any filename, or type in a nonexistent filename at "
"the prompt and press Enter.\n\n The following "
"function keys are available in Insert File mode:\n\n");
htx[2] = NULL;
} else if (currshortcut == writefile_list) {
htx[0] = N_("Write File Help Text\n\n "
"Type the name that you wish to save the current file "
"as and press Enter to save the file.\n\n If you have "
"selected text with the mark, you will be prompted to "
"save only the selected portion to a separate file. To "
"reduce the chance of overwriting the current file with "
"just a portion of it, the current filename is not the "
"default in this mode.\n\n The following function keys "
"are available in Write File mode:\n\n");
htx[1] = NULL;
htx[2] = NULL;
}
#ifndef DISABLE_BROWSER
else if (currshortcut == browser_list) {
htx[0] = N_("File Browser Help Text\n\n "
"The file browser is used to visually browse the "
"directory structure to select a file for reading "
"or writing. You may use the arrow keys or Page Up/"
"Down to browse through the files, and S or Enter to "
"choose the selected file or enter the selected "
"directory. To move up one level, select the "
"directory called \"..\" at the top of the file "
"list.\n\n The following function keys are available "
"in the file browser:\n\n");
htx[1] = NULL;
htx[2] = NULL;
} else if (currshortcut == whereis_file_list) {
htx[0] = N_("Browser Search Command Help Text\n\n "
"Enter the words or characters you would like to "
"search for, and then press Enter. If there is a "
"match for the text you entered, the screen will be "
"updated to the location of the nearest match for the "
"search string.\n\n The previous search string will be "
"shown in brackets after the search prompt. Hitting "
"Enter without entering any text will perform the "
"previous search.\n\n");
htx[1] = N_(" The following function keys are available in "
"Browser Search mode:\n\n");
htx[2] = NULL;
} else if (currshortcut == gotodir_list) {
htx[0] = N_("Browser Go To Directory Help Text\n\n "
"Enter the name of the directory you would like to "
"browse to.\n\n If tab completion has not been "
"disabled, you can use the Tab key to (attempt to) "
"automatically complete the directory name.\n\n The "
"following function keys are available in Browser Go "
"To Directory mode:\n\n");
htx[1] = NULL;
htx[2] = NULL;
}
#endif /* !DISABLE_BROWSER */
#ifndef DISABLE_SPELLER
else if (currshortcut == spell_list) {
htx[0] = N_("Spell Check Help Text\n\n "
"The spell checker checks the spelling of all text in "
"the current file. When an unknown word is "
"encountered, it is highlighted and a replacement can "
"be edited. It will then prompt to replace every "
"instance of the given misspelled word in the current "
"file, or, if you have selected text with the mark, in "
"the selected text.\n\n The following function keys "
"are available in Spell Check mode:\n\n");
htx[1] = NULL;
htx[2] = NULL;
}
#endif /* !DISABLE_SPELLER */
#ifndef NANO_TINY
else if (currshortcut == extcmd_list) {
htx[0] = N_("Execute Command Help Text\n\n "
"This mode allows you to insert the output of a "
"command run by the shell into the current buffer (or "
"a new buffer in multiple file buffer mode). If you "
"need another blank buffer, do not enter any "
"command.\n\n The following function keys are "
"available in Execute Command mode:\n\n");
htx[1] = NULL;
htx[2] = NULL;
}
#endif /* !NANO_TINY */
else {
/* Default to the main help list. */
htx[0] = N_(" nano help text\n\n "
"The nano editor is designed to emulate the "
"functionality and ease-of-use of the UW Pico text "
"editor. There are four main sections of the editor. "
"The top line shows the program version, the current "
"filename being edited, and whether or not the file "
"has been modified. Next is the main editor window "
"showing the file being edited. The status line is "
"the third line from the bottom and shows important "
"messages. The bottom two lines show the most "
"commonly used shortcuts in the editor.\n\n");
htx[1] = N_(" The notation for shortcuts is as follows: "
"Control-key sequences are notated with a caret (^) "
"symbol and can be entered either by using the Control "
"(Ctrl) key or pressing the Escape (Esc) key twice. "
"Escape-key sequences are notated with the Meta (M) "
"symbol and can be entered using either the Esc, Alt, "
"or Meta key depending on your keyboard setup. ");
htx[2] = N_("Also, pressing Esc twice and then typing a "
"three-digit decimal number from 000 to 255 will enter "
"the character with the corresponding value. The "
"following keystrokes are available in the main editor "
"window. Alternative keys are shown in "
"parentheses:\n\n");
}
htx[0] = _(htx[0]);
if (htx[1] != NULL)
htx[1] = _(htx[1]);
if (htx[2] != NULL)
htx[2] = _(htx[2]);
allocsize += strlen(htx[0]);
if (htx[1] != NULL)
allocsize += strlen(htx[1]);
if (htx[2] != NULL)
allocsize += strlen(htx[2]);
/* Count the shortcut help text. Each entry has up to three keys,
* which fill 24 columns, plus translated text, plus one or two
* \n's. */
for (s = currshortcut; s != NULL; s = s->next)
allocsize += (24 * mb_cur_max()) + strlen(s->help) + 2;
#ifndef NANO_TINY
/* If we're on the main list, we also count the toggle help text.
* Each entry has "M-%c\t\t\t", which fills 24 columns, plus a
* space, plus translated text, plus one or two '\n's. */
if (currshortcut == main_list) {
size_t endis_len = strlen(_("enable/disable"));
for (t = toggles; t != NULL; t = t->next)
allocsize += strlen(t->desc) + endis_len + 9;
}
#endif
/* help_text has been freed and set to NULL unless the user resized
* while in the help screen. */
if (help_text != NULL)
free(help_text);
/* Allocate space for the help text. */
help_text = charalloc(allocsize + 1);
/* Now add the text we want. */
strcpy(help_text, htx[0]);
if (htx[1] != NULL)
strcat(help_text, htx[1]);
if (htx[2] != NULL)
strcat(help_text, htx[2]);
ptr = help_text + strlen(help_text);
/* Now add our shortcut info. Assume that each shortcut has, at the
* very least, an equivalent control key, an equivalent primary meta
* key sequence, or both. Also assume that the meta key values are
* not control characters. We can display a maximum of three
* shortcut entries. */
for (s = currshortcut; s != NULL; s = s->next) {
int entries = 0;
/* Control key. */
if (s->ctrlval != NANO_NO_KEY) {
entries++;
/* Yucky sentinel values that we can't handle a better
* way. */
if (s->ctrlval == NANO_CONTROL_SPACE) {
char *space_ptr = display_string(_("Space"), 0, 14,
FALSE);
if (s->funcval == NANO_NO_KEY && (s->metaval ==
NANO_NO_KEY || s->miscval == NANO_NO_KEY)) {
/* If we're here, we have at least two entries worth
* of blank space. If this entry takes up more than
* one entry's worth of space, use two to display
* it. */
if (mbstrlen(space_ptr) > 6)
entries++;
} else
/* Otherwise, truncate it so that it takes up only
* one entry's worth of space. */
space_ptr[6] = '\0';
ptr += sprintf(ptr, "^%s", space_ptr);
free(space_ptr);
} else if (s->ctrlval == NANO_CONTROL_8)
ptr += sprintf(ptr, "^?");
/* Normal values. */
else
ptr += sprintf(ptr, "^%c", s->ctrlval + 64);
*(ptr++) = '\t';
}
/* Function key. */
if (s->funcval != NANO_NO_KEY) {
entries++;
/* If this is the first entry, put it in the middle. */
if (entries == 1) {
entries++;
*(ptr++) = '\t';
}
ptr += sprintf(ptr, "(F%d)", s->funcval - KEY_F0);
*(ptr++) = '\t';
}
/* Primary meta key sequence. If it's the first entry, don't
* put parentheses around it. */
if (s->metaval != NANO_NO_KEY) {
entries++;
/* If this is the last entry, put it at the end. */
if (entries == 2 && s->miscval == NANO_NO_KEY) {
entries++;
*(ptr++) = '\t';
}
/* Yucky sentinel values that we can't handle a better
* way. */
if (s->metaval == NANO_ALT_SPACE && entries == 1) {
char *space_ptr = display_string(_("Space"), 0, 13,
FALSE);
/* If we're here, we have at least two entries worth of
* blank space. If this entry takes up more than one
* entry's worth of space, use two to display it. */
if (mbstrlen(space_ptr) > 5)
entries++;
ptr += sprintf(ptr, "M-%s", space_ptr);
free(space_ptr);
} else
/* Normal values. */
ptr += sprintf(ptr, (entries == 1) ? "M-%c" : "(M-%c)",
toupper(s->metaval));
*(ptr++) = '\t';
}
/* Miscellaneous meta key sequence. */
if (entries < 3 && s->miscval != NANO_NO_KEY) {
entries++;
/* If this is the last entry, put it at the end. */
if (entries == 2) {
entries++;
*(ptr++) = '\t';
}
ptr += sprintf(ptr, "(M-%c)", toupper(s->miscval));
*(ptr++) = '\t';
}
/* If this entry isn't blank, make sure all the help text starts
* at the same place. */
if (s->ctrlval != NANO_NO_KEY || s->funcval != NANO_NO_KEY ||
s->metaval != NANO_NO_KEY || s->miscval !=
NANO_NO_KEY) {
while (entries < 3) {
entries++;
*(ptr++) = '\t';
}
}
/* The shortcut's help text. */
ptr += sprintf(ptr, "%s\n", s->help);
if (s->blank_after)
ptr += sprintf(ptr, "\n");
}
#ifndef NANO_TINY
/* And the toggles... */
if (currshortcut == main_list) {
for (t = toggles; t != NULL; t = t->next) {
ptr += sprintf(ptr, "M-%c\t\t\t%s %s\n",
toupper(t->val), t->desc, _("enable/disable"));
if (t->blank_after)
ptr += sprintf(ptr, "\n");
}
}
#ifdef ENABLE_NANORC
if (old_whitespace)
SET(WHITESPACE_DISPLAY);
#endif
#endif
/* If all went well, we didn't overwrite the allocated space for
* help_text. */
assert(strlen(help_text) <= allocsize + 1);
}
/* Determine the shortcut key corresponding to the values of kbinput
* (the key itself), meta_key (whether the key is a meta sequence), and
* func_key (whether the key is a function key), if any. In the
* process, convert certain non-shortcut keys into their corresponding
* shortcut keys. */
void parse_help_input(int *kbinput, bool *meta_key, bool *func_key)
{
get_shortcut(help_list, kbinput, meta_key, func_key);
if (*meta_key == FALSE) {
switch (*kbinput) {
/* For consistency with the file browser. */
case ' ':
*kbinput = NANO_NEXTPAGE_KEY;
break;
case '-':
*kbinput = NANO_PREVPAGE_KEY;
break;
/* Cancel is equivalent to Exit here. */
case NANO_CANCEL_KEY:
*kbinput = NANO_EXIT_KEY;
break;
}
}
}
/* Calculate the next line of help_text, starting at ptr. */
size_t help_line_len(const char *ptr)
{
int help_cols = (COLS > 24) ? COLS - 1 : 24;
/* Try to break the line at (COLS - 1) columns if we have more than
* 24 columns, and at 24 columns otherwise. */
ssize_t wrap_loc = break_line(ptr, help_cols, TRUE);
size_t retval = (wrap_loc < 0) ? 0 : wrap_loc;
size_t retval_save = retval;
/* Get the length of the entire line up to a null or a newline. */
while (*(ptr + retval) != '\0' && *(ptr + retval) != '\n')
retval += move_mbright(ptr + retval, 0);
/* If the entire line doesn't go more than 1 column beyond where we
* tried to break it, we should display it as-is. Otherwise, we
* should display it only up to the break. */
if (strnlenpt(ptr, retval) > help_cols + 1)
retval = retval_save;
return retval;
}
#endif /* !DISABLE_HELP */

View File

@@ -2,7 +2,8 @@
/**************************************************************************
* move.c *
* *
* Copyright (C) 1999-2005 Chris Allegretta *
* Copyright (C) 1999-2004 Chris Allegretta *
* Copyright (C) 2005-2006 David Lawrence Ramsey *
* 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) *
@@ -20,272 +21,598 @@
* *
**************************************************************************/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <assert.h>
#include "proto.h"
#include <string.h>
#include <ctype.h>
/* Move to the first line of the file. */
void do_first_line(void)
{
size_t pww_save = placewewant;
current = fileage;
placewewant = 0;
current_x = 0;
if (edittop != fileage || need_vertical_update(pww_save))
edit_update(TOP);
const filestruct *current_save = openfile->current;
size_t pww_save = openfile->placewewant;
openfile->current = openfile->fileage;
openfile->current_x = 0;
openfile->placewewant = 0;
edit_redraw(current_save, pww_save);
}
/* Move to the last line of the file. */
void do_last_line(void)
{
size_t pww_save = placewewant;
current = filebot;
placewewant = 0;
current_x = 0;
if (edittop->lineno + (editwinrows / 2) != filebot->lineno ||
need_vertical_update(pww_save))
edit_update(CENTER);
}
void do_home(void)
{
size_t pww_save = placewewant;
#ifndef NANO_SMALL
if (ISSET(SMART_HOME)) {
size_t current_x_save = current_x;
current_x = indent_length(current->data);
if (current_x == current_x_save ||
current->data[current_x] == '\0')
current_x = 0;
placewewant = xplustabs();
} else {
#endif
current_x = 0;
placewewant = 0;
#ifndef NANO_SMALL
}
#endif
check_statusblank();
if (need_horizontal_update(pww_save))
update_line(current, current_x);
}
void do_end(void)
{
size_t pww_save = placewewant;
current_x = strlen(current->data);
placewewant = xplustabs();
check_statusblank();
if (need_horizontal_update(pww_save))
update_line(current, current_x);
const filestruct *current_save = openfile->current;
size_t pww_save = openfile->placewewant;
openfile->current = openfile->filebot;
openfile->current_x = strlen(openfile->filebot->data);
openfile->placewewant = xplustabs();
openfile->current_y = editwinrows - 1;
edit_redraw(current_save, pww_save);
}
/* Move up one page. */
void do_page_up(void)
{
size_t pww_save = placewewant;
const filestruct *current_save = current;
#ifndef DISABLE_WRAPPING
wrap_reset();
#endif
int i;
/* If the first line of the file is onscreen, move current up there
* and put the cursor at the beginning of the line. */
if (edittop == fileage) {
current = fileage;
placewewant = 0;
} else {
edit_scroll(UP, editwinrows - 2);
#ifndef NANO_SMALL
/* If we're in smooth scrolling mode and there's at least one
* page of text left, move the current line of the edit window
* up a page. */
if (ISSET(SMOOTH_SCROLL) && current->lineno > editwinrows - 2) {
int i;
for (i = 0; i < editwinrows - 2; i++)
current = current->prev;
}
/* If we're not in smooth scrolling mode or there isn't at least
* one page of text left, put the cursor at the beginning of the
* top line of the edit window, as Pico does. */
else {
#endif
current = edittop;
placewewant = 0;
#ifndef NANO_SMALL
}
#endif
/* If there's less than a page of text left on the screen, put the
* cursor at the beginning of the first line of the file, and then
* update the edit window. */
if (openfile->current->lineno <= editwinrows - 2) {
do_first_line();
return;
}
/* Get the equivalent x-coordinate of the new line. */
current_x = actual_x(current->data, placewewant);
/* If we're not in smooth scrolling mode, put the cursor at the
* beginning of the top line of the edit window, as Pico does. */
#ifndef NANO_TINY
if (!ISSET(SMOOTH_SCROLL)) {
#endif
openfile->current = openfile->edittop;
openfile->placewewant = 0;
#ifndef NANO_TINY
}
#endif
/* Update all the lines that need to be updated. */
edit_redraw(current_save, pww_save);
for (i = editwinrows - 2; i > 0 && openfile->current !=
openfile->fileage; i--)
openfile->current = openfile->current->prev;
check_statusblank();
openfile->current_x = actual_x(openfile->current->data,
openfile->placewewant);
/* Scroll the edit window up a page. */
edit_scroll(UP, editwinrows - 2);
}
/* Move down one page. */
void do_page_down(void)
{
size_t pww_save = placewewant;
const filestruct *current_save = current;
#ifndef DISABLE_WRAPPING
wrap_reset();
#endif
int i;
/* If the last line of the file is onscreen, move current down
* there and put the cursor at the beginning of the line. */
if (edittop->lineno + editwinrows > filebot->lineno) {
current = filebot;
placewewant = 0;
} else {
edit_scroll(DOWN, editwinrows - 2);
#ifndef NANO_SMALL
/* If we're in smooth scrolling mode and there's at least one
* page of text left, move the current line of the edit window
* down a page. */
if (ISSET(SMOOTH_SCROLL) && current->lineno + editwinrows - 2 <=
filebot->lineno) {
int i;
for (i = 0; i < editwinrows - 2; i++)
current = current->next;
}
/* If we're not in smooth scrolling mode or there isn't at least
* one page of text left, put the cursor at the beginning of the
* top line of the edit window, as Pico does. */
else {
#endif
current = edittop;
placewewant = 0;
#ifndef NANO_SMALL
}
#endif
/* If there's less than a page of text left on the screen, put the
* cursor at the beginning of the last line of the file, and then
* update the edit window. */
if (openfile->current->lineno + editwinrows - 2 >=
openfile->filebot->lineno) {
do_last_line();
return;
}
/* Get the equivalent x-coordinate of the new line. */
current_x = actual_x(current->data, placewewant);
/* If we're not in smooth scrolling mode, put the cursor at the
* beginning of the top line of the edit window, as Pico does. */
#ifndef NANO_TINY
if (!ISSET(SMOOTH_SCROLL)) {
#endif
openfile->current = openfile->edittop;
openfile->placewewant = 0;
#ifndef NANO_TINY
}
#endif
/* Update all the lines that need to be updated. */
edit_redraw(current_save, pww_save);
for (i = editwinrows - 2; i > 0 && openfile->current !=
openfile->filebot; i--)
openfile->current = openfile->current->next;
check_statusblank();
openfile->current_x = actual_x(openfile->current->data,
openfile->placewewant);
/* Scroll the edit window down a page. */
edit_scroll(DOWN, editwinrows - 2);
}
#ifndef DISABLE_JUSTIFY
/* Move up to the beginning of the last beginning-of-paragraph line
* before the current line. If allow_update is TRUE, update the screen
* afterwards. */
void do_para_begin(bool allow_update)
{
const filestruct *current_save = openfile->current;
const size_t pww_save = openfile->placewewant;
if (openfile->current != openfile->fileage) {
do {
openfile->current = openfile->current->prev;
openfile->current_y--;
} while (!begpar(openfile->current));
}
openfile->current_x = 0;
openfile->placewewant = 0;
if (allow_update)
edit_redraw(current_save, pww_save);
}
/* Move up to the beginning of the last beginning-of-paragraph line
* before the current line, and update the screen afterwards. */
void do_para_begin_void(void)
{
do_para_begin(TRUE);
}
/* Move down to the beginning of the last line of the current paragraph.
* Then move down one line farther if there is such a line, or to the
* end of the current line if not. If allow_update is TRUE, update the
* screen afterwards. A line is the last line of a paragraph if it is
* in a paragraph, and the next line either is the beginning line of a
* paragraph or isn't in a paragraph. */
void do_para_end(bool allow_update)
{
const filestruct *const current_save = openfile->current;
const size_t pww_save = openfile->placewewant;
while (openfile->current != openfile->filebot &&
!inpar(openfile->current))
openfile->current = openfile->current->next;
while (openfile->current != openfile->filebot &&
inpar(openfile->current->next) &&
!begpar(openfile->current->next)) {
openfile->current = openfile->current->next;
openfile->current_y++;
}
if (openfile->current != openfile->filebot) {
openfile->current = openfile->current->next;
openfile->current_x = 0;
openfile->placewewant = 0;
} else {
openfile->current_x = strlen(openfile->current->data);
openfile->placewewant = xplustabs();
}
if (allow_update)
edit_redraw(current_save, pww_save);
}
/* Move down to the beginning of the last line of the current paragraph.
* Then move down one line farther if there is such a line, or to the
* end of the current line if not, and update the screen afterwards. */
void do_para_end_void(void)
{
do_para_end(TRUE);
}
#endif /* !DISABLE_JUSTIFY */
#ifndef NANO_TINY
/* Move to the next word in the file. If allow_punct is TRUE, treat
* punctuation as part of a word. If allow_update is TRUE, update the
* screen afterwards. Return TRUE if we started on a word, and FALSE
* otherwise. */
bool do_next_word(bool allow_punct, bool allow_update)
{
size_t pww_save = openfile->placewewant;
const filestruct *current_save = openfile->current;
char *char_mb;
int char_mb_len;
bool end_line = FALSE, started_on_word = FALSE;
assert(openfile->current != NULL && openfile->current->data != NULL);
char_mb = charalloc(mb_cur_max());
/* Move forward until we find the character after the last letter of
* the current word. */
while (!end_line) {
char_mb_len = parse_mbchar(openfile->current->data +
openfile->current_x, char_mb, NULL);
/* If we've found it, stop moving forward through the current
* line. */
if (!is_word_mbchar(char_mb, allow_punct))
break;
/* If we haven't found it, then we've started on a word, so set
* started_on_word to TRUE. */
started_on_word = TRUE;
if (openfile->current->data[openfile->current_x] == '\0')
end_line = TRUE;
else
openfile->current_x += char_mb_len;
}
/* Move forward until we find the first letter of the next word. */
if (openfile->current->data[openfile->current_x] == '\0')
end_line = TRUE;
else
openfile->current_x += char_mb_len;
for (; openfile->current != NULL;
openfile->current = openfile->current->next) {
while (!end_line) {
char_mb_len = parse_mbchar(openfile->current->data +
openfile->current_x, char_mb, NULL);
/* If we've found it, stop moving forward through the
* current line. */
if (is_word_mbchar(char_mb, allow_punct))
break;
if (openfile->current->data[openfile->current_x] == '\0')
end_line = TRUE;
else
openfile->current_x += char_mb_len;
}
/* If we've found it, stop moving forward to the beginnings of
* subsequent lines. */
if (!end_line)
break;
if (openfile->current != openfile->filebot) {
end_line = FALSE;
openfile->current_x = 0;
}
}
free(char_mb);
/* If we haven't found it, leave the cursor at the end of the
* file. */
if (openfile->current == NULL)
openfile->current = openfile->filebot;
openfile->placewewant = xplustabs();
/* If allow_update is TRUE, update the screen. */
if (allow_update)
edit_redraw(current_save, pww_save);
/* Return whether we started on a word. */
return started_on_word;
}
/* Move to the next word in the file, treating punctuation as part of a
* word if the WORD_BOUNDS flag is set, and update the screen
* afterwards. */
void do_next_word_void(void)
{
do_next_word(ISSET(WORD_BOUNDS), TRUE);
}
/* Move to the previous word in the file. If allow_punct is TRUE, treat
* punctuation as part of a word. If allow_update is TRUE, update the
* screen afterwards. Return TRUE if we started on a word, and FALSE
* otherwise. */
bool do_prev_word(bool allow_punct, bool allow_update)
{
size_t pww_save = openfile->placewewant;
const filestruct *current_save = openfile->current;
char *char_mb;
int char_mb_len;
bool begin_line = FALSE, started_on_word = FALSE;
assert(openfile->current != NULL && openfile->current->data != NULL);
char_mb = charalloc(mb_cur_max());
/* Move backward until we find the character before the first letter
* of the current word. */
while (!begin_line) {
char_mb_len = parse_mbchar(openfile->current->data +
openfile->current_x, char_mb, NULL);
/* If we've found it, stop moving backward through the current
* line. */
if (!is_word_mbchar(char_mb, allow_punct))
break;
/* If we haven't found it, then we've started on a word, so set
* started_on_word to TRUE. */
started_on_word = TRUE;
if (openfile->current_x == 0)
begin_line = TRUE;
else
openfile->current_x = move_mbleft(openfile->current->data,
openfile->current_x);
}
/* Move backward until we find the last letter of the previous
* word. */
if (openfile->current_x == 0)
begin_line = TRUE;
else
openfile->current_x = move_mbleft(openfile->current->data,
openfile->current_x);
for (; openfile->current != NULL;
openfile->current = openfile->current->prev) {
while (!begin_line) {
char_mb_len = parse_mbchar(openfile->current->data +
openfile->current_x, char_mb, NULL);
/* If we've found it, stop moving backward through the
* current line. */
if (is_word_mbchar(char_mb, allow_punct))
break;
if (openfile->current_x == 0)
begin_line = TRUE;
else
openfile->current_x =
move_mbleft(openfile->current->data,
openfile->current_x);
}
/* If we've found it, stop moving backward to the ends of
* previous lines. */
if (!begin_line)
break;
if (openfile->current != openfile->fileage) {
begin_line = FALSE;
openfile->current_x = strlen(openfile->current->prev->data);
}
}
/* If we haven't found it, leave the cursor at the beginning of the
* file. */
if (openfile->current == NULL)
openfile->current = openfile->fileage;
/* If we've found it, move backward until we find the character
* before the first letter of the previous word. */
else if (!begin_line) {
if (openfile->current_x == 0)
begin_line = TRUE;
else
openfile->current_x = move_mbleft(openfile->current->data,
openfile->current_x);
while (!begin_line) {
char_mb_len = parse_mbchar(openfile->current->data +
openfile->current_x, char_mb, NULL);
/* If we've found it, stop moving backward through the
* current line. */
if (!is_word_mbchar(char_mb, allow_punct))
break;
if (openfile->current_x == 0)
begin_line = TRUE;
else
openfile->current_x =
move_mbleft(openfile->current->data,
openfile->current_x);
}
/* If we've found it, move forward to the first letter of the
* previous word. */
if (!begin_line)
openfile->current_x += char_mb_len;
}
free(char_mb);
openfile->placewewant = xplustabs();
/* If allow_update is TRUE, update the screen. */
if (allow_update)
edit_redraw(current_save, pww_save);
/* Return whether we started on a word. */
return started_on_word;
}
/* Move to the previous word in the file, treating punctuation as part
* of a word if the WORD_BOUNDS flag is set, and update the screen
* afterwards. */
void do_prev_word_void(void)
{
do_prev_word(ISSET(WORD_BOUNDS), TRUE);
}
#endif /* !NANO_TINY */
/* Move to the beginning of the current line. If the SMART_HOME flag is
* set, move to the first non-whitespace character of the current line
* if we aren't already there, or to the beginning of the current line
* if we are. */
void do_home(void)
{
size_t pww_save = openfile->placewewant;
#ifndef NANO_TINY
if (ISSET(SMART_HOME)) {
size_t current_x_save = openfile->current_x;
openfile->current_x = indent_length(openfile->current->data);
if (openfile->current_x == current_x_save ||
openfile->current->data[openfile->current_x] == '\0')
openfile->current_x = 0;
openfile->placewewant = xplustabs();
} else {
#endif
openfile->current_x = 0;
openfile->placewewant = 0;
#ifndef NANO_TINY
}
#endif
if (need_horizontal_update(pww_save))
update_line(openfile->current, openfile->current_x);
}
/* Move to the end of the current line. */
void do_end(void)
{
size_t pww_save = openfile->placewewant;
openfile->current_x = strlen(openfile->current->data);
openfile->placewewant = xplustabs();
if (need_horizontal_update(pww_save))
update_line(openfile->current, openfile->current_x);
}
/* Move up one line. */
void do_up(void)
{
#ifndef DISABLE_WRAPPING
wrap_reset();
#endif
check_statusblank();
if (current->prev == NULL)
/* If we're at the top of the file, get out. */
if (openfile->current == openfile->fileage)
return;
assert(current_y == current->lineno - edittop->lineno);
assert(openfile->current_y == openfile->current->lineno - openfile->edittop->lineno);
current = current->prev;
current_x = actual_x(current->data, placewewant);
/* Move the current line of the edit window up. */
openfile->current = openfile->current->prev;
openfile->current_x = actual_x(openfile->current->data,
openfile->placewewant);
/* If we're on the first row of the edit window, scroll up one line
* if we're in smooth scrolling mode, or up half a page if we're
* not. */
if (current_y == 0)
/* If we're on the first line of the edit window, scroll the edit
* window up one line if we're in smooth scrolling mode, or up half
* a page if we're not. */
if (openfile->current_y == 0)
edit_scroll(UP,
#ifndef NANO_SMALL
#ifndef NANO_TINY
ISSET(SMOOTH_SCROLL) ? 1 :
#endif
editwinrows / 2);
/* Update the lines left alone by edit_scroll(): the line we were on
* before and the line we're on now. The former needs to be redrawn
* if we're not on the first page, and the latter needs to be
* drawn. */
if (need_vertical_update(0))
update_line(current->next, 0);
update_line(current, current_x);
/* Update the line we were on before and the line we're on now. The
* former needs to be redrawn if we're not on the first page, and
* the latter needs to be drawn unconditionally. */
else {
if (need_vertical_update(0))
update_line(openfile->current->next, 0);
update_line(openfile->current, openfile->current_x);
}
}
#ifndef NANO_TINY
/* Scroll up one line without scrolling the cursor. */
void do_scroll_up(void)
{
/* If the top of the file is onscreen, get out. */
if (openfile->edittop == openfile->fileage)
return;
assert(openfile->current_y == openfile->current->lineno - openfile->edittop->lineno);
/* Move the current line of the edit window up. */
openfile->current = openfile->current->prev;
openfile->current_x = actual_x(openfile->current->data,
openfile->placewewant);
/* Scroll the edit window up one line. */
edit_scroll(UP, 1);
}
#endif /* !NANO_TINY */
/* Move down one line. */
void do_down(void)
{
#ifndef DISABLE_WRAPPING
wrap_reset();
#endif
check_statusblank();
if (current->next == NULL)
/* If we're at the bottom of the file, get out. */
if (openfile->current == openfile->filebot)
return;
assert(current_y == current->lineno - edittop->lineno);
assert(openfile->current_y == openfile->current->lineno - openfile->edittop->lineno);
current = current->next;
current_x = actual_x(current->data, placewewant);
/* Move the current line of the edit window down. */
openfile->current = openfile->current->next;
openfile->current_x = actual_x(openfile->current->data,
openfile->placewewant);
/* If we're on the last row of the edit window, scroll down one line
* if we're in smooth scrolling mode, or down half a page if we're
* not. */
if (current_y == editwinrows - 1)
/* If we're on the last line of the edit window, scroll the edit
* window down one line if we're in smooth scrolling mode, or down
* half a page if we're not. */
if (openfile->current_y == editwinrows - 1)
edit_scroll(DOWN,
#ifndef NANO_SMALL
#ifndef NANO_TINY
ISSET(SMOOTH_SCROLL) ? 1 :
#endif
editwinrows / 2);
/* Update the lines left alone by edit_scroll(): the line we were on
* before and the line we're on now. The former needs to be redrawn
* if we're not on the first page, and the latter needs to be
* drawn. */
if (need_vertical_update(0))
update_line(current->prev, 0);
update_line(current, current_x);
/* Update the line we were on before and the line we're on now. The
* former needs to be redrawn if we're not on the first page, and
* the latter needs to be drawn unconditionally. */
else {
if (need_vertical_update(0))
update_line(openfile->current->prev, 0);
update_line(openfile->current, openfile->current_x);
}
}
void do_left(bool allow_update)
#ifndef NANO_TINY
/* Scroll down one line without scrolling the cursor. */
void do_scroll_down(void)
{
size_t pww_save = placewewant;
if (current_x > 0)
current_x = move_mbleft(current->data, current_x);
else if (current != fileage) {
/* If we're at the bottom of the file, get out. */
if (openfile->current == openfile->filebot)
return;
assert(openfile->current_y == openfile->current->lineno - openfile->edittop->lineno);
/* Move the current line of the edit window down. */
openfile->current = openfile->current->next;
openfile->current_x = actual_x(openfile->current->data,
openfile->placewewant);
/* Scroll the edit window down one line. */
edit_scroll(DOWN, 1);
}
#endif /* !NANO_TINY */
/* Move left one character. */
void do_left(void)
{
size_t pww_save = openfile->placewewant;
if (openfile->current_x > 0)
openfile->current_x = move_mbleft(openfile->current->data,
openfile->current_x);
else if (openfile->current != openfile->fileage) {
do_up();
current_x = strlen(current->data);
openfile->current_x = strlen(openfile->current->data);
}
placewewant = xplustabs();
check_statusblank();
if (allow_update && need_horizontal_update(pww_save))
update_line(current, current_x);
openfile->placewewant = xplustabs();
if (need_horizontal_update(pww_save))
update_line(openfile->current, openfile->current_x);
}
void do_left_void(void)
/* Move right one character. */
void do_right(void)
{
do_left(TRUE);
}
size_t pww_save = openfile->placewewant;
void do_right(bool allow_update)
{
size_t pww_save = placewewant;
assert(current_x <= strlen(current->data));
assert(openfile->current_x <= strlen(openfile->current->data));
if (current->data[current_x] != '\0')
current_x = move_mbright(current->data, current_x);
else if (current->next != NULL) {
if (openfile->current->data[openfile->current_x] != '\0')
openfile->current_x = move_mbright(openfile->current->data,
openfile->current_x);
else if (openfile->current != openfile->filebot) {
do_down();
current_x = 0;
openfile->current_x = 0;
}
placewewant = xplustabs();
check_statusblank();
if (allow_update && need_horizontal_update(pww_save))
update_line(current, current_x);
}
void do_right_void(void)
{
do_right(TRUE);
openfile->placewewant = xplustabs();
if (need_horizontal_update(pww_save))
update_line(openfile->current, openfile->current_x);
}

4026
src/nano.c

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,8 @@
/**************************************************************************
* nano.h *
* *
* Copyright (C) 1999-2005 Chris Allegretta *
* Copyright (C) 1999-2004 Chris Allegretta *
* Copyright (C) 2005-2006 David Lawrence Ramsey *
* 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) *
@@ -39,6 +40,10 @@
#include <limits.h>
#endif
#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h>
#endif
/* Macros for flags. */
#define SET(bit) flags |= bit
#define UNSET(bit) flags &= ~bit
@@ -51,31 +56,28 @@
#define charmove(dest, src, n) memmove(dest, src, (n) * sizeof(char))
#define charset(dest, src, n) memset(dest, src, (n) * sizeof(char))
/* Other macros. */
#ifdef BROKEN_REGEXEC
#undef regexec
#define regexec(preg, string, nmatch, pmatch, eflags) safe_regexec(preg, string, nmatch, pmatch, eflags)
#endif
/* Set a default value for PATH_MAX if there isn't one. */
#ifndef PATH_MAX
#define PATH_MAX 4096
#endif
#ifdef USE_SLANG
/* Slang support enabled. */
/* Slang support. */
#include <slcurses.h>
/* Slang curses emulation brain damage, part 2: Slang doesn't define the
/* Slang curses emulation brain damage, part 3: Slang doesn't define the
* curses equivalents of the Insert or Delete keys. */
#define KEY_DC SL_KEY_DELETE
#define KEY_IC SL_KEY_IC
/* Ncurses support. */
#elif defined(HAVE_NCURSES_H)
#include <ncurses.h>
#else /* Uh oh. */
#else
/* Curses support. */
#include <curses.h>
#endif /* CURSES_H */
#ifdef ENABLE_NLS
/* Native language support. */
#ifdef HAVE_LIBINTL_H
#include <libintl.h>
#endif
@@ -90,19 +92,23 @@
/* Mark a string that will be sent to gettext() later. */
#include <stddef.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#ifdef HAVE_REGEX_H
#include <regex.h>
#endif
#ifndef NANO_TINY
#include <setjmp.h>
#endif
#include <assert.h>
/* If no snprintf() or vsnprintf(), use the versions from glib 2.x. */
#if !defined(HAVE_SNPRINTF) || !defined(HAVE_VSNPRINTF)
#include <glib.h>
#ifndef HAVE_SNPRINTF
#define snprintf g_snprintf
#endif
/* If no vsnprintf(), use the version from glib 2.x. */
#ifndef HAVE_VSNPRINTF
#include <glib.h>
#define vsnprintf g_vsnprintf
#endif
#endif
/* If no isblank(), iswblank(), strcasecmp(), strncasecmp(),
* strcasestr(), strnlen(), getdelim(), or getline(), use the versions
@@ -132,7 +138,11 @@
#define getline ngetline
#endif
#define VERMSG "GNU nano " VERSION
/* If we don't have regex support, turn the color support off, as it
* depends on the use of regexes. */
#ifndef HAVE_REGEX_H
#undef ENABLE_COLOR
#endif
/* If we aren't using ncurses, turn the mouse support off, as it's
* ncurses-specific. */
@@ -150,160 +160,224 @@ typedef enum {
} file_format;
typedef enum {
UP, DOWN
} updown;
OVERWRITE, APPEND, PREPEND
} append_type;
typedef enum {
TOP, CENTER, NONE
} topmidnone;
UP, DOWN
} scroll_dir;
typedef enum {
CENTER, NONE
} update_type;
/* Structure types. */
typedef struct filestruct {
char *data;
struct filestruct *next; /* Next node. */
struct filestruct *prev; /* Previous node. */
ssize_t lineno; /* The line number. */
/* The text of this line. */
ssize_t lineno;
/* The number of this line. */
struct filestruct *next;
/* Next node. */
struct filestruct *prev;
/* Previous node. */
} filestruct;
#ifdef ENABLE_MULTIBUFFER
typedef struct openfilestruct {
char *filename;
#ifndef NANO_SMALL
struct stat originalfilestat;
#endif
struct openfilestruct *next;
/* Next node. */
struct openfilestruct *prev;
/* Previous node. */
filestruct *fileage; /* Current file. */
filestruct *filebot; /* Current file's last line. */
filestruct *edittop; /* Current top of edit window. */
filestruct *current; /* Current file's line. */
#ifndef NANO_SMALL
filestruct *mark_beginbuf;
/* Current file's beginning marked
* line. */
size_t mark_beginx; /* Current file's beginning marked
* line's x-coordinate position. */
#endif
size_t current_x; /* Current file's x-coordinate
* position. */
size_t placewewant; /* Current file's place we want. */
size_t totlines; /* Current file's total number of
* lines. */
size_t totsize; /* Current file's total size. */
unsigned long flags; /* Current file's flags: modification
* status (and marking status, if
* available). */
file_format fmt; /* Current file's format. */
} openfilestruct;
#endif
typedef struct partition {
filestruct *fileage;
/* The top line of this portion of the file. */
filestruct *top_prev;
/* The line before the top line of this portion of the file. */
char *top_data;
/* The text before the beginning of the top line of this portion
* of the file. */
filestruct *filebot;
/* The bottom line of this portion of the file. */
filestruct *bot_next;
/* The line after the bottom line of this portion of the
* file. */
char *bot_data;
/* The text after the end of the bottom line of this portion of
* the file. */
} partition;
typedef struct shortcut {
/* Key values that aren't used should be set to NANO_NO_KEY. */
int ctrlval; /* Special sentinel key or control key we want
* bound. */
int metaval; /* Meta key we want bound. */
int funcval; /* Function key we want bound. */
int miscval; /* Other Meta key we want bound. */
bool viewok; /* Is this function legal in view mode? */
void (*func)(void); /* Function to call when we catch this key. */
const char *desc; /* Description, e.g. "Page Up". */
#ifndef DISABLE_HELP
const char *help; /* Help file entry text. */
#ifdef ENABLE_COLOR
typedef struct colortype {
short fg;
/* This syntax's foreground color. */
short bg;
/* This syntax's background color. */
bool bright;
/* Is this color A_BOLD? */
bool icase;
/* Is this regex string case insensitive? */
int pairnum;
/* The color pair number used for this foreground color and
* background color. */
char *start_regex;
/* The start (or all) of the regex string. */
regex_t *start;
/* The compiled start (or all) of the regex string. */
char *end_regex;
/* The end (if any) of the regex string. */
regex_t *end;
/* The compiled end (if any) of the regex string. */
struct colortype *next;
/* Next set of colors. */
} colortype;
typedef struct exttype {
char *ext_regex;
/* The extensions that match this syntax. */
regex_t *ext;
/* The compiled extensions that match this syntax. */
struct exttype *next;
/* Next set of extensions. */
} exttype;
typedef struct syntaxtype {
char *desc;
/* The name of this syntax. */
exttype *extensions;
/* The list of extensions that this syntax applies to. */
colortype *color;
/* The colors used in this syntax. */
struct syntaxtype *next;
/* Next syntax. */
} syntaxtype;
#endif /* ENABLE_COLOR */
typedef struct openfilestruct {
char *filename;
/* The current file's name. */
filestruct *fileage;
/* The current file's first line. */
filestruct *filebot;
/* The current file's last line. */
filestruct *edittop;
/* The current top of the edit window. */
filestruct *current;
/* The current file's current line. */
size_t totsize;
/* The current file's total number of characters. */
size_t current_x;
/* The current file's x-coordinate position. */
size_t placewewant;
/* The current file's place we want. */
ssize_t current_y;
/* The current file's y-coordinate position. */
bool modified;
/* Whether the current file has been modified. */
#ifndef NANO_TINY
bool mark_set;
/* Whether the mark is on in the current file. */
filestruct *mark_begin;
/* The current file's beginning marked line, if any. */
size_t mark_begin_x;
/* The current file's beginning marked line's x-coordinate
* position, if any. */
file_format fmt;
/* The current file's format. */
struct stat *current_stat;
/* The current file's stat. */
#endif
#ifdef ENABLE_COLOR
colortype *colorstrings;
/* The current file's associated colors. */
#endif
struct openfilestruct *next;
/* Next node. */
struct openfilestruct *prev;
/* Previous node. */
} openfilestruct;
typedef struct shortcut {
const char *desc;
/* The function's description, e.g. "Page Up". */
#ifndef DISABLE_HELP
const char *help;
/* The help file entry text for this function. */
#endif
bool blank_after;
/* Whether there should be a blank line after the help entry
* text for this function. */
/* Key values that aren't used should be set to NANO_NO_KEY. */
int ctrlval;
/* The special sentinel key or control key we want bound, if
* any. */
int metaval;
/* The meta key we want bound, if any. */
int funcval;
/* The function key we want bound, if any. */
int miscval;
/* The other meta key we want bound, if any. */
bool viewok;
/* Is this function allowed when in view mode? */
void (*func)(void);
/* The function to call when we get this key. */
struct shortcut *next;
/* Next shortcut. */
} shortcut;
#ifndef NANO_SMALL
#ifndef NANO_TINY
typedef struct toggle {
int val; /* Sequence to toggle the key. Should only need
* one. */
const char *desc; /* Description for when toggle is, uh, toggled,
* e.g. "Cut to end"; we'll append Enabled or
* Disabled. */
long flag; /* What flag actually gets toggled. */
int val;
/* The sequence to toggle the key. We should only need one. */
const char *desc;
/* The description of the toggle, e.g. "Cut to end"; we'll
* append Enabled or Disabled to it. */
bool blank_after;
/* Whether there should be a blank line after the description of
* the toggle. */
long flag;
/* Which flag actually gets toggled. */
struct toggle *next;
/* Next toggle. */
} toggle;
#endif
#ifdef ENABLE_NANORC
typedef struct rcoption {
const char *name;
/* The name of the rcfile option. */
long flag;
/* The flag associated with it, if any. */
} rcoption;
#endif
#ifdef ENABLE_COLOR
typedef struct colortype {
int fg; /* Foreground color. */
int bg; /* Background color. */
bool bright; /* Is this color A_BOLD? */
int pairnum; /* Color pair number used for this
* foreground/background. */
regex_t start; /* Start (or all) of the regex
* string. */
regex_t *end; /* End (if any) of the regex string. */
struct colortype *next;
} colortype;
typedef struct exttype {
regex_t val; /* The extensions that match this
* syntax. */
struct exttype *next;
} exttype;
typedef struct syntaxtype {
char *desc; /* Name of this syntax type. */
exttype *extensions; /* List of extensions that this syntax
* applies to. */
colortype *color; /* Color struct for this syntax. */
struct syntaxtype *next;
} syntaxtype;
#endif
/* Bitwise flags so that we can save space (or, more correctly, not
* waste it). */
#define MODIFIED (1<<0)
#define CASE_SENSITIVE (1<<1)
#define MARK_ISSET (1<<2)
#define CONST_UPDATE (1<<3)
#define NO_HELP (1<<4)
#define NOFOLLOW_SYMLINKS (1<<5)
#define SUSPEND (1<<6)
#define NO_WRAP (1<<7)
#define AUTOINDENT (1<<8)
#define VIEW_MODE (1<<9)
#define USE_MOUSE (1<<10)
#define USE_REGEXP (1<<11)
#define TEMP_FILE (1<<12)
#define CUT_TO_END (1<<13)
#define BACKWARDS_SEARCH (1<<14)
#define MULTIBUFFER (1<<15)
#define SMOOTH_SCROLL (1<<16)
#define REBIND_DELETE (1<<17)
#define NO_CONVERT (1<<18)
#define BACKUP_FILE (1<<19)
#define NO_RCFILE (1<<20)
#define NO_COLOR_SYNTAX (1<<21)
#define PRESERVE (1<<22)
#define HISTORYLOG (1<<23)
#define RESTRICTED (1<<24)
#define SMART_HOME (1<<25)
#define WHITESPACE_DISPLAY (1<<26)
#define MORE_SPACE (1<<27)
#define TABS_TO_SPACES (1<<28)
#define QUICK_BLANK (1<<29)
#define USE_UTF8 (1<<30)
#define CASE_SENSITIVE (1<<0)
#define CONST_UPDATE (1<<1)
#define NO_HELP (1<<2)
#define NOFOLLOW_SYMLINKS (1<<3)
#define SUSPEND (1<<4)
#define NO_WRAP (1<<5)
#define AUTOINDENT (1<<6)
#define VIEW_MODE (1<<7)
#define USE_MOUSE (1<<8)
#define USE_REGEXP (1<<9)
#define TEMP_FILE (1<<10)
#define CUT_TO_END (1<<11)
#define BACKWARDS_SEARCH (1<<12)
#define MULTIBUFFER (1<<13)
#define SMOOTH_SCROLL (1<<14)
#define REBIND_DELETE (1<<15)
#define REBIND_KEYPAD (1<<16)
#define NO_CONVERT (1<<17)
#define BACKUP_FILE (1<<18)
#define NO_COLOR_SYNTAX (1<<19)
#define PRESERVE (1<<20)
#define HISTORYLOG (1<<21)
#define RESTRICTED (1<<22)
#define SMART_HOME (1<<23)
#define WHITESPACE_DISPLAY (1<<24)
#define MORE_SPACE (1<<25)
#define TABS_TO_SPACES (1<<26)
#define QUICK_BLANK (1<<27)
#define WORD_BOUNDS (1<<28)
#define NO_NEWLINES (1<<29)
#define BOLD_TEXT (1<<30)
/* Control key sequences. Changing these would be very, very bad. */
#define NANO_CONTROL_SPACE 0
@@ -340,8 +414,26 @@ typedef struct syntaxtype {
#define NANO_CONTROL_7 31
#define NANO_CONTROL_8 127
#define NANO_ALT_9 '9'
/* Meta key sequences. */
#define NANO_ALT_SPACE ' '
#define NANO_ALT_LPARENTHESIS '('
#define NANO_ALT_RPARENTHESIS ')'
#define NANO_ALT_PLUS '+'
#define NANO_ALT_COMMA ','
#define NANO_ALT_MINUS '-'
#define NANO_ALT_PERIOD '.'
#define NANO_ALT_SLASH '/'
#define NANO_ALT_0 '0'
#define NANO_ALT_6 '6'
#define NANO_ALT_9 '9'
#define NANO_ALT_LCARET '<'
#define NANO_ALT_EQUALS '='
#define NANO_ALT_RCARET '>'
#define NANO_ALT_QUESTION '?'
#define NANO_ALT_BACKSLASH '\\'
#define NANO_ALT_RBRACKET ']'
#define NANO_ALT_CARET '^'
#define NANO_ALT_UNDERSCORE '_'
#define NANO_ALT_A 'a'
#define NANO_ALT_B 'b'
#define NANO_ALT_C 'c'
@@ -368,150 +460,176 @@ typedef struct syntaxtype {
#define NANO_ALT_X 'x'
#define NANO_ALT_Y 'y'
#define NANO_ALT_Z 'z'
#define NANO_ALT_PERIOD '.'
#define NANO_ALT_COMMA ','
#define NANO_ALT_LPAREN '('
#define NANO_ALT_RPAREN ')'
#define NANO_ALT_LCARAT '<'
#define NANO_ALT_RCARAT '>'
#define NANO_ALT_RBRACKET ']'
#define NANO_ALT_SPACE ' '
#define NANO_ALT_LCURLYBRACKET '{'
#define NANO_ALT_PIPE '|'
#define NANO_ALT_RCURLYBRACKET '}'
/* Some semi-changeable keybindings; don't play with these unless you're
* sure you know what you're doing. Assume ERR is defined as -1. */
/* No key at all. */
#define NANO_NO_KEY -2
#define NANO_NO_KEY -2
/* Normal keys. */
#define NANO_XON_KEY NANO_CONTROL_Q
#define NANO_XOFF_KEY NANO_CONTROL_S
#define NANO_CANCEL_KEY NANO_CONTROL_C
#define NANO_EXIT_KEY NANO_CONTROL_X
#define NANO_EXIT_FKEY KEY_F(2)
#define NANO_INSERTFILE_KEY NANO_CONTROL_R
#define NANO_INSERTFILE_FKEY KEY_F(5)
#define NANO_TOOTHERINSERT_KEY NANO_CONTROL_X
#define NANO_WRITEOUT_KEY NANO_CONTROL_O
#define NANO_WRITEOUT_FKEY KEY_F(3)
#define NANO_GOTOLINE_KEY NANO_CONTROL_7
#define NANO_GOTOLINE_FKEY KEY_F(13)
#define NANO_GOTOLINE_ALTKEY NANO_ALT_G
#define NANO_TOGOTOLINE_KEY NANO_CONTROL_T
#define NANO_HELP_KEY NANO_CONTROL_G
#define NANO_HELP_FKEY KEY_F(1)
#define NANO_WHEREIS_KEY NANO_CONTROL_W
#define NANO_WHEREIS_FKEY KEY_F(6)
#define NANO_WHEREIS_NEXT_KEY NANO_ALT_W
#define NANO_WHEREIS_NEXT_FKEY KEY_F(16)
#define NANO_TOOTHERWHEREIS_KEY NANO_CONTROL_T
#define NANO_REGEXP_KEY NANO_ALT_R
#define NANO_REPLACE_KEY NANO_CONTROL_4
#define NANO_REPLACE_FKEY KEY_F(14)
#define NANO_ALT_REPLACE_KEY NANO_ALT_R
#define NANO_TOOTHERSEARCH_KEY NANO_CONTROL_R
#define NANO_PREVPAGE_KEY NANO_CONTROL_Y
#define NANO_PREVPAGE_FKEY KEY_F(7)
#define NANO_NEXTPAGE_KEY NANO_CONTROL_V
#define NANO_NEXTPAGE_FKEY KEY_F(8)
#define NANO_CUT_KEY NANO_CONTROL_K
#define NANO_CUT_FKEY KEY_F(9)
#define NANO_UNCUT_KEY NANO_CONTROL_U
#define NANO_UNCUT_FKEY KEY_F(10)
#define NANO_CURSORPOS_KEY NANO_CONTROL_C
#define NANO_CURSORPOS_FKEY KEY_F(11)
#define NANO_SPELL_KEY NANO_CONTROL_T
#define NANO_SPELL_FKEY KEY_F(12)
#define NANO_FIRSTLINE_KEY NANO_PREVPAGE_KEY
#define NANO_FIRSTLINE_FKEY NANO_PREVPAGE_FKEY
#define NANO_LASTLINE_KEY NANO_NEXTPAGE_KEY
#define NANO_LASTLINE_FKEY NANO_NEXTPAGE_FKEY
#define NANO_REFRESH_KEY NANO_CONTROL_L
#define NANO_JUSTIFY_KEY NANO_CONTROL_J
#define NANO_JUSTIFY_FKEY KEY_F(4)
#define NANO_UNJUSTIFY_KEY NANO_UNCUT_KEY /* Same key as uncut. */
#define NANO_UNJUSTIFY_FKEY NANO_UNCUT_FKEY /* Same key as uncut. */
#define NANO_PREVLINE_KEY NANO_CONTROL_P
#define NANO_NEXTLINE_KEY NANO_CONTROL_N
#define NANO_FORWARD_KEY NANO_CONTROL_F
#define NANO_BACK_KEY NANO_CONTROL_B
#define NANO_MARK_KEY NANO_CONTROL_6
#define NANO_MARK_ALTKEY NANO_ALT_A
#define NANO_MARK_FKEY KEY_F(15)
#define NANO_HOME_KEY NANO_CONTROL_A
#define NANO_END_KEY NANO_CONTROL_E
#define NANO_DELETE_KEY NANO_CONTROL_D
#define NANO_BACKSPACE_KEY NANO_CONTROL_H
#define NANO_TAB_KEY NANO_CONTROL_I
#define NANO_SUSPEND_KEY NANO_CONTROL_Z
#define NANO_ENTER_KEY NANO_CONTROL_M
#define NANO_TOFILES_KEY NANO_CONTROL_T
#define NANO_APPEND_KEY NANO_ALT_A
#define NANO_PREPEND_KEY NANO_ALT_P
#define NANO_OPENPREV_KEY NANO_ALT_LCARAT
#define NANO_OPENNEXT_KEY NANO_ALT_RCARAT
#define NANO_OPENPREV_ALTKEY NANO_ALT_COMMA
#define NANO_OPENNEXT_ALTKEY NANO_ALT_PERIOD
#define NANO_BRACKET_KEY NANO_ALT_RBRACKET
#define NANO_NEXTWORD_KEY NANO_CONTROL_SPACE
#define NANO_PREVWORD_KEY NANO_ALT_SPACE
#define NANO_WORDCOUNT_KEY NANO_ALT_D
#define NANO_CUTTILLEND_KEY NANO_CONTROL_X
#define NANO_CUTTILLEND_ALTKEY NANO_ALT_T
#define NANO_PARABEGIN_KEY NANO_CONTROL_W
#define NANO_PARABEGIN_ALTKEY1 NANO_ALT_LPAREN
#define NANO_PARABEGIN_ALTKEY2 NANO_ALT_9
#define NANO_PARAEND_KEY NANO_CONTROL_O
#define NANO_PARAEND_ALTKEY1 NANO_ALT_RPAREN
#define NANO_PARAEND_ALTKEY2 NANO_ALT_0
#define NANO_FULLJUSTIFY_KEY NANO_CONTROL_U
#define NANO_FULLJUSTIFY_ALTKEY NANO_ALT_J
#define NANO_VERBATIM_KEY NANO_ALT_V
#define NANO_XON_KEY NANO_CONTROL_Q
#define NANO_XOFF_KEY NANO_CONTROL_S
#define NANO_CANCEL_KEY NANO_CONTROL_C
#define NANO_EXIT_KEY NANO_CONTROL_X
#define NANO_EXIT_FKEY KEY_F(2)
#define NANO_INSERTFILE_KEY NANO_CONTROL_R
#define NANO_INSERTFILE_FKEY KEY_F(5)
#define NANO_TOOTHERINSERT_KEY NANO_CONTROL_X
#define NANO_WRITEOUT_KEY NANO_CONTROL_O
#define NANO_WRITEOUT_FKEY KEY_F(3)
#define NANO_GOTOLINE_KEY NANO_CONTROL_7
#define NANO_GOTOLINE_FKEY KEY_F(13)
#define NANO_GOTOLINE_ALTKEY NANO_ALT_G
#define NANO_GOTODIR_KEY NANO_CONTROL_7
#define NANO_GOTODIR_FKEY KEY_F(13)
#define NANO_GOTODIR_ALTKEY NANO_ALT_G
#define NANO_TOGOTOLINE_KEY NANO_CONTROL_T
#define NANO_HELP_KEY NANO_CONTROL_G
#define NANO_HELP_FKEY KEY_F(1)
#define NANO_WHEREIS_KEY NANO_CONTROL_W
#define NANO_WHEREIS_FKEY KEY_F(6)
#define NANO_WHEREIS_NEXT_KEY NANO_ALT_W
#define NANO_WHEREIS_NEXT_FKEY KEY_F(16)
#define NANO_TOOTHERWHEREIS_KEY NANO_CONTROL_T
#define NANO_REGEXP_KEY NANO_ALT_R
#define NANO_REPLACE_KEY NANO_CONTROL_4
#define NANO_REPLACE_FKEY KEY_F(14)
#define NANO_ALT_REPLACE_KEY NANO_ALT_R
#define NANO_TOOTHERSEARCH_KEY NANO_CONTROL_R
#define NANO_PREVPAGE_KEY NANO_CONTROL_Y
#define NANO_PREVPAGE_FKEY KEY_F(7)
#define NANO_NEXTPAGE_KEY NANO_CONTROL_V
#define NANO_NEXTPAGE_FKEY KEY_F(8)
#define NANO_CUT_KEY NANO_CONTROL_K
#define NANO_CUT_FKEY KEY_F(9)
#define NANO_COPY_KEY NANO_ALT_CARET
#define NANO_COPY_ALTKEY NANO_ALT_6
#define NANO_UNCUT_KEY NANO_CONTROL_U
#define NANO_UNCUT_FKEY KEY_F(10)
#define NANO_CURSORPOS_KEY NANO_CONTROL_C
#define NANO_CURSORPOS_FKEY KEY_F(11)
#define NANO_SPELL_KEY NANO_CONTROL_T
#define NANO_SPELL_FKEY KEY_F(12)
#define NANO_FIRSTLINE_KEY NANO_PREVPAGE_KEY
#define NANO_FIRSTLINE_FKEY NANO_PREVPAGE_FKEY
#define NANO_FIRSTLINE_ALTKEY NANO_ALT_BACKSLASH
#define NANO_FIRSTLINE_ALTKEY2 NANO_ALT_PIPE
#define NANO_FIRSTFILE_KEY NANO_FIRSTLINE_KEY
#define NANO_FIRSTFILE_FKEY NANO_FIRSTLINE_FKEY
#define NANO_FIRSTFILE_ALTKEY NANO_FIRSTLINE_ALTKEY
#define NANO_FIRSTFILE_ALTKEY2 NANO_FIRSTLINE_ALTKEY2
#define NANO_LASTLINE_KEY NANO_NEXTPAGE_KEY
#define NANO_LASTLINE_FKEY NANO_NEXTPAGE_FKEY
#define NANO_LASTLINE_ALTKEY NANO_ALT_SLASH
#define NANO_LASTLINE_ALTKEY2 NANO_ALT_QUESTION
#define NANO_LASTFILE_KEY NANO_LASTLINE_KEY
#define NANO_LASTFILE_FKEY NANO_LASTLINE_FKEY
#define NANO_LASTFILE_ALTKEY NANO_LASTLINE_ALTKEY
#define NANO_LASTFILE_ALTKEY2 NANO_LASTLINE_ALTKEY2
#define NANO_REFRESH_KEY NANO_CONTROL_L
#define NANO_JUSTIFY_KEY NANO_CONTROL_J
#define NANO_JUSTIFY_FKEY KEY_F(4)
#define NANO_UNJUSTIFY_KEY NANO_UNCUT_KEY
#define NANO_UNJUSTIFY_FKEY NANO_UNCUT_FKEY
#define NANO_PREVLINE_KEY NANO_CONTROL_P
#define NANO_NEXTLINE_KEY NANO_CONTROL_N
#define NANO_FORWARD_KEY NANO_CONTROL_F
#define NANO_BACK_KEY NANO_CONTROL_B
#define NANO_MARK_KEY NANO_CONTROL_6
#define NANO_MARK_ALTKEY NANO_ALT_A
#define NANO_MARK_FKEY KEY_F(15)
#define NANO_HOME_KEY NANO_CONTROL_A
#define NANO_END_KEY NANO_CONTROL_E
#define NANO_DELETE_KEY NANO_CONTROL_D
#define NANO_BACKSPACE_KEY NANO_CONTROL_H
#define NANO_TAB_KEY NANO_CONTROL_I
#define NANO_INDENTMARKED_KEY NANO_ALT_RCURLYBRACKET
#define NANO_UNINDENTMARKED_KEY NANO_ALT_LCURLYBRACKET
#define NANO_SUSPEND_KEY NANO_CONTROL_Z
#define NANO_ENTER_KEY NANO_CONTROL_M
#define NANO_TOFILES_KEY NANO_CONTROL_T
#define NANO_APPEND_KEY NANO_ALT_A
#define NANO_PREPEND_KEY NANO_ALT_P
#define NANO_PREVFILE_KEY NANO_ALT_LCARET
#define NANO_PREVFILE_ALTKEY NANO_ALT_COMMA
#define NANO_NEXTFILE_KEY NANO_ALT_RCARET
#define NANO_NEXTFILE_ALTKEY NANO_ALT_PERIOD
#define NANO_BRACKET_KEY NANO_ALT_RBRACKET
#define NANO_NEXTWORD_KEY NANO_CONTROL_SPACE
#define NANO_PREVWORD_KEY NANO_ALT_SPACE
#define NANO_WORDCOUNT_KEY NANO_ALT_D
#define NANO_SCROLLUP_KEY NANO_ALT_MINUS
#define NANO_SCROLLDOWN_KEY NANO_ALT_PLUS
#define NANO_SCROLLUP_ALTKEY NANO_ALT_UNDERSCORE
#define NANO_SCROLLDOWN_ALTKEY NANO_ALT_EQUALS
#define NANO_CUTTILLEND_KEY NANO_CONTROL_X
#define NANO_CUTTILLEND_ALTKEY NANO_ALT_T
#define NANO_PARABEGIN_KEY NANO_CONTROL_W
#define NANO_PARABEGIN_ALTKEY NANO_ALT_LPARENTHESIS
#define NANO_PARABEGIN_ALTKEY2 NANO_ALT_9
#define NANO_PARAEND_KEY NANO_CONTROL_O
#define NANO_PARAEND_ALTKEY NANO_ALT_RPARENTHESIS
#define NANO_PARAEND_ALTKEY2 NANO_ALT_0
#define NANO_FULLJUSTIFY_KEY NANO_CONTROL_U
#define NANO_FULLJUSTIFY_ALTKEY NANO_ALT_J
#define NANO_VERBATIM_KEY NANO_ALT_V
#ifndef NANO_SMALL
/* Toggles do not exist with NANO_SMALL. */
#define TOGGLE_CONST_KEY NANO_ALT_C
#define TOGGLE_AUTOINDENT_KEY NANO_ALT_I
#define TOGGLE_SUSPEND_KEY NANO_ALT_Z
#define TOGGLE_NOHELP_KEY NANO_ALT_X
#define TOGGLE_MOUSE_KEY NANO_ALT_M
#define TOGGLE_CUTTOEND_KEY NANO_ALT_K
#define TOGGLE_WRAP_KEY NANO_ALT_L
#define TOGGLE_BACKWARDS_KEY NANO_ALT_B
#define TOGGLE_CASE_KEY NANO_ALT_C
#define TOGGLE_MULTIBUFFER_KEY NANO_ALT_F
#define TOGGLE_DOS_KEY NANO_ALT_D
#define TOGGLE_MAC_KEY NANO_ALT_M
#define TOGGLE_SMOOTH_KEY NANO_ALT_S
#define TOGGLE_NOCONVERT_KEY NANO_ALT_N
#define TOGGLE_BACKUP_KEY NANO_ALT_B
#define TOGGLE_SYNTAX_KEY NANO_ALT_Y
#define TOGGLE_SMARTHOME_KEY NANO_ALT_H
#define TOGGLE_WHITESPACE_KEY NANO_ALT_P
#define TOGGLE_MORESPACE_KEY NANO_ALT_O
#define TOGGLE_TABSTOSPACES_KEY NANO_ALT_Q
#endif /* !NANO_SMALL */
/* Toggles do not exist if NANO_TINY is defined. */
#ifndef NANO_TINY
#define MAIN_VISIBLE 12
/* No toggle at all. */
#define TOGGLE_NO_KEY -2
/* Normal toggles. */
#define TOGGLE_NOHELP_KEY NANO_ALT_X
#define TOGGLE_CONST_KEY NANO_ALT_C
#define TOGGLE_MORESPACE_KEY NANO_ALT_O
#define TOGGLE_SMOOTH_KEY NANO_ALT_S
#define TOGGLE_WHITESPACE_KEY NANO_ALT_P
#define TOGGLE_SYNTAX_KEY NANO_ALT_Y
#define TOGGLE_SMARTHOME_KEY NANO_ALT_H
#define TOGGLE_AUTOINDENT_KEY NANO_ALT_I
#define TOGGLE_CUTTOEND_KEY NANO_ALT_K
#define TOGGLE_WRAP_KEY NANO_ALT_L
#define TOGGLE_TABSTOSPACES_KEY NANO_ALT_Q
#define TOGGLE_BACKUP_KEY NANO_ALT_B
#define TOGGLE_MULTIBUFFER_KEY NANO_ALT_F
#define TOGGLE_MOUSE_KEY NANO_ALT_M
#define TOGGLE_NOCONVERT_KEY NANO_ALT_N
#define TOGGLE_SUSPEND_KEY NANO_ALT_Z
#define TOGGLE_CASE_KEY NANO_ALT_C
#define TOGGLE_BACKWARDS_KEY NANO_ALT_B
#define TOGGLE_DOS_KEY NANO_ALT_D
#define TOGGLE_MAC_KEY NANO_ALT_M
#endif /* !NANO_TINY */
#define VIEW TRUE
#define NOVIEW FALSE
/* Minimum editor window rows required for nano to work correctly. */
/* The maximum number of entries displayed in the main shortcut list. */
#define MAIN_VISIBLE 12
/* The minimum editor window columns and rows required for nano to work
* correctly. */
#define MIN_EDITOR_COLS 4
#define MIN_EDITOR_ROWS 1
/* Default number of characters from end-of-line where text wrapping
* occurs. */
/* The default number of characters from the end of the line where
* wrapping occurs. */
#define CHARS_FROM_EOL 8
/* Default width of a tab. */
/* The default width of a tab in spaces. */
#define WIDTH_OF_TAB 8
/* Maximum number of search/replace history strings saved, not counting
* the blank lines at their ends. */
/* The maximum number of search/replace history strings saved, not
* counting the blank lines at their ends. */
#define MAX_SEARCH_HISTORY 100
/* Maximum number of bytes we read from a file at one time. */
/* The maximum number of bytes buffered at one time. */
#define MAX_BUF_SIZE 128
#endif /* !NANO_H */

1356
src/prompt.c Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,8 @@
/**************************************************************************
* rcfile.c *
* *
* Copyright (C) 1999-2005 Chris Allegretta *
* Copyright (C) 2001-2004 Chris Allegretta *
* Copyright (C) 2005-2006 David Lawrence Ramsey *
* 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) *
@@ -20,23 +21,19 @@
* *
**************************************************************************/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "proto.h"
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>
#include <unistd.h>
#include <ctype.h>
#include <assert.h>
#include "proto.h"
#ifdef ENABLE_NANORC
const static rcoption rcopts[] = {
{"boldtext", BOLD_TEXT},
#ifndef DISABLE_JUSTIFY
{"brackets", 0},
#endif
@@ -53,6 +50,7 @@ const static rcoption rcopts[] = {
{"morespace", MORE_SPACE},
{"nofollow", NOFOLLOW_SYMLINKS},
{"nohelp", NO_HELP},
{"nonewlines", NO_NEWLINES},
#ifndef DISABLE_WRAPPING
{"nowrap", NO_WRAP},
#endif
@@ -65,6 +63,7 @@ const static rcoption rcopts[] = {
{"quotestr", 0},
#endif
{"rebinddelete", REBIND_DELETE},
{"rebindkeypad", REBIND_KEYPAD},
#ifdef HAVE_REGEX_H
{"regexp", USE_REGEXP},
#endif
@@ -75,7 +74,7 @@ const static rcoption rcopts[] = {
{"tabsize", 0},
{"tempfile", TEMP_FILE},
{"view", VIEW_MODE},
#ifndef NANO_SMALL
#ifndef NANO_TINY
{"autoindent", AUTOINDENT},
{"backup", BACKUP_FILE},
{"backupdir", 0},
@@ -83,19 +82,25 @@ const static rcoption rcopts[] = {
{"casesensitive", CASE_SENSITIVE},
{"cut", CUT_TO_END},
{"historylog", HISTORYLOG},
{"matchbrackets", 0},
{"noconvert", NO_CONVERT},
{"quickblank", QUICK_BLANK},
{"smarthome", SMART_HOME},
{"smooth", SMOOTH_SCROLL},
{"tabstospaces", TABS_TO_SPACES},
{"whitespace", 0},
{"wordbounds", WORD_BOUNDS},
#endif
{NULL, 0}
};
static bool errors = FALSE;
/* Whether we got any errors while parsing an rcfile. */
static size_t lineno = 0;
/* If we did, the line number where the current error
* occurred. */
static char *nanorc = NULL;
/* The path to the rcfile we're parsing. */
#ifdef ENABLE_COLOR
static syntaxtype *endsyntax = NULL;
/* The end of the list of syntaxes. */
@@ -104,7 +109,7 @@ static colortype *endcolor = NULL;
#endif
/* 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. */
* make the user hit Enter to continue starting nano. */
void rcfile_error(const char *msg, ...)
{
va_list ap;
@@ -112,8 +117,7 @@ void rcfile_error(const char *msg, ...)
fprintf(stderr, "\n");
if (lineno > 0) {
errors = TRUE;
fprintf(stderr, _("Error in %s on line %lu: "), nanorc,
(unsigned long)lineno);
fprintf(stderr, _("Error in %s on line %lu: "), nanorc, (unsigned long)lineno);
}
va_start(ap, msg);
@@ -142,16 +146,13 @@ char *parse_next_word(char *ptr)
return ptr;
}
/* The keywords operatingdir, backupdir, fill, tabsize, speller, punct,
* brackets, quotestr, and whitespace take an argument when set. Among
* these, operatingdir, backupdir, speller, punct, brackets, quotestr,
* and whitespace have to allow tabs and spaces in the argument. Thus,
* if the next word starts with a ", we say it ends with the last " of
* the line. Otherwise, the word is interpreted as usual. That is so
* the arguments can contain "s too. */
/* Parse an argument, with optional quotes, after a keyword that takes
* one. If the next word starts with a ", we say that it ends with the
* last " of the line. Otherwise, we interpret it as usual, so that the
* arguments can contain "'s too. */
char *parse_argument(char *ptr)
{
const char *ptr_bak = ptr;
const char *ptr_save = ptr;
char *last_quote = NULL;
assert(ptr != NULL);
@@ -170,7 +171,7 @@ char *parse_argument(char *ptr)
ptr = NULL;
else
*ptr++ = '\0';
rcfile_error(N_("Argument %s has unterminated \""), ptr_bak);
rcfile_error(N_("Argument '%s' has an unterminated \""), ptr_save);
} else {
*last_quote = '\0';
ptr = last_quote + 1;
@@ -182,43 +183,7 @@ char *parse_argument(char *ptr)
}
#ifdef ENABLE_COLOR
int color_to_int(const char *colorname, bool *bright)
{
int mcolor = -1;
assert(colorname != NULL && bright != NULL);
if (strncasecmp(colorname, "bright", 6) == 0) {
*bright = TRUE;
colorname += 6;
}
if (strcasecmp(colorname, "green") == 0)
mcolor = COLOR_GREEN;
else if (strcasecmp(colorname, "red") == 0)
mcolor = COLOR_RED;
else if (strcasecmp(colorname, "blue") == 0)
mcolor = COLOR_BLUE;
else if (strcasecmp(colorname, "white") == 0)
mcolor = COLOR_WHITE;
else if (strcasecmp(colorname, "yellow") == 0)
mcolor = COLOR_YELLOW;
else if (strcasecmp(colorname, "cyan") == 0)
mcolor = COLOR_CYAN;
else if (strcasecmp(colorname, "magenta") == 0)
mcolor = COLOR_MAGENTA;
else if (strcasecmp(colorname, "black") == 0)
mcolor = COLOR_BLACK;
else
rcfile_error(N_("Color %s not understood.\n"
"Valid colors are \"green\", \"red\", \"blue\",\n"
"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
"\"black\", with the optional prefix \"bright\"\n"
"for foreground colors."), colorname);
return mcolor;
}
/* Parse the next regex string from the line at ptr, and return it. */
char *parse_next_regex(char *ptr)
{
assert(ptr != NULL);
@@ -246,27 +211,33 @@ char *parse_next_regex(char *ptr)
return ptr;
}
/* Compile the regular expression regex to preg. Return FALSE on
* success, or TRUE if the expression is invalid. */
bool nregcomp(regex_t *preg, const char *regex, int eflags)
/* Compile the regular expression regex to see if it's valid. Return
* TRUE if it is, or FALSE otherwise. */
bool nregcomp(const char *regex, int eflags)
{
int rc = regcomp(preg, regex, REG_EXTENDED | eflags);
regex_t preg;
int rc = regcomp(&preg, regex, REG_EXTENDED | eflags);
if (rc != 0) {
size_t len = regerror(rc, preg, NULL, 0);
size_t len = regerror(rc, &preg, NULL, 0);
char *str = charalloc(len);
regerror(rc, preg, str, len);
regerror(rc, &preg, str, len);
rcfile_error(N_("Bad regex \"%s\": %s"), regex, str);
free(str);
}
return (rc != 0);
regfree(&preg);
return (rc == 0);
}
/* Parse the next syntax string from the line at ptr, and add it to the
* global list of color syntaxes. */
void parse_syntax(char *ptr)
{
const char *fileregptr = NULL, *nameptr = NULL;
syntaxtype *tmpsyntax;
exttype *endext = NULL;
/* The end of the extensions list for this syntax. */
@@ -291,6 +262,19 @@ void parse_syntax(char *ptr)
if (ptr == NULL)
return;
/* Search for a duplicate syntax name. If we find one, free it, so
* that we always use the last syntax with a given name. */
for (tmpsyntax = syntaxes; tmpsyntax != NULL;
tmpsyntax = tmpsyntax->next) {
if (strcmp(nameptr, tmpsyntax->desc) == 0) {
syntaxtype *prev_syntax = tmpsyntax;
tmpsyntax = tmpsyntax->next;
free(prev_syntax);
break;
}
}
if (syntaxes == NULL) {
syntaxes = (syntaxtype *)nmalloc(sizeof(syntaxtype));
endsyntax = syntaxes;
@@ -301,15 +285,31 @@ void parse_syntax(char *ptr)
fprintf(stderr, "Adding new syntax after first one\n");
#endif
}
endsyntax->desc = mallocstrcpy(NULL, nameptr);
endsyntax->color = NULL;
endcolor = NULL;
endsyntax->extensions = NULL;
endsyntax->next = NULL;
#ifdef DEBUG
fprintf(stderr, "Starting a new syntax type: \"%s\"\n", nameptr);
#endif
/* The "none" syntax is the same as not having a syntax at all, so
* we can't assign any extensions or colors to it. */
if (strcmp(endsyntax->desc, "none") == 0) {
rcfile_error(N_("The \"none\" syntax is reserved"));
return;
}
/* The default syntax should have no associated extensions. */
if (strcmp(endsyntax->desc, "default") == 0 && *ptr != '\0') {
rcfile_error(
N_("The \"default\" syntax must take no extensions"));
return;
}
/* Now load the extensions into their part of the struct. */
while (*ptr != '\0') {
exttype *newext;
@@ -329,29 +329,138 @@ void parse_syntax(char *ptr)
break;
newext = (exttype *)nmalloc(sizeof(exttype));
if (nregcomp(&newext->val, fileregptr, REG_NOSUB))
free(newext);
else {
/* Save the extension regex if it's valid. */
if (nregcomp(fileregptr, REG_NOSUB)) {
newext->ext_regex = mallocstrcpy(NULL, fileregptr);
newext->ext = NULL;
if (endext == NULL)
endsyntax->extensions = newext;
else
endext->next = newext;
endext = newext;
endext->next = NULL;
}
} else
free(newext);
}
}
/* Parse the color stuff into the colorstrings array. If icase is TRUE,
* treat the color stuff as case insensitive. */
/* Read and parse additional syntax files. */
void parse_include(char *ptr)
{
struct stat rcinfo;
FILE *rcstream;
char *option, *full_option, *nanorc_save = nanorc;
size_t lineno_save = lineno;
option = ptr;
if (*option == '"')
option++;
ptr = parse_argument(ptr);
/* Get the specified file's full path. */
full_option = get_full_path(option);
if (full_option == NULL) {
rcfile_error(_("Error reading %s: %s"), option, strerror(errno));
goto cleanup_include;
}
/* Don't open directories, character files, or block files. */
if (stat(nanorc, &rcinfo) != -1) {
if (S_ISDIR(rcinfo.st_mode) || S_ISCHR(rcinfo.st_mode) ||
S_ISBLK(rcinfo.st_mode)) {
rcfile_error(S_ISDIR(rcinfo.st_mode) ?
_("\"%s\" is a directory") :
_("\"%s\" is a device file"), nanorc);
goto cleanup_include;
}
}
/* Open the new syntax file. */
if ((rcstream = fopen(full_option, "rb")) == NULL) {
rcfile_error(_("Error reading %s: %s"), full_option,
strerror(errno));
goto cleanup_include;
}
/* Use the name and line number position of the new syntax file
* while parsing it, so we can know where any errors in it are. */
nanorc = full_option;
lineno = 0;
parse_rcfile(rcstream
#ifdef ENABLE_COLOR
, TRUE
#endif
);
/* We're done with the new syntax file. Restore the original
* filename and line number position. */
nanorc = nanorc_save;
lineno = lineno_save;
cleanup_include:
free(full_option);
}
/* Return the short value corresponding to the color named in colorname,
* and set bright to TRUE if that color is bright. */
short color_to_short(const char *colorname, bool *bright)
{
short mcolor = -1;
assert(colorname != NULL && bright != NULL);
if (strncasecmp(colorname, "bright", 6) == 0) {
*bright = TRUE;
colorname += 6;
}
if (strcasecmp(colorname, "green") == 0)
mcolor = COLOR_GREEN;
else if (strcasecmp(colorname, "red") == 0)
mcolor = COLOR_RED;
else if (strcasecmp(colorname, "blue") == 0)
mcolor = COLOR_BLUE;
else if (strcasecmp(colorname, "white") == 0)
mcolor = COLOR_WHITE;
else if (strcasecmp(colorname, "yellow") == 0)
mcolor = COLOR_YELLOW;
else if (strcasecmp(colorname, "cyan") == 0)
mcolor = COLOR_CYAN;
else if (strcasecmp(colorname, "magenta") == 0)
mcolor = COLOR_MAGENTA;
else if (strcasecmp(colorname, "black") == 0)
mcolor = COLOR_BLACK;
else
rcfile_error(N_("Color \"%s\" not understood.\n"
"Valid colors are \"green\", \"red\", \"blue\",\n"
"\"white\", \"yellow\", \"cyan\", \"magenta\" and\n"
"\"black\", with the optional prefix \"bright\"\n"
"for foreground colors."), colorname);
return mcolor;
}
/* Parse the color string in the line at ptr, and add it to the current
* file's associated colors. If icase is TRUE, treat the color string
* as case insensitive. */
void parse_colors(char *ptr, bool icase)
{
int fg, bg;
short fg, bg;
bool bright = FALSE, no_fgcolor = FALSE;
char *fgstr;
assert(ptr != NULL);
if (syntaxes == NULL) {
rcfile_error(
N_("Cannot add a color command without a syntax command"));
return;
}
if (*ptr == '\0') {
rcfile_error(N_("Missing color name"));
return;
@@ -373,16 +482,16 @@ void parse_colors(char *ptr, bool icase)
}
if (strncasecmp(bgcolorname, "bright", 6) == 0) {
rcfile_error(
N_("Background color %s cannot be bright"),
N_("Background color \"%s\" cannot be bright"),
bgcolorname);
return;
}
bg = color_to_int(bgcolorname, &bright);
bg = color_to_short(bgcolorname, &bright);
} else
bg = -1;
if (!no_fgcolor) {
fg = color_to_int(fgstr, &bright);
fg = color_to_short(fgstr, &bright);
/* Don't try to parse screwed-up foreground colors. */
if (fg == -1)
@@ -390,12 +499,6 @@ void parse_colors(char *ptr, bool icase)
} else
fg = -1;
if (syntaxes == NULL) {
rcfile_error(
N_("Cannot add a color directive without a syntax line"));
return;
}
if (*ptr == '\0') {
rcfile_error(N_("Missing regex string"));
return;
@@ -425,34 +528,45 @@ void parse_colors(char *ptr, bool icase)
ptr++;
newcolor = (colortype *)nmalloc(sizeof(colortype));
fgstr = ptr;
ptr = parse_next_regex(ptr);
if (ptr == NULL)
break;
if (nregcomp(&newcolor->start, fgstr, icase ? REG_ICASE : 0)) {
free(newcolor);
cancelled = TRUE;
} else {
newcolor = (colortype *)nmalloc(sizeof(colortype));
/* Save the starting regex string if it's valid, and set up the
* color information. */
if (nregcomp(fgstr, icase ? REG_ICASE : 0)) {
newcolor->fg = fg;
newcolor->bg = bg;
newcolor->bright = bright;
newcolor->next = NULL;
newcolor->icase = icase;
newcolor->start_regex = mallocstrcpy(NULL, fgstr);
newcolor->start = NULL;
newcolor->end_regex = NULL;
newcolor->end = NULL;
newcolor->next = NULL;
if (endcolor == NULL) {
endsyntax->color = newcolor;
#ifdef DEBUG
fprintf(stderr, "Starting a new colorstring for fg %d, bg %d\n", fg, bg);
fprintf(stderr, "Starting a new colorstring for fg %hd, bg %hd\n", fg, bg);
#endif
} else {
#ifdef DEBUG
fprintf(stderr, "Adding new entry for fg %d, bg %d\n", fg, bg);
fprintf(stderr, "Adding new entry for fg %hd, bg %hd\n", fg, bg);
#endif
endcolor->next = newcolor;
}
endcolor = newcolor;
} else {
free(newcolor);
cancelled = TRUE;
}
if (expectend) {
@@ -480,18 +594,22 @@ void parse_colors(char *ptr, bool icase)
if (cancelled)
continue;
newcolor->end = (regex_t *)nmalloc(sizeof(regex_t));
if (nregcomp(newcolor->end, fgstr, icase ? REG_ICASE : 0)) {
free(newcolor->end);
newcolor->end = NULL;
}
/* Save the ending regex string if it's valid. */
newcolor->end_regex = (nregcomp(fgstr, icase ? REG_ICASE :
0)) ? mallocstrcpy(NULL, fgstr) : NULL;
}
}
}
#endif /* ENABLE_COLOR */
/* Parse the rcfile, once it has been opened successfully. */
void parse_rcfile(FILE *rcstream)
/* Parse the rcfile, once it has been opened successfully at rcstream,
* and close it afterwards. If syntax_only is TRUE, only allow the file
* to contain color syntax commands: syntax, color, and icolor. */
void parse_rcfile(FILE *rcstream
#ifdef ENABLE_COLOR
, bool syntax_only
#endif
)
{
char *buf = NULL;
ssize_t len;
@@ -499,10 +617,12 @@ void parse_rcfile(FILE *rcstream)
while ((len = getline(&buf, &n, rcstream)) > 0) {
char *ptr, *keyword, *option;
int set = 0, i;
int set = 0;
size_t i;
/* Ignore the \n. */
buf[len - 1] = '\0';
/* Ignore the newline. */
if (buf[len - 1] == '\n')
buf[len - 1] = '\0';
lineno++;
ptr = buf;
@@ -519,20 +639,45 @@ void parse_rcfile(FILE *rcstream)
ptr = parse_next_word(ptr);
/* Try to parse the keyword. */
if (strcasecmp(keyword, "set") == 0)
set = 1;
else if (strcasecmp(keyword, "unset") == 0)
set = -1;
if (strcasecmp(keyword, "set") == 0) {
#ifdef ENABLE_COLOR
else if (strcasecmp(keyword, "syntax") == 0)
if (syntax_only)
rcfile_error(
N_("Command \"%s\" not allowed in included file"),
keyword);
else
#endif
set = 1;
} else if (strcasecmp(keyword, "unset") == 0) {
#ifdef ENABLE_COLOR
if (syntax_only)
rcfile_error(
N_("Command \"%s\" not allowed in included file"),
keyword);
else
#endif
set = -1;
}
#ifdef ENABLE_COLOR
else if (strcasecmp(keyword, "include") == 0) {
if (syntax_only)
rcfile_error(
N_("Command \"%s\" not allowed in included file"),
keyword);
else
parse_include(ptr);
} else if (strcasecmp(keyword, "syntax") == 0) {
if (endsyntax != NULL && endcolor == NULL)
rcfile_error(N_("Syntax \"%s\" has no color commands"),
endsyntax->desc);
parse_syntax(ptr);
else if (strcasecmp(keyword, "color") == 0)
} else if (strcasecmp(keyword, "color") == 0)
parse_colors(ptr, FALSE);
else if (strcasecmp(keyword, "icolor") == 0)
parse_colors(ptr, TRUE);
#endif /* ENABLE_COLOR */
else
rcfile_error(N_("Command %s not understood"), keyword);
rcfile_error(N_("Command \"%s\" not understood"), keyword);
if (set == 0)
continue;
@@ -557,10 +702,10 @@ void parse_rcfile(FILE *rcstream)
SET(rcopts[i].flag);
else {
/* This option doesn't have a flag, so it takes
* an argument. */
* an argument. */
if (*ptr == '\0') {
rcfile_error(
N_("Option %s requires an argument"),
N_("Option \"%s\" requires an argument"),
rcopts[i].name);
break;
}
@@ -591,15 +736,25 @@ void parse_rcfile(FILE *rcstream)
if (strcasecmp(rcopts[i].name, "fill") == 0) {
if (!parse_num(option, &wrap_at)) {
rcfile_error(
N_("Requested fill size %s invalid"),
N_("Requested fill size \"%s\" is invalid"),
option);
wrap_at = -CHARS_FROM_EOL;
} else
free(option);
} else
#endif
#ifndef NANO_SMALL
if (strcasecmp(rcopts[i].name, "whitespace") == 0) {
#ifndef NANO_TINY
if (strcasecmp(rcopts[i].name,
"matchbrackets") == 0) {
matchbrackets = option;
if (has_blank_mbchars(matchbrackets)) {
rcfile_error(
N_("Non-blank characters required"));
free(matchbrackets);
matchbrackets = NULL;
}
} else if (strcasecmp(rcopts[i].name,
"whitespace") == 0) {
whitespace = option;
if (mbstrlen(whitespace) != 2 ||
strlenpt(whitespace) != 2) {
@@ -610,11 +765,10 @@ void parse_rcfile(FILE *rcstream)
} else {
whitespace_len[0] =
parse_mbchar(whitespace, NULL,
NULL, NULL);
NULL);
whitespace_len[1] =
parse_mbchar(whitespace +
whitespace_len[0], NULL,
NULL, NULL);
whitespace_len[0], NULL, NULL);
}
} else
#endif
@@ -641,7 +795,7 @@ void parse_rcfile(FILE *rcstream)
quotestr = option;
else
#endif
#ifndef NANO_SMALL
#ifndef NANO_TINY
if (strcasecmp(rcopts[i].name,
"backupdir") == 0)
backup_dir = option;
@@ -657,7 +811,7 @@ void parse_rcfile(FILE *rcstream)
if (!parse_num(option, &tabsize) ||
tabsize <= 0) {
rcfile_error(
N_("Requested tab size %s invalid"),
N_("Requested tab size \"%s\" is invalid"),
option);
tabsize = -1;
} else
@@ -671,15 +825,19 @@ void parse_rcfile(FILE *rcstream)
} else if (rcopts[i].flag != 0)
UNSET(rcopts[i].flag);
else
rcfile_error(N_("Cannot unset flag %s"),
rcfile_error(N_("Cannot unset flag \"%s\""),
rcopts[i].name);
break;
}
}
if (rcopts[i].name == NULL)
rcfile_error(N_("Unknown flag %s"), option);
rcfile_error(N_("Unknown flag \"%s\""), option);
}
if (endsyntax != NULL && endcolor == NULL)
rcfile_error(N_("Syntax \"%s\" has no color commands"),
endsyntax->desc);
free(buf);
fclose(rcstream);
lineno = 0;
@@ -687,7 +845,7 @@ void parse_rcfile(FILE *rcstream)
if (errors) {
errors = FALSE;
fprintf(stderr,
_("\nPress Return to continue starting nano\n"));
_("\nPress Enter to continue starting nano.\n"));
while (getchar() != '\n')
;
}
@@ -695,20 +853,32 @@ void parse_rcfile(FILE *rcstream)
return;
}
/* The main rc file function, tries to open the rc file */
/* The main rcfile function. It tries to open the system-wide rcfile,
* followed by the current user's rcfile. */
void do_rcfile(void)
{
struct stat rcinfo;
FILE *rcstream;
#ifdef SYSCONFDIR
assert(sizeof(SYSCONFDIR) == strlen(SYSCONFDIR) + 1);
nanorc = mallocstrcpy(nanorc, SYSCONFDIR "/nanorc");
/* Don't open directories, character files, or block files. */
if (stat(nanorc, &rcinfo) != -1) {
if (S_ISDIR(rcinfo.st_mode) || S_ISCHR(rcinfo.st_mode) ||
S_ISBLK(rcinfo.st_mode))
rcfile_error(S_ISDIR(rcinfo.st_mode) ?
_("\"%s\" is a directory") :
_("\"%s\" is a device file"), nanorc);
}
/* Try to open the system-wide nanorc. */
rcstream = fopen(nanorc, "r");
rcstream = fopen(nanorc, "rb");
if (rcstream != NULL)
parse_rcfile(rcstream);
parse_rcfile(rcstream
#ifdef ENABLE_COLOR
, FALSE
#endif
);
#if defined(DISABLE_ROOTWRAP) && !defined(DISABLE_WRAPPING)
/* We've already read SYSCONFDIR/nanorc, if it's there. If we're
@@ -725,15 +895,29 @@ void do_rcfile(void)
else {
nanorc = charealloc(nanorc, strlen(homedir) + 9);
sprintf(nanorc, "%s/.nanorc", homedir);
rcstream = fopen(nanorc, "r");
/* Don't open directories, character files, or block files. */
if (stat(nanorc, &rcinfo) != -1) {
if (S_ISDIR(rcinfo.st_mode) || S_ISCHR(rcinfo.st_mode) ||
S_ISBLK(rcinfo.st_mode))
rcfile_error(S_ISDIR(rcinfo.st_mode) ?
_("\"%s\" is a directory") :
_("\"%s\" is a device file"), nanorc);
}
/* Try to open the current user's nanorc. */
rcstream = fopen(nanorc, "rb");
if (rcstream == NULL) {
/* Don't complain about the file's not existing. */
if (errno != ENOENT)
rcfile_error(N_("Error reading %s: %s"), nanorc,
strerror(errno));
} else
parse_rcfile(rcstream);
parse_rcfile(rcstream
#ifdef ENABLE_COLOR
, FALSE
#endif
);
}
free(nanorc);

File diff suppressed because it is too large Load Diff

2456
src/text.c Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,8 @@
/**************************************************************************
* utils.c *
* *
* Copyright (C) 1999-2005 Chris Allegretta *
* Copyright (C) 1999-2004 Chris Allegretta *
* Copyright (C) 2005-2006 David Lawrence Ramsey *
* 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) *
@@ -20,49 +21,22 @@
* *
**************************************************************************/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "proto.h"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h>
#include <pwd.h>
#include <ctype.h>
#include <errno.h>
#include <assert.h>
#include "proto.h"
#ifdef HAVE_REGEX_H
#ifdef BROKEN_REGEXEC
/* Work around a potential segfault in glibc 2.2.3's regexec(). */
int safe_regexec(const regex_t *preg, const char *string, size_t nmatch,
regmatch_t pmatch[], int eflags)
{
if (string != NULL && *string != '\0')
return regexec(preg, string, nmatch, pmatch, eflags);
return REG_NOMATCH;
}
#endif
int regexp_bol_or_eol(const regex_t *preg, const char *string)
{
return (regexec(preg, string, 0, NULL, 0) == 0 &&
regexec(preg, string, 0, NULL, REG_NOTBOL | REG_NOTEOL) ==
REG_NOMATCH);
}
#endif /* HAVE_REGEX_H */
/* Return the number of decimal digits in n. */
int digits(size_t n)
{
int i = 1;
int i;
while (n > 10) {
n /= 10;
i++;
}
for (i = 1; n >= 10; n /= 10, i++)
;
return i;
}
@@ -105,9 +79,9 @@ bool parse_num(const char *str, ssize_t *val)
return TRUE;
}
/* Read an int and a ssize_t, separated by a comma, from str, and store
* them in *line and *column (if they're not both NULL). On error, we
* return FALSE. Otherwise, we return TRUE. */
/* Read two ssize_t's, separated by a comma, from str, and store them in
* *line and *column (if they're not both NULL). Return FALSE on error,
* or TRUE otherwise. */
bool parse_line_column(const char *str, ssize_t *line, ssize_t *column)
{
bool retval = TRUE;
@@ -118,7 +92,7 @@ bool parse_line_column(const char *str, ssize_t *line, ssize_t *column)
comma = strchr(str, ',');
if (comma != NULL && column != NULL) {
if (!parse_num(str + (comma - str + 1), column))
if (!parse_num(comma + 1, column))
retval = FALSE;
}
@@ -180,10 +154,33 @@ void sunder(char *str)
}
}
#if !defined(NANO_SMALL) && defined(ENABLE_NANORC)
/* These functions, ngetline() (originally getline()) and ngetdelim()
* (originally getdelim()), were adapted from GNU mailutils 0.5
* (mailbox/getline.c). Here is the notice from that file, after
* converting to the GPL via LGPL clause 3, and with the Free Software
* Foundation's address updated:
*
* GNU Mailutils -- a suite of utilities for electronic mail
* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
*
* This library 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 library 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., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301, USA. */
#if !defined(NANO_TINY) && defined(ENABLE_NANORC)
#ifndef HAVE_GETLINE
/* This function is equivalent to getline(). It was adapted from
* GNU mailutils' getline() function. */
/* This function is equivalent to getline(). */
ssize_t ngetline(char **lineptr, size_t *n, FILE *stream)
{
return getdelim(lineptr, n, '\n', stream);
@@ -191,16 +188,18 @@ ssize_t ngetline(char **lineptr, size_t *n, FILE *stream)
#endif
#ifndef HAVE_GETDELIM
/* This function is equivalent to getdelim(). It was adapted from
* GNU mailutils' getdelim() function. */
/* This function is equivalent to getdelim(). */
ssize_t ngetdelim(char **lineptr, size_t *n, int delim, FILE *stream)
{
size_t indx = 0;
int c;
/* Sanity checks. */
if (lineptr == NULL || n == NULL || stream == NULL)
if (lineptr == NULL || n == NULL || stream == NULL ||
fileno(stream) == -1) {
errno = EINVAL;
return -1;
}
/* Allocate the line the first time. */
if (*lineptr == NULL) {
@@ -215,7 +214,7 @@ ssize_t ngetdelim(char **lineptr, size_t *n, int delim, FILE *stream)
*n += MAX_BUF_SIZE;
}
/* Push the result in the line. */
/* Put the result in the line. */
(*lineptr)[indx++] = (char)c;
/* Bail out. */
@@ -233,12 +232,50 @@ ssize_t ngetdelim(char **lineptr, size_t *n, int delim, FILE *stream)
null_at(lineptr, indx++);
*n = indx;
/* The last line may not have the delimiter, we have to return what
* we got and the error will be seen on the next iteration. */
/* The last line may not have the delimiter. We have to return what
* we got, and the error will be seen on the next iteration. */
return (c == EOF && (indx - 1) == 0) ? -1 : indx - 1;
}
#endif
#endif /* !NANO_SMALL && ENABLE_NANORC */
#endif /* !NANO_TINY && ENABLE_NANORC */
#ifdef HAVE_REGEX_H
/* Do the compiled regex in preg and the regex in string match the
* beginning or end of a line? */
bool regexp_bol_or_eol(const regex_t *preg, const char *string)
{
return (regexec(preg, string, 0, NULL, 0) == 0 &&
regexec(preg, string, 0, NULL, REG_NOTBOL | REG_NOTEOL) ==
REG_NOMATCH);
}
#endif
#ifndef DISABLE_SPELLER
/* Is the word starting at position pos in buf a whole word? */
bool is_whole_word(size_t pos, const char *buf, const char *word)
{
char *p = charalloc(mb_cur_max()), *r = charalloc(mb_cur_max());
size_t word_end = pos + strlen(word);
bool retval;
assert(buf != NULL && pos <= strlen(buf) && word != NULL);
parse_mbchar(buf + move_mbleft(buf, pos), p, NULL);
parse_mbchar(buf + word_end, r, NULL);
/* If we're at the beginning of the line or the character before the
* word isn't a non-punctuation "word" character, and if we're at
* the end of the line or the character after the word isn't a
* non-punctuation "word" character, we have a whole word. */
retval = (pos == 0 || !is_word_mbchar(p, FALSE)) &&
(word_end == strlen(buf) || !is_word_mbchar(r, FALSE));
free(p);
free(r);
return retval;
}
#endif /* !DISABLE_SPELLER */
/* If we are searching backwards, we will find the last match that
* starts no later than start. Otherwise we find the first match
@@ -258,7 +295,7 @@ const char *strstrwrapper(const char *haystack, const char *needle,
#ifdef HAVE_REGEX_H
if (ISSET(USE_REGEXP)) {
#ifndef NANO_SMALL
#ifndef NANO_TINY
if (ISSET(BACKWARDS_SEARCH)) {
if (regexec(&search_regexp, haystack, 1, regmatches,
0) == 0 && haystack + regmatches[0].rm_so <= start) {
@@ -276,7 +313,7 @@ const char *strstrwrapper(const char *haystack, const char *needle,
return retval;
}
} else
#endif /* !NANO_SMALL */
#endif /* !NANO_TINY */
if (regexec(&search_regexp, start, 10, regmatches,
(start > haystack) ? REG_NOTBOL : 0) == 0) {
const char *retval = start + regmatches[0].rm_so;
@@ -287,37 +324,37 @@ const char *strstrwrapper(const char *haystack, const char *needle,
return NULL;
}
#endif /* HAVE_REGEX_H */
#if !defined(NANO_SMALL) || !defined(DISABLE_SPELLER)
#if !defined(NANO_TINY) || !defined(DISABLE_SPELLER)
if (ISSET(CASE_SENSITIVE)) {
#ifndef NANO_SMALL
#ifndef NANO_TINY
if (ISSET(BACKWARDS_SEARCH))
return revstrstr(haystack, needle, start);
else
#endif
return strstr(start, needle);
}
#endif /* !DISABLE_SPELLER || !NANO_SMALL */
#ifndef NANO_SMALL
#endif /* !DISABLE_SPELLER || !NANO_TINY */
#ifndef NANO_TINY
else if (ISSET(BACKWARDS_SEARCH))
return mbrevstrcasestr(haystack, needle, start);
#endif
return mbstrcasestr(start, needle);
}
/* This is a wrapper for the perror() function. The wrapper takes care
* of curses, calls perror() (which writes to stderr), and then
* refreshes the screen. Note that nperror() causes the window to
* flicker once. */
/* This is a wrapper for the perror() function. The wrapper temporarily
* leaves curses mode, calls perror() (which writes to stderr), and then
* reenters curses mode, updating the screen in the process. Note that
* nperror() causes the window to flicker once. */
void nperror(const char *s)
{
/* Leave curses mode and go to the terminal. */
if (endwin() != ERR) {
perror(s); /* Print the error. */
total_refresh(); /* Return to curses and refresh. */
}
endwin();
perror(s);
doupdate();
}
/* Thanks, BG, many people have been asking for this... */
/* This is a wrapper for the malloc() function that properly handles
* things when we run out of memory. Thanks, BG, many people have been
* asking for this... */
void *nmalloc(size_t howmuch)
{
void *r = malloc(howmuch);
@@ -328,6 +365,8 @@ void *nmalloc(size_t howmuch)
return r;
}
/* This is a wrapper for the realloc() function that properly handles
* things when we run out of memory. */
void *nrealloc(void *ptr, size_t howmuch)
{
void *r = realloc(ptr, howmuch);
@@ -372,103 +411,202 @@ char *mallocstrassn(char *dest, char *src)
return src;
}
/* nano scrolls horizontally within a line in chunks. Return the column
* number of the first character displayed in the edit window when the
* cursor is at the given column. Note that (0 <= column -
* get_page_start(column) < COLS). */
size_t get_page_start(size_t column)
{
if (column == 0 || column < COLS - 1)
return 0;
else if (COLS > 8)
return column - 7 - (column - 7) % (COLS - 8);
else
return column - (COLS - 2);
}
/* Return the placewewant associated with current_x, i.e, the zero-based
* column position of the cursor. The value will be no smaller than
* current_x. */
size_t xplustabs(void)
{
return strnlenpt(openfile->current->data, openfile->current_x);
}
/* Return the index in s of the character displayed at the given column,
* i.e, the largest value such that strnlenpt(s, actual_x(s, column)) <=
* column. */
size_t actual_x(const char *s, size_t column)
{
size_t i = 0;
/* The position in s, returned. */
size_t len = 0;
/* The screen display width to s[i]. */
assert(s != NULL);
while (*s != '\0') {
int s_len = parse_mbchar(s, NULL, &len);
if (len > column)
break;
i += s_len;
s += s_len;
}
return i;
}
/* A strnlen() with tabs and multicolumn characters factored in, similar
* to xplustabs(). How many columns wide are the first maxlen characters
* of s? */
size_t strnlenpt(const char *s, size_t maxlen)
{
size_t len = 0;
/* The screen display width to s[i]. */
if (maxlen == 0)
return 0;
assert(s != NULL);
while (*s != '\0') {
int s_len = parse_mbchar(s, NULL, &len);
s += s_len;
if (maxlen <= s_len)
break;
maxlen -= s_len;
}
return len;
}
/* A strlen() with tabs and multicolumn characters factored in, similar
* to xplustabs(). How many columns wide is s? */
size_t strlenpt(const char *s)
{
return strnlenpt(s, (size_t)-1);
}
/* Append a new magicline to filebot. */
void new_magicline(void)
{
filebot->next = (filestruct *)nmalloc(sizeof(filestruct));
filebot->next->data = mallocstrcpy(NULL, "");
filebot->next->prev = filebot;
filebot->next->next = NULL;
filebot->next->lineno = filebot->lineno + 1;
filebot = filebot->next;
totlines++;
totsize++;
openfile->filebot->next = (filestruct *)nmalloc(sizeof(filestruct));
openfile->filebot->next->data = mallocstrcpy(NULL, "");
openfile->filebot->next->prev = openfile->filebot;
openfile->filebot->next->next = NULL;
openfile->filebot->next->lineno = openfile->filebot->lineno + 1;
openfile->filebot = openfile->filebot->next;
openfile->totsize++;
}
#ifndef NANO_SMALL
#ifndef NANO_TINY
/* Remove the magicline from filebot, if there is one and it isn't the
* only line in the file. */
* only line in the file. Assume that edittop and current are not at
* filebot. */
void remove_magicline(void)
{
if (filebot->data[0] == '\0' && filebot->prev != NULL) {
filebot = filebot->prev;
free_filestruct(filebot->next);
filebot->next = NULL;
totlines--;
totsize--;
if (openfile->filebot->data[0] == '\0' &&
openfile->filebot != openfile->fileage) {
assert(openfile->filebot != openfile->edittop && openfile->filebot != openfile->current);
openfile->filebot = openfile->filebot->prev;
free_filestruct(openfile->filebot->next);
openfile->filebot->next = NULL;
openfile->totsize--;
}
}
/* Set top_x and bot_x to the top and bottom x-coordinates of the mark,
* respectively, based on the locations of top and bot. If
* right_side_up isn't NULL, set it to TRUE If the mark begins with
* (mark_beginbuf, mark_beginx) and ends with (current, current_x), or
* (mark_begin, mark_begin_x) and ends with (current, current_x), or
* FALSE otherwise. */
void mark_order(const filestruct **top, size_t *top_x, const filestruct
**bot, size_t *bot_x, bool *right_side_up)
{
assert(top != NULL && top_x != NULL && bot != NULL && bot_x != NULL);
if ((current->lineno == mark_beginbuf->lineno && current_x >
mark_beginx) || current->lineno > mark_beginbuf->lineno) {
*top = mark_beginbuf;
*top_x = mark_beginx;
*bot = current;
*bot_x = current_x;
if ((openfile->current->lineno == openfile->mark_begin->lineno &&
openfile->current_x > openfile->mark_begin_x) ||
openfile->current->lineno > openfile->mark_begin->lineno) {
*top = openfile->mark_begin;
*top_x = openfile->mark_begin_x;
*bot = openfile->current;
*bot_x = openfile->current_x;
if (right_side_up != NULL)
*right_side_up = TRUE;
} else {
*bot = mark_beginbuf;
*bot_x = mark_beginx;
*top = current;
*top_x = current_x;
*bot = openfile->mark_begin;
*bot_x = openfile->mark_begin_x;
*top = openfile->current;
*top_x = openfile->current_x;
if (right_side_up != NULL)
*right_side_up = FALSE;
}
}
#endif
/* Calculate the number of lines and the number of characters between
* begin and end, and return them in lines and size, respectively. */
void get_totals(const filestruct *begin, const filestruct *end, size_t
*lines, size_t *size)
/* Calculate the number of characters between begin and end, and return
* it. */
size_t get_totsize(const filestruct *begin, const filestruct *end)
{
size_t totsize = 0;
const filestruct *f;
if (lines != NULL)
*lines = 0;
if (size != NULL)
*size = 0;
/* Go through the lines from begin to end->prev, if we can. */
for (f = begin; f != NULL && f != end; f = f->next) {
/* Count this line. */
if (lines != NULL)
(*lines)++;
for (f = begin; f != end && f != NULL; f = f->next) {
/* Count the number of characters on this line. */
if (size != NULL) {
*size += mbstrlen(f->data);
totsize += mbstrlen(f->data);
/* Count the newline if we have one. */
if (f->next != NULL)
(*size)++;
}
/* Count the newline if we have one. */
if (f->next != NULL)
totsize++;
}
/* Go through the line at end, if we can. */
if (f != NULL) {
/* Count this line. */
if (lines != NULL)
(*lines)++;
/* Count the number of characters on this line. */
if (size != NULL) {
*size += mbstrlen(f->data);
totsize += mbstrlen(f->data);
/* Count the newline if we have one. */
if (f->next != NULL)
(*size)++;
}
/* Count the newline if we have one. */
if (f->next != NULL)
totsize++;
}
return totsize;
}
#ifdef DEBUG
/* Dump the filestruct inptr to stderr. */
void dump_filestruct(const filestruct *inptr)
{
if (inptr == openfile->fileage)
fprintf(stderr, "Dumping file buffer to stderr...\n");
else if (inptr == cutbuffer)
fprintf(stderr, "Dumping cutbuffer to stderr...\n");
else
fprintf(stderr, "Dumping a buffer to stderr...\n");
while (inptr != NULL) {
fprintf(stderr, "(%ld) %s\n", (long)inptr->lineno, inptr->data);
inptr = inptr->next;
}
}
/* Dump the current buffer's filestruct to stderr in reverse. */
void dump_filestruct_reverse(void)
{
const filestruct *fileptr = openfile->filebot;
while (fileptr != NULL) {
fprintf(stderr, "(%ld) %s\n", (long)fileptr->lineno,
fileptr->data);
fileptr = fileptr->prev;
}
}
#endif /* DEBUG */

File diff suppressed because it is too large Load Diff