Compare commits

...

228 Commits

Author SHA1 Message Date
David Lawrence Ramsey
e1151561ad GNU nano 1.3.3
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1827 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-28 13:17:33 +00:00
David Lawrence Ramsey
dbde9d7577 refactor the code to search for the beginning of a paragraph a bit to
fix some inaccuracies and eliminate the need for recursion; it now uses
almost the same logic as the code to search for the end of a paragraph,
which makes it somewhat easier to understand


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1823 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-27 00:54:08 +00:00
David Lawrence Ramsey
524534405b a few last minor cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1822 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-26 15:24:16 +00:00
Jordi Mallach
21ad762998 Add a translation comment so translators use both their shortcuts as well as the English ones.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1818 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-25 22:43:09 +00:00
Jordi Mallach
d350727726 Fix XSI:ism in config.rpath.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1817 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-25 22:34:18 +00:00
David Lawrence Ramsey
91bc83a97a call justify_format() just after backup_lines() instead of inside it, so
that full justification doesn't erroneously justify non-paragraph lines
in the file


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1815 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-25 01:52:10 +00:00
David Lawrence Ramsey
537a880856 minor cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1814 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-24 22:39:24 +00:00
David Lawrence Ramsey
85529b37c6 make the former flag same_line_wrap use TRUE and FALSE, add missing part
of DB's do_wrap() tweaks (the initialization of new_line_wrap to 0), and
wrap a few overly long comments


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1813 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-22 15:38:47 +00:00
David Lawrence Ramsey
973a96be62 add minor comment fixes, and also fix a problem where the escape
sequence for F3 on the FreeBSD console wasn't interpreted properly


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1812 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-22 14:30:18 +00:00
David Lawrence Ramsey
4e1a98c9c3 fix inaccurate comment
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1810 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-15 01:48:51 +00:00
David Lawrence Ramsey
45eda52d7e do_yesno() comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1809 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-12 21:20:33 +00:00
David Lawrence Ramsey
74af3a7419 clean up main() a bit
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1808 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-12 21:03:14 +00:00
David Lawrence Ramsey
3b0729cf5d fix slightly misplaced break
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1807 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-12 02:10:07 +00:00
David Lawrence Ramsey
2b6c3018b0 remove unneeded justify_format() call from do_justify() which caused
problems if the original paragraph was one line long and ended with a
tab or tabs; unjustification would restore the justify_format()ted line
instead of the original line


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1806 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-10 01:35:02 +00:00
David Lawrence Ramsey
452513750b per CHAO Wei-Lun's patch, add missing "[dir]" and missing _()'s to the
"-E [dir]/--backupdir=[dir]" strings in usage()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1805 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-09 08:36:46 +00:00
David Lawrence Ramsey
a9a6ce09d6 justification fix: if the last line of a justified paragraph has a space
on the end of it, the space should be removed


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1804 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-05 22:09:56 +00:00
David Lawrence Ramsey
7ea39efdbd document the functions that were removed when the input routines were
converted to use state machines


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1803 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-04 22:36:42 +00:00
David Lawrence Ramsey
d8974451f0 add an extra break and move an #endif down to fix a potential problem
when NANO_SMALL is defined or KEY_RESIZE isn't, and when PDCURSES isn't
defined


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1802 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-04 22:28:55 +00:00
David Lawrence Ramsey
e65e639465 properly handle it when get_escape_seq_kbinput() returns ERR for an
escape sequence that is recognized but which should be ignored


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1801 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-04 18:18:17 +00:00
David Lawrence Ramsey
16eb518dcd support KEY_A1, KEY_A3, KEY_C1, and KEY_C3 on the numeric keypad
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1800 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-03 20:26:12 +00:00
David Lawrence Ramsey
498e13df30 document the use of the SPELL environment variable
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1799 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-01 22:56:34 +00:00
David Lawrence Ramsey
ae064bf255 don't rely on the return value of curs_set(), as it's broken on e.g.
slang; instead, explicitly turn the cursor off where we need to


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1798 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-01 20:38:00 +00:00
David Lawrence Ramsey
e7638ea75f cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1797 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-01 19:49:38 +00:00
David Lawrence Ramsey
ce1d7652f3 edit_redraw() should update when we're not on the first page and/or when
we're not on the same page as before, not just in the former case


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1796 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-01 18:32:36 +00:00
Jordi Mallach
0675c2f355 Update docs about Chinese contributor.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1795 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-01 15:29:31 +00:00
Jordi Mallach
18b583d55b 2004-06-01 Jordi Mallach <jordi@gnu.org>
* zh_TW.po: Added Chinese (Taiwan) translation by
	CHAO Wei-Lun <chaoweilun@pcmail.com.tw>.
	* LINGUAS: Added "zh_TW".


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1794 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-06-01 15:13:19 +00:00
David Lawrence Ramsey
9a527f5a17 add DB's tweaks to do_wrap(), plus a few minor bits of mine (convert
some ints to size_t's and convert the int wrapping to use TRUE and FALSE
since it's used as a boolean)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1793 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-31 14:58:59 +00:00
David Lawrence Ramsey
684b19380e fix comment inaccuracies
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1792 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-31 14:47:12 +00:00
David Lawrence Ramsey
4a80fcff4e oops; for consistency with e.g. color syntax highlighting (which, like
whitespace display, is specified in the rcfile), whitespace display
should be on by default


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1791 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-30 04:19:27 +00:00
David Lawrence Ramsey
f521b60f52 for consistency, whitespace display should be off by default, not on
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1790 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-30 03:56:52 +00:00
David Lawrence Ramsey
28260475bb add spaces to the ends of the "Overwrite" and "Different Name" prompts,
for consistency


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1789 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-30 03:23:39 +00:00
David Lawrence Ramsey
c21790d6d9 edit_redraw() fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1788 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-30 03:19:52 +00:00
David Lawrence Ramsey
be26561620 add DB's changes to allow scrolling through the help browser text with
the arrow keys as well as the paging keys


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1787 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-29 20:38:08 +00:00
David Lawrence Ramsey
b6a4b10daf document cosmetic reorganization of rcfile.c, and readd an "else" I
accidentally removed while doing it


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1786 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-29 17:20:01 +00:00
David Lawrence Ramsey
8d911991a3 add a few comment fixes and an explicit check in rcfile.c for
rcopts[i].name's being "tabsize" (to avoid a spurious error under some
circumstances about tabsize's being 0 when there's no tabsize entry in
the rcfile)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1785 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-29 17:05:52 +00:00
David Lawrence Ramsey
89bb93733a a few last cosmetic reorderings and fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1784 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-29 16:47:52 +00:00
David Lawrence Ramsey
2c62b07d2b allow the changing of closing punctuation and closing brackets (used in
justification) via the rcfile


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1783 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-29 16:38:57 +00:00
David Lawrence Ramsey
483ea32c75 add Mike Frysinger's patch (with minor modifications) to allow
displaying other characters, specified in the rcfile, for the first
characters of tabs and spaces


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1782 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-29 16:25:30 +00:00
David Lawrence Ramsey
c833d9e80f since KEEP_CUTBUFFER is only used in cut.c, make it a static variable in
cut.c instead of a flag, and unset it in other files via the new
function cutbuffer_reset()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1781 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-29 15:36:58 +00:00
David Lawrence Ramsey
12e066f9d4 fix minor omission: the smarthome option was documented in nanorc.5 as
well as nano.1


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1780 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-29 14:13:02 +00:00
David Lawrence Ramsey
9d325a03d9 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1779 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-29 03:03:52 +00:00
David Lawrence Ramsey
32e3b88e09 add some comments better explaining what is disabled in restricted mode
and why


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1778 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-29 01:20:17 +00:00
David Lawrence Ramsey
dd7cc7230e don't bother initializing the backup directory or reading $SPELL for the
alternative spell checker if we're in restricted mode, since both
backups and spell checking are disabled then


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1777 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-28 23:45:25 +00:00
David Lawrence Ramsey
3aedb36e68 check $SPELL for an alternative spell checker if we didn't get one from
the command line and/or rcfile, as Pico does


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1776 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-28 22:42:41 +00:00
David Lawrence Ramsey
570ea8969b add missing cast to char
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1775 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-28 21:02:32 +00:00
David Lawrence Ramsey
2ed225f78d overhaul the routines for movement and related things to eliminate
unneeded screen redraws


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1774 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-28 20:44:09 +00:00
David Lawrence Ramsey
48ae986730 refactor the low-level input routines into main routines that get the
input and state machines that interpret the input


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1773 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-28 17:23:33 +00:00
David Lawrence Ramsey
d12fd4b1fb add code to statusq() to *really* not allow "Full Justify" while in view
mode


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1772 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-28 15:05:56 +00:00
David Lawrence Ramsey
0aa2264687 fix problems caused by cut and paste of the do_para_end() shortcut for
the do_full_justify() shortcut: don't allow the latter to work in view
mode, and have it display its own message instead of the do_para_end()
shortcut's message


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1771 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-28 14:42:50 +00:00
David Lawrence Ramsey
2f0d03b4a2 make write_marked() always call write_file() with nonamechange set to
TRUE (and hence no longer take a namechange parameter itself) to fix a
bug where writing a selection would change the current filename, and
make die_save_file() do the same since we don't need to change the
current filename if we're writing emergency backup files


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1770 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-28 00:15:28 +00:00
David Lawrence Ramsey
228148b87a add DB's tweaks to do_enter() and remove the now-unused center_cursor()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1769 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-27 20:09:52 +00:00
David Lawrence Ramsey
c372488179 treat search_last_line as a boolean everywhere, and remove some unneeded
trailing spaces


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1768 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-27 18:39:16 +00:00
David Lawrence Ramsey
8328fc2439 properly account for padding in titlebar()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1767 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-25 23:34:43 +00:00
David Lawrence Ramsey
da141063e3 per DB's patch, make finish() accept and return void, since none of the
calls to finish() set sigage to anything other than 0 or use its return
value


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1766 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-25 19:41:11 +00:00
David Lawrence Ramsey
0d29555a13 cosmetic fix: reorder enums
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1765 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-25 02:33:27 +00:00
David Lawrence Ramsey
c279a63100 per DB's patch, also remove the now-unused center_cursor()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1764 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-25 01:49:58 +00:00
David Lawrence Ramsey
5a8995a097 per DB's patch, remove the now-unused edit_refresh_clearok()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1763 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-24 19:47:08 +00:00
David Lawrence Ramsey
32613fa3f6 comment fixes for consistency: "Meta" -> "meta"
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1762 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-24 18:40:41 +00:00
David Lawrence Ramsey
2e3aeae5bc convert do_para_search() to use an enum to specify its search type
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1761 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-24 05:52:35 +00:00
David Lawrence Ramsey
32d19ce47c comment fix for consistency: "magic line" -> "magicline"
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1760 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-24 05:05:07 +00:00
David Lawrence Ramsey
a9fcaa589a comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1759 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-24 02:58:05 +00:00
David Lawrence Ramsey
1b525e9ad6 switch test around in do_prev_word() for consistency with do_next_word()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1758 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-24 02:35:02 +00:00
David Lawrence Ramsey
4be15f0158 move do_(first|last)_line() to move.c
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1757 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-23 21:33:23 +00:00
David Lawrence Ramsey
4178db0328 comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1756 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-23 21:23:23 +00:00
David Lawrence Ramsey
1dcf36a370 add missing bit
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1755 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-23 21:17:56 +00:00
David Lawrence Ramsey
fa394047ba add DB's changes to titlebar() (with a few tweaks of mine) to make it
handle shorter screen widths better and display the filename using
display_string(), my strnlen() equivalent so the new titlebar() will
work on systems without strnlen(), and a few of DB's other minor changes
to make other display-related functions handle shorter screen widths
better, among other things


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1754 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-23 21:11:14 +00:00
David Lawrence Ramsey
bcebe325f0 cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1753 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-22 20:38:33 +00:00
David Lawrence Ramsey
14bf80399f add missing #ifdefs around prototypes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1752 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-22 20:19:15 +00:00
David Lawrence Ramsey
c7acf69cb2 add smart home key
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1751 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-22 20:15:20 +00:00
David Lawrence Ramsey
684e7ebd37 comment fix: justify_format() could have just left out a space at the
end of the line instead of removing it


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1750 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-20 14:31:15 +00:00
David Lawrence Ramsey
8e4adcdac3 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1749 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-20 03:29:33 +00:00
David Lawrence Ramsey
e608f94a6f go back to cbreak mode and disable_signals() instead of raw mode, as
disable_signals() doesn't take up much space and we need one fewer slang
workaround that way


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1748 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-19 16:04:27 +00:00
David Lawrence Ramsey
fd462b164e comment fix: ^J should be Ctrl-J
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1747 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-19 15:41:17 +00:00
David Lawrence Ramsey
837a02b256 add missing bit from DB's refactoring of do_credits(): translate the
messages in xlcredits[] after they're initialized in order to avoid an
error when compiling with -pedantic


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1746 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-18 15:23:31 +00:00
David Lawrence Ramsey
d7fd200a6a minor overhaul of terminal-related things
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1745 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-18 01:20:36 +00:00
David Lawrence Ramsey
36e363f525 and remove unneccessary initialization
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1744 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-17 20:38:00 +00:00
David Lawrence Ramsey
1cadddd111 tweak justification so that it works the same way as the current version
of Pico does


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1743 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-17 20:32:51 +00:00
David Lawrence Ramsey
7097d7b6d2 remove some unneeded edit_update()s in do_para_search() and do_justify()
per DB's patch, and simplify an if statement in do_justify()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1742 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-17 16:11:18 +00:00
David Lawrence Ramsey
1d43db879e if multibuffer support is compiled in, properly read in multiple files
at the command line even if multibuffer mode isn't turned on


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1740 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-14 17:57:00 +00:00
David Lawrence Ramsey
97133f5963 in main(), don't open the first file in quiet mode, since if we do, an
error message won't be shown if it's unreadable


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1739 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-14 17:39:19 +00:00
David Lawrence Ramsey
fda18c3935 one last comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1738 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-14 03:50:49 +00:00
David Lawrence Ramsey
d4693cb0be the last of the minor fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1737 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-14 01:17:25 +00:00
David Lawrence Ramsey
021960dfb7 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1736 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-13 23:19:01 +00:00
David Lawrence Ramsey
68a44a4905 one last minor cosmetic change
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1735 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-13 23:05:14 +00:00
David Lawrence Ramsey
f613ca78c6 minor cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1734 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-13 22:23:58 +00:00
David Lawrence Ramsey
94e7094cee minor cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1733 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-13 18:04:31 +00:00
David Lawrence Ramsey
1122c85e34 reformat the test programs in configure.ac to be on multiple lines for
greater readability, and remove unnecessary inclusion of stdio.h in the
slang tests


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1732 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-13 17:46:57 +00:00
David Lawrence Ramsey
8d3e7f3217 add support for Pico's ability to justify the entire file at once ("full
justify", accessible via ^W^J)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1731 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-13 17:28:03 +00:00
David Lawrence Ramsey
9830d7500f add isblank() equivalent and use it instead of checking for (tab or
space) all over the code, properly detect whether we have strcasestr()
and only use nstristr() if we don't, and bump up CVS build requirements
to account for setting _GNU_SOURCE when running the test programs for
both


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1730 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-13 17:19:54 +00:00
David Lawrence Ramsey
71d0a1fab3 nanorc.sample updates: add missing mouse entry, and add backupdir and
mouse entries to the nanorc sample regexes


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1729 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-08 00:06:15 +00:00
David Lawrence Ramsey
2c4c788477 fix more info page inaccuracies
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1728 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-07 18:00:20 +00:00
David Lawrence Ramsey
5aa39834aa disable "Where Is Next" in tiny mode
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1727 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-05 21:36:50 +00:00
David Lawrence Ramsey
a849ab12ea fix minor inconsistency
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1726 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-01 04:13:06 +00:00
David Lawrence Ramsey
0381c2199d clarifications to comments explaining exactly what control characters
and escape sequences are supported


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1725 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-05-01 01:21:38 +00:00
David Lawrence Ramsey
4b741b9c7b add DB's overhaul of regexp_init() and a few other regex-related bits,
and convert REGEXP_COMPILED to a static int in search.c, since it's only
used there


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1724 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-04-30 19:40:03 +00:00
David Lawrence Ramsey
d893fa946d add restricted mode, per IO ERROR's patch
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1723 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-04-30 04:49:02 +00:00
David Lawrence Ramsey
e5b2f83031 in edit_add(), do minor cosmetic reformatting and remove unused int
searched_later_lines


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1722 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-04-29 06:30:36 +00:00
David Lawrence Ramsey
d62b63492a remove another unused prototype
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1721 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-04-28 21:49:30 +00:00
David Lawrence Ramsey
b88234049d spell Christian Weisgerber's name right
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1720 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-04-27 21:06:11 +00:00
David Lawrence Ramsey
dc35cb8e16 use napms() instead of nanosleep(), as it does the same thing (aside
from taking an argument in milliseconds instead of microseconds) and
curses includes it


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1719 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-04-24 18:30:23 +00:00
David Lawrence Ramsey
0a25808f34 work around the NumLock glitch
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1718 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-04-23 18:02:37 +00:00
David Lawrence Ramsey
805547fed0 make the verbatim and escape sequence input routines use size_t's to
hold lengths, and use a properly cast nrealloc() instead of an uncast
realloc() in the former


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1717 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-04-22 03:41:04 +00:00
David Lawrence Ramsey
45108343c8 cosmetic changelog fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1716 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-04-21 23:04:55 +00:00
David Lawrence Ramsey
f38230ae6d a few more minor cleanups
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1715 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-04-21 22:25:16 +00:00
David Lawrence Ramsey
9be546b2f3 fix info page inaccuracies
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1714 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-04-20 19:19:21 +00:00
David Lawrence Ramsey
604caf3d6c DB's changes to do_delete(), and a few more minor bits
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1713 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-04-19 02:44:13 +00:00
David Lawrence Ramsey
07d3febe1b remove apparently unneeded leaveok() calls per DB's patch, and make a
few cosmetic cleanups


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1712 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-04-16 05:15:11 +00:00
David Lawrence Ramsey
e1e7cb250e fix debugging output in get_verbatim_kbinput()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1711 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-04-15 06:15:55 +00:00
David Lawrence Ramsey
edc1ea4c16 wrong place; signal_init() should be called after the input mode (cbreak
or raw) is set in order to work properly; also clarify related comments


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1710 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-04-07 01:07:50 +00:00
David Lawrence Ramsey
d7db0a6dbf the signal_init() should be called before the other input mode-changing
code in handle_sigwinch()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1709 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-04-07 00:51:41 +00:00
David Lawrence Ramsey
5520e85ee4 make sure the special control keys are handled the same way after a
continue or a window resize


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1708 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-04-07 00:44:35 +00:00
David Lawrence Ramsey
a3370c4232 miscellaneous fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1707 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-04-05 01:08:14 +00:00
David Lawrence Ramsey
befb25a4e6 Back to CVS
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1706 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-31 18:53:07 +00:00
David Lawrence Ramsey
f70f0cf6bd GNU nano 1.3.2
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1704 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-31 18:42:52 +00:00
David Lawrence Ramsey
44e7f82e0e minor tweaks; also remove the need for the JUSTIFY_MODE flag
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1703 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-30 04:17:10 +00:00
David Lawrence Ramsey
0b047c561d fix error in changelog and add missing size_t cast
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1702 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-29 23:09:08 +00:00
David Lawrence Ramsey
ce991bb3ad set the input mode before turning the keypad on, and don't turn the
keypad on in a window before that window's initialized (oddly, ncurses
didn't segfault on the latter, but slang did)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1701 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-29 18:36:39 +00:00
David Lawrence Ramsey
fd1768a902 minor bits
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1700 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-19 21:57:56 +00:00
David Lawrence Ramsey
1576d537a6 rename a few variables and make a few cosmetic cleanups
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1699 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-19 21:46:34 +00:00
David Lawrence Ramsey
7947544460 fix entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1698 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-19 20:47:57 +00:00
David Lawrence Ramsey
b977515bd7 avoid any more editbot-related segfaults by removing the last of the
references to it, as in DB's patch


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1697 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-19 02:15:42 +00:00
David Lawrence Ramsey
aca5d04f42 typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1696 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-19 01:35:57 +00:00
David Lawrence Ramsey
6aec4b85e6 fix potential memory corruption problems caused by passing answer in as
the value of def in statusq(), etc.


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1695 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-15 20:26:30 +00:00
David Lawrence Ramsey
dc10ecbbd6 revert the Meta-P and Meta-N aliases for the paragraph searches for now;
Meta-P was being interpreted as such even when it was used for the
Prepend toggle at the writeout prompt


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1694 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-15 20:03:01 +00:00
David Lawrence Ramsey
b6aa42864e add DB's similar simplification of do_prev_word() too
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1693 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-14 01:42:17 +00:00
David Lawrence Ramsey
bf3c93e268 add DB's patch to simplify do_next_word() and remove references to
editbot in it so as to avoid a segfault


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1692 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-13 19:42:58 +00:00
David Lawrence Ramsey
c6908f28b7 minor bits
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1691 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-11 02:20:25 +00:00
David Lawrence Ramsey
58924035c8 minor comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1690 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-08 19:53:11 +00:00
David Lawrence Ramsey
2a464cb07d fix error I made when porting over DB's refactored search code: the
strstr() call used in forward case-sensitive searches was using the
wrong variable, which made all such searches fail


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1689 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-07 21:16:18 +00:00
David Lawrence Ramsey
35557c555c change instances of "int main ()" to "int main(void)"
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1688 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-07 15:14:56 +00:00
David Lawrence Ramsey
221ebcdf70 remove trailing space
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1687 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-05 20:47:15 +00:00
David Lawrence Ramsey
da35251e98 wrap one reference to NANO_EXTCMD_KEY in a NANO_SMALL #ifdef
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1686 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-05 20:04:44 +00:00
David Lawrence Ramsey
a9cd41c42d minor comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1685 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-05 19:54:58 +00:00
David Lawrence Ramsey
37be3edebc remove redundant line
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1684 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-05 03:14:52 +00:00
David Lawrence Ramsey
5ae684fc81 TODO update: clarify the paragraph searching item, and add item for
filename searches in the file browser


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1683 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-04 23:48:26 +00:00
David Lawrence Ramsey
d7f5ad9786 add function key aliases for NANO_FIRSTLINE_KEY and NANO_LASTLINE_KEY,
and make sure statusbar input handles both them and NANO_HELP_FKEY
properly


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1682 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-04 19:30:53 +00:00
David Lawrence Ramsey
a619ae69bf Tom Bates' nsr-tandem-nsk port, plus a few tweaks of mine, take 2
(according to comments, including floss.h in nano.h does work)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1681 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-04 06:33:52 +00:00
David Lawrence Ramsey
8911e235ba revert the tweaked nsr-tandem-nsk port for now, pending further comment
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1680 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-03 06:00:22 +00:00
David Lawrence Ramsey
ce364e2a57 minor capitalization fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1679 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-03 01:25:46 +00:00
David Lawrence Ramsey
ea43a1dbca cosmetic #ifdef tweak
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1678 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-02 22:52:57 +00:00
David Lawrence Ramsey
b34c683f3f Tom Bates' nsr-tandem-nsk port, plus a few tweaks of mine
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1677 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-03-02 21:31:31 +00:00
David Lawrence Ramsey
ba7b1681a2 set the associated function for unjustify to 0 instead of
do_uncut_text(), since it's currently unused


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1676 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-29 20:07:14 +00:00
David Lawrence Ramsey
588ca6b79e fix typo
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1675 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-28 16:30:28 +00:00
David Lawrence Ramsey
04e42a6bcc Martin Ehmsen's backup directory patch, with a few minor changes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1674 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-28 16:24:31 +00:00
David Lawrence Ramsey
6a2877d399 add another blank line
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1673 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-28 02:08:15 +00:00
David Lawrence Ramsey
81e157cd38 fix too-long line
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1672 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-28 01:58:21 +00:00
David Lawrence Ramsey
807681ac7e add blank line
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1671 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-27 20:50:01 +00:00
David Lawrence Ramsey
281e0563c6 decouple the paragraph searching code and the justification code
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1670 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-27 18:54:04 +00:00
David Lawrence Ramsey
95b7bdbdb0 minor cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1669 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-27 03:21:23 +00:00
David Lawrence Ramsey
24ae56cd4b a few minor cleanups
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1668 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-27 03:06:28 +00:00
David Lawrence Ramsey
60b942c64f minor comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1667 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-26 21:09:28 +00:00
David Lawrence Ramsey
b55e382dfc move the leaveok() calls back to edit_refresh() from update_line()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1666 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-25 06:25:12 +00:00
David Lawrence Ramsey
3af54d3ff5 remove the redundant filestat() and replace it with stat() in the one
place it's called


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1665 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-25 04:43:27 +00:00
David Lawrence Ramsey
37853fd4ce and update the dates on the documentation
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1664 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-25 04:01:33 +00:00
David Lawrence Ramsey
475a2a7410 clarify the -T/--tabsize option in the documentation too
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1663 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-25 03:58:46 +00:00
David Lawrence Ramsey
a7c9364641 clarify the description of -T/--tabsize a bit in usage(), and add extra
{}'s to sunder() and unsunder() to make them a bit easier to read


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1662 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-25 03:19:29 +00:00
David Lawrence Ramsey
f5300af90a only include time.h in winio.c if NANO_EXTRA is defined, since we only
need it for nanosleep() in do_credits()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1661 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-24 20:48:12 +00:00
David Lawrence Ramsey
1044d74fd3 add DB's refactored search code and a few of his minor display code
changes, plus a few minor search and display fixes of mine


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1660 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-24 20:41:39 +00:00
Jordi Mallach
656dd9c7eb Updated Malay translation by Sharuzzaman Ahmat Raslan.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1657 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-24 14:01:20 +00:00
David Lawrence Ramsey
369732ff81 handle pending sigwinches better, etc.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1652 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-16 20:32:40 +00:00
David Lawrence Ramsey
795a16b959 add more intuitive Meta-key aliases for ^W^W and ^W^O
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1651 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-07 05:03:25 +00:00
David Lawrence Ramsey
b7e5cf6538 fix comment inaccuracy
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1650 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-07 03:39:48 +00:00
David Lawrence Ramsey
d390dd8ea7 minor cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1649 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-07 03:38:02 +00:00
David Lawrence Ramsey
815cba87e5 forgot a cast
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1648 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-07 03:07:01 +00:00
David Lawrence Ramsey
cb34a67ea1 make the saving of marked status in open_files->file_flags work properly
again; a tweak to the ISSET() macro in 1.3.0 to make it only return 0 or
1 broke it


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1647 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-06 21:20:05 +00:00
David Lawrence Ramsey
ee383dbd6c get_verbatim_kbinput() should use an int*, not a char*, for consistency
with get_kbinput()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1646 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-06 03:07:10 +00:00
David Lawrence Ramsey
1bc9219beb one last minor comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1645 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-03 17:36:55 +00:00
David Lawrence Ramsey
00c2054780 don't allow verbatim input in view mode
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1644 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-02-01 06:27:59 +00:00
David Lawrence Ramsey
250267777c minor comment clarification
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1643 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-31 16:43:20 +00:00
David Lawrence Ramsey
be66a6b078 fix minor FAQ inaccuracy
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1642 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-30 21:31:57 +00:00
David Lawrence Ramsey
53809440f3 and switch to cbreak mode in handle_sigwinch() too
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1641 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-30 04:29:52 +00:00
David Lawrence Ramsey
273d2ce2d5 set keypad() to TRUE in handle_sigwinch() in case we resize during
verbatim input, and fix backwards _POSIX_VDISABLE #ifdefs so that raw()
and cbreak() are called properly in get_verbatim_kbinput()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1640 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-30 04:20:28 +00:00
David Lawrence Ramsey
c91696e6df add function key alias for unjustify
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1639 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-29 04:16:23 +00:00
David Lawrence Ramsey
d03216a1ac use raw mode in get_verbatim_kbinput(), so that we don't have to deal
with interrupt-generating keys there


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1638 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-28 18:21:21 +00:00
David Lawrence Ramsey
58f6d836d9 set keypad() to FALSE while reading in verbatim input, to deal with a
bit of xterm weirdness, and update a few keypad-related comments


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1637 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-27 07:12:47 +00:00
David Lawrence Ramsey
2897d2b8b8 actually block SIGQUIT in signal_init()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1636 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-26 20:56:20 +00:00
David Lawrence Ramsey
0ee54d9fb2 comment accuracy fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1635 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-26 20:18:52 +00:00
David Lawrence Ramsey
1eadebe21f minor capitalization fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1634 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-25 21:36:38 +00:00
David Lawrence Ramsey
35961c4252 add the ability to spell-check only marked text when the mark is on
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1633 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-23 19:34:03 +00:00
David Lawrence Ramsey
c2c5a51e52 add support for escape sequences for F1-F14 where conflicts don't occur
(and resurrect abcd() to make that job easier), additional comments, and
a few minor cosmetic cleanups


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1632 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-23 19:26:17 +00:00
David Lawrence Ramsey
66081d4e70 consistency tweak for get_page_start()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1631 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-22 07:25:31 +00:00
David Lawrence Ramsey
fdece4621f add explanatory comment to do_credits()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1630 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-19 18:15:03 +00:00
David Lawrence Ramsey
250613665f don't use "kbinput = wgetch(win)" as a switch value in
get_accepted_kbinput()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1629 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-16 19:12:46 +00:00
David Lawrence Ramsey
70bd6e0dcb and document my tweak to do_writeout() from before
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1628 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-15 16:08:42 +00:00
David Lawrence Ramsey
41151ac50d add DB's fix for a do_replace_loop() segfault
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1627 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-15 05:47:03 +00:00
David Lawrence Ramsey
3e3fab5a0f wrt DB's overhaul of the cutting code and related file-writing code:
document the changes to the latter (in write_file() and do_writeout())
in the Changelog; I stupidly forgot to do this before


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1626 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-15 05:12:41 +00:00
David Lawrence Ramsey
62187d9ced remove other spurious "L"
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1625 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-14 22:45:05 +00:00
David Lawrence Ramsey
9da0831dbf remove spurious "L"
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1624 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-14 22:40:38 +00:00
David Lawrence Ramsey
e97c8d5918 use nanosleep() instead of usleep(); the latter is only standard under
BSD, whereas the former is POSIX compliant


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1623 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-14 19:26:29 +00:00
David Lawrence Ramsey
9591ee5d0a typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1622 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-14 16:51:06 +00:00
David Lawrence Ramsey
760a2dc9b2 if color support is enabled, we only need to call edit_refresh() to
properly paint multi-line color regexes when COLOR_SYNTAX is set


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1621 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-14 06:38:00 +00:00
David Lawrence Ramsey
c53a92d973 on systems that need raw(), call it once instead of every time through
the input/output loop in main()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1620 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-12 03:28:06 +00:00
David Lawrence Ramsey
d5be947021 remove a few more unneeded spaces
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1619 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-10 06:12:04 +00:00
David Lawrence Ramsey
f0b3009400 minor fixes for the README
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1618 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-10 06:02:05 +00:00
David Lawrence Ramsey
606dfda47a Back to CVS
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1617 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-09 23:26:54 +00:00
David Lawrence Ramsey
fa1497b38f GNU nano 1.3.1
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1615 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-09 23:22:02 +00:00
David Lawrence Ramsey
6481c3fb2d update the year in do_credits() too
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1614 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-09 23:06:54 +00:00
David Lawrence Ramsey
f28f50e6b5 update the copyright years on the source files to 2004 (adding a few
minor comment tweaks so that all the source files are covered)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1613 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-09 23:04:55 +00:00
David Lawrence Ramsey
f8ddf31bfb remove now-unnecessary initialization of kbinput in main()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1612 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-09 22:38:09 +00:00
David Lawrence Ramsey
9e45a47054 add formatting and typo fixes for NEWS, and add version numbers (minus
"-cvs" suffixes) to the manpages


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1611 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-06 17:12:28 +00:00
David Lawrence Ramsey
9b5bd42978 minor comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1610 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-06 01:45:04 +00:00
David Lawrence Ramsey
47162bc428 add verbatim input question and a few minor fixes to the faq
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1609 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-05 19:01:53 +00:00
David Lawrence Ramsey
e190ff30f2 find all beginning-of-line and/or end-of-line regexes once per line, not
just the zero-length ones; this fixes multiple replaces occurring with
them in conjunction with "*"


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1608 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2004-01-03 21:42:25 +00:00
David Lawrence Ramsey
afb75f22b2 clean up a bit of weirdness in do_replace_loop()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1606 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-12-29 02:15:23 +00:00
David Lawrence Ramsey
32559294e8 comment addition, minor cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1605 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-12-28 03:56:04 +00:00
David Lawrence Ramsey
c2946fbe09 typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1603 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-12-24 21:47:28 +00:00
David Lawrence Ramsey
2a4ab6d29d and wrap the zero-length regex displaying code in a HAVE_REGEX_H #define
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1602 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-12-24 08:29:49 +00:00
David Lawrence Ramsey
76c4b33ef4 display a highlighted space for zero-length regex matches, so that we
have a reference point when we're replacing them


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1601 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-12-24 08:17:54 +00:00
David Lawrence Ramsey
8213850df6 add DB's overhaul of the cutting code and related file-writing code, his
fixes to check_operating_dir(), and a few minor cleanups and fixes of
mine


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1600 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-12-24 08:03:54 +00:00
David Lawrence Ramsey
f427694400 the last of the low-level input overhaul: make the global shortcut list
use NANO_NO_KEY to represent no key value, add the NANO_HISTORY_KEY
sentinel value, add support for many more escape sequences for those
terminals that generate them, add DB's extensibility tweaks to
do_yesno(), make ASCII 128 act like Backspace when -d is used, add
various cleanups to the low-level input functions, and make the last of
the low-level input routines use the new low-level input functions


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1599 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-12-24 03:33:09 +00:00
David Lawrence Ramsey
18394ac621 fix search/replace misbehaviors for good (I hope)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1598 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-12-24 03:13:44 +00:00
David Lawrence Ramsey
d29146040b minor redundancy fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1597 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-11-30 02:22:22 +00:00
David Lawrence Ramsey
a593f538dd another low-level input overhaul: split out low-level mouse input,
remove references to ncurses key values from the global shortcut list
and restructure it to specify function key values when needed, hook up
verbatim input to the edit window, and do a few miscellaneous cleanups


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1596 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-11-28 19:47:42 +00:00
David Lawrence Ramsey
45cfbece4c replace the old fix for infinite regex replacement loops with something
that works better and is less hackish


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1595 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-11-28 16:04:24 +00:00
Jordi Mallach
895e65ce1a Updated Romanian translation by Laurentiu Buzdugan.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1594 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-11-25 11:30:05 +00:00
David Lawrence Ramsey
4dca76f2e9 add check for glib 2.x
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1592 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-11-20 00:15:52 +00:00
David Lawrence Ramsey
82a8f91392 minor tabbing fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1591 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-11-20 00:14:16 +00:00
David Lawrence Ramsey
bc503c80db don't prompt if we're saving only a selection of a file under a
different name


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1590 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-11-19 23:59:14 +00:00
Jordi Mallach
a5d8e54ab9 Added Danilo Segan (Serbian).
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1589 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-11-06 10:47:44 +00:00
Jordi Mallach
10dd6c7714 Added Serbian translation (Danilo Segan).
Recoded ChangeLog to UTF-8.


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1586 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-11-06 10:39:38 +00:00
David Lawrence Ramsey
4e25410680 minor cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1585 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-11-05 22:04:08 +00:00
David Lawrence Ramsey
637f6e50c0 update nano.spec.in for the 1.3 branch
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1584 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-11-04 18:34:44 +00:00
David Lawrence Ramsey
7776ef9149 work around problem with Backspace's generating ASCII 127 on Linux
sometimes


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1583 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-11-04 18:32:35 +00:00
David Lawrence Ramsey
8fa1976796 allow WHEREIS_NEXT_KEY to be used in view mode
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1582 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-11-03 00:13:21 +00:00
David Lawrence Ramsey
7127857924 prompt before saving the current file under a different name
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1581 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-10-31 17:58:44 +00:00
David Lawrence Ramsey
b7cb6a38c8 avoid infinite loop when doing a forward regex replace of "$"
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1580 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-10-31 17:53:38 +00:00
Jordi Mallach
b78649b664 Patch from Martin-Eric Racine <q-funk@pp.fishpool.fi> to accept "Yy" and "Nn" as well as the Finnish letters in Yes/No prompts.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1579 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-10-30 13:10:32 +00:00
David Lawrence Ramsey
95114c1bc4 Back to CVS
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1577 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2003-10-23 01:09:43 +00:00
33 changed files with 10320 additions and 4583 deletions

921
ChangeLog
View File

@@ -1,3 +1,914 @@
GNU nano 1.3.3 - 2004.06.28
- General:
- Minor comment cleanups. (DLR)
- Convert more ints used as boolean values to use TRUE and
FALSE. (David Benbennick)
- Make sure the special control keys are handled the same way
after the window is resized or we come out of suspend mode.
Changes to do_cont() and handle_sigwinch(). (DLR)
- Change some instances of ints that can never be negative to
size_t's. (DLR)
- Add better explanations for and in the "Terminal breakage"
comments, and handle missing key #ifdefs inside the functions
that use those keys. (DLR)
- Add restricted mode, accessible via the -Z/--restricted
command line option or by invoking nano with any name
beginning with 'r' (e.g. "rnano"). In restricted mode, nano
will not 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. (IO ERROR) DLR: Also
disable backup files and spell checking (since the latter can
leave a pre-spell-checked version of the file in a temporary
directory), use tail() to get the program name so that the
check for its beginning with 'r' will work when a path is
specified, disable toggles that are only useful with options
that are disabled in restricted mode, call nano_disabled_msg()
when trying to read or spell check a file instead of leaving
the shortcuts out of the main list, and instead of acting as
though TEMP_OPT is enabled when exiting with a modified file
(which caused problems if the filename was blank), only allow
a filename to be modified at the writeout prompt if it's blank
beforehand. Changes to do_writeout(), toggle_init(),
shortcut_init(), die_save_file(), and nanogetstr().
- Call nano_disabled_msg() directly from the shortcut list
instead of inside the disabled functions. (David Benbennick)
- Clarifications to comments explaining exactly what control
characters and escape sequences are supported. (DLR)
- Disable "Where Is Next" in tiny mode. (DLR)
- Added the ability to justify the entire file at once, which
Pico has via ^W^J. Changes to backup_lines() and
do_justify(); new functions do_justify_void() and
do_full_justify(). (DLR)
- Modify the justification algorithm to work the same way as in
the current version of Pico, i.e, add a space at the end of
each line of the justified paragraph except for the last one,
and if there was a space at the end of the last one, remove
it. Changes to justify_format() and do_justify(). Note that
we can no longer reliably detect the first modified line in a
paragraph, since a line unmodified by justify_format() may get
a space tacked onto the end of it or removed from the end of
it later. The entire original paragraph is now always backed
up, and justify_format() no longer has a non-modifying mode,
so it's now only called in backup_lines(). (DLR)
- Wrap the long jump code in NANO_SMALL #ifdefs, since we only
use it if we're resizing the window, which is disabled when
NANO_SMALL is defined. (DLR)
- Add smart home key option, accessible via -A/--smarthome on
the command line, "set smarthome" in the rcfile, and the
Meta-H toggle in the edit window. Smart home works as
follows: 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. This option is disabled in tiny
mode. Changes to do_home(), nanogetstr(), etc. (DLR;
suggested by Stephan T. Lavavej)
- Minor tweaks to the punctuation in some statusbar messages.
(DLR)
- Overhaul the low-level input routines into main routines that
actually get the input and state machines that interpret the
input. This allows better handling of the input (e.g. ignored
keys are now always ignored instead of just being ignored when
there are no escapes prefixing them) and will make it easier
to port to interfaces that don't have blocking input. New
functions reset_kbinput(), get_translated_kbinput(),
get_control_kbinput(), and get_untranslated_kbinput(); changes
to do_verbatim_input(), handle_sigwinch(), get_kbinput(),
get_ascii_kbinput(), get_escape_seq_kbinput(), and
get_verbatim_kbinput(); removal of get_ignored_kbinput() and
get_accepted_kbinput(). (DLR)
- Overhaul all the movement functions in order to avoid
redundant screen redraws (and regexec()s when color support is
available) whenever possible during ordinary cursor movement
when the text doesn't change. Do the same for moving in
do_char(), do_delete(), do_next_word(), do_prev_word(),
do_search(), do_research(), and do_replace_loop. Changes to
do_first_line(), do_last_line(), do_home(), do_end(),
do_page_up(), do_page_down(), do_up(), do_down(), do_left(),
do_right(), do_delete(), do_backspace(), do_search(),
do_research(), do_replace_loop(), do_find_bracket(), and
edit_refresh(). New functions do_left_void(),
do_right_void(), need_horizontal_update(),
need_vertical_update(), edit_scroll(), and edit_redraw(). All
of these functions but the first two require the previous
versions of current and/or placewewant as parameters, so that
they can redraw properly when the location has changed. Also
rename the int refresh in do_delete() and do_backspace() to
do_refresh so as not to conflict with refresh(). (DLR)
- Add some comments better explaining what is disabled in
restricted mode and why. (DLR)
- Since KEEP_CUTBUFFER is only used in cut.c, make it a static
variable in cut.c instead of a flag, and unset it in other
files via the new function cutbuffer_reset(). (DLR)
- Add the ability to change the characters used to display the
beginning characters of tabs and spaces via the rcfile entry
"whitespace". This is disabled if nanorc support is disabled
or if we're in tiny mode. Displaying the new characters is
toggled on and off by Meta-P; the default is on. (Mike
Frysinger; minor changes and adaptations by DLR)
- Add the ability to change the closing punctuation and closing
brackets used to control justification, via the rcfile
entries "punct" and "brackets". (DLR)
- Translation updates (see po/ChangeLog for details).
- Make the former flag same_line_wrap use TRUE and FALSE
instead of 1 and 0. (DLR)
- files.c:
add_open_file()
- Rearrange the NANO_SMALL #ifdef so that the code to set the
MODIFIED flag in open_files->flags is included only once.
(DLR)
write_marked()
- Call write_file() with nonamechange set to TRUE so that we
don't erroneously change the current filename when writing a
selection, and don't take a nonamechange parameter anymore
since we don't use it. (DLR)
do_writeout()
- Refactor so that no recursion is needed if we try to exit with
a modified file that has no name when TEMP_OPT is set. (DLR)
- Add spaces to the ends of the "Overwrite" and "Different Name"
prompts, for consistency. (DLR)
do_browser()
- Call check_statblank() instead of blanking the statusbar
unconditionally, for consistency. (David Benbennick)
- global.c:
shortcut_init()
- Don't assign any handler functions to the help browser keys,
as the help browser handles them all internally. (David
Benbennick)
- move.c:
do_first_line(), do_last_line()
- Move these functions here from winio.c. (DLR)
- nano.c:
finish()
- Call blank_statusbar() and blank_bottombars() to blank out
the statusbar and shortcut list in bottomwin. (DLR)
- Since all of the calls to finish() use 0 for the value of
sigage, and the return value of finish() is never used, make
it accept and return void. (David Benbennick)
die_save_file()
- Call write_file() with nonamechange set to TRUE since we don't
need to change the current filename if we're writing emergency
backup files. (DLR)
do_early_abort()
- Removed, as it's no longer called anywhere. (David Benbennick)
usage()
- Add missing "[dir]" and two missing _()'s around the strings
describing the -E [dir]/--backupdir=[dir]" option. (CHAO
Wei-Lun)
open_pipe()
- Call enable_signals() at the beginning and disable_signals()
at the end, so that we get a SIGINT when Ctrl-C is pressed
during wait() and can then call cancel_fork() properly. (DLR)
do_delete(), do_enter()
- Tweak for efficiency. (David Benbennick)
do_prev_word()
- Switch the last test (current != NULL or not) around to match
the order of the same test in do_next_word() (current ==
NULL). The results are the same either way. (DLR)
do_wrap()
- Tweak for efficiency. (David Benbennick)
do_spell()
- Tweak for efficiency. (David Benbennick)
- Change the statusbar entries used in cases of failure so that
they all display the actual error that occurred. (David
Benbennick and DLR)
do_int_speller(), do_alt_speller()
- Make these functions return const char*'s instead of char*'s.
(David Benbennick)
justify_format()
- Remove redundant assignment. (DLR)
do_para_search()
- Remove unneeded edit_update() calls. (David Benbennick)
- Convert to use an enum to specify the search type: JUSTIFY,
BEGIN, or END. (DLR)
- Refactor to properly do searches for beginnings of paragraphs
in the same way as searches for endings of paragraphs, without
needing the old (and somewhat inaccurate) recursive approach.
(DLR)
do_justify()
- Remove unneeded edit_update() calls, and add a few minor
efficiency tweaks. (David Benbennick)
- Simplify an if statement. (DLR)
do_exit()
- Refactor so that no recursion is needed if we try to exit with
a modified file that has no name when TEMP_OPT is set. (DLR)
print_numlock_warning()
- Removed, as it's no longer needed and was never called
anywhere after the input overhaul. (DLR)
signal_init()
- Don't use termios and _POSIX_VDISABLE to disable keys anymore,
as there's no real equivalent of it when the latter isn't
defined. (DLR)
handle_sigwinch()
- Call resetty() to get the original terminal settings back.
(DLR)
- Rework so that nano properly redraws the screen on systems
that don't have resizeterm() and/or wresize(). In curses, we
now leave and immediately reenter curses mode via endwin() and
refresh(), and then reinitialize all windows via
window_init(). In slang, the above routine will only work if
the resize made the window smaller, so we now leave and
immediately reenter screen management mode via
SLsmg_reset_smg() and SLsmg_init_smg(), and then reinitialize
all windows via window_init(). (DLR, adapted from code in
Minimum Profit 3.3.0 and mutt 1.4.2.1, respectively)
do_toggle()
- Call blank_statusbar() and blank_bottombars() to blank out
the statusbar and shortcut list in bottomwin. (DLR)
do_verbatim_input()
- If PRESERVE is set, disable flow control characters before
getting input and reenable them after getting input. (DLR)
disable_signals(), enable_signals(), disable_flow_control(),
enable_flow_control()
- New functions that allow more fine-grained control of the
terminal: disabling and enabling signals without having to use
_POSIX_VDISABLE and disabling and enabling flow control
characters. (DLR)
main()
- Don't open the first file in quiet mode, since if we do, an
error message won't be shown if it's unreadable. (DLR; found
by Jaap Eldering)
- If we've specified multiple files on the command line and
multibuffer support is compiled in, turn multibuffer mode on
when reading those files and turn it off afterward if it was
off before. This allows us to open multiple files without
having to turn multibuffer mode on at the command line or in
the nanorc first, both of which are unintuitive. Multibuffer
mode should only affect how the "Read File" command behaves
anyway. (DLR)
- Remove the disabling of implementation-defined input
processing, as cbreak mode appears to turn it off anyway.
(DLR)
- After noecho(), call disable_signals() and
disable_flow_control(), the latter only if PRESERVE is not
set. (DLR)
- Move the savetty() call down from just after initscr() to just
after the terminal is properly set up, so that we can restore
it easily after a resize. (DLR)
- Add missing cast to char when calling do_char(). (DLR)
- Don't initialize the backup directory if we're in restricted
mode, since backups are disabled then. (DLR)
- Check $SPELL for an alternative spell checker if we didn't get
one from the command line and/or rcfile, as Pico does. Don't
do this if we're in restricted mode, since spell checking is
disabled then. (DLR)
- Add some cleanups for greater readability, and remove a few
bits of redundant code. (DLR and David Benbennick)
- nano.h:
- Since REGEXP_COMPILED is only used in search.c, convert it
from a flag to a static int there. (DLR)
- Add justbegend enum, used in do_para_search(). (DLR)
- Add updown enum, used in edit_scroll(). (DLR)
- proto.h:
- Remove unused xpt() and add_marked_sameline() prototypes.
(DLR)
- Add missing #ifdefs around the nstristr() and get_mouseinput()
prototypes. (DLR)
- rcfile.c:
- Move "rebinddelete" up in the list of options so that the list
is in alphabetical order. (DLR)
- Cosmetic reorganization of the order in which some options are
interpreted. (DLR)
- Explicitly check for rcopts[i].name's being "tabsize" to avoid
a spurious error under some circumstances about tabsize's
being 0 when there's no tabsize entry in the rcfile. (DLR)
- search.c:
regexp_init()
- Overhaul for efficiency. Also check if regcomp() failed, and
if so, display "Bad regex" message on the statusbar, so that
we don't have to display it separately after every call to
this function. (David Benbennick)
search_init()
- Only check whether USE_REGEXP is set, and hence whether or not
to display "[Regexp]" on the search prompt, if HAVE_REGEX_H is
defined. (DLR)
not_found_msg()
- Convert to properly handle strings generated by
display_string() that have been used in the search prompt
since 1.3.0. (David Benbennick)
- Use display_string() directly to display the text that we
didn't find instead of relying on statusbar() to do it
indirectly, since the latter won't display its text with the
user-specified whitespace characters and the former will.
(DLR)
- utils.c:
is_blank_char()
- New function used as an isblank() equivalent, since isblank()
is a GNU extension. (DLR)
nstricmp(), nstrnicmp()
- Add extra blank lines for greater readability, and remove
unneeded test for n's being less than zero (since it's already
been tested for being greater than zero or equal to zero at
that point) from nstrnicmp(). (DLR)
stristr()
- Rename to nstristr() to avoid a potential conflict with an
existing stristr() function, and move up to just after
nstrnicmp(). (DLR) David Benbennick: Tweak for efficiency.
- Include and use only when strcasestr() is unavailable, since
strcasestr() is a GNU extension. (DLR)
nstrnlen()
- New function used as a strnlen() equivalent, since strnlen()
is a GNU extension. (DLR)
- winio.c:
get_verbatim_kbinput()
- Refactor the output in the DEBUG #ifdef. It didn't work
properly ever since this function was changed to use an int*
instead of a char*. (DLR)
- When reading characters from input, properly reallocate
verbatim_kbinput via (int*)nrealloc() instead of an uncast
realloc(). (DLR)
get_accepted_kbinput()
- Add proper support for the keypad values and escape sequences
generated by the NumLock glitch and by certain keys on the
numeric keypad. (DLR)
- Add an extra break and move an #endif down to fix a potential
problem when NANO_SMALL is defined or KEY_RESIZE isn't, and
when PDCURSES isn't defined. (DLR)
get_escape_seq_kbinput()
- Add proper support for the keypad values and escape sequences
generated by the NumLock glitch. (DLR)
- Add ignore_seq parameter. If a sequence is recognized but
ignored, we will now return ERR and set ignore_seq to TRUE, and
if a sequence is unrecognized, we will now return ERR and set
ignore_seq to FALSE. Also, here and elsewhere, don't bother
assigning ERR to retval when that's its initial value. (DLR)
- Fix problem where the escape sequence for F3 on the FreeBSD
console would not be interpreted properly. (DLR)
get_mouseinput()
- Don't ungetch() anything if there's no control key and no meta
key defined in the shortcut we clicked. (DLR)
bottombars()
- Don't display any more than MAIN_VISIBLE shortcuts. Adding
justification of the entire file above made the search
shortcut list longer than this and hence made the shortcuts in
it so short as to be almost incomprehensible. (DLR)
- Tweak for efficiency and to better handle shorter screen
widths. (David Benbennick)
- Restructure the if block used for the sentinel key values,
dynamically allocate keystr based on the number of columns
available, and make sure we can display shortcuts even when
the number of available columns is too short for any complete
one. (DLR)
onekey()
- Don't bother padding the displayed shortcuts with spaces.
(David Benbennick)
- Convert len to a size_t. (DLR)
edit_add()
- Minor cosmetic reformatting. Also remove unused int
searched_later_lines. (DLR)
blank_bottomwin()
- Removed, as it does the same thing as blank_bottombars().
(David Benbennick)
blank_titlebar()
- New function used to blank the titlebar in topwin. (DLR)
blank_statusbar_refresh()
- Removed, as it's now unnecessary. (David Benbennick)
titlebar()
- Overhaul to use display_string() to display the filename, and
to better handle shorter screen widths. Also remove
now-unneeded wrefresh(topwin) calls. (David Benbennick)
DLR: Tweak to reserve enough space for "Modified", plus
padding, in all cases, to make sure that the version message
takes up no more more than 1/3 of the available width, minus
padding, and to include a reset_cursor() call so that the
cursor is always in the right place.
bottombars()
- Call blank_bottombars() instead of blank_bottomwin(). (David
Benbennick)
check_statblank()
- Overhaul for efficiency, (David Benbennick) DLR: Add
reset_cursor() call to ensure that the cursor is always in the
right place.
update_cursor()
- Removed, as it's no longer called anywhere. (David Benbennick)
edit_refresh()
- Remove apparently unneeded leaveok() calls. (David Benbennick)
edit_refresh_clearok(), center_cursor()
- Removed, as they are now unnecessary. (David Benbennick)
statusq()
- Don't allow "Full Justify" when in view mode. (DLR)
statusbar()
- Call reset_cursor() just before refreshing the edit window, so
that slang and other non-ncurses versions of curses will
properly place the cursor back in the edit window instead of
leaving it at the end of the statusbar. (DLR)
do_help()
- Overhaul for efficiency, and allow scrolling through the help
via the arrow keys as well as the paging keys. (David
Benbennick) DLR: Revert the use of the return value of
curs_set() to restore the previous state of the cursor, as
some curses implementations (including slang) get it wrong,
and explicitly turn the cursor off where needed instead.
do_credits()
- Use napms() instead of nanosleep(), as it does the same thing
(aside from taking an argument in milliseconds instead of
microseconds) and curses includes it. (DLR)
- Overhaul for efficiency, and make sure the xlcredits
translations are done after initialization in order to avoid
an error when compiling with -pedantic. (David Benbennick)
do_yesno()
- Add a comment to encourage translators to use both native and
English shortcuts, if possible. (Jordi)
- configure.ac:
- Add tests for isblank(), strcasestr(), and strnlen(), and
define _GNU_SOURCE so that the tests work properly. Increase
the minimum required autoconf version to 2.54. (DLR)
- Reformat the test programs so that they aren't packed into
fewer lines than usual, so as to make them easier to read, and
remove unnecessary inclusion of stdio.h in the slang test
programs. (DLR)
- Remove the checks for resizeterm() and wresize(), as they're
no longer needed. (DLR)
- config.rpath:
- Replace usage of egrep with grep -E, avoiding a XSI:ism (David
Weinehall)
- faq.html:
- Removed question about the NumLock glitch, as it's no longer
needed. (DLR)
- nano.1:
- Document restricted mode. (IO ERROR) DLR: Add minor
modifications to account for the above changes.
- Document the smart home key option. (DLR)
- Document the use of the SPELL environment variable. (DLR)
- nanorc.5:
- Document the smart home key option. (DLR)
- Document the whitespace option. (DLR, adapted from
documentation by Mike Frysinger)
- Document the punct and brackets options. (DLR)
- nano.texi:
- Fix toggle inaccuracies: Meta-L now toggles line wrapping, and
Meta-< and Meta-> aren't toggles. (DLR)
- Document restricted mode. (IO ERROR) DLR: Add minor
modifications to account for the above changes.
- Fix version number inaccuracies: Search/replace history and
sorting/uniqueness filtering for the internal spell chacker
were added in nano 1.1.99pre1. (DLR)
- Document the smart home key option. (DLR)
- Document the use of the SPELL environment variable. (DLR)
- nanorc.sample:
- Add missing mouse entry, and update the nanorc sample regexes
to account for the backupdir and mouse options. (DLR)
- Add smarthome description. (DLR)
- Document the whitespace option. (DLR, adapted from
documentation by Mike Frysinger)
- README.CVS:
- Increase the minimum required autoconf version to 2.54, and
change the recommended automake version 1.7 to the minimum
required automake version. Note that autoconf 2.54 will
technically also work with automake 1.6c, but that is a CVS
version as opposed to a stable release version, and automake
1.7 requires at least autoconf 2.54 in any case. (DLR)
- TODO:
- Added entry for justifying the entire file at once, since Pico
can do it, and with "[DONE]" since it's already been
implemented. (DLR)
GNU nano 1.3.2 - 2004.03.31
- General:
- Change instances in the code that refresh the entire edit
window when color support is enabled (in order to properly
handle multi-line color regexes) to only do so when
it's necessary, i.e, when COLOR_SYNTAX is set. (DLR)
- Minor cosmetic tweaks to the code involving direction keys.
NANO_UP_KEY and NANO_DOWN_KEY are now NANO_PREVLINE_KEY and
NANO_NEXTLINE_KEY, and the help messages for them have been
changed accordingly. Also remove extraneous references to
NANO_DOWN_KEY in the search history shortcut entries. (DLR)
- Add NANO_UNJUSTIFY_FKEY (the same as NANO_UNCUT_FKEY) to the
shortcut list, and tweak the unjustify routine to use it.
Also add NANO_FIRSTLINE_FKEY and NANO_LASTLINE_FKEY, and tweak
the statusbar input routines to handle them and NANO_HELP_FKEY
properly. (DLR)
- Block SIGWINCH after setting up its handler, and only unblock
and handle it when we're in a stable state, i.e, when we're
waiting for input from the user. New function
allow_pending_sigwinch(); changes to signal_init(),
get_kbinput(), and get_verbatim_kbinput(). (DLR)
- Decouple the paragraph searching code and the justifying code.
Removed function do_para_operation(); new function
do_para_search(); changes to do_justify(). (DLR)
- Add -E/--backupdir option. When used with -B/--backup, backup
files will be saved in the specified directory with their
canonical pathnames encoded in their names (all '/'s replaced
with '!'s). Changes to write_file(). (Martin Ehmsen) DLR:
Add function init_backup_dir() to handle relative paths
correctly, use get_full_path() to get the canonical pathname,
and use tail() to get the filename if get_full_path() fails.
- Port to the Tandem NonStop Kernel (nsr-tandem-nsk). (Tom
Bates; minor tweaks by DLR)
- Change some instances of boolean 0 and 1 to TRUE and FALSE.
(David Benbennick)
- Fix memory corruption problem occurring when answer is used as
the value of def; if the realloc() of answer leads to its
pointing to a different memory block, there will be a segfault
when the value of def is copied into it via strcpy().
(bort@alltel.net, Christian Weisgerber, David Benbennick, and
DLR)
- Remove the last editbot references, to avoid any potential
segfaults related to them. Also remove fix_editbot(), as it's
no longer needed. (David Benbennick)
- Rename several variables to make their use clearer and to
avoid conflicts. (DLR)
- Set the input mode before turning the keypad on. (DLR)
- cut.c:
add_to_cutbuffer()
- Add parameter allow_concat to determine whether we're allowed
to concatenate strings in the cutbuffer. (DLR)
- files.c:
do_insertfile()
- Wrap one reference to NANO_EXTCMD_KEY in a NANO_SMALL #ifdef.
(DLR)
- Save the already-typed answer when switching from "Insert
File" to "Execute Command" mode via Ctrl-X, just in case we
started typing a command before switching. (DLR)
add_open_files()
- Make the saving of marked status in open_files->file_flags
work properly again; a tweak to the ISSET() macro in 1.3.0
to make it only return 0 or 1 broke it. (DLR)
write_marked()
- New function used to write the current marked selection to a
file, split out from do_writeout(). (DLR)
do_writeout()
- Tweak for efficiency. (David Benbennick) DLR: Modify to have
the current answer preserved between toggles again.
filestat()
- Removed, as it is only called in one place and is
redundant. (DLR)
do_browser()
- Replace the filestat() call with an equivalent stat() call.
(DLR)
- global.c:
shortcut_init()
- Only allow verbatim input when we're not in view mode. (DLR)
- Set the associated function for unjustify to 0 instead of
do_uncut_text(), since it's currently unused. (DLR)
- nano.c:
usage()
- Clarify the description for -T/--tabsize a bit. (DLR)
do_verbatim_input()
- Remove the now-unneeded code to disable XON, XOFF, and
suspend, since we now go into raw mode in
get_verbatim_kbinput() and bypass them. (DLR)
do_next_word()
- Simplify and remove references to editbot so as to avoid a
segfault. (David Benbennick)
do_prev_word()
- Simplify and remove references to edittop. (David Benbennick)
do_int_speller(), do_alt_speller(), do_spell()
- Modify to write only the current selection from a file to the
temporary file used for spell checking when the mark is on,
and add a few miscellaneous cosmetic cleanups. (DLR)
do_int_spell_fix()
- Store the value of current_x in a size_t instead of an int,
and add a few minor efficiency tweaks. (David Benbennick)
- Remove comment explaining why findnextstr() is called with
bracket_mode set to TRUE even though we aren't doing a bracket
search, since after the above efficiency tweaks, it's now more
accurately called can_display_wrap. (DLR)
indent_length()
- Remove unneeded #ifdef. (David Benbennick)
do_justify()
- Remove references to the now-unneeded JUSTIFY_MODE flag. (DLR)
signal_init()
- Trap SIGQUIT in addition to turning it off via termios in
main(). This is consistent with SIGINT, which we trap here
and turn off via termios in main(), as well as with the
associated comment. (DLR)
handle_sigwinch()
- Set keypad() to TRUE and switch to cbreak mode just before
calling siglongjmp(), in case we resized during verbatim
input. (DLR)
main()
- Move the call to raw() on systems that don't define
_POSIX_VDISABLE outside the main input/output loop, as it
doesn't need to be called every time through the loop. Call it
instead of cbreak() on such systems, as it overrides cbreak()
anyway. (DLR)
- Add more descriptive comments explaining the termios and
curses setup routines, and turn the keypad on before setting
the input mode. (DLR)
- Remove stray HAVE_GETOPT_LONG #ifdefs. (DLR)
- Don't call keypad() before initializing the windows it needs
via window_init().
- nano.h:
- Move the NANO_H include guard up before the first #include.
(DLR)
- Remove the now-unneeded JUSTIFY_MODE flag. (DLR)
- search.c:
regexp_cleanup()
- Only do anything if REGEXP_COMPILED is set. (David Benbennick)
search_abort()
- Only test if the mark is set when NANO_SMALL isn't defined.
(David Benbennick)
search_init()
- Add some more comments and comment tweaks, don't indicate that
the search has been canceled when we enter a blank string in
replace mode, only call regexp_init() when USE_REGEXP is set,
and return -1 instead of -3 since a canceled search and a
canceled replace should be mostly equivalent. (David
Benbennick) DLR: Tweak to use the old behavior if we try to
search for invalid regexes.
findnextstr()
- Refactor to use a loop invariant, and tweak for greater
efficiency and simplicity. Also modify so that all searches
start one character after (or before, if we're doing a
backwards search) the current one, as opposed to all searches
except for regex searches for "^" and the like, for
consistency with other searches. (David Benbennick)
do_search()
- Handle search_init()'s no longer returning -3 above. (David
Benbennick)
- Port the code from do_replace_loop() to skip the current line
if we're searching for a regex with "^" and/or "$" in it and
end up on the same line to this function. This fixes a
problem where doing a forward search for "^" on a file with
more than one line would erroneously stop at the magicline and
indicate that that was the only occurrence. (DLR)
do_research()
- Port David Benbennick's efficiency tweaks and the
aforementioned code ported from do_replace_loop() to this
function. (DLR)
replace_regexp()
- Completely refactor for increased efficiency. (David
Benbennick)
replace_line()
- Use a char* parameter for the replacement string instead of
last_search, and add minor efficiency tweaks. (David
Benbennick)
do_replace_loop()
- Fix segfault when doing a regex replace of a string that
matches inside a line (e.g. replace the "b" in "abc" with
anything). (David Benbennick)
- If the mark is on at the beginning of the function, turn it
off and turn it back on just before returning. Also overhaul
to rely on the return value of findnextstr() instead of a loop
invariant, to not need to take an int* parameter, and store
the beginning x-coordinate in a size_t instead of an int.
(David Benbennick)
do_replace()
- Handle search_init()'s no longer returning -3 above, and add
efficiency tweaks. (David Benbennick) DLR: Tweak to follow
the old behavior of adding non-blank strings entered at the
"Replace: " prompt to the search history. (DLR)
do_gotoline()
- Simplify the edit_update() call depending on the value of
save_pos. (David Benbennick)
do_bracket()
- Add efficiency tweaks. (David Benbennick) DLR: Remove
reliance on the hardcoded bracket string length; instead, only
require that the bracket string length be even.
- utils.c:
regexec_safe()
- Wrap in HAVE_REGEX_H #ifdefs. (DLR)
regexp_bol_or_eol()
- New function used to check if a regex contains "^" and/or "$",
assuming that the regex would be found if the REG_NOT(BOL|EOL)
flags aren't used in the regexec() call; it replaces the
direct regexec()s used before. (DLR)
strstrwrapper()
- Refactor for increased efficiency, and eliminate the need for
the line_pos parameter. (David Benbennick)
mallocstrcpy()
- Tweak so that when src is "", "" is allocated and returned
instead of NULL. (David Benbennick)
- winio.c:
get_verbatim_kbinput()
- Set keypad() to FALSE and switch to raw mode while reading
input, and set it back to TRUE and go back into cbreak mode
mode afterwards. (Note that if _POSIX_VDISABLE isn't defined,
we don't need to change to or from raw mode since we're
already in it exclusively.) This ensures that we don't end up
reading in extended keypad values that are outside the ASCII
range or having to deal with interrupt-generating key values.
Also, with keypad() set to TRUE, xterm generates KEY_BACKSPACE
when the user hits Ctrl-H, which, when cut down to ASCII
range, ends up being Ctrl-G, which can be confusing. (DLR)
- For consistency with get_kbinput(), use an int* to store and
return the input instead of a char*, and tweak the functions
that call it to handle this. (DLR)
get_accepted_kbinput()
- Don't use "kbinput = wgetch(win)" as a switch value. (DLR)
get_escape_seq_kbinput()
- Add support for the escape sequences for F1-F14 whenever
possible (i.e, whenever a conflict doesn't occur), some
additional comments, and a few cosmetic cleanups. (DLR)
- Use switch statements instead of strncmp() to read in the long
xterm sequences for Ctrl-[arrow key] and Shift-[arrow key].
(DLR)
get_escape_seq_abcd()
- A resurrected version of the old abcd() function, readded in
order to simplify get_escape_seq_kbinput(). (DLR)
get_mouseinput()
- Interpret shortcut key values slightly more stringently when
ungetch()ing them. (DLR)
strlenpt()
- Properly cast the second parameter of the strnlenpt() call to
size_t. (DLR)
get_page_start()
- For consistency, tweak so that scrolling always occurs when we
try to move onto the "$" at the end of the line, as opposed to
(a) when we move onto the "$" at the end of the line on the
first page and (b) when we move onto the character just before
the "$" on subsequent pages. (DLR)
reset_cursor()
- Tweak for efficiency. (David Benbennick)
edit_refresh()
- Tweak for efficiency. (David Benbennick)
statusq()
- Rename "tabs" to "allowtabs". (David Benbennick)
do_credits()
- Use nanosleep() instead of usleep(). The latter is only
standard under BSD, whereas the former is POSIX compliant.
Accordingly, only include time.h if we use this function, i.e,
if NANO_EXTRA is defined. (DLR)
- Add explanatory comment. (DLR)
- configure.ac:
- Change instances of "int main ()" to "int main(void)". (DLR)
- faq.html:
- Fixed inaccuracy: multibuffer mode was first in nano 1.1.0,
not 1.1.12. (DLR)
- nano.1, nanorc.5, nano.texi
- Clarify the description for -T/--tabsize a bit. (DLR)
- Add -E/--backupdir description. (Martin Ehmsen; minor cosmetic
fixes by DLR)
- nanorc.sample:
- Add backupdir description. (Martin Ehmsen; minor cosmetic
fixes by DLR)
- README:
- Reformat to 72 characters per line, fix wording in one spot,
and fix spacing and capitalization in several spots. (DLR)
- NEWS:
- Capitalization fix. (DLR)
- TODO:
- Clarify the paragraph searching item, and add item for
filename searches in the file browser. (DLR)
GNU nano 1.3.1 - 2004.01.09
- General:
- Minor overhaul and abstraction of the lowest level of mouse
input, mostly adapted from the code in do_mouse() that handles
clicking on the shortcut list. New function do_mouseinput();
changes to do_mouse(). (DLR) David Benbennick: Add a few
efficiency/extensibility tweaks.
- Modify the shortcut structure so that instead of having two
miscellaneous key values (misc1 and misc2), there is one key
value reserved for function keys (func_key) and one
miscellaneous key value (misc), and tweak the
shortcut-handling code to deal with this. These changes allow
NANO_OPEN(PREV|NEXT)_ALTKEY to work properly when added to the
shortcut entries for NANO_OPEN(PREV|NEXT)_KEY. Also remove
the values in the shortcut list and elsewhere that were made
redundant by the low-level input overhaul, use toupper()
instead of subtracting 32 from values for greater code
readability, and eliminate use of adding 32 to values when
testing for toggles, as get_kbinput_accepted() converts toggle
values to lowercase before returning them. (DLR)
- Remove the workarounds for missing KEY_UP and KEY_DOWN, as
they appear to be holdovers of the old way of denoting the
search history shortcuts; if they aren't defined, KEY_LEFT and
KEY_RIGHT probably shouldn't work either, and all four appear
to be standard keys in termcap/terminfo in any case. Add new
special sentinel key values NANO_NO_KEY (for no shortcut key)
and NANO_HISTORY_KEY (for search history keys, both Up and
Down), modify the shortcut list to use them, and modify the
shortcut display routines to handle them. Also modify the
shortcut list code to not treat non-control character values
of val as Meta-sequences, and fix dependencies on that
behavior. Also rename several variables: "alt" -> "meta",
"altval" -> "metaval". (DLR)
- Hook up the verbatim input functions so that verbatim input
can be used in the edit window. New function
do_verbatim_input(); changes to do_char(). (DLR) Additional
minor tweaks to do_char() by David Benbennick.
- Clarify the description of the --rebinddelete option. (DLR)
- Miscellaneous comment tweaks, and copyright year updates in
the comments and in do_credits(). (DLR)
- cut.c:
- Overhaul to increase efficiency and add various cleanups.
Changes to add_to_cutbuffer(), cut_marked_segment(), and
do_uncut_text(). (David Benbennick)
- files.c:
check_operating_dir()
- Add an assert to ensure that full_operatingdir isn't NULL,
a fix for reporting nonexistent (incomplete) directory names
as being outside the operating directory when tab completion
is being used, and cosmetic cleanups. (David Benbennick)
copy_file()
- New function used to create a copy of a file, split out from
do_writeout(). (David Benbennick)
write_file()
- Completely overhauled to properly ignore appending/prepending
to symlinks when NOFOLLOW_SYMLINKS is defined, to properly
support writing a selection to a file under the changed
cutting code, to have more concise error messages, to add
various cleanups, and so on. (David Benbennick)
do_writeout()
- Prompt the user if we're trying to save an existing file (and
not just a selection of it) under a different name. (DLR;
suggested by Jean-Philippe Guérard)
- Overhaul the code used to write a selection of a file to
temporarily set fileage and filebot to the top and bottom of
the selection and then call write_file(), instead of following
the old hackish behavior with cut_marked_segment() (which
won't work after the cutting code changes anyway). (David
Benbennick) DLR: Tweak to not add an extra blank line to the
end of the written selection if the cursor is at the beginning
of the last line of the selection.
open_prevfile(), open_nextfile()
- For consistency with the rest of the multibuffer code, change
"No more open files" to "No more open file buffers". (DLR)
do_browser()
- Allow '?' to open the help browser, and readd the ability of
'G'/'g' to open the "Go to Directory" prompt (which was
erroneously removed before), for compatibility with Pico.
(DLR)
- global.c:
shortcut_init()
- Allow WHEREIS_NEXT_KEY to be used in view mode. (DLR)
- nano.c:
do_int_spell_fix()
- Add comment explaining why findnextstr() is called with
bracket_mode set to TRUE even though we aren't doing a bracket
search. (DLR)
do_para_operation()
- Convert to use the new low-level input functions. (DLR)
main()
- Remove unused variable option_index. (DLR)
- Fix omission of NANO_NO_KEY in the shortcut list scanning
code. (DLR)
- Remove now-unnecessary initialization of kbinput. (DLR)
- nano.h:
- Comment additions and cosmetic tweaks. (DLR)
- search.c:
findnextstr(), do_replace_loop()
- Fix potential infinite loops and other misbehavior when doing
beginning-of-line or end-of-line regex replacements ("^", "$",
and "^$"). Add a no_sameline parameter to findnextstr(), and
set it in the calls in do_replace_loop() when such regexes are
found, so that such regexes are only found once per line.
Also change length_change from a long to an int; size_t is
unsuitable due to its being unsigned. (DLR; found by Mike
Frysinger and DLR) David Benbennick: Add a few minor cleanups
to do_replace_loop().
- winio.c:
get_kbinput(), get_accepted_kbinput()
- Don't pass in the value of the REBIND_DELETE flag anymore.
Instead, handle it directly inside the functions. (DLR)
get_accepted_kbinput()
- Translate Ctrl-8 into NANO_DELETE_KEY (or NANO_BACKSPACE_KEY
if REBIND_DELETE is set), since it apparently is generated
sometimes even when keypad() is TRUE. (DLR)
- Translate KEY_SLEFT into NANO_BACK_KEY and KEY_SRIGHT into
NANO_FORWARD_KEY, since they are sometimes generated by
Shift-Left and Shift-Right. (DLR)
get_ascii_kbinput()
- Tweak to make it slightly more readable. (DLR)
get_verbatim_kbinput()
- Modify to take an extra parameter indicating if we should
interpret ASCII codes or not. (DLR)
get_escape_seq_kbinput()
- Expand to deal with more broken terminals that don't generate
keypad values. Support the escape sequences for Insert,
Delete, Home, End, PageUp, and PageDown, [arrow key],
Ctrl-[arrow key], and Shift-[arrow key] when needed in the
Linux console, the FreeBSD console, the Hurd console, xterm,
rxvt, and Eterm. Also, use get_verbatim_kbinput(), with ASCII
interpretation disabled, to read in the sequences. (DLR)
get_skip_tilde_kbinput()
- Removed, as it is unneeded due to the expansion of
get_escape_seq_kbinput(). (DLR)
get_mouseinput()
- Modify to take an extra parameter indicating if we should
ungetch() the key equivalents of shortcuts we click on or not.
(DLR)
nanogetstr()
- Properly interpret the Meta key value in misc if we hit it at
the statusbar prompt. (DLR)
do_yesno()
- Add a few efficiency/extensibility tweaks. (David Benbennick)
- Convert to use the new low-level input functions, and remove
two last hardcoded widths left after the above tweaks. (DLR)
do_replace_highlight()
- Display a highlighted space if the word length is zero, so
that we can see zero-length regexes we're replacing. (DLR;
suggested by Mike Frysinger)
- configure.ac:
- Check for glib 2.x and then 1.2.x if we need glib. (DLR)
- faq.html:
- Add question explaining how verbatim input works, as well as a
few minor fixes. (DLR)
- nano.1, nanorc.5:
- Add nano version numbers (minus any "-cvs" suffixes). (DLR)
- nano.spec.in:
- Update for the 1.3 branch of nano. (DLR)
- NEWS:
- Reformat so all lines are limited to 72 columns, add a few
typo fixes, and make a few minor cosmetic cleanups. (DLR)
- THANKS:
- Add Danilo Segan, for the Serbian translation.
GNU nano 1.3.0 - 2003.10.22
- General:
- Complete overhaul and abstraction of the lowest level of
@@ -25,8 +936,8 @@ GNU nano 1.3.0 - 2003.10.22
function do_research(). (Wouter van Hemel)
- Added the ability to move to the beginning or end of the
paragraph, which Pico has via ^W^W (previous paragraph)
and ^W^O (next paragraph). Modifications to do_justify(),
new functions do_para_operation(), do_para_begin(), and
and ^W^O (next paragraph). Changes to do_justify(); new
functions do_para_operation(), do_para_begin(), and
do_para_end(). Note that the last three functions are
disabled if justification is disabled. (DLR)
- Make sure the "historylog" option isn't included at all if
@@ -100,8 +1011,8 @@ GNU nano 1.3.0 - 2003.10.22
interpreted as Ctrl-[character], and the support for Pico's
Esc Esc [three-digit decimal ASCII code] input method. (DLR)
do_mark()
- Toggle MARK_ISSET() at the beginning of the function instead
of setting it in one place and unsetting it in another place.
- Toggle MARK_ISSET at the beginning of the function instead of
setting it in one place and unsetting it in another place.
(David Benbennick)
do_suspend()
- Use handle_hupterm() to handle SIGHUP and SIGTERM so we can
@@ -383,7 +1294,7 @@ GNU nano 1.1.99pre3 - 2003.02.13
- files.c:
cwd_tab_completion()
- Memory leak fix (David Benbennick).
intput_tab()
input_tab()
- Fix assumption that matches is null terminated (David
Benbennick).
load_history()

908
NEWS

File diff suppressed because it is too large Load Diff

45
README
View File

@@ -7,19 +7,20 @@ Overview
wonderfully easy-to-use and friendly Pico text editor.
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.
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.
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 http://www.gnu.org.
The nano editor is now an official GNU package. For more
information on GNU and the Free Software Foundation please see
http://www.gnu.org.
How to compile and install nano
Download the nano source code, then:
@@ -28,37 +29,41 @@ How to compile and install nano
./configure
make
make install
It's that simple. Use --prefix with configure to override the
It's that simple. Use --prefix with configure to override the
default installation directory of /usr/local.
Web Page
http://www.nano-editor.org
Mailing List and Bug Reports
Savannah hosts all the nano-related mailing-lists.
+ info-nano@gnu.org is a very low traffic list
used to announce new Nano versions or other important information
about the project.
used to announce new nano versions or other important
information about the project.
+ help-nano@gnu.org is for those seeking to get help without
wanting to hear about the technical details of its
development.
+ nano-devel@gnu.org is the list used by the people
that make Nano and a general development discussion list, with
that make nano and a general development discussion list, with
moderate traffic.
To subscribe, send email to nano-<name>-request@gnu.org
with a subject of "subscribe", where <name> is the list you want to
To subscribe, send email to nano-<name>-request@gnu.org with a
subject of "subscribe", where <name> is the list you want to
subscribe to.
For general bug reports, send a description of the problem to
nano@nano-editor.org or directly to the development list.
Current Status
GNU nano has reaching its second major milestone, 1.2.x. Development
of new features will continue in the 1.3.x branch, while 1.2.x
versions will be dedicated to bugfixing and polishing.
GNU nano has reached its second major milestone, 1.2.x.
Development of new features will continue in the 1.3.x branch,
while 1.2.x versions will be dedicated to bugfixing and
polishing.
Chris Allegretta (chrisa@asty.org)

View File

@@ -7,8 +7,8 @@ more care than the official stable and unstable tarballs.
To successfully compile GNU nano from CVS, you'll need the
following packages:
- autoconf (version >= 2.52)
- automake (version >= 1.6, 1.7.x recommended)
- autoconf (version >= 2.54)
- automake (version >= 1.7)
- gettext (version >= 0.11.5)
- texinfo
- cvs

2
THANKS
View File

@@ -4,6 +4,7 @@ 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
Marco Colombo <magicdice@inwind.it> Italian translator
Karl Eichwalder <keichwa@gmx.net> German translator
@@ -28,6 +29,7 @@ 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
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

7
TODO
View File

@@ -3,11 +3,14 @@ TODO file (? means the feature may be implemented, but not definitely)
For version 1.4:
- UTF-8 support.
- Support for Pico's paragraph searching ability. [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 key?
- Rebindable keys?
- Keystroke to implement "Add next sequence as raw" like vi's ^V.
- Spell check selected text only.
[DONE for edit window, needs to be done for statusbar prompt]
- Spell check selected text only. [DONE]
- Make "To line" (^W^T) and "Read from Command" (^R^X) re-enter their
parent menu when their keystroke is entered a second time (^W^T^T and
(^R^X^X)(requires figuring out when to keep cursor pos and when not

View File

@@ -125,7 +125,7 @@ if test "$with_gnu_ld" = yes; then
ld_shlibs=no
;;
beos*)
if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
if $LD --help 2>&1 | grep -E ': supported targets:.* elf' > /dev/null; then
:
else
ld_shlibs=no
@@ -137,9 +137,9 @@ if test "$with_gnu_ld" = yes; then
hardcode_libdir_flag_spec='-L$libdir'
;;
solaris* | sysv5*)
if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
if $LD -v 2>&1 | grep -E 'BFD 2\.8' > /dev/null; then
ld_shlibs=no
elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
elif $LD --help 2>&1 | grep -E ': supported targets:.* elf' > /dev/null; then
:
else
ld_shlibs=no
@@ -149,7 +149,7 @@ if test "$with_gnu_ld" = yes; then
hardcode_direct=yes
;;
*)
if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
if $LD --help 2>&1 | grep -E ': supported targets:.* elf' > /dev/null; then
:
else
ld_shlibs=no

View File

@@ -19,14 +19,15 @@
#
# $Id$
AC_INIT([GNU nano], [1.3.0], [nano-devel@gnu.org], [nano])
AC_INIT([GNU nano], [1.3.3], [nano-devel@gnu.org], [nano])
AC_CONFIG_SRCDIR([src/nano.c])
AM_INIT_AUTOMAKE
AM_CONFIG_HEADER([config.h:config.h.in])
AC_PREREQ(2.52)
AC_PREREQ(2.54)
dnl Checks for programs.
AC_GNU_SOURCE
AC_PROG_CC
AC_ISC_POSIX
AC_SYS_LARGEFILE
@@ -43,7 +44,16 @@ AC_CHECK_HEADER(regex.h,
AC_TRY_RUN([
#include <sys/types.h>
#include <regex.h>
int main () { regex_t reg; size_t n = 1; regmatch_t r; regcomp(&reg, "\\<", 0); regexec(&reg, "", n, &r, 0); regfree(&reg); return 0; }],
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.])
)
@@ -199,9 +209,12 @@ AC_ARG_WITH(slang,
_libs=$LIBS
LIBS="$LIBS -lslang"
AC_TRY_RUN([
#include <stdio.h>
#include <slcurses.h>
int main () { SLtt_initialize (NULL); return 0; }],
int main(void)
{
SLtt_initialize(NULL);
return 0;
}],
[AC_MSG_RESULT(yes)
AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.])
slang_support=yes
@@ -221,9 +234,12 @@ int main () { SLtt_initialize (NULL); return 0; }],
AC_MSG_CHECKING([for SLtt_initialize in -lslang $tcap])
LIBS="$LIBS $tcap"
AC_TRY_RUN([
#include <stdio.h>
#include <slcurses.h>
int main () { SLtt_initialize (NULL); return 0; }],
int main(void)
{
SLtt_initialize(NULL);
return 0;
}],
[AC_MSG_RESULT(yes)
AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.])
slang_support=yes
@@ -238,9 +254,12 @@ int main () { SLtt_initialize (NULL); return 0; }],
AC_MSG_CHECKING([for SLtt_initialize in -lslang $tcap -lm])
LIBS="$LIBS -lm"
AC_TRY_RUN([
#include <stdio.h>
#include <slcurses.h>
int main () { SLtt_initialize (NULL); return 0; }],
int main(void)
{
SLtt_initialize(NULL);
return 0;
}],
[AC_MSG_RESULT(yes)
AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.])
slang_support=yes
@@ -270,17 +289,16 @@ AC_MSG_WARN([*** Can not use slang when cross-compiling])),
esac], [AC_MSG_RESULT(no)])
dnl Checks for functions
AC_CHECK_FUNCS(snprintf vsnprintf strcasecmp strncasecmp)
AC_CHECK_FUNCS(snprintf vsnprintf isblank strcasecmp strncasecmp strcasestr strnlen)
if test "x$ac_cv_func_snprintf" = "xno" -o "xac_cv_func_vsnprintf" = "xno"
then
AM_PATH_GLIB(1.2.4,,
[AC_MSG_ERROR([
AM_PATH_GLIB_2_0(2.0.0,,
[AM_PATH_GLIB(1.2.4,,
[AC_MSG_ERROR([
*** snprintf() and/or vsnprintf() not found. GLIB not found either.
*** You need both snprintf() and vsnprintf(). Alternatively you can
*** install the GLIB library which can be found at ftp://ftp.gtk.org/.])],
glib)
glib_cflags=`$GLIB_CONFIG --cflags glib`
glib_libs=`$GLIB_CONFIG --libs glib`
glib)])
fi
dnl Checks for typedefs, structures, and compiler characteristics.
@@ -327,10 +345,6 @@ 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.]))
if test x$slang_support != xyes; then
AC_CHECK_LIB([$CURSES_LIB_NAME], wresize, AC_DEFINE(HAVE_WRESIZE, 1, [Define this if you have the wresize function in your ncurses-type library.]))
AC_CHECK_LIB([$CURSES_LIB_NAME], resizeterm, AC_DEFINE(HAVE_RESIZETERM, 1, [Define this if you have the resizeterm function in your ncurses-type library.]))
fi
dnl Parse any configure options
@@ -338,13 +352,13 @@ LIBS="$LIBS $CURSES_LIB"
AC_SUBST(CURSES_LIB)
if test "x$glib_cflags" != "x"
if test "x$GLIB_CFLAGS" != "x"
then
CFLAGS="$CFLAGS $glib_cflags"
CFLAGS="$CFLAGS $GLIB_CFLAGS"
fi
if test "x$glib_libs" != "x"
if test "x$GLIB_LIBS" != "x"
then
LDFLAGS="$LDFLAGS $glib_libs"
LDFLAGS="$LDFLAGS $GLIB_LIBS"
fi
AC_CONFIG_FILES([

View File

@@ -29,7 +29,8 @@
<a href="#3.5">3.5. Nano should automatically run strip on the binary when installing it!</a><br>
<a href="#3.6">3.6. How can I make the executable smaller? This is too bloated!</a><br>
<a href="#3.7">3.7. Tell me more about this multibuffer stuff!</a><br>
<a href="#3.8">3.8. How do I make a .nanorc file that nano will read when I start it?</a></p></blockquote>
<a href="#3.8">3.8. Tell me more about this verbatim input stuff!</a><br>
<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. Ack! My backspace/delete/enter/double bucky/meta key doesn't seem to work! What can I do?</a><br>
<a href="#4.2">4.2. Nano crashes when I type &lt;insert keystroke here&gt;!</a><br>
@@ -37,9 +38,8 @@
<a href="#4.4">4.4. [version 1.1.12 and earlier] Why does nano show ^\ in the shortcut list instead of ^J?</a><br>
<a href="#4.5a">4.5a. [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.5b">4.5b. [version 1.2.2 and later] Hey, the search string behavior has reverted, it's now like Pico, what happened to the consistency?</a><br>
<a href="#4.6">4.6. I get the message &quot;NumLock glitch detected. Keypad will malfunction with NumLock off.&quot; What gives?</a><br>
<a href="#4.7">4.7. How do I make nano my default editor (in Pine, mutt, etc.)?</a><br>
<a href="#4.8">4.8. I've compiled nano with color support, but I don't see any color when I run it!</a></p></blockquote>
<a href="#4.6">4.6. How do I make nano my default editor (in Pine, mutt, etc.)?</a><br>
<a href="#4.7">4.7. I've compiled nano with color support, but I don't see any color when I run it!</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>
@@ -78,7 +78,7 @@
<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.0. 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.3. 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.2/nano.1.html">here</a>.</p></blockquote>
<hr width="100%">
@@ -157,10 +157,14 @@
<b>--enable-multibuffer</b> Enables having multiple file buffers open
<b>--enable-all</b> Enables all of the above features</pre></blockquote>
<h2><a name="3.7"></a>3.7. Tell me more about this multibuffer stuff!</h2>
<blockquote><p>To use multiple file buffers, you must be using nano 1.1.12 or newer, and you must have configured nano with <b>--enable-multibuffer</b> or <b>--enable-extra</b> (use nano -V to check). Then when you want to enable inserting a file into its own buffer instead of into the current file, just hit <b>Meta-F</b>, then insert the file as normal with <b>^R</b>. If you always want files to be loaded into their own buffers, use the <b>--multibuffer</b> or <b>-F</b> flag when you invoke nano. </p>
<blockquote><p>To use multiple file buffers, you must be using nano 1.1.0 or newer, and you must have configured nano with <b>--enable-multibuffer</b> or <b>--enable-extra</b> (use nano -V to check). Then when you want to enable inserting a file into its own buffer instead of into the current file, just hit <b>Meta-F</b>, then insert the file as normal with <b>^R</b>. If you always want files to be loaded into their own buffers, use the <b>--multibuffer</b> or <b>-F</b> flag when you invoke nano.</p>
<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. How do I make a .nanorc file that nano will read when I start it?</h2>
<blockquote>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 pico&quot; or &quot;set nowrap&quot;.</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 three-digit ASCII code from 000 to 255, and the character with that ASCII code will be inserted instead.</p>
<p><b>NOTE:</b> Verbatim input doesn't work at prompts right now. This will be fixed soon.</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%">
<h1><a name="4"></a>4. Running</h1>
<h2><a name="4.1"></a>4.1. Ack! My backspace/delete/enter/double bucky/meta key doesn't seem to work! What can I do?</h2>
@@ -178,10 +182,7 @@
<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.5b"></a>4.5b. [version 1.2.2 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.6"></a>4.6. I get the message &quot;NumLock glitch detected. Keypad will malfunction with NumLock off.&quot; What gives?</h2>
<blockquote><p>Nano (and actually almost all console editors) has issues when cycling the NumLock key in certain X terminals (rxvt, aterm, wterm, etc...). When you switch NumLock from on to off, you put the terminal into an &quot;application mode&quot; that changes what sequences are sent by the keypad. These sequences vary sufficiently from terminal to terminal that it is nearly impossible to work around them from within nano.</p>
<p>In a nutshell, if you want to be able to use the keypad with the arrow and page up/down functionality, you have to exit nano and reset your terminal (presumably with &quot;reset&quot; or &quot;stty sane&quot; or similar) and then run nano again with NumLock off. If you know an easier way to restore &quot;normal mode&quot;, please mail <a href="mailto:nano@nano-editor.org">nano@nano-editor.org</a>.</p></blockquote>
<h2><a name="4.7"></a>4.7. How do I make nano my default editor (in Pine, mutt, etc.)?</h2>
<h2><a name="4.6"></a>4.6. 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>
@@ -194,8 +195,8 @@
<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><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.8"></a>4.8. 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.8">3.8</a>.</p></blockquote>
<h2><a name="4.7"></a>4.7. 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>
<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>
@@ -236,8 +237,11 @@
<h2><a name="8"></a>8. ChangeLog</h2>
<blockquote>
<p>
2004/04/07 - Removed NumLock glitch question, as it's no longer needed. (DLR)<br>
2004/01/30 - Fixed inaccuracy: multibuffer mode was first in nano 1.1.0, not 1.1.12. (DLR)<br>
2003/12/31 - Added question about the new verbatim input function, and a few minor fixes. Removed reference to &quot;set pico&quot; (DLR).<br>
2003/07/02 - Added question about nano's not showing color when it's compiled with color support (DLR; suggested by Jordi).<br>
2003/02/23 - Updated RPM links for nano 1.2.x. (DLR).<br>
2003/02/23 - Updated RPM links for nano 1.2.x (DLR).<br>
2003/01/16 - Split section 4.5 into 4.5a and 4.5b for search string behavior. Added --enable-all docs.<br>
2002/12/28 - More misc. fixes (David Benbennick, DLR).<br>
2002/10/25 - Misc. fixes and link updates (DLR).<br>

View File

@@ -6,7 +6,7 @@
.\" Public License for copying conditions. There is NO warranty.
.\"
.\" $Id$
.TH NANO 1 "August 24, 2003"
.TH NANO 1 "version 1.3.3" "June 28, 2004"
.\" Please adjust this date whenever revising the manpage.
.\"
@@ -35,6 +35,13 @@ replace" and "go to line number".
.B \+\fILINE\fP
Places cursor at \fILINE\fP on startup.
.TP
.B \-A (\-\-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.
.TP
.B \-B (\-\-backup)
When saving a file, back up the previous version of it to the current
filename suffixed with a ~.
@@ -42,6 +49,10 @@ filename suffixed with a ~.
.B \-D (\-\-dos)
Write file in DOS format.
.TP
.B \-E \fIdir\fP (\-\-backupdir=\fIdir\fP)
Set the directory where \fBnano\fP puts the backup files if file backups
are enabled.
.TP
.B \-F (\-\-multibuffer)
Enable multiple file buffers, if available.
.TP
@@ -77,17 +88,24 @@ Enable regular expression matching for search strings, as well as
Enable smooth scrolling. Text will scroll line-by-line, instead of the
usual chunk-by-chunk behavior.
.TP
.B \-T \fInum\fP (\-\-tabsize=\fInum\fP)
Set the size (width) of a tab.
.B \-T \fIcols\fP (\-\-tabsize=\fIcols\fP)
Set the size (width) of a tab to \fIcols\fP columns.
.TP
.B \-V (\-\-version)
Show the current version number and author.
.TP
.B \-Y \fIstr\fP (\-\-syntax=\fIstr\fP)
Specify a specific syntax highlighting from the
.I .nanorc
.I nanorc
to use, if available.
.TP
.B \-Z (\-\-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 \fBnano\fP with any name
beginning with 'r' (e.g. "rnano").
.TP
.B \-c (\-\-const)
Constantly show the cursor position.
.TP
@@ -100,8 +118,8 @@ acts like Delete on your system.
Display a summary of command line options.
.TP
.B \-i (\-\-autoindent)
Indent new lines to the previous line's indentation. Useful when editing
source code.
Indent new lines to the previous line's indentation. Useful when
editing source code.
.TP
.B \-k (\-\-cut)
Enable cut from cursor to end of line with ^K.
@@ -161,6 +179,10 @@ and the example file \fBnanorc.sample\fP which should be provided with
\fBnano\fP.
.SH NOTES
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

View File

@@ -5,7 +5,7 @@
.\" Public License for copying conditions. There is NO warranty.
.\"
.\" $Id$
.TH NANORC 5 "August 24, 2003"
.TH NANORC 5 "version 1.3.3" "June 28, 2004"
.\" Please adjust this date whenever revising the manpage.
.\"
.SH NAME
@@ -47,6 +47,14 @@ Use auto-indentation.
Create backup files in
.IR filename~ .
.TP
\fBset backupdir "\fIdirectory\fP"\fP
Set the directory where \fBnano\fP puts the backup files if file backups
are enabled.
\fBset brackets "\fIstring\fP"\fP
Set the characters treated as closing brackets. They cannot contain
tabs or spaces. Only closing punctuation, optionally followed by
closing brackets, can end sentences.
.TP
\fBset/unset const\fP
Constantly display the cursor position in the status bar.
.TP
@@ -86,6 +94,11 @@ feature is turned off.
\fBset/unset preserve\fP
Preserve the XON and XOFF keys (^Q and ^S).
.TP
\fBset punct "\fIstring\fP"\fP
Set the characters treated as closing punctuation. They cannot contain
tabs or spaces. Only closing punctuation, optionally followed by
closing brackets, can end sentences.
.TP
\fBset quotestr "\fIstring\fP"\fP
The email-quote string, used to justify email-quoted paragraphs. This
is an "extended regular expression" if your system supports them,
@@ -104,6 +117,13 @@ acts like Delete on your system.
\fBset/unset regexp\fP
Do regular expression searches by default.
.TP
\fBset/unset smarthome\fP
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.
.TP
\fBset/unset smooth\fP
Use smooth scrolling by default.
.TP
@@ -115,8 +135,8 @@ calls \fIspell\fP.
Allow nano to be suspended with ^Z.
.TP
\fBset tabsize \fIn\fP\fP
Use a tab size of \fIn\fP instead of the default (8); must be greater
than 0.
Use a tab size of \fIn\fP columns instead of the default (8); must be
greater than 0.
.TP
\fBset/unset tempfile\fP
Save automatically on exit, don't prompt.
@@ -124,6 +144,10 @@ Save automatically on exit, don't prompt.
\fBset/unset view\fP
Disallow file modification.
.TP
\fBset whitespace "\fIstring\fP"\fP
Set the two characters used to display the first characters of tabs and
spaces. They cannot be control characters.
.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

View File

@@ -8,16 +8,25 @@
## For the options that take parameters, the default value is given.
## Other options are unset by default.
## Use auto-indentation
## Use auto-indentation.
# set autoindent
## Backup files to filename~
## Backup files to filename~.
# set backup
## The directory to put the backup files in.
# set backupdir ""
## The characters treated as closing brackets. They cannot contain tabs
## or spaces. Only closing punctuation, optionally followed by closing
## brackets, can end sentences.
##
# set brackets "'")}]>"
## Constantly display the cursor position in the status bar.
# set const
## Use cut to end of line with ^K by default
## Use cut to end of line with ^K by default.
# set cut
## Set the line length for wrapping text and justifying paragraphs.
@@ -29,22 +38,26 @@
## Enable ~/.nano_history for saving and reading search/replace strings.
# set historylog
## Allow multiple file buffers (using ^R inserts into separate buffer).
## You must have configured with --enable-multibuffer or --enable-extra
## for this to work.
##
## set multibuffer
## Enable mouse support so that mouse clicks can be used to set the mark
## and run shortcuts.
# set mouse
## Don't convert files from DOS/Mac format
## Allow multiple file buffers (using ^R will insert into a separate
## buffer). You must have configured with --enable-multibuffer or
## --enable-extra for this to work.
##
# set multibuffer
## Don't convert files from DOS/Mac format.
# set noconvert
## Don't follow symlinks when writing files
## Don't follow symlinks when writing files.
# set nofollow
## Don't display the help lists at the bottom of the screen
## Don't display the helpful shortcut lists at the bottom of the screen.
# set nohelp
## Don't wrap text at all
## Don't wrap text at all.
# set nowrap
## Set operating directory. nano will not read or write files outside
@@ -54,9 +67,15 @@
##
# set operatingdir ""
## Preserve the XON and XOFF keys (^Q and ^S)
## Preserve the XON and XOFF keys (^Q and ^S).
# set preserve
## The characters treated as closing punctuation. They cannot contain
## tabs or spaces. Only closing punctuation, optionally followed by
## closing brackets, can end sentences.
##
# set punct ".?!"
## 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:
@@ -66,13 +85,20 @@
## You can get old nano quoted-justify behavior via:
# set quotestr "(> )+"
## Fix Backspace if it acts like Delete
## Fix Backspace/Delete confusion problem.
# set rebinddelete
## Do extended regular expression searches by default
## Do extended regular expression searches by default.
# set regexp
## Use smooth scrolling as the default
## 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
@@ -80,18 +106,22 @@
##
# set speller "aspell -c"
## Allow nano to be suspended with ^Z
## Allow nano to be suspended with ^Z.
# set suspend
## Use this tab size instead of the default; it must be greater than 0
## Use this tab size instead of the default; it must be greater than 0.
# set tabsize 8
## Save automatically on exit, don't prompt
## Save automatically on exit, don't prompt.
# set tempfile
## Disallow file modification, why would you want this in an rc file? ;)
# set view
## The two characters used to display the first characters of tabs and
## spaces. ASCII 187 and ASCII 183 seem to be good values for these.
# set whitespace " "
## Color setup
## Format:
## syntax "short description" ["filename regex" ...]
@@ -201,7 +231,7 @@
## highlight possible errors and parameters
#color brightwhite "^ *(set|unset|syntax|color).*$"
## set, unset and syntax
#color cyan "^ *(set|unset) +(autoindent|backup|const|cut|fill|historylog|multibuffer|noconvert|nofollow|nohelp|nowrap|operatingdir|preserve|quotestr|rebinddelete|regexp|smooth|speller|suspend|tabsize|tempfile|view)"
#color cyan "^ *(set|unset) +(autoindent|backup|backupdir|brackets|const|cut|fill|historylog|mouse|multibuffer|noconvert|nofollow|nohelp|nowrap|operatingdir|preserve|punct|quotestr|rebinddelete|regexp|smarthome|smooth|speller|suspend|tabsize|tempfile|view|whitespace)"
#color green "^ *(set|unset|syntax)\>"
## colors
#color yellow "^ *color +(bright)?(white|black|red|blue|green|yellow|magenta|cyan)(,(white|black|red|blue|green|yellow|magenta|cyan))?\>"

View File

@@ -8,8 +8,8 @@
@c Run `makeinfo' rather than `texinfo-format-buffer'.
@smallbook
@set EDITION 0.1
@set VERSION 1.3.0
@set UPDATED 22 Oct 2003
@set VERSION 1.3.3
@set UPDATED 28 Jun 2004
@dircategory Editors
@direntry
@@ -23,7 +23,7 @@
@titlepage
@title GNU @code{nano}
@subtitle a small and friendly text editor.
@subtitle version 1.3.0
@subtitle version 1.3.3
@author Chris Allegretta
@page
@@ -107,6 +107,13 @@ Email bug reports to @email{nano@@nano-editor.org}.
@table @code
@item -A, --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 -B, --backup
When saving a file, back up the previous version of it to the current
filename suffixed with a ~.
@@ -114,6 +121,10 @@ filename suffixed with a ~.
@item -D, --dos
Write file in DOS format.
@item -E, --backupdir=[dir]
Set the directory where @code{nano} puts the backup files if file
backups are enabled.
@item -F, --multibuffer
Enable multiple file buffers, if available.
@@ -143,8 +154,8 @@ Turn on regular expression search and search/replace.
@item -S, --smooth
Enable smooth scrolling.
@item -T [num], --tabsize=[num]
Set the displayed tab length to [num] columns.
@item -T [num], --tabsize=[#cols]
Set the displayed tab length to [#cols] columns.
@item -V, --version
Print the version number and copyright and quit.
@@ -153,6 +164,13 @@ Print the version number and copyright and quit.
Specify a specific syntax highlighting from the .nanorc to use, if
available.
@item -Z, --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").
@item -c, --const
Constantly display the cursor position and line number on the statusbar.
@@ -195,9 +213,10 @@ from the right of the screen, allowing it to vary along with the screen
width if the screen is resized.
@item -s [prog], --speller=[prog]
Invoke [prog] as the spell checker. By default, @code{nano} uses its
own interactive spell checker that requires the @code{spell} program be
installed on your system.
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 -t, --tempfile
Do not ask whether or not to save the current contents of the file when
@@ -335,12 +354,18 @@ toggles the -D (@code{--dos}) command line flag.
@item Multiple Files Toggle (Meta-F)
toggles the -F (@code{--multibuffer}) command line flag.
@item Backup File Toggle (Meta-H)
toggles the -A (@code{--smarthome}) command line flag.
@item AutoIndent Toggle (Meta-I)
toggles the -i (@code{--autoindent}) command line flag.
@item Cut To End Toggle (Meta-K)
toggles the -k (@code{--cut}) command line flag.
@item Auto Line Wrap Toggle (Meta-L)
toggles the -w (@code{--nowrap}) command line flag.
@item Mouse Toggle (Meta-M)
toggles the -m (@code{--mouse}) command line flag.
@@ -350,21 +375,12 @@ toggles the -M (@code{--mac}) command line flag.
@item Smooth Scrolling Toggle (Meta-S)
toggles the -S (@code{--smooth}) command line flag.
@item AutoWrap Toggle (Meta-W)
toggles the -w (@code{--nowrap}) command line flag.
@item Expert/Nohelp Toggle (Meta-X)
toggles the -x (@code{--nohelp}) command line flag.
@item Suspend Toggle (Meta-Z)
toggles the -z (@code{--suspend}) command line flag.
@item Open Previous File Toggle (Meta-<)
changes buffer to previously loaded file.
@item Open Next File Toggle (Meta->)
changes buffer to next loaded file.
@end table
@@ -390,17 +406,18 @@ are certain differences between the editors:
@table @code
@item Search and Replace History
As of version 1.2.2 of @code{nano}, text entered as search or replace
strings will be stored and can be accessed with the up/down arrow keys.
Previously, @code{nano} offered a more consistent, but 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.
As of version 1.1.99pre1 of @code{nano}, text entered as search or
replace strings will be stored and can be accessed with the up/down
arrow keys. Previously, @code{nano} offered a more consistent, but
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.
@item Writing or Appending Selected Text to Files
@@ -427,9 +444,9 @@ replace it. The @code{nano} implementation will stop at each search
string found and query whether to replace this instance or not. The
internal spell checker operates similarly. Note that these is no way to
force these functions to behave in the Pico fashion. As of version
1.2.2, misspelled words are sorted and trimmed for uniqueness in the
internal spell checker such that the words 'apple' and 'Apple' will be
prompted for correction separately.
1.1.99pre1, misspelled words are sorted and trimmed for uniqueness in
the internal spell checker such that the words 'apple' and 'Apple' will
be prompted for correction separately.
@end table
@node Building and Configure Options, , Pico Compatibility, Top

View File

@@ -9,7 +9,7 @@ Release : %{rel}
Copyright : GPL
Group : Console/Editors
URL : http://www.nano-editor.org
Source : http://www.nano-editor.org/dist/v1.2/%{name}-%{ver}.tar.gz
Source : http://www.nano-editor.org/dist/v1.3/%{name}-%{ver}.tar.gz
BuildRoot : /var/tmp/%{name}-buildroot
Requires : ncurses
@@ -30,7 +30,7 @@ make DESTDIR="$RPM_BUILD_ROOT" install
%files
%defattr(-,root,root)
%doc AUTHORS BUGS COPYING ChangeLog INSTALL NEWS README THANKS TODO nanorc.sample
%doc AUTHORS BUGS COPYING ChangeLog INSTALL NEWS README THANKS TODO doc/faq.html doc/nanorc.sample
%{_bindir}/nano
%{_mandir}/*/*
%{_datadir}/locale/*/LC_MESSAGES/nano.mo

View File

@@ -1,3 +1,29 @@
2004-06-01 Jordi Mallach <jordi@gnu.org>
* zh_TW.po: Added Traditional Chinese translation by
CHAO Wei-Lun <chaoweilun@pcmail.com.tw>.
* LINGUAS: Added "zh_TW".
2004-02-24 Jordi Mallach <jordi@gnu.org>
* ms.po: Updated Malay translation by Sharuzzaman Ahmat Raslan.
2003-11-25 Jordi Mallach <jordi@gnu.org>
* ro.po: Updated Romanian translation by Laurentiu Buzdugan.
2003-11-06 Jordi Mallach <jordi@gnu.org>
* sr.po: Added Serbian translation by Danilo Segan <dsegan@gmx.net>.
* LINGUAS: Added "sr" (Serbian), and alphabetize.
* ChangeLog: Recoded as UTF-8.
2003-10-30 Jordi Mallach <jordi@gnu.org>
* fi.po: Patch from Martin-Eric Racine <q-funk@pp.fishpool.fi>
to accept "Yy" and "Nn" as well as the Finnish letters in Yes/No
prompts.
2003-10-18 Jordi Mallach <jordi@gnu.org>
* ca.po: Updated Catalan translation.
@@ -8,7 +34,7 @@
2003-09-01 Jordi Mallach <jordi@gnu.org>
* fr.po: Updated French translation by Jean-Philippe Guérard.
* fr.po: Updated French translation by Jean-Philippe Guérard.
2003-08-17 Jordi Mallach <jordi@gnu.org>
@@ -20,11 +46,11 @@
2003-06-11 Jordi Mallach <jordi@gnu.org>
* nb.po: Updated Norwegian bokmål translation by Geir Helland.
* nb.po: Updated Norwegian bokmål translation by Geir Helland.
2003-06-10 Jordi Mallach <jordi@gnu.org>
* fr.po: Updated French translation by Jean-Philippe Guérard.
* fr.po: Updated French translation by Jean-Philippe Guérard.
2003-06-02 Jordi Mallach <jordi@gnu.org>
@@ -32,7 +58,7 @@
2003-05-06 Jordi Mallach <jordi@gnu.org>
* ms.po: Malay translation by Sharuzzaman Ahmat Raslan.
* ms.po: Updated Malay translation by Sharuzzaman Ahmat Raslan.
2003-04-24 Jordi Mallach <jordi@gnu.org>
@@ -46,7 +72,7 @@
2003-04-04 Jordi Mallach <jordi@gnu.org>
* fr.po: Updated French translation by Jean-Philippe Guérard.
* fr.po: Updated French translation by Jean-Philippe Guérard.
2003-03-17 Jordi Mallach <jordi@gnu.org>
@@ -68,7 +94,7 @@
2003-02-19 Jordi Mallach <jordi@gnu.org>
* fi.po: Updated Finnish translation by Kalle Olavi Niemitalo.
* es.po: Updated Spanish translation by Ricardo Javier Cárdenes
* es.po: Updated Spanish translation by Ricardo Javier Cárdenes
Medina.
2003-02-17 Jordi Mallach <jordi@gnu.org>
@@ -79,12 +105,12 @@
2003-02-16 Jordi Mallach <jordi@gnu.org>
* gl.po: Updated Galician translation by Jacobo Tarrío.
* fr.po: Updated French translation by Jean-Philippe Guérard.
* gl.po: Updated Galician translation by Jacobo Tarrío.
* fr.po: Updated French translation by Jean-Philippe Guérard.
2003-02-15 Jordi Mallach <jordi@gnu.org>
* fr.po: Updated French translation by Jean-Philippe Guérard.
* fr.po: Updated French translation by Jean-Philippe Guérard.
* nl.po: Updated Dutch translation by Guus Sliepen.
* sv.po: Updated Swedish translation by Christian Rose.
* ca.po: Updated Catalan translation.
@@ -111,8 +137,8 @@
2003-02-08 Jordi Mallach <jordi@gnu.org>
* it.po: Updated Italian translation by Marco Colombo.
* gl.po: Updated Galician translation by Jacobo Tarrío.
* es.po: Updated Spanish translation by Ricardo Javier Cárdenes
* gl.po: Updated Galician translation by Jacobo Tarrío.
* es.po: Updated Spanish translation by Ricardo Javier Cárdenes
Medina.
2003-02-06 Jordi Mallach <jordi@gnu.org>
@@ -123,13 +149,13 @@
2003-02-04 Jordi Mallach <jordi@gnu.org>
* ca.po: Updated Catalan translation.
* fr.po: Updated French translation by Jean-Philippe Guérard.
* fr.po: Updated French translation by Jean-Philippe Guérard.
* uk.po: Updated Ukrainian translation by Sergey A. Ribalchenko.
* de.po: Updated German translation by Michael Piefel.
2003-01-27 Jordi Mallach <jordi@gnu.org>
* es.po: Updated translation by Ricardo Javier Cárdenes Medina.
* es.po: Updated translation by Ricardo Javier Cárdenes Medina.
2002-01-26 Jordi Mallach <jordi@gnu.org>
@@ -137,7 +163,7 @@
2002-01-25 Jordi Mallach <jordi@gnu.org>
* gl.po: Updated translation by Jacobo Tarrío.
* gl.po: Updated translation by Jacobo Tarrío.
2002-01-22 Jordi Mallach <jordi@gnu.org>
@@ -145,13 +171,13 @@
2003-01-21 Jordi Mallach <jordi@gnu.org>
* fr.po: Updated translation by Jean-Philippe Guérard.
* fr.po: Updated translation by Jean-Philippe Guérard.
* ms.po: Updated translation by Sharuzzaman Ahmat Raslan.
* uk.po: Updated translation by Sergey A. Ribalchenko.
2003-01-18 Jordi Mallach <jordi@gnu.org>
* fr.po: Updated translation by Jean-Philippe Guérard.
* fr.po: Updated translation by Jean-Philippe Guérard.
* sv.po: Updated translation by Christian Rose.
* nl.po: Updated translation by Guus Sliepen.
* ca.po: Updated translation.
@@ -175,7 +201,7 @@
2002-12-14 Jordi Mallach <jordi@sindominio.net>
* fr.po: Updated translation by Jean-Philippe Guérard.
* fr.po: Updated translation by Jean-Philippe Guérard.
* tr.po: New Turkish translation by Doruk Fisek.
2002-11-10 Jordi Mallach <jordi@sindominio.net>
@@ -195,22 +221,22 @@
2002-10-29 Jordi Mallach <jordi@sindominio.net>
* id.po: Updated translation by Tedi Heriyanto.
* fr.po: Updated translation by Jean-Philippe Guérard.
* fr.po: Updated translation by Jean-Philippe Guérard.
2002-10-27 Jordi Mallach <jordi@sindominio.net>
* fr.po: Updated translation by Jean-Philippe Guérard.
* fr.po: Updated translation by Jean-Philippe Guérard.
2002-10-26 Jordi Mallach <jordi@sindominio.net>
* es.po: Updated translation by Ricardo Javier Cárdenes Medina.
* es.po: Updated translation by Ricardo Javier Cárdenes Medina.
2002-10-26 Jordi Mallach <jordi@sindominio.net>
* gl.po: Updated translation by Jacobo Tarrío.
* gl.po: Updated translation by Jacobo Tarrío.
* sv.po: Updated translation by Christian Rose.
* de.po: Updated translation by Michael Piefel.
* fr.po: Updated translation by Jean-Philippe Guérard.
* fr.po: Updated translation by Jean-Philippe Guérard.
* ca.po: Updated translation.
2002-10-17 Jordi Mallach <jordi@sindominio.net>
@@ -219,11 +245,11 @@
2002-10-14 Jordi Mallach <jordi@sindominio.net>
* fr.po: Updated translation by Jean-Philippe Guérard.
* fr.po: Updated translation by Jean-Philippe Guérard.
2002-10-13 Jordi Mallach <jordi@sindominio.net>
* es.po: Updated translation by Ricardo Javier Cárdenes Medina.
* es.po: Updated translation by Ricardo Javier Cárdenes Medina.
2002-10-08 Jordi Mallach <jordi@sindominio.net>
@@ -241,7 +267,7 @@
2002-10-07 Jordi Mallach <jordi@sindominio.net>
* sv.po: Updated translation by Christian Rose.
* gl.po: Updated translation by Jacobo Tarrío.
* gl.po: Updated translation by Jacobo Tarrío.
* pl.po: Updated translation by Wojciech Kotwica.
2002-09-08 Jordi Mallach <jordi@sindominio.net>
@@ -250,7 +276,7 @@
2002-09-08 Jordi Mallach <jordi@sindominio.net>
* fr.po: Updated translation by Jean-Philippe Guérard.
* fr.po: Updated translation by Jean-Philippe Guérard.
* da.po: Updated translation by Keld Simonsen.
2002-08-19 Jordi Mallach <jordi@sindominio.net>
@@ -260,15 +286,15 @@
2002-07-31 Jordi Mallach <jordi@sindominio.net>
* gl.po: Updated translation by Jacobo Tarrío.
* gl.po: Updated translation by Jacobo Tarrío.
2002-07-31 Jordi Mallach <jordi@sindominio.net>
* es.po: Updated translation by Ricardo Javier Cárdenes Medina.
* es.po: Updated translation by Ricardo Javier Cárdenes Medina.
2002-07-31 Jordi Mallach <jordi@sindominio.net>
* fr.po: Updated translation by Jean-Philippe Guérard.
* fr.po: Updated translation by Jean-Philippe Guérard.
2002-07-30 Jordi Mallach <jordi@sindominio.net>
@@ -318,13 +344,13 @@
2002-05-13 Jordi Mallach <jordi@sindominio.net>
* fr.po: Updated translation by Jean-Philippe Guérard.
* fr.po: Updated translation by Jean-Philippe Guérard.
* de.po: Updated translation by Michael Piefel.
2002-05-13 Jordi Mallach <jordi@sindominio.net>
* it.po: Updated translation by Marco Colombo.
* gl.po: Updated translation by Jacobo Tarrío.
* gl.po: Updated translation by Jacobo Tarrío.
* ca.po: Updated translation.
* es.po: Updated translation.
@@ -361,7 +387,7 @@
* gl.po: Updated translation by Jacobo Tarrio.
* de.po: Updated translation by Michael Piefel.
* fr.po: Updated translation by Jean-Philippe Guérard.
* fr.po: Updated translation by Jean-Philippe Guérard.
* ca.po: Updated.
* es.po: Updated.
@@ -379,7 +405,7 @@
2002-03-17 Jordi Mallach <jordi@sindominio.net>
* fr.po: Updated translation by Jean-Philippe Guérard.
* fr.po: Updated translation by Jean-Philippe Guérard.
2002-03-15 Jordi Mallach <jordi@sindominio.net>
@@ -402,7 +428,7 @@
2002-03-11 Jordi Mallach <jordi@sindominio.net>
* fr.po: Updated translation by Jean-Philippe Guérard.
* fr.po: Updated translation by Jean-Philippe Guérard.
2002-03-09 Jordi Mallach <jordi@sindominio.net>
@@ -450,7 +476,7 @@
2002-02-06 Jordi Mallach <jordi@sindominio.net>
* cs.po: Incomplete update by Václav Haisman.
* cs.po: Incomplete update by Václav Haisman.
2002-01-27 Jordi Mallach <jordi@sindominio.net>
@@ -458,14 +484,14 @@
2002-01-26 Jordi Mallach <jordi@sindominio.net>
* fr.po: Updated translation by Jean-Philippe Guérard.
* fr.po: Updated translation by Jean-Philippe Guérard.
* nn.po: Updated translation by Kjetil Torgrim Homme.
* de.po: Updated translation by Michael Piefel.
2002-01-25 Jordi Mallach <jordi@sindominio.net>
* sv.po: Updated translation by Christian Rose.
* fr.po: Updated translation by Jean-Philippe Guérard.
* fr.po: Updated translation by Jean-Philippe Guérard.
2002-01-25 Jordi Mallach <jordi@sindominio.net>
@@ -496,21 +522,21 @@
* no.po: Removed, replaced by nn.po.
* nn.po: Updated translation by Kjetil Torgrim Homme.
* nb.po: New Norwegian bokmål translation by Stig E Sandoe.
* nb.po: New Norwegian bokmål translation by Stig E Sandoe.
2002-01-12 Jordi Mallach <jordi@sindominio.net>
* fr.po: Updated translation by Jean-Philippe Guérard.
* fr.po: Updated translation by Jean-Philippe Guérard.
2002-01-10 Jordi Mallach <jordi@sindominio.net>
* fr.po: Updated translation by Jean-Philippe Guérard.
* fr.po: Updated translation by Jean-Philippe Guérard.
2002-01-08 Jordi Mallach <jordi@sindominio.net>
* ru.po, uk.po: Updated translations by Sergey A.
Ribalchenko.
* fr.po: Updated translation by Jean-Philippe Guérard.
* fr.po: Updated translation by Jean-Philippe Guérard.
2002-01-07 Jordi Mallach <jordi@sindominio.net>

View File

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

View File

@@ -1592,11 +1592,11 @@ msgstr "En hyv
#: winio.c:1297
msgid "Yy"
msgstr "Kk"
msgstr "KkYy"
#: winio.c:1298
msgid "Nn"
msgstr "Ee"
msgstr "EeNn"
#: winio.c:1299
msgid "Aa"

247
po/ms.po
View File

@@ -1,20 +1,19 @@
# Nano Editor Bahasa Melayu.
# Copyright (C) 2002 Free Software Foundation, Inc.
# Sharuzzaman Ahmat Raslan <sharuzzaman@myrealbox.com>, 2002.
# Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
# Sharuzzaman Ahmat Raslan <sharuzzaman@myrealbox.com>, 2002, 2003, 2004.
#
msgid ""
msgstr ""
"Project-Id-Version: nano 1.2.1\n"
"Project-Id-Version: nano 1.2.2\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2003-08-11 21:49-0400\n"
"PO-Revision-Date: 2003-05-06 00:51GMT+8\n"
"PO-Revision-Date: 2004-02-24 00:51GMT+8\n"
"Last-Translator: Sharuzzaman Ahmat Raslan <sharuzzaman@myrealbox.com>\n"
"Language-Team: Malay <translation-team-ms@lists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: KBabel 0.9.5\n"
#: files.c:317
#, c-format
@@ -734,27 +733,18 @@ msgstr "Kekunci tidak sah dalam mod LIHAT"
msgid ""
"Search Command Help Text\n"
"\n"
" Enter the words or characters you would like to search for, then hit "
"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"
" Enter the words or characters you would like to search for, then hit 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"
" 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"
" The following function keys are available in Search mode:\n"
"\n"
msgstr ""
"Teks Bantuan Arahan Carian\n"
"\n"
" Masukkan perkataan atau aksara yang anda hendak cari, kemudian tekan "
"enter. Jika terdapat padanan untuk teks yang anda masukkan, skrin akan "
"dikemaskinikan kepada lokasi terdekat padanan terhampir rentetan carian "
"tersebut.\n"
" Masukkan perkataan atau aksara yang anda hendak cari, kemudian tekan enter. Jika terdapat padanan untuk teks yang anda masukkan, skrin akan dikemaskinikan kepada lokasi terdekat padanan terhampir rentetan carian tersebut.\n"
"\n"
" Rentetan carian terdahulu akan dipaparkan dalam kurungan selepas prom "
"Cari:. Menekan Enter tanpa memasukkan apa-apa teks akan melaksanakan carian "
"terdahulu.\n"
" Rentetan carian terdahulu akan dipaparkan dalam kurungan selepas prom Cari:. Menekan Enter tanpa memasukkan apa-apa teks akan melaksanakan carian terdahulu.\n"
"\n"
" Kekunci fungsi berikut terdapat didalam mod Cari:\n"
"\n"
@@ -763,18 +753,14 @@ msgstr ""
msgid ""
"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"
" 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"
msgstr ""
"Teks Bantuan Pergi Ke Baris\n"
"\n"
" Masukkan nombor baris yang anda hendak pergi dan tekan Enter. Jika "
"terdapat kurang baris teks daripada nombor yang anda masukkan, anda akan "
"dibawa ke baris akhir fail tersebut.\n"
" Masukkan nombor baris yang anda hendak pergi dan tekan Enter. Jika terdapat kurang baris teks daripada nombor yang anda masukkan, anda akan dibawa ke baris akhir fail tersebut.\n"
"\n"
" Kekunci fungsi berikut terdapat didalam mod Pergi Ke Baris:\n"
"\n"
@@ -783,33 +769,22 @@ msgstr ""
msgid ""
"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"
" 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 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).\n"
" If you have compiled nano with multiple file buffer support, and enable multiple 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).\n"
"\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"
" 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"
msgstr ""
"Teks Bantuan Sisipan Fail\n"
"\n"
" Taip nama fail yang hendak disisipkan ke dalam buffer fail semasa di "
"kedudukan kursor semasa.\n"
" Taip nama fail yang hendak disisipkan ke dalam buffer fail semasa di kedudukan kursor semasa.\n"
"\n"
" Jika anda telah menghimpun nano dengan sokongan buffer fail berganda, dan "
"menghidupkan buffer berganda dengan penanda baris arahan -F atau --"
"multibuffer, Meta-F toggle, atau fail nanorc, menyisipkan fail akan "
"menyebabkannya dimuatkan ke dalam buffer berlainan (guna Meta-< dan > untuk "
"menukar diantara buffer fail).\n"
" Jika anda telah menghimpun nano dengan sokongan buffer fail berganda, dan menghidupkan buffer berganda dengan penanda baris arahan -F atau --multibuffer, Meta-F toggle, atau fail nanorc, menyisipkan fail akan menyebabkannya dimuatkan ke dalam buffer berlainan (guna Meta-< dan > untuk menukar diantara buffer fail).\n"
"\n"
" Jika anda memerlukan buffer kosong tambahan, jangan masukkan sebarang "
"namafail, atau taip namafail yang tidak wujud pada prom dan tekan Enter.\n"
" Jika anda memerlukan buffer kosong tambahan, jangan masukkan sebarang namafail, atau taip namafail yang tidak wujud pada prom dan tekan Enter.\n"
"\n"
" Kekunci fungsi berikut terdapat didalam mod Sisipan Fail:\n"
"\n"
@@ -818,26 +793,18 @@ msgstr ""
msgid ""
"Write File Help Text\n"
"\n"
" Type the name that you wish to save the current file as and hit Enter to "
"save the file.\n"
" Type the name that you wish to save the current file as and hit Enter to save the file.\n"
"\n"
" If you have selected text with Ctrl-^, 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"
" If you have selected text with Ctrl-^, 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"
msgstr ""
"Teks Bantuan Menulis Fail\n"
"\n"
" Taip nama fail semasa yang anda hendak simpan dan tekan Enter untuk "
"menyimpan fail tersebut.\n"
" Taip nama fail semasa yang anda hendak simpan dan tekan Enter untuk menyimpan fail tersebut.\n"
"\n"
" Jika anda telah memilih teks dengan Ctrl-^, anda akan ditanya untuk "
"menyimpan hanya bahagian dipilih ke dalam fail berasingan. Untuk "
"mengurangkan risiko menulisganti fail semasa dengan hanya sebahagian "
"daripadanya, namafail semasa tidak dijadikan pilihan asal dalam mod ini.\n"
" Jika anda telah memilih teks dengan Ctrl-^, anda akan ditanya untuk menyimpan hanya bahagian dipilih ke dalam fail berasingan. Untuk mengurangkan risiko menulisganti fail semasa dengan hanya sebahagian daripadanya, namafail semasa tidak dijadikan pilihan asal dalam mod ini.\n"
"\n"
" Kekunci fungsi berikut terdapat didalam mod Menulis Fail:\n"
"\n"
@@ -846,22 +813,14 @@ msgstr ""
msgid ""
"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"
" 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"
msgstr ""
"Teks Bantuan Pelayar Fail\n"
"\n"
" Pelayar fail digunakan untuk melihat secara visual struktur direktori untuk "
"memilih fail untuk membaca dan menulis. Anda boleh menggunakan kekunci "
"panah atau Page Up/Down untuk melihat fail, dan S atau Enter untuk memilih "
"fail atau memasuki direktori yang dipilih. Untuk naik ke atas satu tahap, "
"pilih direktori bernama \"..\" di bahagian atas senarai fail.\n"
" Pelayar fail digunakan untuk melihat secara visual struktur direktori untuk memilih fail untuk membaca dan menulis. Anda boleh menggunakan kekunci panah atau Page Up/Down untuk melihat fail, dan S atau Enter untuk memilih fail atau memasuki direktori yang dipilih. Untuk naik ke atas satu tahap, pilih direktori bernama \"..\" di bahagian atas senarai fail.\n"
"\n"
" Kekunci fungsi berikut terdapat didalam pelayar fail:\n"
"\n"
@@ -872,8 +831,7 @@ msgid ""
"\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"
" 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"
@@ -882,9 +840,7 @@ msgstr ""
"\n"
" Masukkan nama direktori yang anda hendak lihat.\n"
"\n"
" Jika tab pelengkapan tidak dimatikan, anda boleh menggunakan kekunci TAB "
"untuk (mencuba untuk) melengkapkan secara automatik nama direktori "
"tersebut.\n"
" Jika tab pelengkapan tidak dimatikan, anda boleh menggunakan kekunci TAB untuk (mencuba untuk) melengkapkan secara automatik nama direktori tersebut.\n"
"\n"
" Kekunci fungsi berikut terdapat didalam mod Pelayar Pergi ke Direktori:\n"
"\n"
@@ -893,20 +849,14 @@ msgstr ""
msgid ""
"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.\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.\n"
"\n"
" The following other functions are available in Spell Check mode:\n"
"\n"
msgstr ""
"Teks Bantuan Penyemak Ejaan\n"
"\n"
" Penyemak ejaan menyemak ejaan semua teks didalam fail semasa. Apabila "
"perkataan yang tidak diketahui dijumpai, ia akan disorot dan penggantinya "
"boleh disunting. Ia kemudian akan bertanya untuk menggantikan setiap "
"jumpaan perkataan salah eja yang diberikan didalam fail semasa.\n"
" Penyemak ejaan menyemak ejaan semua teks didalam fail semasa. Apabila perkataan yang tidak diketahui dijumpai, ia akan disorot dan penggantinya boleh disunting. Ia kemudian akan bertanya untuk menggantikan setiap jumpaan perkataan salah eja yang diberikan didalam fail semasa.\n"
"\n"
" Fungsi lain berikut terdapat didalam mod Penyemak Ejaan:\n"
"\n"
@@ -915,17 +865,14 @@ msgstr ""
msgid ""
"External Command Help Text\n"
"\n"
" This menu allows you to insert the output of a command run by the shell "
"into the current buffer (or a new buffer in multibuffer mode).\n"
" This menu allows you to insert the output of a command run by the shell into the current buffer (or a new buffer in multibuffer mode).\n"
"\n"
" The following keys are available in this mode:\n"
"\n"
msgstr ""
"Teks Bantuan Arahan Luaran\n"
"\n"
" Menu ini membenearkan anda untuk memasukkan keluaran sesuatu arahan yang "
"dijalankan oleh shell ke dalam buffer semasa (atau satu buffer baru dalam "
"mod multibuffer).\n"
" Menu ini membenearkan anda untuk memasukkan keluaran sesuatu arahan yang dijalankan oleh shell ke dalam buffer semasa (atau satu buffer baru dalam mod multibuffer).\n"
"\n"
" Kekunci berikut terdapat didalam mod ini:\n"
"\n"
@@ -934,38 +881,16 @@ msgstr ""
msgid ""
" 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"
" 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"
" The notation for shortcuts is as follows: Control-key sequences are notated "
"with a caret (^) symbol and are entered with the Control (Ctrl) key. 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. The "
"following keystrokes are available in the main editor window. Alternative "
"keys are shown in parentheses:\n"
" The notation for shortcuts is as follows: Control-key sequences are notated with a caret (^) symbol and are entered with the Control (Ctrl) key. 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. The following keystrokes are available in the main editor window. Alternative keys are shown in parentheses:\n"
"\n"
msgstr ""
" teks bantuan nano\n"
"\n"
" Penyunting nano direka untuk meniru fungsi dan kemudahgunaan penyunting "
"teks UW Pico. Terdapat empat bahagian utama penyunting: Baris teratas "
"menunjukkan versi program, namafail semasa yang sedang disunting, dan adakah "
"fail tersebut telah diubahsuai. Berikutnya adalah tetingkap utama "
"penyunting yang menunjukkan fail yang sedang disunting. Baris status adalah "
"baris ketiga dari bawah dan menunjukkan mesej-mesej penting. Dua baris "
"terbawah menunjukkan pintasan yang sering digunakan dalam penyunting.\n"
" Penyunting nano direka untuk meniru fungsi dan kemudahgunaan penyunting teks UW Pico. Terdapat empat bahagian utama penyunting: Baris teratas menunjukkan versi program, namafail semasa yang sedang disunting, dan adakah fail tersebut telah diubahsuai. Berikutnya adalah tetingkap utama penyunting yang menunjukkan fail yang sedang disunting. Baris status adalah baris ketiga dari bawah dan menunjukkan mesej-mesej penting. Dua baris terbawah menunjukkan pintasan yang sering digunakan dalam penyunting.\n"
"\n"
" Penandaan untuk pintasan adalah seperti berikut: turutan kekunci Control "
"ditandakan dengan simbol caret (^) dan dimasukkan dengan kekunci Control "
"(Ctrl). Turutan kekunci Escape ditandakan dengan simbol Meta (M) dan boleh "
"dimasukkan dengan menggunakan kekunci Esc, Alt atau Meta tergantung pada "
"susunatur papan kekunci anda. Kekunci-kekunci berikut terdapat dalam "
"tetingkap utama penyunting. Kekunci alternatif ditunjukkan dalam kurungan:\n"
" Penandaan untuk pintasan adalah seperti berikut: turutan kekunci Control ditandakan dengan simbol caret (^) dan dimasukkan dengan kekunci Control (Ctrl). Turutan kekunci Escape ditandakan dengan simbol Meta (M) dan boleh dimasukkan dengan menggunakan kekunci Esc, Alt atau Meta tergantung pada susunatur papan kekunci anda. Kekunci-kekunci berikut terdapat dalam tetingkap utama penyunting. Kekunci alternatif ditunjukkan dalam kurungan:\n"
"\n"
#: nano.c:388 nano.c:458
@@ -1271,8 +1196,7 @@ msgstr "Sekarang boleh UnJustify!"
#: nano.c:2696
msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
msgstr ""
"Simpan buffer ubahsuai (JAWAB \"Tidak\" AKAN MENGHILANGKAN PERUBAHAN) ? "
msgstr "Simpan buffer ubahsuai (JAWAB \"Tidak\" AKAN MENGHILANGKAN PERUBAHAN) ? "
#: nano.c:2796
msgid "Received SIGHUP or SIGTERM\n"
@@ -1596,108 +1520,3 @@ msgstr "dan sesiapa yang kami lupa...."
#: winio.c:1845
msgid "Thank you for using nano!\n"
msgstr "Terima kasih kerana menggunakan nano!\n"
#~ msgid "add_to_cutbuffer() called with inptr->data = %s\n"
#~ msgstr "add_to_cutbuffer() dipanggil dengan inptr->data = %s\n"
#~ msgid "Blew away cutbuffer =)\n"
#~ msgstr "Cutbuffer dipadamkan =)\n"
#~ msgid "filename is %s\n"
#~ msgstr "nama fail adalah %s\n"
#~ msgid "%s: free'd a node, YAY!\n"
#~ msgstr "%s: sebuah nod dibebaskan, YAY!\n"
#~ msgid "%s: free'd last node.\n"
#~ msgstr "%s: nod terakhir dibebaskan.\n"
#~ msgid "Backing up %s to %s\n"
#~ msgstr "Menyalin %s ke %s\n"
#~ msgid "Wrote >%s\n"
#~ msgstr "Ditulis >%s\n"
#~ msgid "current->data now = \"%s\"\n"
#~ msgstr "current->data sekarang = \"%s\"\n"
#~ msgid "After, data = \"%s\"\n"
#~ msgstr "Setelah, data= \"%s\"\n"
#~ msgid "Main: set up windows\n"
#~ msgstr "Utama: menetapkan tetingkap\n"
#~ msgid "Main: bottom win\n"
#~ msgstr "Utama: tetingkap bawah\n"
#~ msgid "Main: open file\n"
#~ msgstr "Utama: buka fail\n"
#~ msgid "AHA! %c (%d)\n"
#~ msgstr "AHA! %c (%d)\n"
#~ msgid "I got Alt-O-%c! (%d)\n"
#~ msgstr "Saya mendapat Alt-O-%c! (%d)\n"
#~ msgid "I got Alt-[-1-%c! (%d)\n"
#~ msgstr "Saya mendapat Alt-[-1-%c! (%d)\n"
#~ msgid "I got Alt-[-2-%c! (%d)\n"
#~ msgstr "Saya mendapat Alt-[-2-%c! (%d)\n"
#~ msgid "I got Alt-[-%c! (%d)\n"
#~ msgstr "Saya mendapat Alt-[-%c! (%d)\n"
#~ msgid "I got Alt-%c! (%d)\n"
#~ msgstr "Saya mendapat Alt-%c! (%d)\n"
#~ msgid "I got %c (%d)!\n"
#~ msgstr "Saya mendapat %c (%d)!\n"
#~ msgid "Adding new syntax after 1st\n"
#~ msgstr "Menambah sintaks baru selepas yang pertama\n"
#~ msgid "Starting a new syntax type\n"
#~ msgstr "Memulakan jenis sintaks baru\n"
#~ msgid "Starting a new colorstring for fg %d bg %d\n"
#~ msgstr "Memulakan rentetanwarna baru bagi fg %d bg %d\n"
#~ msgid "Adding new entry for fg %d bg %d\n"
#~ msgstr "Menambah kemasukan baru bagi fg %d bg %d\n"
#~ msgid "%s: Read a comment\n"
#~ msgstr "%s: Baca komen\n"
#~ msgid "%s: Parsing option %s\n"
#~ msgstr "%s: Pilihan huraian %s\n"
#~ msgid "set flag %d!\n"
#~ msgstr "set penanda %d!\n"
#~ msgid "unset flag %d!\n"
#~ msgstr "penanda %d di nyahset!\n"
#~ msgid "actual_x for xplus=%d returns %d\n"
#~ msgstr "actual_x untuk xplus=%d mengembalikan %d\n"
#~ msgid "Aha! '%c' (%d)\n"
#~ msgstr "Aha! '%c' (%d)\n"
#~ msgid "input '%c' (%d)\n"
#~ msgstr "masukan '%c' (%d)\n"
#~ msgid "Moved to (%d, %d) in edit buffer\n"
#~ msgstr "Pindah ke (%d, %d) dalam buffer suntingan\n"
#~ msgid "I got \"%s\"\n"
#~ msgstr "Saya dapat \"%s\"\n"
#~ msgid "Dumping file buffer to stderr...\n"
#~ msgstr "Lambak buffer fail ke stderr...\n"
#~ msgid "Dumping cutbuffer to stderr...\n"
#~ msgstr "Lambak cutbuffer ke stderr...\n"
#~ msgid "Dumping a buffer to stderr...\n"
#~ msgstr "Lambak buffer ke stderr...\n"

265
po/ro.po
View File

@@ -6,10 +6,9 @@
#
msgid ""
msgstr ""
"Project-Id-Version: nano 1.2.1\n"
"Report-Msgid-Bugs-To: \n"
"Project-Id-Version: nano 1.2.2\n"
"POT-Creation-Date: 2003-08-11 21:49-0400\n"
"PO-Revision-Date: 2003-04-22 23:00-0600\n"
"PO-Revision-Date: 2003-11-24 12:00-0500\n"
"Last-Translator: Laurentiu Buzdugan <buzdugan@voyager.net>\n"
"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
@@ -423,8 +422,7 @@ msgstr "Insereaz
#: global.c:382
msgid "Insert a carriage return at the cursor position"
msgstr ""
"Insereazã un caracter \"carriage return\" la poziþia curentã a cursorului"
msgstr "Insereazã un caracter \"carriage return\" la poziþia curentã a cursorului"
#: global.c:384
msgid "Make the current search or replace case (in)sensitive"
@@ -736,26 +734,18 @@ msgstr "Tast
msgid ""
"Search Command Help Text\n"
"\n"
" Enter the words or characters you would like to search for, then hit "
"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"
" Enter the words or characters you would like to search for, then hit 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"
" 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"
" The following function keys are available in Search mode:\n"
"\n"
msgstr ""
"Text de ajutor pentru comanda \"Cautã\"\n"
"\n"
"Introduceþi cuvântul sau caracterele pe care aþi dori sã le cãutaþi, apoi "
"apãsaþi Enter. Dacã existã vreo potrivire pentru textul cãutat, ecranul va "
"fi actualizat la locaþia cea mai apropiatã de locul unde aceastã potrivire a "
"avut loc.\n"
"Introduceþi cuvântul sau caracterele pe care aþi dori sã le cãutaþi, apoi apãsaþi Enter. Dacã existã vreo potrivire pentru textul cãutat, ecranul va fi actualizat la locaþia cea mai apropiatã de locul unde aceastã potrivire a avut loc.\n"
"\n"
"ªirul cãutat anterior va fi arãtat în paranteze dupã cuvântul Cautã: . "
"Apãsând Enter fãrã a introduce vreun text va executa cãutarea anterioarã.\n"
"ªirul cãutat anterior va fi arãtat în paranteze dupã cuvântul Cautã: . Apãsând Enter fãrã a introduce vreun text va executa cãutarea anterioarã.\n"
"\n"
"Urmãtoarele taste de funcþii sunt disponibile în modul \"Cautã\"\n"
"\n"
@@ -764,18 +754,14 @@ msgstr ""
msgid ""
"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"
" 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"
msgstr ""
"Textul de ajutor pentru \"Du-te la linia\"\n"
"\n"
" Introduceþi numãrul liniei unde doriþi sã mergeþi ºi apãsaþi Enter. Dacã "
"existã mai puþine linii de text decât numãrul introdus veþi ajunge la ultima "
"linie a fiºierului.\n"
" Introduceþi numãrul liniei unde doriþi sã mergeþi ºi apãsaþi Enter. Dacã existã mai puþine linii de text decât numãrul introdus veþi ajunge la ultima linie a fiºierului.\n"
"\n"
" Urmãtoarele taste de funcþii sunt disponibile în modul \"Du-te la linia\" \n"
@@ -783,61 +769,41 @@ msgstr ""
msgid ""
"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"
" 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 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).\n"
" If you have compiled nano with multiple file buffer support, and enable multiple 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).\n"
"\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"
" 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"
msgstr ""
"Textul de ajutor pentru \"Insereazã fiºier\"\n"
"\n"
" Tastaþi numele unui fiºier de introdus în buffer-ul pentru fiºierul curent "
"la poziþia curentã a cursorului.\n"
" Tastaþi numele unui fiºier de introdus în buffer-ul pentru fiºierul curent la poziþia curentã a cursorului.\n"
"\n"
" Dacã aþi compilat nano cu suport pentru multiple buffere ºi aþi activat "
"acestã opþiune cu indicatorii de linie de comandã -F sau --multibuffer, "
"comutatorul Meta-F, sau un fiºier nanorc, inserând un fiºier va face ca "
"acesta sã fie încãrcat într-un alt buffer (folosiþi Meta-< ºi > pentru a "
"comuta între buffere).\n"
" Dacã aþi compilat nano cu suport pentru multiple buffere ºi aþi activat acestã opþiune cu indicatorii de linie de comandã -F sau --multibuffer, comutatorul Meta-F, sau un fiºier nanorc, inserând un fiºier va face ca acesta sã fie încãrcat într-un alt buffer (folosiþi Meta-< ºi > pentru a comuta între buffere).\n"
"\n"
"Dacã aveþi nevoie de un alt buffer liber, nu introduceþi nici un nume sau "
"introduceþi un nume de fiºier ce nu existã ºi apãsaþi Enter.\n"
"Dacã aveþi nevoie de un alt buffer liber, nu introduceþi nici un nume sau introduceþi un nume de fiºier ce nu existã ºi apãsaþi Enter.\n"
"\n"
" Urmãtoarele taste de funcþii sunt disponibile în modul \"Insereazã fiºier"
"\" \n"
" Urmãtoarele taste de funcþii sunt disponibile în modul \"Insereazã fiºier\" \n"
#: nano.c:310
msgid ""
"Write File Help Text\n"
"\n"
" Type the name that you wish to save the current file as and hit Enter to "
"save the file.\n"
" Type the name that you wish to save the current file as and hit Enter to save the file.\n"
"\n"
" If you have selected text with Ctrl-^, 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"
" If you have selected text with Ctrl-^, 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"
msgstr ""
"Textul de ajutor pentru \"Scrie fiºier\"\n"
"\n"
" Tastaþi numele sub care doriþi sã salvaþi fiºierul curent ºi apãsaþi Enter "
"pentru a salva fiºierul.\n"
" Tastaþi numele sub care doriþi sã salvaþi fiºierul curent ºi apãsaþi Enter pentru a salva fiºierul.\n"
"\n"
" Dacã aþi selectat text cu Ctrl-^, veþi fi interpolat sã salvaþi numai "
"porþiunea selectatã într-un fiºier separat. Pentru a reduce ºansa de a "
"suprascrie fiºierul curent cu doar o porþiune a sa, numele de fiºier curent "
"nu este implicit în acest mod.\n"
" Dacã aþi selectat text cu Ctrl-^, veþi fi interpolat sã salvaþi numai porþiunea selectatã într-un fiºier separat. Pentru a reduce ºansa de a suprascrie fiºierul curent cu doar o porþiune a sa, numele de fiºier curent nu este implicit în acest mod.\n"
"\n"
" Urmãtoarele taste de funcþii sunt disponibile în modul \"Scrie fiºier\"\n"
"\n"
@@ -846,23 +812,14 @@ msgstr ""
msgid ""
"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"
" 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"
msgstr ""
"Textul de ajutor pentru \"Navigator fiºiere\"\n"
"\n"
" Navigatorul de fiºiere este folosit pentru a naviga vizual structura de "
"directoare ºi a selecta un fiºier pentru citire sau scriere. Puteþi folosi "
"tastele cu sãgeþi sau Page Up/Down pentru a naviga prin fiºiere, ºi S sau "
"Enter pentru a alege fiºierul selectat sau a intra într-un director "
"selectat. Pentru a vã muta în sus un nivel, selectaþi directorul numit \".."
"\" din capãtul de sus a listei de fiºiere.\n"
" Navigatorul de fiºiere este folosit pentru a naviga vizual structura de directoare ºi a selecta un fiºier pentru citire sau scriere. Puteþi folosi tastele cu sãgeþi sau Page Up/Down pentru a naviga prin fiºiere, ºi S sau Enter pentru a alege fiºierul selectat sau a intra într-un director selectat. Pentru a vã muta în sus un nivel, selectaþi directorul numit \"..\" din capãtul de sus a listei de fiºiere.\n"
"\n"
" Urmãtoarele taste de funcþii sunt disponibile în \"Navigator fiºiere\":\n"
"\n"
@@ -873,8 +830,7 @@ msgid ""
"\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"
" 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"
@@ -883,51 +839,39 @@ msgstr ""
"\n"
" Introduceþi numele directorului pe care aþi dori sã-l navigaþi.\n"
"\n"
" Dacã completarea cu tab nu a fost deactivatã, puteþi folosi tasta TAB "
"pentru a încerca sã completaþi automat numele directorului.\n"
" Dacã completarea cu tab nu a fost deactivatã, puteþi folosi tasta TAB pentru a încerca sã completaþi automat numele directorului.\n"
"\n"
" Urmãtoarele taste de funcþii sunt disponibile în modul \"Navigator Du-te la "
"Directorul\":\n"
" Urmãtoarele taste de funcþii sunt disponibile în modul \"Navigator Du-te la Directorul\":\n"
"\n"
#: nano.c:341
msgid ""
"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.\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.\n"
"\n"
" The following other functions are available in Spell Check mode:\n"
"\n"
msgstr ""
"Text de ajutor pentru \"Corector ortografic\"\n"
"\n"
" Corectorul ortografic verificã ortografierea întregului text din fiºierul "
"curent. Când un cuvânt necunoscut este întâlnit, acesta este evidenþiat ºi "
"un înlocuitor poate fi introdus/editat. Corectorul vã va întreba dacã "
"doriþi sã înlocuiþi toate apariþiile cu aceeaºi greºealã în fiºierul "
"curent.\n"
" Corectorul ortografic verificã ortografierea întregului text din fiºierul curent. Când un cuvânt necunoscut este întâlnit, acesta este evidenþiat ºi un înlocuitor poate fi introdus/editat. Corectorul vã va întreba dacã doriþi sã înlocuiþi toate apariþiile cu aceeaºi greºealã în fiºierul curent.\n"
"\n"
" Urmãtoarele alte funcþii sunt disponibile în modul \"Corector ortografic"
"\":\n"
" Urmãtoarele alte funcþii sunt disponibile în modul \"Corector ortografic\":\n"
"\n"
#: nano.c:352
msgid ""
"External Command Help Text\n"
"\n"
" This menu allows you to insert the output of a command run by the shell "
"into the current buffer (or a new buffer in multibuffer mode).\n"
" This menu allows you to insert the output of a command run by the shell into the current buffer (or a new buffer in multibuffer mode).\n"
"\n"
" The following keys are available in this mode:\n"
"\n"
msgstr ""
"Text de ajutor \"Comandã externã\"\n"
"\n"
" Acest meniu vã permite sã inseraþi ieºirea unei comenzi executate de shell "
"în buffer-ul curent (sau într-un nou buffer în modul multibuffer).\n"
" Acest meniu vã permite sã inseraþi ieºirea unei comenzi executate de shell în buffer-ul curent (sau într-un nou buffer în modul multibuffer).\n"
"\n"
" Urmãtoarele taste sunt disponibile în acest mod:\n"
"\n"
@@ -936,40 +880,16 @@ msgstr ""
msgid ""
" 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"
" 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"
" The notation for shortcuts is as follows: Control-key sequences are notated "
"with a caret (^) symbol and are entered with the Control (Ctrl) key. 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. The "
"following keystrokes are available in the main editor window. Alternative "
"keys are shown in parentheses:\n"
" The notation for shortcuts is as follows: Control-key sequences are notated with a caret (^) symbol and are entered with the Control (Ctrl) key. 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. The following keystrokes are available in the main editor window. Alternative keys are shown in parentheses:\n"
"\n"
msgstr ""
" text ajutor pentru nano\n"
"\n"
" Editotul nano este proiectat sa emuleze funþionalitatea ºi uºurinþa de "
"folosire a editorului de texte UW Pico. Existã patru secþiuni principale "
"ale editorului: Linia de sus aratã versiunea programului, numele fiºierului "
"curent ce este editat ºi dacã fiºierul a fost sau nu modificat. Urmãtoarea "
"secþiune principalã este fereastra de editare ce aratã fiºierul ce este "
"editat. Linia de stare este a treia linie de jos ºi aratã mesaje "
"importante. Ultimele douã linii aratã cele mai frecvente scurtãturi "
"folosite în editor.\n"
" Editotul nano este proiectat sa emuleze funþionalitatea ºi uºurinþa de folosire a editorului de texte UW Pico. Existã patru secþiuni principale ale editorului: Linia de sus aratã versiunea programului, numele fiºierului curent ce este editat ºi dacã fiºierul a fost sau nu modificat. Urmãtoarea secþiune principalã este fereastra de editare ce aratã fiºierul ce este editat. Linia de stare este a treia linie de jos ºi aratã mesaje importante. Ultimele douã linii aratã cele mai frecvente scurtãturi folosite în editor.\n"
"\n"
" Notaþia pentru scurtãturi este dupã cum urmeazã: secvenþe Control-tastã "
"sunt notate cu un simbol (^) ºi sunt introduse cu tasta Control (Ctrl). "
"Secvenþele Escape-tastã sunt notate cu sombolul Meta (M) ºi pot fi introduse "
"folosind oricare din tastele Esc, Alt sau Meta, în funcþie de setarea "
"tastaturii d-voastrã. Urmãtoarele combinaþii de taste sunt disponibile în "
"fereastra de editare principalã. Tastele alternative sunt arãtate în "
"paranteze:\n"
" Notaþia pentru scurtãturi este dupã cum urmeazã: secvenþe Control-tastã sunt notate cu un simbol (^) ºi sunt introduse cu tasta Control (Ctrl). Secvenþele Escape-tastã sunt notate cu sombolul Meta (M) ºi pot fi introduse folosind oricare din tastele Esc, Alt sau Meta, în funcþie de setarea tastaturii d-voastrã. Urmãtoarele combinaþii de taste sunt disponibile în fereastra de editare principalã. Tastele alternative sunt arãtate în paranteze:\n"
"\n"
#: nano.c:388 nano.c:458
@@ -1154,7 +1074,7 @@ msgstr "Permite corector ortografic alternativ"
#: nano.c:680
msgid "Auto save on exit, don't prompt"
msgstr "Saulveazã automat la ieºire, nu întreba"
msgstr "Salveazã automat la ieºire, nu întreba"
#: nano.c:681
msgid "View (read only) mode"
@@ -1275,8 +1195,7 @@ msgstr "Nu pot De-Alinia!"
#: nano.c:2696
msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
msgstr ""
"Salvez buffer-ul modificat (RÃSPUNSUL \"Nu\" VA DISTRUGE SCHIMBÃRILE) ?"
msgstr "Salvez buffer-ul modificat (RÃSPUNSUL \"Nu\" VA DISTRUGE SCHIMBÃRILE) ?"
#: nano.c:2796
msgid "Received SIGHUP or SIGTERM\n"
@@ -1312,9 +1231,7 @@ msgstr "Nu pot muta fereastra de jos"
#: nano.c:2919
msgid "NumLock glitch detected. Keypad will malfunction with NumLock off"
msgstr ""
"Am detectat problema cu NumLock. Keypad-ul va funcþiona greºit cu NumLock "
"deactivat"
msgstr "Am detectat problema cu NumLock. Keypad-ul va funcþiona greºit cu NumLock deactivat"
#: nano.c:2968
msgid "enabled"
@@ -1569,8 +1486,7 @@ msgstr "Nu"
#: winio.c:1499
#, c-format
msgid "line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%ld (%d%%)"
msgstr ""
"linia %ld/%ld (%d%%), coloana %lu/%lu (%d%%), caracterul %lu/%ld (%d%%)"
msgstr "linia %ld/%ld (%d%%), coloana %lu/%lu (%d%%), caracterul %lu/%ld (%d%%)"
#: winio.c:1838
msgid "The nano text editor"
@@ -1603,108 +1519,3 @@ msgstr "
#: winio.c:1845
msgid "Thank you for using nano!\n"
msgstr "Vã mulþumim cã folosiþi nano!\n"
#~ msgid "add_to_cutbuffer() called with inptr->data = %s\n"
#~ msgstr "add_to_cutbuffer() chemat cu inptr->data = %s\n"
#~ msgid "Blew away cutbuffer =)\n"
#~ msgstr "Am renunþat la conþinutul cutbuffer-ului =)\n"
#~ msgid "filename is %s\n"
#~ msgstr "nume_fiºier este %s\n"
#~ msgid "%s: free'd a node, YAY!\n"
#~ msgstr "%s: am eliberat un nod, URA!\n"
#~ msgid "%s: free'd last node.\n"
#~ msgstr "%s: am eliberat ultimul nod.\n"
#~ msgid "Backing up %s to %s\n"
#~ msgstr "Copiez pentru siguranþã (backup) %s în %s\n"
#~ msgid "Wrote >%s\n"
#~ msgstr "Am scris >%s\n"
#~ msgid "current->data now = \"%s\"\n"
#~ msgstr "current->data acum = \"%s\"\n"
#~ msgid "After, data = \"%s\"\n"
#~ msgstr "Dupã, data = \"%s\"\n"
#~ msgid "Main: set up windows\n"
#~ msgstr "Principal: seteazã ferestre\n"
#~ msgid "Main: bottom win\n"
#~ msgstr "Principal: fereastra de jos\n"
#~ msgid "Main: open file\n"
#~ msgstr "Principal: deschide fiºier\n"
#~ msgid "AHA! %c (%d)\n"
#~ msgstr "AHA! %c (%d)\n"
#~ msgid "I got Alt-O-%c! (%d)\n"
#~ msgstr "Am primit Alt-O-%c! (%d)\n"
#~ msgid "I got Alt-[-1-%c! (%d)\n"
#~ msgstr "Am primit Alt-[-1-%c! (%d)\n"
#~ msgid "I got Alt-[-2-%c! (%d)\n"
#~ msgstr "Am primit Alt-[-2-%c! (%d)\n"
#~ msgid "I got Alt-[-%c! (%d)\n"
#~ msgstr "Am primit Alt-[-%c! (%d)\n"
#~ msgid "I got Alt-%c! (%d)\n"
#~ msgstr "Am primit Alt-%c! (%d)\n"
#~ msgid "I got %c (%d)!\n"
#~ msgstr "Am primit %c (%d)!\n"
#~ msgid "Adding new syntax after 1st\n"
#~ msgstr "Adaug o nouã sintaxã dupã primul\n"
#~ msgid "Starting a new syntax type\n"
#~ msgstr "Încep un nou tip de sintaxã\n"
#~ msgid "Starting a new colorstring for fg %d bg %d\n"
#~ msgstr "Încep un nou ºir_culoare pentru fg %d bg %d\n"
#~ msgid "Adding new entry for fg %d bg %d\n"
#~ msgstr "Adaug o nouã intrare pentru fg %d bg %d\n"
#~ msgid "%s: Read a comment\n"
#~ msgstr "%s: Am citit un comentariu\n"
#~ msgid "%s: Parsing option %s\n"
#~ msgstr "%s: Interpretare opþiune %s\n"
#~ msgid "set flag %d!\n"
#~ msgstr "seteazã marcaj (flag) %d!\n"
#~ msgid "unset flag %d!\n"
#~ msgstr "deseteazã marcaj (flag) %d!\n"
#~ msgid "actual_x for xplus=%d returns %d\n"
#~ msgstr "actual_x pentru xplus=%d întoarce %d\n"
#~ msgid "Aha! '%c' (%d)\n"
#~ msgstr "Aha! '%c' (%d)\n"
#~ msgid "input '%c' (%d)\n"
#~ msgstr "intrare '%c' (%d)\n"
#~ msgid "Moved to (%d, %d) in edit buffer\n"
#~ msgstr "Mutat la (%d, %d) în buffer-ul de editare\n"
#~ msgid "I got \"%s\"\n"
#~ msgstr "Am primit \"%s\"\n"
#~ msgid "Dumping file buffer to stderr...\n"
#~ msgstr "Scriu fiºierul buffer la stderr...\n"
#~ msgid "Dumping cutbuffer to stderr...\n"
#~ msgstr "Scriu cutbuffer-ul la stderr...\n"
#~ msgid "Dumping a buffer to stderr...\n"
#~ msgstr "Scriu un buffer la stderr...\n"

1528
po/sr.po Normal file

File diff suppressed because it is too large Load Diff

1603
po/zh_TW.po Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@
/**************************************************************************
* color.c *
* *
* Copyright (C) 1999-2003 Chris Allegretta *
* Copyright (C) 1999-2004 Chris Allegretta *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2, or (at your option) *
@@ -39,14 +39,14 @@ void set_colorpairs(void)
{
const syntaxtype *this_syntax = syntaxes;
for(; this_syntax != NULL; this_syntax = this_syntax->next) {
for (; this_syntax != NULL; this_syntax = this_syntax->next) {
colortype *this_color = this_syntax->color;
int color_pair = 1;
for(; this_color != NULL; this_color = this_color->next) {
for (; this_color != NULL; this_color = this_color->next) {
const colortype *beforenow = this_syntax->color;
for(; beforenow != NULL && beforenow != this_color &&
for (; beforenow != NULL && beforenow != this_color &&
(beforenow->fg != this_color->fg ||
beforenow->bg != this_color->bg ||
beforenow->bright != this_color->bright);
@@ -109,7 +109,7 @@ void update_color(void)
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))
if (regexec(&e->val, filename, 0, NULL, 0) == 0)
colorstrings = tmpsyntax->color;
if (colorstrings != NULL)
@@ -119,7 +119,7 @@ void update_color(void)
/* if we haven't found a match, use the override string */
if (colorstrings == NULL && syntaxstr != NULL) {
for (tmpsyntax = syntaxes; tmpsyntax != NULL;
for (tmpsyntax = syntaxes; tmpsyntax != NULL;
tmpsyntax = tmpsyntax->next) {
if (!strcasecmp(tmpsyntax->desc, syntaxstr))
colorstrings = tmpsyntax->color;

346
src/cut.c
View File

@@ -2,7 +2,7 @@
/**************************************************************************
* cut.c *
* *
* Copyright (C) 1999-2003 Chris Allegretta *
* Copyright (C) 1999-2004 Chris Allegretta *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2, or (at your option) *
@@ -28,47 +28,52 @@
#include "proto.h"
#include "nano.h"
static int marked_cut; /* Is the cutbuffer from a mark? */
static int keep_cutbuffer = FALSE;
/* Should we keep the contents of the cutbuffer? */
static int marked_cut;
/* Is the cutbuffer from a mark? 0 means whole-line cut, 1
* means mark, and 2 means cut-from-cursor. */
#ifndef NANO_SMALL
static int concatenate_cut; /* Should we add this cut string to the
end of the last one? */
static int concatenate_cut;
/* Should we add this cut string to the end of the last one? */
#endif
static filestruct *cutbottom = NULL;
/* Pointer to end of cutbuffer */
/* Pointer to end of cutbuffer. */
void cutbuffer_reset(void)
{
keep_cutbuffer = FALSE;
}
filestruct *get_cutbottom(void)
{
return cutbottom;
}
void add_to_cutbuffer(filestruct *inptr)
void add_to_cutbuffer(filestruct *inptr, int allow_concat)
{
#ifdef DEBUG
fprintf(stderr, "add_to_cutbuffer() called with inptr->data = %s\n",
inptr->data);
fprintf(stderr, "add_to_cutbuffer(): inptr->data = %s\n", inptr->data);
#endif
if (cutbuffer == NULL) {
if (cutbuffer == NULL)
cutbuffer = inptr;
inptr->prev = NULL;
#ifndef NANO_SMALL
} else if (concatenate_cut && !ISSET(JUSTIFY_MODE)) {
else if (allow_concat && concatenate_cut) {
/* Just tack the text in inptr onto the text in cutbottom,
unless we're backing up lines while justifying text. */
* unless allow_concat is false. */
cutbottom->data = charealloc(cutbottom->data,
strlen(cutbottom->data) + strlen(inptr->data) + 1);
strcat(cutbottom->data, inptr->data);
return;
}
#endif
} else {
else {
cutbottom->next = inptr;
inptr->prev = cutbottom;
}
inptr->next = NULL;
cutbottom = inptr;
cutbottom->next = NULL;
}
#ifndef NANO_SMALL
@@ -78,112 +83,115 @@ void add_to_cutbuffer(filestruct *inptr)
* last cut line has length bot_x. That is, if bot_x > 0 then we cut to
* bot->data[bot_x - 1].
*
* destructive is whether to actually modify the file structure, if not
* then just copy the buffer into cutbuffer and don't pull it from the
* file.
* We maintain totsize, totlines, filebot, the magicline, and line
* numbers. Also, we set current and current_x so the cursor will be on
* the first character after what was cut. We do not do any screen
* updates.
*
* If destructive, then we maintain totsize, totlines, filebot, the
* magic line, and line numbers. Also, we set current and current_x so
* the cursor will be on the first character after what was cut. We do
* not do any screen updates. */
void cut_marked_segment(filestruct *top, size_t top_x, filestruct *bot,
size_t bot_x, int destructive)
* Note cutbuffer might not be NULL if cut to end is used. */
void cut_marked_segment(void)
{
filestruct *tmp, *next;
filestruct *top;
filestruct *bot;
filestruct *tmp;
size_t top_x;
size_t bot_x;
size_t newsize;
if (top == bot && top_x == bot_x)
/* If the mark doesn't cover any text, get out. */
if (current == mark_beginbuf && current_x == mark_beginx)
return;
assert(top != NULL && bot != NULL);
assert(current != NULL && mark_beginbuf != NULL);
/* Make top be no later than bot. */
if (top->lineno > bot->lineno) {
filestruct *swap = top;
int swap2 = top_x;
/* Set up the top and bottom lines and coordinates of the marked
* text. */
mark_order((const filestruct **)&top, &top_x,
(const filestruct **)&bot, &bot_x);
top = bot;
bot = swap;
top_x = bot_x;
bot_x = swap2;
} else if (top == bot && top_x > bot_x) {
/* And bot_x can't be an earlier character than top_x. */
int swap = top_x;
top_x = bot_x;
bot_x = swap;
}
/* Make the first cut line manually. */
/* Make the first cut line manually. Move the cut part of the top
* line into tmp, and set newsize to that partial line's length. */
tmp = copy_node(top);
newsize = (top == bot ? bot_x - top_x : strlen(top->data + top_x));
charmove(tmp->data, top->data + top_x, newsize);
charmove(tmp->data, tmp->data + top_x, newsize);
null_at(&tmp->data, newsize);
add_to_cutbuffer(tmp);
/* And make the remainder line manually too. */
if (destructive) {
current_x = top_x;
totsize -= newsize;
totlines -= bot->lineno - top->lineno;
newsize = top_x + strlen(bot->data + bot_x) + 1;
if (top == bot) {
/* In this case, the remainder line is shorter, so we must
move text from the end forward first. */
charmove(top->data + top_x, bot->data + bot_x,
newsize - top_x);
top->data = charealloc(top->data, newsize);
} else {
totsize -= bot_x + 1;
/* Here, the remainder line might get longer, so we
realloc() it first. */
top->data = charealloc(top->data, newsize);
charmove(top->data + top_x, bot->data + bot_x,
newsize - top_x);
}
/* Add the contents of tmp to the cutbuffer. Note that cutbuffer
* might be non-NULL if we have cut to end enabled. */
if (cutbuffer == NULL) {
cutbuffer = tmp;
cutbottom = tmp;
} else {
cutbottom->next = tmp;
tmp->prev = cutbottom;
cutbottom = tmp;
}
/* And make the top remainder line manually too. Update current_x
* and totlines to account for all the cut text, and update totsize
* to account for the length of the cut part of the first line. */
current_x = top_x;
totsize -= newsize;
totlines -= bot->lineno - top->lineno;
/* Now set newsize to be the length of the top remainder line plus
* the bottom remainder line, plus one for the null terminator. */
newsize = top_x + strlen(bot->data + bot_x) + 1;
if (top == bot) {
/* In this case, we're only cutting one line or part of one
* line, so the remainder line is shorter. This means that we
* must move text from the end forward first. */
charmove(top->data + top_x, bot->data + bot_x, newsize - top_x);
top->data = charealloc(top->data, newsize);
cutbottom->next = NULL;
#ifdef DEBUG
dump_buffer(cutbuffer);
#endif
return;
}
tmp = top->next;
while (tmp != bot) {
next = tmp->next;
if (!destructive)
tmp = copy_node(tmp);
else
totsize -= strlen(tmp->data) + 1;
add_to_cutbuffer(tmp);
tmp = next;
}
/* Update totsize to account for the cut part of the last line. */
totsize -= bot_x + 1;
/* Here, the top remainder line might get longer (if the bottom
* remainder line is added to the end of it), so we realloc() it
* first. */
top->data = charealloc(top->data, newsize);
charmove(top->data + top_x, bot->data + bot_x, newsize - top_x);
assert(cutbottom != NULL && cutbottom->next != NULL);
/* We're cutting multiple lines, so in particular the next line is
* cut too. */
cutbottom->next->prev = cutbottom;
/* Update totsize to account for all the complete lines that have
* been cut. After this, totsize is fully up to date. */
for (tmp = top->next; tmp != bot; tmp = tmp->next)
totsize -= strlen(tmp->data) + 1;
/* Make the last cut line manually. */
tmp = copy_node(bot);
null_at(&tmp->data, bot_x);
add_to_cutbuffer(tmp);
#ifdef DEBUG
dump_buffer(cutbuffer);
#endif
null_at(&bot->data, bot_x);
if (destructive) {
top->next = bot->next;
if (top->next != NULL)
top->next->prev = top;
delete_node(bot);
renumber(top);
current = top;
if (bot == filebot) {
filebot = top;
assert(bot_x == 0);
if (top_x > 0)
new_magicline();
}
/* Move the rest of the cut text (other than the cut part of the top
* line) from the buffer to the end of the cutbuffer, and fix the
* edit buffer to account for the cut text. */
top->next = bot->next;
cutbottom = bot;
cutbottom->next = NULL;
if (top->next != NULL)
top->next->prev = top;
renumber(top);
current = top;
/* If the bottom line of the cut was the magicline, set filebot
* properly, and add a new magicline if the top remainder line
* (which is now the new bottom line) is non-blank. */
if (bot == filebot) {
filebot = top;
assert(bot_x == 0);
if (top_x > 0)
new_magicline();
}
#ifdef DEBUG
dump_buffer(cutbuffer);
@@ -194,28 +202,25 @@ void cut_marked_segment(filestruct *top, size_t top_x, filestruct *bot,
int do_cut_text(void)
{
filestruct *fileptr;
#ifndef NANO_SMALL
int dontupdate = 0;
#endif
assert(current != NULL && current->data != NULL);
check_statblank();
if (!ISSET(KEEP_CUTBUFFER)) {
if (!keep_cutbuffer) {
free_filestruct(cutbuffer);
cutbuffer = NULL;
marked_cut = 0;
#ifndef NANO_SMALL
concatenate_cut = 0;
concatenate_cut = FALSE;
#endif
#ifdef DEBUG
fprintf(stderr, "Blew away cutbuffer =)\n");
#endif
}
/* You can't cut the magic line except with the mark. But
trying does clear the cutbuffer if KEEP_CUTBUFFER is not set. */
/* You can't cut the magicline except with the mark. But trying
* does clear the cutbuffer if keep_cutbuffer is FALSE. */
if (current == filebot
#ifndef NANO_SMALL
&& !ISSET(MARK_ISSET)
@@ -223,7 +228,7 @@ int do_cut_text(void)
)
return 0;
SET(KEEP_CUTBUFFER);
keep_cutbuffer = TRUE;
#ifndef NANO_SMALL
if (ISSET(CUT_TO_END) && !ISSET(MARK_ISSET)) {
@@ -231,13 +236,14 @@ int do_cut_text(void)
if (current->data[current_x] == '\0') {
/* If the line is empty and we didn't just cut a non-blank
line, create a dummy line and add it to the cutbuffer */
* line, create a dummy blank line and add it to the
* cutbuffer. */
if (marked_cut != 1 && current->next != filebot) {
filestruct *junk = make_new_node(current);
junk->data = charalloc(1);
junk->data = charalloc(1);
junk->data[0] = '\0';
add_to_cutbuffer(junk);
add_to_cutbuffer(junk, TRUE);
#ifdef DEBUG
dump_buffer(cutbuffer);
#endif
@@ -251,33 +257,22 @@ int do_cut_text(void)
mark_beginx = strlen(current->data);
mark_beginbuf = current;
dontupdate = 1;
}
}
if (ISSET(MARK_ISSET)) {
/* Don't do_update() and move the screen position if the marked
area lies entirely within the screen buffer */
dontupdate |= current->lineno >= edittop->lineno &&
current->lineno <= editbot->lineno &&
mark_beginbuf->lineno >= edittop->lineno &&
mark_beginbuf->lineno <= editbot->lineno;
cut_marked_segment(current, current_x, mark_beginbuf,
mark_beginx, 1);
cut_marked_segment();
placewewant = xplustabs();
UNSET(MARK_ISSET);
/* If we just did a marked cut of part of a line, we should add
the first line of any cut done immediately afterward to the
end of this cut, as Pico does. */
* the first line of any cut done immediately afterward to the
* end of this cut, as Pico does. */
if (current == mark_beginbuf && current_x < strlen(current->data))
concatenate_cut = 1;
concatenate_cut = TRUE;
marked_cut = 1;
if (dontupdate)
edit_refresh();
else
edit_update(current, CENTER);
edit_refresh();
set_modified();
return 1;
@@ -289,7 +284,7 @@ int do_cut_text(void)
fileptr = current;
current = current->next;
current->prev = fileptr->prev;
add_to_cutbuffer(fileptr);
add_to_cutbuffer(fileptr, TRUE);
#ifdef DEBUG
dump_buffer(cutbuffer);
#endif
@@ -308,31 +303,28 @@ int do_cut_text(void)
set_modified();
marked_cut = 0;
#ifndef NANO_SMALL
concatenate_cut = 0;
concatenate_cut = FALSE;
#endif
placewewant = 0;
return 1;
}
int do_uncut_text(void)
{
filestruct *tmp = current, *fileptr = current;
filestruct *newbuf = NULL, *newend = NULL;
char *tmpstr, *tmpstr2;
filestruct *hold = current;
int i;
filestruct *tmp = current;
filestruct *newbuf = NULL;
filestruct *newend = NULL;
#ifndef DISABLE_WRAPPING
wrap_reset();
#endif
check_statblank();
if (cutbuffer == NULL || fileptr == NULL)
if (cutbuffer == NULL || current == NULL)
return 0; /* AIEEEEEEEEEEEE */
/* If we're uncutting a previously non-marked block, uncut to end if
we're not at the beginning of the line. If we are at the
beginning of the line, set placewewant to 0. Pico does both of
these. */
* we're not at the beginning of the line. If we are at the
* beginning of the line, set placewewant to 0. Pico does both of
* these. */
if (marked_cut == 0) {
if (current_x != 0)
marked_cut = 2;
@@ -341,24 +333,22 @@ int do_uncut_text(void)
}
/* If we're going to uncut on the magicline, always make a new
magicline in advance. */
* magicline in advance, as Pico does. */
if (current->next == NULL)
new_magicline();
if (marked_cut == 0 || cutbuffer->next != NULL)
{
if (marked_cut == 0 || cutbuffer->next != NULL) {
newbuf = copy_filestruct(cutbuffer);
for (newend = newbuf; newend->next != NULL && newend != NULL;
newend = newend->next)
totlines++;
}
/* Hook newbuf into fileptr */
/* Hook newbuf in at current. */
if (marked_cut != 0) {
int recenter_me = 0;
/* Should we eventually use edit_update(CENTER)? */
filestruct *hold = current;
/* If there's only one line in the cutbuffer */
/* If there's only one line in the cutbuffer... */
if (cutbuffer->next == NULL) {
size_t buf_len = strlen(cutbuffer->data);
size_t cur_len = strlen(current->data);
@@ -367,22 +357,24 @@ int do_uncut_text(void)
charmove(current->data + current_x + buf_len,
current->data + current_x, cur_len - current_x + 1);
strncpy(current->data + current_x, cutbuffer->data, buf_len);
/* Use strncpy() to not copy the terminal '\0'. */
/* Use strncpy() to not copy the null terminator. */
current_x += buf_len;
totsize += buf_len;
placewewant = xplustabs();
update_cursor();
} else { /* yuck -- no kidding! */
} else { /* Yuck -- no kidding! */
char *tmpstr, *tmpstr2;
tmp = current->next;
/* New beginning */
/* New beginning. */
tmpstr = charalloc(current_x + strlen(newbuf->data) + 1);
strncpy(tmpstr, current->data, current_x);
strcpy(&tmpstr[current_x], newbuf->data);
totsize += strlen(newbuf->data) + strlen(newend->data) + 1;
/* New end */
/* New end. */
tmpstr2 = charalloc(strlen(newend->data) +
strlen(&current->data[current_x]) + 1);
strcpy(tmpstr2, newend->data);
@@ -401,35 +393,28 @@ int do_uncut_text(void)
newend->next = tmp;
/* If tmp isn't null, we're in the middle: update the
prev pointer. If it IS null, we're at the end; update
the filebot pointer */
/* If tmp isn't NULL, we're in the middle: update the
* prev pointer. If it IS NULL, we're at the end; update
* the filebot pointer. */
if (tmp != NULL)
tmp->prev = newend;
else {
/* Fix the editbot pointer too */
if (editbot == filebot)
editbot = newend;
filebot = newend;
new_magicline();
}
/* Now why don't we update the totsize also */
/* Now why don't we update the totsize also? */
for (tmp = current->next; tmp != newend; tmp = tmp->next)
totsize += strlen(tmp->data) + 1;
current = newend;
if (editbot->lineno < newend->lineno)
recenter_me = 1;
}
/* If marked cut == 2, that means that we're doing a cut to end
and we don't want anything else on the line, so we have to
screw up all the work we just did and separate the line.
There must be a better way to do this, but not at 1AM on a
work night. */
* and we don't want anything else on the line, so we have to
* screw up all the work we just did and separate the line.
* There must be a better way to do this, but not at 1 AM on a
* work night. */
if (marked_cut == 2) {
tmp = make_new_node(current);
tmp->data = mallocstrcpy(NULL, current->data + current_x);
@@ -439,7 +424,7 @@ int do_uncut_text(void)
current_x = 0;
placewewant = 0;
/* Extra line added, update stuff */
/* Extra line added; update stuff. */
totlines++;
totsize++;
}
@@ -451,41 +436,32 @@ int do_uncut_text(void)
dump_buffer(cutbuffer);
#endif
set_modified();
if (recenter_me)
edit_update(current, CENTER);
else
edit_refresh();
edit_refresh();
return 0;
}
if (fileptr != fileage) {
tmp = fileptr->prev;
if (current != fileage) {
tmp = current->prev;
tmp->next = newbuf;
newbuf->prev = tmp;
} else
fileage = newbuf;
totlines++; /* Unmarked uncuts don't split lines */
totlines++; /* Unmarked uncuts don't split lines. */
/* This is so uncutting at the top of the buffer will work => */
if (current_y == 0)
edittop = newbuf;
/* Connect the end of the buffer to the filestruct */
newend->next = fileptr;
fileptr->prev = newend;
/* Connect the end of the buffer to the filestruct. */
newend->next = current;
current->prev = newend;
/* Recalculate size *sigh* */
for (tmp = newbuf; tmp != fileptr; tmp = tmp->next)
for (tmp = newbuf; tmp != current; tmp = tmp->next)
totsize += strlen(tmp->data) + 1;
i = editbot->lineno;
renumber(newbuf);
/* Center the screen if we've moved beyond the line numbers of both
the old and new editbots */
if (i < newend->lineno && editbot->lineno < newend->lineno)
edit_update(fileptr, CENTER);
else
edit_refresh();
edit_refresh();
#ifdef DEBUG
dump_buffer_reverse();

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,7 @@
/**************************************************************************
* move.c *
* *
* Copyright (C) 1999-2003 Chris Allegretta *
* Copyright (C) 1999-2004 Chris Allegretta *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2, or (at your option) *
@@ -23,53 +23,99 @@
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <assert.h>
#include "proto.h"
#include "nano.h"
int do_first_line(void)
{
int old_pww = placewewant;
current = fileage;
placewewant = 0;
current_x = 0;
if (edittop != fileage || need_vertical_update(old_pww))
edit_update(current, TOP);
return 1;
}
int do_last_line(void)
{
int old_pww = placewewant;
current = filebot;
placewewant = 0;
current_x = 0;
if (edittop->lineno + (editwinrows / 2) != filebot->lineno ||
need_vertical_update(old_pww))
edit_update(current, CENTER);
return 1;
}
int do_home(void)
{
current_x = 0;
placewewant = 0;
int old_pww = placewewant;
#ifndef NANO_SMALL
if (ISSET(SMART_HOME)) {
int old_current_x = current_x;
for (current_x = 0; isblank(current->data[current_x]) &&
current->data[current_x] != '\0'; current_x++)
;
if (current_x == old_current_x || current->data[current_x] == '\0')
current_x = 0;
placewewant = xplustabs();
} else {
#endif
current_x = 0;
placewewant = 0;
#ifndef NANO_SMALL
}
#endif
check_statblank();
update_line(current, current_x);
if (need_horizontal_update(old_pww))
update_line(current, current_x);
return 1;
}
int do_end(void)
{
int old_pww = placewewant;
current_x = strlen(current->data);
placewewant = xplustabs();
check_statblank();
update_line(current, current_x);
if (need_horizontal_update(old_pww))
update_line(current, current_x);
return 1;
}
int do_page_up(void)
{
int i;
int old_pww = placewewant;
const filestruct *old_current = current;
#ifndef DISABLE_WRAPPING
wrap_reset();
#endif
/* If edittop is the first line of the file, move current up there
/* 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 {
/* Move the top line of the edit window up a page. */
for (i = 0; i < editwinrows - 2 && edittop->prev != NULL; i++)
edittop = edittop->prev;
edit_scroll(UP, editwinrows - 2);
#ifndef NANO_SMALL
/* If we're in smooth scrolling mode and there was at least one
/* 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(SMOOTHSCROLL) && current->lineno > editwinrows - 2)
if (ISSET(SMOOTHSCROLL) && current->lineno > editwinrows - 2) {
int i;
for (i = 0; i < editwinrows - 2; i++)
current = current->prev;
/* If we're not in smooth scrolling mode and there was at least
}
/* 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 {
@@ -80,10 +126,12 @@ int do_page_up(void)
}
#endif
}
/* Get the equivalent x-coordinate of the new line. */
current_x = actual_x(current->data, placewewant);
edit_refresh();
/* Update all the lines that need to be updated. */
edit_redraw(old_current, old_pww);
check_statblank();
return 1;
@@ -91,8 +139,8 @@ int do_page_up(void)
int do_page_down(void)
{
int i;
int old_pww = placewewant;
const filestruct *old_current = current;
#ifndef DISABLE_WRAPPING
wrap_reset();
#endif
@@ -103,17 +151,19 @@ int do_page_down(void)
current = filebot;
placewewant = 0;
} else {
/* Move the top line of the edit window down a page. */
for (i = 0; i < editwinrows - 2; i++)
edittop = edittop->next;
edit_scroll(DOWN, editwinrows - 2);
#ifndef NANO_SMALL
/* If we're in smooth scrolling mode and there was at least one
/* 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(SMOOTHSCROLL) && current->lineno + editwinrows - 2 <= filebot->lineno)
if (ISSET(SMOOTHSCROLL) && 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 and there was at least
}
/* 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 {
@@ -124,10 +174,12 @@ int do_page_down(void)
}
#endif
}
/* Get the equivalent x-coordinate of the new line. */
current_x = actual_x(current->data, placewewant);
edit_refresh();
/* Update all the lines that need to be updated. */
edit_redraw(old_current, old_pww);
check_statblank();
return 1;
@@ -146,18 +198,25 @@ int do_up(void)
assert(current_y == current->lineno - edittop->lineno);
current = current->prev;
current_x = actual_x(current->data, placewewant);
if (current_y > 0) {
update_line(current->next, 0);
/* It was necessary to change current first, so the mark
* display will change! */
update_line(current, current_x);
} else
/* 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)
edit_scroll(UP,
#ifndef NANO_SMALL
if (ISSET(SMOOTHSCROLL))
edit_update(current, TOP);
else
ISSET(SMOOTHSCROLL) ? 1 :
#endif
edit_update(current, CENTER);
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);
return 1;
}
@@ -177,25 +236,30 @@ int do_down(void)
current = current->next;
current_x = actual_x(current->data, placewewant);
/* Note that current_y is zero-based. This test checks for the
* cursor's being not on the last row of the edit window. */
if (current_y != editwinrows - 1) {
update_line(current->prev, 0);
update_line(current, current_x);
} else
/* 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)
edit_scroll(DOWN,
#ifndef NANO_SMALL
if (ISSET(SMOOTHSCROLL))
/* In this case current_y does not change. The cursor remains
* at the bottom of the edit window. */
edit_update(edittop->next, TOP);
else
ISSET(SMOOTHSCROLL) ? 1 :
#endif
edit_update(current, CENTER);
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);
return 1;
}
int do_left(void)
int do_left(int allow_update)
{
int old_pww = placewewant;
if (current_x > 0)
current_x--;
else if (current != fileage) {
@@ -204,12 +268,19 @@ int do_left(void)
}
placewewant = xplustabs();
check_statblank();
update_line(current, current_x);
if (allow_update && need_horizontal_update(old_pww))
update_line(current, current_x);
return 1;
}
int do_right(void)
int do_left_void(void)
{
return do_left(TRUE);
}
int do_right(int allow_update)
{
int old_pww = placewewant;
assert(current_x <= strlen(current->data));
if (current->data[current_x] != '\0')
@@ -220,6 +291,12 @@ int do_right(void)
}
placewewant = xplustabs();
check_statblank();
update_line(current, current_x);
if (allow_update && need_horizontal_update(old_pww))
update_line(current, current_x);
return 1;
}
int do_right_void(void)
{
return do_right(TRUE);
}

2353
src/nano.c

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@
/**************************************************************************
* nano.h *
* *
* Copyright (C) 1999-2003 Chris Allegretta *
* Copyright (C) 1999-2004 Chris Allegretta *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2, or (at your option) *
@@ -19,13 +19,21 @@
* *
**************************************************************************/
#ifndef NANO_H
#define NANO_H 1
#ifdef __TANDEM
/* Tandem NonStop Kernel */
#include <floss.h>
#define NANO_ROOT_UID 65535
#else
#define NANO_ROOT_UID 0
#endif
#ifdef HAVE_LIMITS_H
#include <limits.h>
#endif
#ifndef NANO_H
#define NANO_H 1
/* Macros for the flags int... */
#define SET(bit) flags |= bit
#define UNSET(bit) flags &= ~bit
@@ -46,13 +54,15 @@
#endif
#ifdef USE_SLANG
/* Slang support enabled */
/* Slang support enabled. */
#include <slcurses.h>
/* Slang curses emulation brain damage, part 2: 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
#elif defined(HAVE_NCURSES_H)
#include <ncurses.h>
#else /* Uh oh */
#else /* Uh oh. */
#include <curses.h>
#endif /* CURSES_H */
@@ -71,16 +81,23 @@
#include <sys/stat.h>
#include "config.h"
/* If no snprintf()/vsnprintf(), use the versions from glib. */
#if !defined(HAVE_SNPRINTF) || !defined(HAVE_VSNPRINTF)
#include <glib.h>
# ifndef HAVE_SNPRINTF
# define snprintf g_snprintf
# define snprintf g_snprintf
# endif
# ifndef HAVE_VSNPRINTF
# define vsnprintf g_vsnprintf
# define vsnprintf g_vsnprintf
# endif
#endif
/* If no isblank(), strcasecmp(), strncasecmp(), strcasestr(), or
* strnlen(), use the versions we have. */
#ifndef HAVE_ISBLANK
#define isblank is_blank_char
#endif
#ifndef HAVE_STRCASECMP
#define strcasecmp nstricmp
#endif
@@ -89,38 +106,23 @@
#define strncasecmp nstrnicmp
#endif
#ifndef HAVE_STRCASESTR
#define strcasestr nstristr
#endif
#ifndef HAVE_STRNLEN
#define strnlen nstrnlen
#endif
/* Assume ERR is defined as -1. To avoid duplicate case values when
some key definitions are missing, we have to set these all to
different negative values other than -1. */
/* HP-UX 10 & 11 do not seem to support KEY_HOME and KEY_END */
#ifndef KEY_HOME
#define KEY_HOME -2
#endif
#ifndef KEY_END
#define KEY_END -3
#endif
/* Slang and SunOS 5.7-5.9 do not seem to support KEY_RESIZE */
#ifndef KEY_RESIZE
#define KEY_RESIZE -4
#endif
/* Slang does not seem to support KEY_SUSPEND */
#ifndef KEY_SUSPEND
#define KEY_SUSPEND -5
#endif
/* Snatch these out of the ncurses defs, so we can use them in search
history regardless of whether we're using ncurses or not */
#if !defined(KEY_UP) || !defined(KEY_DOWN)
#define KEY_UP 0403
#define KEY_DOWN 0402
#endif /* !KEY_UP || !KEY_DOWN */
* some key definitions are missing, we have to set all of these, and
* all of the special sentinel values below, to different negative
* values other than -1. */
#define VERMSG "GNU nano " VERSION
/* If we aren't using ncurses, turn the mouse support off, as it's
* ncurses-specific. */
#ifndef NCURSES_MOUSE_VERSION
#define DISABLE_MOUSE 1
#endif
@@ -129,12 +131,12 @@
#define DISABLE_WRAPJUSTIFY 1
#endif
/* Structure types */
/* Structure types. */
typedef struct filestruct {
char *data;
struct filestruct *next; /* Next node */
struct filestruct *prev; /* Previous node */
int lineno; /* The line number */
struct filestruct *next; /* Next node. */
struct filestruct *prev; /* Previous node. */
int lineno; /* The line number. */
} filestruct;
#ifdef ENABLE_MULTIBUFFER
@@ -143,49 +145,56 @@ typedef struct openfilestruct {
#ifndef NANO_SMALL
struct stat originalfilestat;
#endif
struct openfilestruct *next; /* Next node */
struct openfilestruct *prev; /* Previous node */
struct filestruct *fileage; /* Current file */
struct filestruct *filebot; /* Current file's last line */
struct openfilestruct *next; /* Next node. */
struct openfilestruct *prev; /* Previous node. */
struct filestruct *fileage; /* Current file. */
struct filestruct *filebot; /* Current file's last line. */
#ifndef NANO_SMALL
struct filestruct *file_mark_beginbuf;
/* Current file's beginning marked line */
int file_mark_beginx; /* Current file's beginning marked line's
x-coordinate position */
/* Current file's beginning marked
* line. */
int file_mark_beginx; /* Current file's beginning marked
* line's x-coordinate position. */
#endif
int file_current_x; /* Current file's x-coordinate position */
int file_current_y; /* Current file's y-coordinate position */
int file_current_x; /* Current file's x-coordinate
* position. */
int file_current_y; /* Current file's y-coordinate
* position. */
int file_flags; /* Current file's flags: modification
status (and marking status, if
available) */
int file_placewewant; /* Current file's place we want */
int file_totlines; /* Current file's total number of lines */
long file_totsize; /* Current file's total size */
int file_lineno; /* Current file's line number */
* status (and marking status, if
* available). */
int file_placewewant; /* Current file's place we want. */
int file_totlines; /* Current file's total number of
* lines. */
long file_totsize; /* Current file's total size. */
int file_lineno; /* Current file's line number. */
} openfilestruct;
#endif
typedef struct shortcut {
int val; /* Actual sequence that generates the keystroke */
int altval; /* Alt key # for this function, or 0 for none */
int misc1; /* Other int functions we want bound */
int misc2;
int viewok; /* is this function legal in view mode? */
int (*func) (void); /* Function to call when we catch this key */
const char *desc; /* Description, e.g. "Page Up" */
/* 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. */
int viewok; /* Is this function legal in view mode? */
int (*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 */
const char *help; /* Help file entry text. */
#endif
struct shortcut *next;
struct shortcut *next;
} shortcut;
#ifndef NANO_SMALL
typedef struct toggle {
int val; /* Sequence to toggle the key. Should only need 1 */
int val; /* Sequence to toggle the key. Should only need
* one. */
const char *desc; /* Description for when toggle is, uh, toggled,
e.g. "Pico Messages"; we'll append Enabled or
Disabled */
int flag; /* What flag actually gets toggled */
* e.g. "Cut to end"; we'll append Enabled or
* Disabled. */
int flag; /* What flag actually gets toggled. */
struct toggle *next;
} toggle;
#endif /* !NANO_SMALL */
@@ -230,8 +239,10 @@ typedef struct historytype {
char *data;
} historytype;
typedef struct historyheadtype {
struct historytype *next; /* keep *next and *prev members together */
struct historytype *prev; /* and in same order as in historytype */
struct historytype *next; /* Keep *next and *prev members
* together. */
struct historytype *prev; /* And in same order as in
* historytype. */
struct historytype *tail;
struct historytype *current;
int count;
@@ -239,42 +250,41 @@ typedef struct historyheadtype {
} historyheadtype;
#endif /* !NANO_SMALL */
/* Bitwise flags so we can save space (or more correctly, not waste it) */
/* Bitwise flags so we can save space (or more correctly, not waste
* it). */
#define MODIFIED (1<<0)
#define KEEP_CUTBUFFER (1<<1)
#define CASE_SENSITIVE (1<<2)
#define MARK_ISSET (1<<3)
#define CONSTUPDATE (1<<4)
#define NO_HELP (1<<5)
#define NOFOLLOW_SYMLINKS (1<<6)
#define SUSPEND (1<<7)
#define NO_WRAP (1<<8)
#define AUTOINDENT (1<<9)
#define VIEW_MODE (1<<10)
#define USE_MOUSE (1<<11)
#define USE_REGEXP (1<<12)
#define REGEXP_COMPILED (1<<13)
#define TEMP_OPT (1<<14)
#define CUT_TO_END (1<<15)
#define REVERSE_SEARCH (1<<16)
#define MULTIBUFFER (1<<17)
#define DOS_FILE (1<<18)
#define MAC_FILE (1<<19)
#define SMOOTHSCROLL (1<<20)
#define DISABLE_CURPOS (1<<21) /* Damn, we still need it */
#define REBIND_DELETE (1<<22)
#define NO_CONVERT (1<<23)
#define BACKUP_FILE (1<<24)
#define NO_RCFILE (1<<25)
#define COLOR_SYNTAX (1<<26)
#define PRESERVE (1<<27)
#define HISTORY_CHANGED (1<<28)
#define HISTORYLOG (1<<29)
#define JUSTIFY_MODE (1<<30)
/* Control key sequences, changing these would be very very bad */
#define CASE_SENSITIVE (1<<1)
#define MARK_ISSET (1<<2)
#define CONSTUPDATE (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_OPT (1<<12)
#define CUT_TO_END (1<<13)
#define REVERSE_SEARCH (1<<14)
#define MULTIBUFFER (1<<15)
#define DOS_FILE (1<<16)
#define MAC_FILE (1<<17)
#define SMOOTHSCROLL (1<<18)
#define DISABLE_CURPOS (1<<19) /* Damn, we still need it. */
#define REBIND_DELETE (1<<20)
#define NO_CONVERT (1<<21)
#define BACKUP_FILE (1<<22)
#define NO_RCFILE (1<<23)
#define COLOR_SYNTAX (1<<24)
#define PRESERVE (1<<25)
#define HISTORY_CHANGED (1<<26)
#define HISTORYLOG (1<<27)
#define RESTRICTED (1<<28)
#define SMART_HOME (1<<29)
#define WHITESPACE_DISPLAY (1<<30)
/* Control key sequences, changing these would be very very bad. */
#define NANO_CONTROL_SPACE 0
#define NANO_CONTROL_A 1
#define NANO_CONTROL_B 2
@@ -339,16 +349,23 @@ typedef struct historyheadtype {
#define NANO_ALT_COMMA ','
#define NANO_ALT_LCARAT '<'
#define NANO_ALT_RCARAT '>'
#define NANO_ALT_BRACKET ']'
#define NANO_ALT_RBRACKET ']'
#define NANO_ALT_SPACE ' '
/* Some semi-changeable keybindings; don't play with unless you're sure
you know what you're doing */
/* 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
/* Special sentinel key used for search/replace history. */
#define NANO_HISTORY_KEY -3
/* Normal keys. */
#define NANO_INSERTFILE_KEY NANO_CONTROL_R
#define NANO_INSERTFILE_FKEY KEY_F(5)
#define NANO_EXIT_KEY NANO_CONTROL_X
#define NANO_EXIT_FKEY KEY_F(2)
#define NANO_EXIT_KEY NANO_CONTROL_X
#define NANO_EXIT_FKEY KEY_F(2)
#define NANO_WRITEOUT_KEY NANO_CONTROL_O
#define NANO_WRITEOUT_FKEY KEY_F(3)
#define NANO_GOTO_KEY NANO_CONTROL_7
@@ -376,14 +393,17 @@ typedef struct historyheadtype {
#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_CANCEL_KEY NANO_CONTROL_C
#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_CONTROL_U
#define NANO_UP_KEY NANO_CONTROL_P
#define NANO_DOWN_KEY NANO_CONTROL_N
#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
@@ -403,12 +423,14 @@ typedef struct historyheadtype {
#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_BRACKET
#define NANO_BRACKET_KEY NANO_ALT_RBRACKET
#define NANO_EXTCMD_KEY NANO_CONTROL_X
#define NANO_NEXTWORD_KEY NANO_CONTROL_SPACE
#define NANO_PREVWORD_KEY NANO_ALT_SPACE
#define NANO_PARABEGIN_KEY NANO_CONTROL_W
#define NANO_PARAEND_KEY NANO_CONTROL_O
#define NANO_FULLJUSTIFY_KEY NANO_CONTROL_J
#define NANO_VERBATIM_KEY NANO_ALT_V
#ifndef NANO_SMALL
/* Toggles do not exist with NANO_SMALL. */
@@ -422,13 +444,15 @@ typedef struct historyheadtype {
#define TOGGLE_WRAP_KEY NANO_ALT_L
#define TOGGLE_BACKWARDS_KEY NANO_ALT_B
#define TOGGLE_CASE_KEY NANO_ALT_C
#define TOGGLE_LOAD_KEY NANO_ALT_F
#define TOGGLE_MULTIBUFFER_KEY NANO_ALT_F
#define TOGGLE_DOS_KEY NANO_ALT_D
#define TOGGLE_MAC_KEY NANO_ALT_O
#define TOGGLE_SMOOTH_KEY NANO_ALT_S
#define 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
#endif /* !NANO_SMALL */
#define MAIN_VISIBLE 12
@@ -436,22 +460,30 @@ typedef struct historyheadtype {
#define VIEW 1
#define NOVIEW 0
typedef enum {
JUSTIFY, BEGIN, END
} justbegend;
typedef enum {
UP, DOWN
} updown;
typedef enum {
TOP, CENTER, NONE
} topmidnone;
/* Minimum editor window rows required for nano to work correctly */
/* Minimum editor window rows required for nano to work correctly. */
#define MIN_EDITOR_ROWS 3
/* Minimum editor window cols required for nano to work correctly */
/* Minimum editor window cols required for nano to work correctly. */
#define MIN_EDITOR_COLS 10
/* Default number of characters from end-of-line where text wrapping
occurs */
* occurs. */
#define CHARS_FROM_EOL 8
/* Maximum number of search history strings saved, same value used for
replace history */
* replace history. */
#define MAX_SEARCH_HISTORY 100
#endif /* !NANO_H */

View File

@@ -2,7 +2,7 @@
/**************************************************************************
* proto.h *
* *
* Copyright (C) 1999-2003 Chris Allegretta *
* Copyright (C) 1999-2004 Chris Allegretta *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2, or (at your option) *
@@ -19,7 +19,7 @@
* *
**************************************************************************/
/* Externs */
/* Externs. */
#include <sys/stat.h>
@@ -46,11 +46,21 @@ extern int search_last_line;
extern int search_offscreen;
extern int currslen;
#if !defined(NANO_SMALL) && defined(ENABLE_NANORC)
extern char *whitespace;
#endif
#ifndef DISABLE_JUSTIFY
extern char *punct;
extern char *brackets;
extern char *quotestr;
#endif
extern WINDOW *edit, *topwin, *bottomwin;
#ifndef NANO_SMALL
extern char *backup_dir;
#endif
extern WINDOW *topwin, *edit, *bottomwin;
extern char *filename;
extern struct stat originalfilestat;
extern char *answer;
@@ -70,7 +80,7 @@ extern char *alt_speller;
extern int resetstatuspos;
extern struct stat fileinfo;
extern filestruct *current, *fileage, *edittop, *editbot, *filebot;
extern filestruct *current, *fileage, *edittop, *filebot;
extern filestruct *cutbuffer;
#ifndef NANO_SMALL
extern filestruct *mark_beginbuf;
@@ -110,10 +120,10 @@ extern const shortcut *currshortcut;
#ifdef HAVE_REGEX_H
extern regex_t search_regexp;
extern regmatch_t regmatches[10];
extern regmatch_t regmatches[10];
#ifdef ENABLE_COLOR
extern regex_t syntaxfile_regexp;
extern regmatch_t synfilematches[1];
extern regmatch_t synfilematches[1];
#endif /* ENABLE_COLOR */
#endif /* HAVE_REGEX_H */
@@ -128,7 +138,7 @@ extern historyheadtype replace_history;
extern int curses_ended;
/* Functions we want available */
/* Functions we want available. */
/* Public functions in color.c */
#ifdef ENABLE_COLOR
@@ -138,17 +148,18 @@ void update_color(void);
#endif /* ENABLE_COLOR */
/* Public functions in cut.c */
void cutbuffer_reset(void);
filestruct *get_cutbottom(void);
void add_to_cutbuffer(filestruct *inptr);
void cut_marked_segment(filestruct *top, size_t top_x, filestruct *bot,
size_t bot_x, int destructive);
void add_to_cutbuffer(filestruct *inptr, int allow_concat);
void cut_marked_segment(void);
int do_cut_text(void);
int do_uncut_text(void);
/* Public functions in files.c */
void load_file(int update);
void new_file(void);
filestruct *read_line(char *buf, filestruct *prev, int *line1ins, int len);
filestruct *read_line(char *buf, filestruct *prev, int *line1ins, size_t
len);
int read_file(FILE *f, const char *filename, int quiet);
int open_file(const char *filename, int insert, int quiet);
char *get_next_filename(const char *name);
@@ -179,8 +190,14 @@ char *safe_tempnam(const char *dirname, const char *filename_prefix);
void init_operating_dir(void);
int check_operating_dir(const char *currpath, int allow_tabcomp);
#endif
#ifndef NANO_SMALL
void init_backup_dir(void);
#endif
int write_file(const char *name, int tmp, int append, int nonamechange);
int do_writeout(const char *path, int exiting, int append);
#ifndef NANO_SMALL
int write_marked(const char *name, int tmp, int append);
#endif
int do_writeout(int exiting);
int do_writeout_void(void);
char *real_dir_from_tilde(const char *buf);
#ifndef DISABLE_TABCOMP
@@ -189,11 +206,10 @@ char **username_tab_completion(char *buf, int *num_matches);
char **cwd_tab_completion(char *buf, int *num_matches);
char *input_tab(char *buf, int place, int *lastwastab, int *newplace, int *list);
#endif
#ifndef DISABLE_BROWSER
struct stat filestat(const char *path);
int diralphasort(const void *va, const void *vb);
void free_charptrarray(char **array, int len);
const char *tail(const char *foo);
#ifndef DISABLE_BROWSER
int diralphasort(const void *va, const void *vb);
void free_charptrarray(char **array, size_t len);
void striponedir(char *foo);
int readable_dir(const char *path);
char **browser_init(const char *path, int *longest, int *numents);
@@ -207,7 +223,8 @@ void sc_init_one(shortcut **shortcutage, int key, const char *desc,
#ifndef DISABLE_HELP
const char *help,
#endif
int alt, int misc1, int misc2, int view, int (*func) (void));
int metaval, int funcval, int miscval, int view, int
(*func)(void));
#ifndef NANO_SMALL
void toggle_init_one(int val, const char *desc, int flag);
void toggle_init(void);
@@ -222,17 +239,21 @@ void thanks_for_all_the_fish(void);
#endif
/* Public functions in move.c */
int do_first_line(void);
int do_last_line(void);
int do_home(void);
int do_end(void);
int do_page_up(void);
int do_page_down(void);
int do_up(void);
int do_down(void);
int do_left(void);
int do_right(void);
int do_left(int allow_update);
int do_left_void(void);
int do_right(int allow_update);
int do_right_void(void);
/* Public functions in nano.c */
RETSIGTYPE finish(int sigage);
void finish(void);
void die(const char *msg, ...);
void die_save_file(const char *die_filename);
void die_too_small(void);
@@ -258,11 +279,8 @@ void print1opt(const char *shortflag, const char *longflag,
const char *desc);
void usage(void);
void version(void);
void do_early_abort(void);
int no_help(void);
#if defined(DISABLE_JUSTIFY) || defined(DISABLE_SPELLER) || defined(DISABLE_HELP) || defined(NANO_SMALL)
void nano_disabled_msg(void);
#endif
int nano_disabled_msg(void);
#ifndef NANO_SMALL
RETSIGTYPE cancel_fork(int signal);
int open_pipe(const char *command);
@@ -271,6 +289,7 @@ int open_pipe(const char *command);
void do_mouse(void);
#endif
void do_char(char ch);
int do_verbatim_input(void);
int do_backspace(void);
int do_delete(void);
int do_tab(void);
@@ -278,23 +297,23 @@ int do_enter(void);
#ifndef NANO_SMALL
int do_next_word(void);
int do_prev_word(void);
#endif
int do_mark(void);
#endif
#ifndef DISABLE_WRAPPING
void wrap_reset(void);
int do_wrap(filestruct *inptr);
#endif
#ifndef DISABLE_SPELLER
int do_int_spell_fix(const char *word);
char *do_int_speller(char *tempfile_name);
char *do_alt_speller(char *tempfile_name);
#endif
const char *do_int_speller(char *tempfile_name);
const char *do_alt_speller(char *tempfile_name);
int do_spell(void);
#endif
#if !defined(DISABLE_WRAPPING) && !defined(NANO_SMALL) || !defined(DISABLE_JUSTIFY)
size_t indent_length(const char *line);
#endif
#ifndef DISABLE_JUSTIFY
int justify_format(int changes_allowed, filestruct *line, size_t skip);
void justify_format(filestruct *line, size_t skip);
#ifdef HAVE_REGEX_H
size_t quote_length(const char *line, const regex_t *qreg);
#else
@@ -305,21 +324,22 @@ size_t quote_length(const char *line);
#else
# define IFREG(a, b) a
#endif
int quotes_match(const char *a_line, size_t a_quote,
IFREG(const char *b_line, const regex_t *qreg));
size_t indents_match(const char *a_line, size_t a_indent,
const char *b_line, size_t b_indent);
filestruct *backup_lines(filestruct *first_line, size_t par_len,
size_t quote_len);
int quotes_match(const char *a_line, size_t a_quote, IFREG(const char
*b_line, const regex_t *qreg));
size_t indents_match(const char *a_line, size_t a_indent, const char
*b_line, size_t b_indent);
filestruct *backup_lines(filestruct *first_line, size_t par_len, size_t
quote_len);
int breakable(const char *line, int goal);
int break_line(const char *line, int goal, int force);
int do_para_operation(int operation);
#endif /* !DISABLE_JUSTIFY */
int do_justify(void);
#ifndef DISABLE_JUSTIFY
int do_para_search(justbegend search_type, size_t *quote, size_t *par,
size_t *indent, int do_refresh);
int do_para_begin(void);
int do_para_end(void);
#endif
int do_justify(int justify_all);
int do_justify_void(void);
int do_full_justify(void);
#endif /* !DISABLE_JUSTIFY */
int do_exit(void);
void signal_init(void);
RETSIGTYPE handle_hupterm(int signal);
@@ -327,11 +347,19 @@ RETSIGTYPE do_suspend(int signal);
RETSIGTYPE do_cont(int signal);
#ifndef NANO_SMALL
void handle_sigwinch(int s);
void allow_pending_sigwinch(int allow);
#endif
void print_numlock_warning(void);
#ifndef NANO_SMALL
void do_toggle(const toggle *which);
#endif
#if !defined(NANO_SMALL) || defined(USE_SLANG)
void disable_signals(void);
#endif
#ifndef NANO_SMALL
void enable_signals(void);
#endif
void disable_flow_control(void);
void enable_flow_control(void);
/* Public functions in rcfile.c */
#ifdef ENABLE_NANORC
@@ -359,19 +387,21 @@ void not_found_msg(const char *str);
void search_abort(void);
void search_init_globals(void);
int search_init(int replacing);
int is_whole_word(int curr_pos, const char *datastr, const char *searchword);
filestruct *findnextstr(int quiet, int bracket_mode,
const filestruct *begin, int beginx,
const char *needle);
int is_whole_word(int curr_pos, const char *datastr, const char
*searchword);
int findnextstr(int can_display_wrap, int wholeword, const filestruct
*begin, size_t beginx, const char *needle, int no_sameline);
int do_search(void);
#ifndef NANO_SMALL
int do_research(void);
#endif
void replace_abort(void);
#ifdef HAVE_REGEX_H
int replace_regexp(char *string, int create_flag);
#endif
char *replace_line(void);
int do_replace_loop(const char *prevanswer, const filestruct *begin,
int *beginx, int wholewords, int *i);
char *replace_line(const char *needle);
int do_replace_loop(const char *needle, const filestruct *real_current,
size_t *real_current_x, int wholewords);
int do_replace(void);
int do_gotoline(int line, int save_pos);
int do_gotoline_void(void);
@@ -390,16 +420,22 @@ char *get_history_newer(historyheadtype *h);
char *get_history_completion(historyheadtype *h, char *s);
void free_history(historyheadtype *h);
#ifdef ENABLE_NANORC
void load_history(void);
void load_history(void);
void save_history(void);
#endif
#endif
/* Public functions in utils.c */
#ifdef HAVE_REGEX_H
#ifdef BROKEN_REGEXEC
int regexec_safe(const regex_t *preg, const char *string, size_t nmatch,
regmatch_t pmatch[], int eflags);
#endif
int regexp_bol_or_eol(const regex_t *preg, const char *string);
#endif
#ifndef HAVE_ISBLANK
int is_blank_char(int c);
#endif
int is_cntrl_char(int c);
int num_of_digits(int n);
void align(char **strp);
@@ -412,15 +448,20 @@ int nstricmp(const char *s1, const char *s2);
#ifndef HAVE_STRNCASECMP
int nstrnicmp(const char *s1, const char *s2, size_t n);
#endif
#ifndef NANO_SMALL
const char *revstrstr(const char *haystack, const char *needle,
const char *rev_start);
const char *revstristr(const char *haystack, const char *needle,
const char *rev_start);
#ifndef HAVE_STRCASESTR
const char *nstristr(const char *haystack, const char *needle);
#endif
#ifndef NANO_SMALL
const char *revstrstr(const char *haystack, const char *needle, const
char *rev_start);
const char *revstristr(const char *haystack, const char *needle, const
char *rev_start);
#endif
#ifndef HAVE_STRNLEN
size_t nstrnlen(const char *s, size_t maxlen);
#endif
const char *stristr(const char *haystack, const char *needle);
const char *strstrwrapper(const char *haystack, const char *needle,
const char *rev_start, int line_pos);
const char *start);
void nperror(const char *s);
void *nmalloc(size_t howmuch);
void *nrealloc(void *ptr, size_t howmuch);
@@ -435,28 +476,45 @@ int check_wildcard_match(const char *text, const char *pattern);
#endif
/* Public functions in winio.c */
int get_kbinput(WINDOW *win, int *meta, int rebind_delete);
char *get_verbatim_kbinput(WINDOW *win, int *kbinput_len);
int get_ignored_kbinput(WINDOW *win);
int get_accepted_kbinput(WINDOW *win, int kbinput, int *meta,
int rebind_delete);
int get_ascii_kbinput(WINDOW *win, int kbinput);
int get_escape_seq_kbinput(WINDOW *win, int kbinput);
int get_skip_tilde_kbinput(WINDOW *win, int errval, int retval);
int do_first_line(void);
int do_last_line(void);
int xpt(const filestruct *fileptr, int index);
#ifndef NANO_SMALL
void reset_kbinput(void);
#endif
int get_kbinput(WINDOW *win, int *meta_key);
int get_translated_kbinput(int kbinput, int *es
#ifndef NANO_SMALL
, int reset
#endif
);
int get_ascii_kbinput(int kbinput, size_t ascii_digits
#ifndef NANO_SMALL
, int reset
#endif
);
int get_control_kbinput(int kbinput);
int get_escape_seq_kbinput(int *escape_seq, size_t es_len, int
*ignore_seq);
int get_escape_seq_abcd(int kbinput);
int *get_verbatim_kbinput(WINDOW *win, int *verbatim_kbinput, size_t
*verbatim_len, int allow_ascii);
int get_untranslated_kbinput(int kbinput, size_t position, int
allow_ascii
#ifndef NANO_SMALL
, int reset
#endif
);
#ifndef DISABLE_MOUSE
int get_mouseinput(int *mouse_x, int *mouse_y, int shortcut);
#endif
size_t xplustabs(void);
size_t actual_x(const char *str, size_t xplus);
size_t strnlenpt(const char *buf, size_t size);
size_t strlenpt(const char *buf);
void blank_bottombars(void);
void blank_bottomwin(void);
void blank_titlebar(void);
void blank_edit(void);
void blank_statusbar(void);
void blank_statusbar_refresh(void);
void check_statblank(void);
char *display_string(const char *buf, size_t start_col, int len);
void blank_bottombars(void);
char *display_string(const char *buf, size_t start_col, size_t len);
void nanoget_repaint(const char *buf, const char *inputbuf, size_t x);
int nanogetstr(int allowtabs, const char *buf, const char *def,
#ifndef NANO_SMALL
@@ -467,40 +525,38 @@ int nanogetstr(int allowtabs, const char *buf, const char *def,
, int *list
#endif
);
void set_modified(void);
void titlebar(const char *path);
void set_modified(void);
void statusbar(const char *msg, ...);
void bottombars(const shortcut *s);
void onekey(const char *keystroke, const char *desc, int len);
void onekey(const char *keystroke, const char *desc, size_t len);
#ifndef NDEBUG
int check_linenumbers(const filestruct *fileptr);
#endif
size_t get_page_start(size_t column);
void reset_cursor(void);
void add_marked_sameline(int begin, int end, filestruct *fileptr, int y,
int virt_cur_x, int this_page);
void edit_add(const filestruct *fileptr, const char *converted,
int yval, size_t start);
void edit_add(const filestruct *fileptr, const char *converted, int
yval, size_t start);
void update_line(const filestruct *fileptr, size_t index);
void update_cursor(void);
void center_cursor(void);
int need_horizontal_update(int old_placewewant);
int need_vertical_update(int old_placewewant);
void edit_scroll(updown direction, int nlines);
void edit_redraw(const filestruct *old_current, int old_pww);
void edit_refresh(void);
void edit_refresh_clearok(void);
void edit_update(filestruct *fileptr, topmidnone location);
int statusq(int tabs, const shortcut *s, const char *def,
int statusq(int allowtabs, const shortcut *s, const char *def,
#ifndef NANO_SMALL
historyheadtype *history_list,
#endif
const char *msg, ...);
int do_yesno(int all, int leavecursor, const char *msg, ...);
int do_yesno(int all, const char *msg);
int total_refresh(void);
void display_main_list(void);
void statusbar(const char *msg, ...);
int do_cursorpos(int constant);
int do_cursorpos_void(void);
int line_len(const char *ptr);
int do_help(void);
void do_replace_highlight(int highlight_flag, const char *word);
void fix_editbot(void);
#ifdef DEBUG
void dump_buffer(const filestruct *inptr);
void dump_buffer_reverse(void);

View File

@@ -2,7 +2,7 @@
/**************************************************************************
* rcfile.c *
* *
* Copyright (C) 1999-2003 Chris Allegretta *
* Copyright (C) 1999-2004 Chris Allegretta *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2, or (at your option) *
@@ -31,6 +31,7 @@
#include <sys/stat.h>
#include <fcntl.h>
#include <pwd.h>
#include <ctype.h>
#include <assert.h>
#include "proto.h"
#include "nano.h"
@@ -41,6 +42,10 @@ const static rcoption rcopts[] = {
#ifndef NANO_SMALL
{"autoindent", AUTOINDENT},
{"backup", BACKUP_FILE},
{"backupdir", 0},
#endif
#ifndef DISABLE_JUSTIFY
{"brackets", 0},
#endif
{"const", CONSTUPDATE},
#ifndef NANO_SMALL
@@ -70,14 +75,16 @@ const static rcoption rcopts[] = {
{"operatingdir", 0},
#endif
{"preserve", PRESERVE},
{"rebinddelete", REBIND_DELETE},
#ifndef DISABLE_JUSTIFY
{"punct", 0},
{"quotestr", 0},
#endif
{"rebinddelete", REBIND_DELETE},
#ifdef HAVE_REGEX_H
{"regexp", USE_REGEXP},
#endif
#ifndef NANO_SMALL
{"smarthome", SMART_HOME},
{"smooth", SMOOTHSCROLL},
#endif
#ifndef DISABLE_SPELLER
@@ -87,6 +94,9 @@ const static rcoption rcopts[] = {
{"tabsize", 0},
{"tempfile", TEMP_OPT},
{"view", VIEW_MODE},
#ifndef NANO_SMALL
{"whitespace", 0},
#endif
{NULL, 0}
};
@@ -130,7 +140,7 @@ void rcfile_msg(const char *msg, ...)
/* Parse the next word from the string. Returns NULL if we hit EOL. */
char *parse_next_word(char *ptr)
{
while (*ptr != ' ' && *ptr != '\t' && *ptr != '\n' && *ptr != '\0')
while (!isblank(*ptr) && *ptr != '\n' && *ptr != '\0')
ptr++;
if (*ptr == '\0')
@@ -139,18 +149,19 @@ char *parse_next_word(char *ptr)
/* Null terminate and advance ptr */
*ptr++ = 0;
while (*ptr == ' ' || *ptr == '\t')
while (isblank(*ptr))
ptr++;
return ptr;
}
/* The keywords operatingdir, fill, tabsize, speller, and quotestr take
* an argument when set. Among these, operatingdir, speller, and
* quotestr 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. */
/* 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. */
char *parse_argument(char *ptr)
{
const char *ptr_bak = ptr;
@@ -178,7 +189,7 @@ char *parse_argument(char *ptr)
ptr = last_quote + 1;
}
if (ptr != NULL)
while (*ptr == ' ' || *ptr == '\t')
while (isblank(*ptr))
ptr++;
return ptr;
}
@@ -233,10 +244,10 @@ char *parse_next_regex(char *ptr)
if (*ptr == '\0')
return NULL;
/* Null terminate and advance ptr */
/* Null terminate and advance ptr. */
*ptr++ = '\0';
while (*ptr == ' ' || *ptr == '\t')
while (isblank(*ptr))
ptr++;
return ptr;
@@ -325,7 +336,7 @@ void parse_syntax(char *ptr)
ptr = parse_next_regex(ptr);
newext = (exttype *)nmalloc(sizeof(exttype));
if (nregcomp(&newext->val, fileregptr, REG_NOSUB))
if (nregcomp(&newext->val, fileregptr, REG_NOSUB) != 0)
free(newext);
else {
if (endext == NULL)
@@ -412,7 +423,7 @@ void parse_colors(char *ptr)
newcolor = (colortype *)nmalloc(sizeof(colortype));
fgstr = ptr;
ptr = parse_next_regex(ptr);
if (nregcomp(&newcolor->start, fgstr, 0)) {
if (nregcomp(&newcolor->start, fgstr, 0) != 0) {
free(newcolor);
cancelled = 1;
} else {
@@ -463,7 +474,7 @@ void parse_colors(char *ptr)
if (cancelled)
continue;
newcolor->end = (regex_t *)nmalloc(sizeof(regex_t));
if (nregcomp(newcolor->end, fgstr, 0)) {
if (nregcomp(newcolor->end, fgstr, 0) != 0) {
free(newcolor->end);
newcolor->end = NULL;
}
@@ -483,7 +494,7 @@ void parse_rcfile(FILE *rcstream)
while (fgets(buf, 1023, rcstream) != 0) {
lineno++;
ptr = buf;
while (*ptr == ' ' || *ptr == '\t')
while (isblank(*ptr))
ptr++;
if (*ptr == '\n' || *ptr == '\0')
@@ -537,9 +548,17 @@ void parse_rcfile(FILE *rcstream)
#ifndef DISABLE_WRAPJUSTIFY
|| !strcasecmp(rcopts[i].name, "fill")
#endif
#ifndef NANO_SMALL
|| !strcasecmp(rcopts[i].name, "whitespace")
#endif
#ifndef DISABLE_JUSTIFY
|| !strcasecmp(rcopts[i].name, "punct")
|| !strcasecmp(rcopts[i].name, "brackets")
|| !strcasecmp(rcopts[i].name, "quotestr")
#endif
#ifndef NANO_SMALL
|| !strcasecmp(rcopts[i].name, "backupdir")
#endif
#ifndef DISABLE_SPELLER
|| !strcasecmp(rcopts[i].name, "speller")
#endif
@@ -577,17 +596,49 @@ void parse_rcfile(FILE *rcstream)
wrap_at = j;
} else
#endif
#ifndef NANO_SMALL
if (!strcasecmp(rcopts[i].name, "whitespace")) {
size_t ws_len;
whitespace = mallocstrcpy(NULL, option);
ws_len = strlen(whitespace);
if (ws_len != 2 || (ws_len == 2 && (is_cntrl_char(whitespace[0]) || is_cntrl_char(whitespace[1])))) {
rcfile_error(_("Two non-control characters required"));
free(whitespace);
whitespace = NULL;
} else
SET(WHITESPACE_DISPLAY);
} else
#endif
#ifndef DISABLE_JUSTIFY
if (!strcasecmp(rcopts[i].name, "quotestr"))
if (!strcasecmp(rcopts[i].name, "punct")) {
punct = mallocstrcpy(NULL, option);
if (strchr(punct, '\t') != NULL || strchr(punct, ' ') != NULL) {
rcfile_error(_("Non-tab and non-space characters required"));
free(punct);
punct = NULL;
}
} else if (!strcasecmp(rcopts[i].name, "brackets")) {
brackets = mallocstrcpy(NULL, option);
if (strchr(brackets, '\t') != NULL || strchr(brackets, ' ') != NULL) {
rcfile_error(_("Non-tab and non-space characters required"));
free(brackets);
brackets = NULL;
}
} else if (!strcasecmp(rcopts[i].name, "quotestr"))
quotestr = mallocstrcpy(NULL, option);
else
#endif
#ifndef NANO_SMALL
if (!strcasecmp(rcopts[i].name, "backupdir"))
backup_dir = mallocstrcpy(NULL, option);
else
#endif
#ifndef DISABLE_SPELLER
if (!strcasecmp(rcopts[i].name, "speller"))
alt_speller = mallocstrcpy(NULL, option);
else
#endif
{
if (!strcasecmp(rcopts[i].name, "tabsize")) {
char *first_error;
/* Using strtol instead of atoi lets us
@@ -667,9 +718,9 @@ void do_rcfile(void)
if (!ISSET(NO_RCFILE)) {
#if defined(DISABLE_ROOTWRAP) && !defined(DISABLE_WRAPPING)
/* If we've already read $SYSCONFDIR/nanorc (if it's there), we're
/* If we've already read SYSCONFDIR/nanorc (if it's there), we're
root, and --disable-wrapping-as-root is used, turn wrapping off */
if (euid == 0)
if (euid == NANO_ROOT_UID)
SET(NO_WRAP);
#endif
if ((rcstream = fopen(nanorc, "r")) == NULL) {

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@
/**************************************************************************
* utils.c *
* *
* Copyright (C) 1999-2003 Chris Allegretta *
* Copyright (C) 1999-2004 Chris Allegretta *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2, or (at your option) *
@@ -30,6 +30,7 @@
#include "proto.h"
#include "nano.h"
#ifdef HAVE_REGEX_H
#ifdef BROKEN_REGEXEC
#undef regexec
int regexec_safe(const regex_t *preg, const char *string, size_t nmatch,
@@ -40,12 +41,31 @@ int regexec_safe(const regex_t *preg, const char *string, size_t nmatch,
return REG_NOMATCH;
}
#define regexec(preg, string, nmatch, pmatch, eflags) regexec_safe(preg, string, nmatch, pmatch, eflags)
#endif /* BROKEN_REGEXEC */
/* Assume that string will be found by regexec() if the REG_NOTBOL and
* REG_NOTEOL glags are not set. */
int regexp_bol_or_eol(const regex_t *preg, const char *string)
{
return (regexec(preg, string, 0, NULL, REG_NOTBOL | REG_NOTEOL) ==
REG_NOMATCH);
}
#endif /* HAVE_REGEX_H */
#ifndef HAVE_ISBLANK
/* This function is equivalent to isblank(). */
int is_blank_char(int c)
{
return (c == '\t' || c == ' ');
}
#endif
/* This function is equivalent to iscntrl(), except in that it also
* handles control characters with their high bits set. */
int is_cntrl_char(int c)
{
return (-128 <= c && c < -96) || (0 <= c && c < 32) ||
(127 <= c && c < 160);
(127 <= c && c < 160);
}
int num_of_digits(int n)
@@ -84,9 +104,10 @@ void null_at(char **data, size_t index)
void unsunder(char *str, size_t true_len)
{
assert(str != NULL);
for(; true_len > 0; true_len--, str++)
for (; true_len > 0; true_len--, str++) {
if (*str == '\0')
*str = '\n';
}
}
/* For non-null-terminated lines. A line, by definition, shouldn't
@@ -94,9 +115,10 @@ void unsunder(char *str, size_t true_len)
void sunder(char *str)
{
assert(str != NULL);
for(; *str != '\0'; str++)
for (; *str != '\0'; str++) {
if (*str == '\n')
*str = '\0';
}
}
#ifndef HAVE_STRCASECMP
@@ -104,10 +126,12 @@ void sunder(char *str)
int nstricmp(const char *s1, const char *s2)
{
assert(s1 != NULL && s2 != NULL);
for (; *s1 != '\0' && *s2 != '\0'; s1++, s2++) {
if (tolower(*s1) != tolower(*s2))
break;
}
return (tolower(*s1) - tolower(*s2));
}
#endif
@@ -117,25 +141,49 @@ int nstricmp(const char *s1, const char *s2)
int nstrnicmp(const char *s1, const char *s2, size_t n)
{
assert(s1 != NULL && s2 != NULL);
for (; n > 0 && *s1 != '\0' && *s2 != '\0'; n--, s1++, s2++) {
if (tolower(*s1) != tolower(*s2))
break;
}
if (n > 0)
return (tolower(*s1) - tolower(*s2));
else if (n == 0)
return 0;
else if (n < 0)
else
return -1;
}
#endif
#ifndef HAVE_STRCASESTR
/* This function is equivalent to strcasestr(). It was adapted from
* mutt's mutt_stristr() function. */
const char *nstristr(const char *haystack, const char *needle)
{
assert(haystack != NULL && needle != NULL);
for (; *haystack != '\0'; haystack++) {
const char *p = haystack;
const char *q = needle;
for (; tolower(*p) == tolower(*q) && *q != '\0'; p++, q++)
;
if (*q == '\0')
return haystack;
}
return NULL;
}
#endif
/* None of this is needed if we're using NANO_SMALL! */
#ifndef NANO_SMALL
const char *revstrstr(const char *haystack, const char *needle,
const char *rev_start)
const char *revstrstr(const char *haystack, const char *needle, const
char *rev_start)
{
for(; rev_start >= haystack ; rev_start--) {
for (; rev_start >= haystack; rev_start--) {
const char *r, *q;
for (r = rev_start, q = needle ; *q == *r && *q != '\0'; r++, q++)
@@ -146,8 +194,8 @@ const char *revstrstr(const char *haystack, const char *needle,
return NULL;
}
const char *revstristr(const char *haystack, const char *needle,
const char *rev_start)
const char *revstristr(const char *haystack, const char *needle, const
char *rev_start)
{
for (; rev_start >= haystack; rev_start--) {
const char *r = rev_start, *q = needle;
@@ -161,50 +209,47 @@ const char *revstristr(const char *haystack, const char *needle,
}
#endif /* !NANO_SMALL */
/* This is now mutt's version (called mutt_stristr) because it doesn't
* use memory allocation to do a simple search (yuck). */
const char *stristr(const char *haystack, const char *needle)
#ifndef HAVE_STRNLEN
/* This function is equivalent to strnlen(). */
size_t nstrnlen(const char *s, size_t maxlen)
{
const char *p, *q;
size_t n = 0;
if (haystack == NULL)
return NULL;
if (needle == NULL)
return haystack;
while (*(p = haystack) != '\0') {
for (q = needle; *p != 0 && *q != 0 && tolower(*p) == tolower(*q); p++, q++)
;
if (*q == 0)
return haystack;
haystack++;
}
return NULL;
assert(s != NULL);
for (; maxlen > 0 && *s != '\0'; maxlen--, n++, s++)
;
return n;
}
#endif
/* If we are searching backwards, we will find the last match
* that starts no later than rev_start. If we are doing a regexp search,
* then line_pos should be 0 if haystack starts at the beginning of a
* line, and positive otherwise. In the regexp case, we fill in the
* global variable regmatches with at most 9 subexpression matches. Also,
* all .rm_so elements are relative to the start of the whole match, so
* regmatches[0].rm_so == 0. */
/* If we are searching backwards, we will find the last match that
* starts no later than start. Otherwise we find the first match
* starting no earlier than start. If we are doing a regexp search, we
* fill in the global variable regmatches with at most 9 subexpression
* matches. Also, all .rm_so elements are relative to the start of the
* whole match, so regmatches[0].rm_so == 0. */
const char *strstrwrapper(const char *haystack, const char *needle,
const char *rev_start, int line_pos)
const char *start)
{
/* start can be 1 character before the start or after the end of the
* line. In either case, we just say there is no match found. */
if ((start > haystack && *(start - 1) == '\0') || start < haystack)
return NULL;
assert(haystack != NULL && needle != NULL && start != NULL);
#ifdef HAVE_REGEX_H
if (ISSET(USE_REGEXP)) {
#ifndef NANO_SMALL
if (ISSET(REVERSE_SEARCH)) {
/* When doing a backwards search, haystack is a whole line. */
if (!regexec(&search_regexp, haystack, 1, regmatches, 0) &&
haystack + regmatches[0].rm_so <= rev_start) {
if (regexec(&search_regexp, haystack, 1, regmatches, 0) == 0
&& haystack + regmatches[0].rm_so <= start) {
const char *retval = haystack + regmatches[0].rm_so;
/* Search forward until there is no more match. */
while (!regexec(&search_regexp, retval + 1, 1, regmatches,
REG_NOTBOL) &&
retval + 1 + regmatches[0].rm_so <= rev_start)
while (regexec(&search_regexp, retval + 1, 1, regmatches,
REG_NOTBOL) == 0 && retval + 1 +
regmatches[0].rm_so <= start)
retval += 1 + regmatches[0].rm_so;
/* Finally, put the subexpression matches in global
* variable regmatches. The REG_NOTBOL flag doesn't
@@ -214,9 +259,9 @@ const char *strstrwrapper(const char *haystack, const char *needle,
}
} else
#endif /* !NANO_SMALL */
if (!regexec(&search_regexp, haystack, 10, regmatches,
line_pos > 0 ? REG_NOTBOL : 0)) {
const char *retval = haystack + regmatches[0].rm_so;
if (regexec(&search_regexp, start, 10, regmatches,
start > haystack ? REG_NOTBOL : 0) == 0) {
const char *retval = start + regmatches[0].rm_so;
regexec(&search_regexp, retval, 10, regmatches, 0);
return retval;
@@ -224,21 +269,26 @@ const char *strstrwrapper(const char *haystack, const char *needle,
return NULL;
}
#endif /* HAVE_REGEX_H */
#ifndef NANO_SMALL
#if !defined(DISABLE_SPELLER) || !defined(NANO_SMALL)
if (ISSET(CASE_SENSITIVE)) {
#ifndef NANO_SMALL
if (ISSET(REVERSE_SEARCH))
return revstrstr(haystack, needle, rev_start);
return revstrstr(haystack, needle, start);
else
return strstr(haystack, needle);
} else if (ISSET(REVERSE_SEARCH))
return revstristr(haystack, needle, rev_start);
#endif
return stristr(haystack, needle);
return strstr(start, needle);
}
#endif /* !DISABLE_SPELLER || !NANO_SMALL */
#ifndef NANO_SMALL
else if (ISSET(REVERSE_SEARCH))
return revstristr(haystack, needle, start);
#endif
return strcasestr(start, needle);
}
/* This is a wrapper for the perror function. The wrapper takes care of
* ncurses, calls perror (which writes to STDERR), then refreshes the
* screen. Note that nperror causes the window to flicker once. */
/* This is a wrapper for the perror() function. The wrapper takes care
* of ncurses, calls perror (which writes to stderr), then refreshes the
* screen. Note that nperror() causes the window to flicker once. */
void nperror(const char *s)
{
/* leave ncurses mode, go to the terminal */
@@ -273,14 +323,11 @@ void *nrealloc(void *ptr, size_t howmuch)
* dest = mallocstrcpy(dest, src); */
char *mallocstrcpy(char *dest, const char *src)
{
if (src == dest)
return dest;
if (dest != NULL)
free(dest);
if (src == NULL)
return NULL;
src = "";
if (src != dest)
free(dest);
dest = charalloc(strlen(src) + 1);
strcpy(dest, src);

File diff suppressed because it is too large Load Diff