Compare commits

...

778 Commits

Author SHA1 Message Date
David Lawrence Ramsey
2cd986cdef GNU nano 1.3.10
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3246 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-12-23 16:08:19 +00:00
David Lawrence Ramsey
5e4d81c99e in README.CVS, mention that the minimum required version of groff is
1.12, since that's the first version that supports generating HTML


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2808 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-02 17:49:27 +00:00
David Lawrence Ramsey
a549a82c32 more cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2807 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-01 23:11:52 +00:00
David Lawrence Ramsey
9c3249c893 minor cosmetic and constant cursor position display fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2806 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-07-01 22:58:47 +00:00
David Lawrence Ramsey
d5092294cd Back to CVS
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2805 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-30 17:17:41 +00:00
David Lawrence Ramsey
665b1fbac6 GNU nano 1.3.8
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2803 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-30 17:16:16 +00:00
David Lawrence Ramsey
5cbe08fc03 remove unneeded clearok(TRUE) from total_redraw()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2802 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-30 16:18:35 +00:00
David Lawrence Ramsey
73bf89fa56 make do_yesno() refresh the edit window as well as the statusbar before
getting input, as statusq() does


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2801 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-30 05:56:39 +00:00
David Lawrence Ramsey
a73025d731 in do_replace_highlight(), call wnoutrefresh(edit) to make sure that the
highlight is drawn properly


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2800 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-30 04:17:18 +00:00
David Lawrence Ramsey
7bde05399f in do_replace_highlight(), rename variable highlight_flag to highlight,
for consistency


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2799 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-30 03:55:55 +00:00
David Lawrence Ramsey
6168cb7391 cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2798 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-30 03:53:28 +00:00
David Lawrence Ramsey
44e0c03fff in do_yesno(), het input from bottomwin instead of edit, so that the
cursor isn't erroneously put in the edit window while we wait for an
answer


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2797 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-29 19:01:11 +00:00
David Lawrence Ramsey
1aee5cc599 more int -> bool conversions
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2796 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-29 18:17:54 +00:00
David Lawrence Ramsey
85c0b3c37e improve version()'s output
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2795 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-29 17:10:58 +00:00
David Lawrence Ramsey
69163af499 in POTFILES.in, remove source files that contain no translatable strings
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2794 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-29 02:19:02 +00:00
David Lawrence Ramsey
f816119b36 in find_paragraph(), reset placewewant as well as current_x to 0, in
order to avoid a potential screen update problem


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2793 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-29 01:27:33 +00:00
David Lawrence Ramsey
5beae58597 add one missing type change
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2792 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-29 00:17:18 +00:00
David Lawrence Ramsey
4e05b755ed in do_cursorpos(), if constant is TRUE, only display the cursor position
when disable_cursorpos is FALSE; don't refuse to display it when the
cursor position hasn't changed, as that doesn't always keep it properly
updated


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2791 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-28 20:04:14 +00:00
David Lawrence Ramsey
a96c819b50 more comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2790 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-28 19:56:14 +00:00
David Lawrence Ramsey
5593e20964 more comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2789 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-28 19:49:15 +00:00
David Lawrence Ramsey
651853aa21 add missing blank line
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2788 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-28 18:57:28 +00:00
David Lawrence Ramsey
9e21c62c68 formatting fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2787 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-28 17:51:28 +00:00
David Lawrence Ramsey
43d3e9324b comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2786 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-28 17:35:20 +00:00
David Lawrence Ramsey
b2072b0999 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2785 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-28 14:59:38 +00:00
David Lawrence Ramsey
9905b6ae74 rework the credits handling to display Florian König's name properly
whether we're in a UTF-8 locale or not.  This requires a minor hack, but
it's better than requiring a massive function that we only use once


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2784 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-28 07:26:11 +00:00
David Lawrence Ramsey
3b2fdb00e4 add missing blank line
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2783 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-28 07:16:13 +00:00
David Lawrence Ramsey
2cf6d717f1 add various type changes to avoid problems on systems where int and
ssize_t are different sizes.  Make filestruct->lineno a ssize_t (so that
we can avoid negative line numbers at the "Go To Line" prompt),
current_y a ssize_t (in order to hold the maximum difference between two
filestruct->lineno's), totlines a size_t, and change related variables
to match


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2782 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-28 06:25:34 +00:00
David Lawrence Ramsey
6ad6b85862 more miscellaneous minor fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2781 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-28 06:16:30 +00:00
David Lawrence Ramsey
18d6a7ae1a in do_justify(), save placewewant, and restore it if we unjustify, in
order to avoid a potential screen update problem


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2780 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-28 06:05:54 +00:00
David Lawrence Ramsey
5423680d67 in edit_redraw(), make do_refresh a bool instead of an int
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2779 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-28 05:56:16 +00:00
David Lawrence Ramsey
7f7c66c237 remove now-unused search_last_line global
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2778 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-28 05:27:20 +00:00
David Lawrence Ramsey
b8351c1c8b per Mike Frysinger's suggestion, in the "nanorc" regexes, put "^" back
in the comment regex so that we don't match strings containing #'s
anymore


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2777 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-27 12:25:17 +00:00
David Lawrence Ramsey
27ae93d26b clarify and consolidate the descriptions of the "fill" and "tabsize"
options in the documentation (e.g. "fill 0" acts just like "fill
[negative number]")


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2776 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-27 05:01:32 +00:00
David Lawrence Ramsey
95a2db7a4a add missing "?" to the color name regex of the "nanorc" regexes, so that
regexes like "color ,green" won't be colored as though they're invalid


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2775 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-27 03:47:52 +00:00
David Lawrence Ramsey
23555f29ba add support for case insensitive expression matching when using color
syntax highlighting, via the "icolor" directive, and add it to those
regexes that can use it (ported from Brand Huntsman's old patch)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2774 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-27 03:07:10 +00:00
David Lawrence Ramsey
a899ab185f simplify the file extension regex for groff
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2773 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-27 03:04:49 +00:00
David Lawrence Ramsey
c5632a7e40 add Mike Frysinger's GCC builtins regex to the "c-file" regexes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2772 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-27 02:56:59 +00:00
David Lawrence Ramsey
9c351e8831 punctuation fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2771 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-26 23:35:55 +00:00
David Lawrence Ramsey
23d3b7457b do the same thing for the equivalent regex for assembler files
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2770 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-26 23:16:14 +00:00
David Lawrence Ramsey
85f6a2daab more last-minute comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2769 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-26 22:59:54 +00:00
David Lawrence Ramsey
6ea410e14e add missing int -> bool conversion
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2768 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-26 22:32:51 +00:00
David Lawrence Ramsey
d4471ebe0e in do_toggle(), properly treat color syntax highlighting as enabled by
default, and only treat wrapping as enabled by default when
DISABLE_WRAPPING isn't defined


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2767 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-26 20:05:01 +00:00
David Lawrence Ramsey
7f77e1dcdd apparently a "[[:space:]]" doesn't work properly inside a "[^ ... ]";
replace it with a literal space and a literal tab, so that include files
are properly colored again


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2766 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-26 19:49:53 +00:00
David Lawrence Ramsey
a8824a197e per Mike Frysinger's suggestion, change the word detection functions'
behavior back to what it was before (for now, until there's a way for
the user to control it), as their new behavior makes them harder to use
when editing source code; by the same token, leave word count's behavior
the way it is, since it's generally not used when editing source code


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2765 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-26 19:03:48 +00:00
David Lawrence Ramsey
059ba19ff7 add Mike Frysinger's regexes for assembler files
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2764 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-26 03:32:03 +00:00
David Lawrence Ramsey
bec2606ce2 in nanorc.sample, banish " " whever possible in favor of "[[:space:]]"
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2763 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-26 03:26:24 +00:00
David Lawrence Ramsey
9d658cec7a add "cxx" and "hxx" to the list of extensions that the "c-file" regexes
apply to, and add "warning" and "error" to them as well


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2762 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-26 02:55:04 +00:00
David Lawrence Ramsey
fe7d53e51e last-minute comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2761 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-25 20:56:36 +00:00
David Lawrence Ramsey
5e50e2f51e in disable_flow_control() and enable_flow_control(), only turn off flow
control on input, as it might be needed for output on slow terminals


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2760 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-23 22:28:56 +00:00
David Lawrence Ramsey
b2ca88cc74 more cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2759 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-22 02:31:12 +00:00
David Lawrence Ramsey
7a3f49c019 remove all instances of charcpy() and replace them with strncpy(), for
ease of maintenance


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2758 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-22 00:24:11 +00:00
David Lawrence Ramsey
bebfc6da0f put back erroneously removed bits
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2757 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-21 22:48:38 +00:00
David Lawrence Ramsey
0517c482e4 typo fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2756 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-21 22:37:47 +00:00
David Lawrence Ramsey
16799baccd change some instances of charcpy() back to strncpy(), as the latter's
numm-termination is needed in some places


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2755 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-21 22:32:50 +00:00
David Lawrence Ramsey
d4ea5b69c5 oops; do_yesno() doesn't need display_string(); it only needs to use
actual_x() to get the actual number of characters in buf when it calls
mvwaddnstr()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2754 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-21 21:03:06 +00:00
David Lawrence Ramsey
8d5beb560c in titlebar(), handle VERLEN's being a UTF-8 string
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2753 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-21 20:37:04 +00:00
David Lawrence Ramsey
ba61cc382f fix total_redraw() so that it always keeps the cursor in the same window
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2752 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-21 20:16:26 +00:00
David Lawrence Ramsey
3f301dd437 in do_yesno(), add a missing assert, and use display_string() to display
the prompt, so that we don't end it in the middle of a multibyte
character if it's more than (COLS - 1) bytes long


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2751 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-21 19:47:39 +00:00
David Lawrence Ramsey
c3e52f16ba per Jordi's suggestion, change the toggle for -E/--tabstospaces to
Meta-Q


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2750 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-21 17:44:01 +00:00
David Lawrence Ramsey
b725353ab7 per Jordi's suggestion, remove the Meta-U toggle for -U/--quickblank;
the rcfile option is enough for those that use it regularly


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2749 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-21 16:19:47 +00:00
David Lawrence Ramsey
99466bfa71 more cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2748 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-21 15:47:39 +00:00
David Lawrence Ramsey
261da14301 revert last change, since it'll cause problems with arguments containing
spaces


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2747 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-21 15:41:46 +00:00
David Lawrence Ramsey
6dd67790df in configure.ac, add a few more minor consistency fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2746 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-21 15:32:12 +00:00
David Lawrence Ramsey
01e13ea1c1 comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2745 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-21 04:16:12 +00:00
David Lawrence Ramsey
68c10963c4 revert last change, as the multibyte strcoll() functions can't handle
e.g. 2-to-1 character conversions as the original strcoll() can


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2744 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-21 04:11:04 +00:00
David Lawrence Ramsey
d0c4d378b4 add a multibyte case-insensitive version of strcoll(), and make
diralphasort() use it so that filenames are sorted properly according to
the current locale


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2743 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-21 03:26:58 +00:00
David Lawrence Ramsey
6c25819c34 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2742 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-21 01:41:46 +00:00
David Lawrence Ramsey
bd11c0171b recover properly when the alternate spell checker fails
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2741 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-21 01:33:31 +00:00
David Lawrence Ramsey
739fc8ac3d make sure the function checks are *really* in alphabetical order
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2740 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-20 23:10:24 +00:00
David Lawrence Ramsey
8d0fb01ff2 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2739 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-20 21:17:01 +00:00
David Lawrence Ramsey
d7cf373358 typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2738 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-20 21:03:57 +00:00
David Lawrence Ramsey
e0a0d23f78 remove unnecessary variables from and add missing asserts to
control_mbrep()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2737 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-20 20:58:41 +00:00
David Lawrence Ramsey
da419bcbe4 typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2736 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-20 03:01:04 +00:00
David Lawrence Ramsey
b2bff724da update the "Feature Toggles" section in nano.texi to match current nano
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2735 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-19 22:22:01 +00:00
David Lawrence Ramsey
a62e8e3de9 when reading color syntax names or sorting filenames, use mbstrcasecmp()
instead of strcasecmp() to compare them, in case they're UTF-8


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2734 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-19 21:10:48 +00:00
David Lawrence Ramsey
483f3ac1b5 in read_line(), rename variable len to buf_len, for consistency
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2733 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-19 19:57:13 +00:00
David Lawrence Ramsey
90d505cc4a comment and indentation fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2732 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-18 22:33:55 +00:00
David Lawrence Ramsey
9c6d78669e remove the reset_cursor() call in statusq(), as it erroneously leaves
the cursor in the edit window when we're at the "Save File Under
Different Name" prompt


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2731 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-18 22:33:24 +00:00
David Lawrence Ramsey
5290e1bc84 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2730 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-18 20:47:41 +00:00
David Lawrence Ramsey
b5aaf72b6a in configure.ac, check for possibly unavailable functions in
alphabetical order


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2729 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-18 20:08:43 +00:00
David Lawrence Ramsey
1ea53709d8 formatting fixes for Makefile.am and m4/Makefile.am
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2728 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-18 19:56:30 +00:00
David Lawrence Ramsey
0227ccca7c formatting fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2727 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-18 17:20:54 +00:00
David Lawrence Ramsey
25799f6862 in configure.ac, check for get_wch() instead of wget_wch() to determine
if there's a wide curses library, as it's a more generic function


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2726 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-18 17:06:02 +00:00
David Lawrence Ramsey
c54c4d1eea rename total_update() total_redraw() for consistency
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2725 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-18 15:49:17 +00:00
David Lawrence Ramsey
7431fe5e93 work around slang brain damage in total_update()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2724 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-18 15:15:48 +00:00
David Lawrence Ramsey
166da9c893 fix still more minor display update problems
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2723 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-18 14:30:40 +00:00
David Lawrence Ramsey
cd0210ff3e fix more minor screen update problems
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2722 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-18 14:05:21 +00:00
David Lawrence Ramsey
7098ec233c n is ignored in the mbstowcs() call, so it can be 0 instead of
(size_t)-1


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2721 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-18 05:15:08 +00:00
David Lawrence Ramsey
62898233ac in statusq(), call wrefresh(bottomwin) after getting an answer and
blanking out the statusbar, to make sure that the blanking is done; this
fixes a problem where the statusbar is not properly blanked after using
the "Go To Line" prompt with the NO_HELP flag set


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2720 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-18 04:32:26 +00:00
David Lawrence Ramsey
26e637bf12 in toggle_init(), reorder the toggles to put more toggles with similar
functions together


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2719 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-18 03:37:56 +00:00
David Lawrence Ramsey
d873447f5f clarify the description of the line wrapping toggle
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2718 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-18 03:03:32 +00:00
David Lawrence Ramsey
84635cd8e8 change the short option for --restricted from -Z to -R
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2717 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-17 22:53:41 +00:00
David Lawrence Ramsey
03987abebd fix misplaced long option
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2716 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-17 22:50:55 +00:00
David Lawrence Ramsey
c661853315 add comment
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2715 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-17 22:33:15 +00:00
David Lawrence Ramsey
4f673d802c add a description of -U/--quickblank to nano.texi, plus a few more
miscellaneous documentation fixes


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2714 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-17 22:11:43 +00:00
David Lawrence Ramsey
bf51aa4c0a QUICK_BLANK and CONST_UPDATE shouldn't be working at the same time, as
they make the statusbar blank and redraw itself far too many times, and
it makes no sense to use them together anyway; also, clean up
check_statusblank() a little


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2713 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-17 21:52:59 +00:00
David Lawrence Ramsey
954aba7430 formatting fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2712 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-17 21:21:10 +00:00
David Lawrence Ramsey
3435a0ff64 rename the CONSTUPDATE flag to CONST_UPDATE, and clarify its description
in the help text


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2711 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-17 21:08:13 +00:00
David Lawrence Ramsey
66357b5462 add missing #ifdef
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2710 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-17 19:09:18 +00:00
David Lawrence Ramsey
e29111f7ec add -U/--quickblank option, a Meta-U toggle, and a "quickblank" rcfile
option to blank the statusbar after 1 keystroke instead of 25; note that
this is disabled when NANO_SMALL is defined


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2709 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-17 19:06:25 +00:00
David Lawrence Ramsey
6399000a48 move all the rcfile options disabled by NANO_SMALL to the end, for
consistency with the long options in nano.c


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2708 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-17 19:01:00 +00:00
David Lawrence Ramsey
ea01474c4b since the DISABLE_CURPOS flag is only used in winio.c, reduce it to a
static bool there


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2707 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-17 18:27:00 +00:00
David Lawrence Ramsey
077d0647c9 in statusbar(), set statusblank to 25 instead of 26, to match current
Pico


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2706 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-17 18:14:03 +00:00
David Lawrence Ramsey
9b494fa90c more miscellaneous documentation updates
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2705 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-17 18:00:16 +00:00
David Lawrence Ramsey
18a89a6cef more cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2704 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-17 17:37:46 +00:00
David Lawrence Ramsey
c4ca596a90 various #ifdef fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2703 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-16 20:58:19 +00:00
David Lawrence Ramsey
5c8197d78f miscellaneous cleanups in do_find_bracket(): rename variables for
consistency, and save the search direction and regexp setting in two
bools instead of one flags variable


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2702 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-16 20:41:20 +00:00
David Lawrence Ramsey
62e117421f add "backwards" and "casesensitive" to the "rcfile" regexes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2701 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-16 18:56:00 +00:00
David Lawrence Ramsey
f3ecffd24d add the "regexp" rcfile option back in at DB's suggestion, the
"casesensitive" and "backwards" rcfile options for consistency,
documentation updates, and related cleanups


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2700 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-16 18:48:30 +00:00
David Lawrence Ramsey
f774017801 document the new Meta-E toggle
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2699 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-16 18:35:55 +00:00
David Lawrence Ramsey
d1cc007136 in usage(), remove inaccurate default listed for -Q/--quotestr
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2698 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-16 17:26:01 +00:00
David Lawrence Ramsey
25fb1025e9 fix assert
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2697 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-16 12:43:08 +00:00
David Lawrence Ramsey
a9a3f4f599 fix compilation with --enable-debug
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2696 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-16 12:17:23 +00:00
David Lawrence Ramsey
e6a55fa1e5 remove stray "]"
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2695 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-16 12:16:24 +00:00
David Lawrence Ramsey
95f7a7431e wording fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2694 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-16 03:11:39 +00:00
David Lawrence Ramsey
fa6c29cc2e in shortcut_init(), clarify the description of ^X when
--enable-multibuffer is used


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2693 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-16 03:07:05 +00:00
David Lawrence Ramsey
b2b6976bd9 change the SMOOTHSCROLL flag to the SMOOTH_SCROLL flag
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2692 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-16 02:13:10 +00:00
David Lawrence Ramsey
7a4aaa53a1 change the NO_UTF8 flag to the USE_UTF8 flag, and reverse its meaning
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2691 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-16 02:09:57 +00:00
David Lawrence Ramsey
77d0feae05 cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2690 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-16 01:56:51 +00:00
David Lawrence Ramsey
c1b960947e comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2689 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-16 01:37:13 +00:00
David Lawrence Ramsey
4846ce7a6a fix memory leak
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2688 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-16 01:36:10 +00:00
David Lawrence Ramsey
34c75746c2 add the "tabstospaces" option to the "rcfile" regexes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2687 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-16 01:25:11 +00:00
David Lawrence Ramsey
3129c2928b move the "tabstospaces" option in nanorc.sample down so the options are
in alphabetical order again


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2686 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-16 01:18:56 +00:00
David Lawrence Ramsey
21374584e2 fix changelog entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2685 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-15 23:36:08 +00:00
David Lawrence Ramsey
a2ea733e3b comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2684 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-15 23:35:53 +00:00
David Lawrence Ramsey
40ad177210 revert erroneous help_init() changes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2683 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-15 23:33:54 +00:00
David Lawrence Ramsey
6f143c8124 add the ability to convert (non-verbatim input) typed tabs to spaces
using the -E/--tabstospaces command line options, the "tabstospaces"
rcfile option, and the toggle Meta-E; also, change the short command
line option for --backupdir from -E to -C


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2682 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-15 23:20:56 +00:00
David Lawrence Ramsey
072f86c5f9 in do_spell(), if the spell-checker printed any error messages onscreen,
make sure they're cleared off


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2681 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-15 20:21:02 +00:00
David Lawrence Ramsey
f271f9c962 cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2680 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-15 19:26:48 +00:00
David Lawrence Ramsey
5a6caf0ca8 in do_int_spell_fix(), display highlighted misspelled words using
display_string(), as do_replace_loop() does


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2679 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-15 19:21:04 +00:00
David Lawrence Ramsey
da72453859 add missing blank lines
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2678 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-15 19:15:14 +00:00
David Lawrence Ramsey
203026c632 make --enable-extra only define NANO_EXTRA, and update associated
documentation


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2677 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-15 18:53:47 +00:00
David Lawrence Ramsey
ed7ad33802 change wint_t's back to wchar_t's to fix compilation on Mac OS 10.4.1
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2676 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-15 16:07:14 +00:00
Jordi Mallach
ff6c1997b9 Typo fix by Jens Seidel.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2675 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-15 16:05:42 +00:00
David Lawrence Ramsey
a01690c410 comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2674 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-15 07:38:25 +00:00
David Lawrence Ramsey
ff1a0ea32b cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2673 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-15 07:34:09 +00:00
David Lawrence Ramsey
42e271d2d3 in do_browser(), make mouse clicks in the browser window work properly
when the MORE_SPACE flag is set


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2672 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-15 07:32:58 +00:00
David Lawrence Ramsey
9c06f34ef9 more miscellaneous minor fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2671 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-15 07:18:30 +00:00
David Lawrence Ramsey
ab41ab9246 fix #ifdefs so that nano compiles with NANO_SMALL defined and
DISABLE_TABCOMP undefined


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2670 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-15 06:30:05 +00:00
David Lawrence Ramsey
2515ccc0a0 *more* cleanups to chars.c and related code
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2669 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-15 06:04:08 +00:00
David Lawrence Ramsey
d1323e4e35 formatting and comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2668 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-15 03:56:36 +00:00
David Lawrence Ramsey
7ae1a79641 formatting fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2667 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-15 03:15:45 +00:00
David Lawrence Ramsey
e221311f2e don't count punctuation when searching for a whole word in
is_whole_word()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2666 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-15 03:03:45 +00:00
David Lawrence Ramsey
d26f1ebdf1 in open_prevnext_file(), move up a misplaced assert and rename a
variable


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2665 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-15 03:01:41 +00:00
David Lawrence Ramsey
1e64db6629 more miscellaneous fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2664 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-14 23:38:41 +00:00
David Lawrence Ramsey
ce9d299c47 revert the changes to the behavior of Esc Esc [3-digit number from 000
to 255], as it still won't let us type all possible bytes


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2663 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-14 23:38:08 +00:00
David Lawrence Ramsey
bdfa927d62 more miscellaneous cleanups
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2662 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-14 23:36:13 +00:00
David Lawrence Ramsey
789867b6a0 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2661 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-14 04:22:32 +00:00
David Lawrence Ramsey
3a4eb48d5c minor faq updates
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2660 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-14 02:32:37 +00:00
David Lawrence Ramsey
bfc183ba10 more cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2659 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-14 02:24:25 +00:00
David Lawrence Ramsey
6209e0eb15 yet *another* cleanup
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2658 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-14 02:08:25 +00:00
David Lawrence Ramsey
e534aae701 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2657 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-14 02:03:56 +00:00
David Lawrence Ramsey
d5d4dde1eb improve detection of blank characters in the "punct" and "brackets"
rcfile options


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2656 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-14 01:55:56 +00:00
David Lawrence Ramsey
42af2216fe yet another cleanup
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2655 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-13 20:19:03 +00:00
David Lawrence Ramsey
356d2482c5 nisw?blank() should return int, not bool, to match isblank()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2654 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-13 19:51:56 +00:00
David Lawrence Ramsey
399fe939f9 change the behavior of Esc Esc [3-digit number from 000 to 255] so that
it enters the byte with that value regardless of whether we're in UTF-8
mode or not, and update the help text to mention this; this will allow
searching for and replacing raw bytes with their equivalent multibyte
sequences as entered using verbatim input


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2653 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-13 17:26:19 +00:00
David Lawrence Ramsey
40c3cd1aa9 in the "nanorc" regexes in nanorc.sample, tweak the "comment" regex to
color comments that don't start at the beginning of a line


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2652 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-13 16:41:48 +00:00
David Lawrence Ramsey
b300af3f63 simplify is_valid_mbstring() by making it use mbstowcs()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2651 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-13 15:56:29 +00:00
David Lawrence Ramsey
30d0a81656 don't work around invalid multibyte sequences in rcfile options anymore,
but generate errors


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2650 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-13 14:50:32 +00:00
David Lawrence Ramsey
6a0d5b8fec miscellaneous minor fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2649 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-13 14:00:22 +00:00
David Lawrence Ramsey
7b601fdbe1 still more cleanups to chars.c and related code
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2648 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-13 13:25:36 +00:00
David Lawrence Ramsey
8b698f4a29 more cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2647 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-13 05:16:55 +00:00
David Lawrence Ramsey
9880afc47a remove unneeded blank line
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2646 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-13 05:13:14 +00:00
David Lawrence Ramsey
5ed8819f35 revert the simplification of the display_string() call in
do_replace_loop(), as it breaks display in some ways


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2645 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-13 04:37:28 +00:00
David Lawrence Ramsey
7291daabe3 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2644 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-13 04:11:20 +00:00
David Lawrence Ramsey
d2edb8a538 when doing history string tab completion, skip over an exact match
unless it's the only match, as the old history code did


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2643 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-13 03:52:33 +00:00
David Lawrence Ramsey
33d07ef055 in do_replace_loop(), simplify the display_string() call that we use to
get the word that we're going to highlight


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2642 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-13 03:19:50 +00:00
David Lawrence Ramsey
f26d386191 simplify the word detection code
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2641 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-13 02:48:52 +00:00
David Lawrence Ramsey
67287088dc detect words more accurately by taking punctuation into account, and
convert all word-detecting functions to use the same wrapper function
for ease of maintenance


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2640 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-13 02:40:04 +00:00
David Lawrence Ramsey
d16d0bfb9a document cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2639 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-13 02:24:17 +00:00
David Lawrence Ramsey
5b9f52265a cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2638 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-13 02:22:44 +00:00
David Lawrence Ramsey
a049c8364f in shortcut_init(), allow the mark to be used in view mode, as Pico does
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2637 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-12 23:53:28 +00:00
David Lawrence Ramsey
1a76845aa5 fix changelog entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2636 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-12 23:49:05 +00:00
David Lawrence Ramsey
e90f0b8a33 when the mark is on, only do a word count on the marked text
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2635 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-12 23:20:20 +00:00
David Lawrence Ramsey
d232fa2fc3 remove unnecessary screen update
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2634 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-12 22:40:09 +00:00
David Lawrence Ramsey
e010edd1f8 implement word count via Meta-D at the main window
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2633 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-12 22:31:03 +00:00
David Lawrence Ramsey
19462616d4 one last cleanup to chars.c
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2632 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-12 18:05:42 +00:00
David Lawrence Ramsey
d8640480c3 various cleanups to chars.c and related code
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2631 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-12 17:48:46 +00:00
David Lawrence Ramsey
6315e2ff39 in do_tab(), remove unneeded variable kbinput
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2630 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-12 16:45:37 +00:00
David Lawrence Ramsey
068edf44fc more formatting fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2629 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-12 16:13:44 +00:00
David Lawrence Ramsey
aeeb96e628 cosmetic and formatting fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2628 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-12 16:00:09 +00:00
David Lawrence Ramsey
3db0dc3d8d add macro charset(), a wrapper that calls memset(), and use it in
resize_variables()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2627 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-12 15:24:36 +00:00
David Lawrence Ramsey
c00f658026 in resize_variables(), use sizeof(char) in the memset() that initializes
hblank instead of assuming that the size of a char is 1


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2626 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-12 15:19:11 +00:00
David Lawrence Ramsey
8767da4e63 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2625 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-12 02:14:48 +00:00
David Lawrence Ramsey
d0d5b8fc0e in display_string(), don't check for multicolumn characters if the NO_UTF8 flag isn't set
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2624 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-10 20:45:54 +00:00
David Lawrence Ramsey
44491acfef in color_to_int(), assert that colorname isn't NULL, since that case is
now handled elsewhere; also clarify an error message in parse_colors()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2623 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-09 14:04:08 +00:00
David Lawrence Ramsey
8bcac8ad26 in disable_extended_input(), disable extended output processing as well
as extended input processing; also rename it to disable_extended_io()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2622 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-09 04:02:57 +00:00
David Lawrence Ramsey
53aca71420 formatting fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2621 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-09 04:00:03 +00:00
David Lawrence Ramsey
a9d45bba01 in parse_colors(), properly generate an error if we get a color
directive without a regex string


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2620 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-09 01:09:00 +00:00
David Lawrence Ramsey
a644af58a3 update documentation for the "color" regex
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2619 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-08 21:30:50 +00:00
David Lawrence Ramsey
7c78b45e76 in parse_colors(), properly parse a background color without a
foreground color


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2618 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-08 21:17:32 +00:00
David Lawrence Ramsey
746214d5aa make parse_line_column() consistent with the color regex-parsing code
and go back to returning an error on strings like "3,"


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2617 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-08 21:16:14 +00:00
David Lawrence Ramsey
0df61f1aac cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2616 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-08 20:23:06 +00:00
David Lawrence Ramsey
4428975e95 cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2615 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-08 20:13:38 +00:00
David Lawrence Ramsey
c7935e20b7 revert the conversion of each line to a valid multibyte string, as it
doesn't take encodings other than ASCII and Latin-1 into account and
hence isn't accurate enough


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2614 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-08 20:12:57 +00:00
David Lawrence Ramsey
01458cd380 clarify changelog entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2613 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-08 19:57:31 +00:00
David Lawrence Ramsey
7bf86e1707 when reading a file in, make sure each line is a valid multibyte string
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2612 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-08 19:50:02 +00:00
David Lawrence Ramsey
23d3cf4515 in doc/faq.html, update the question about the FAQ to mention the
current maintainer


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2611 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-08 18:46:51 +00:00
David Lawrence Ramsey
9af6a203fb typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2610 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-08 02:28:06 +00:00
David Lawrence Ramsey
092af14a82 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2609 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-08 01:35:10 +00:00
Jordi Mallach
3da5580c9c Fix French mandir.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2608 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-07 22:23:45 +00:00
David Lawrence Ramsey
3925bdafda fix erroneous #ifdef that caused a compilation problem when
--enable-nanorc wasn't used and --enable-extra was, and make sure we put
back the keystroke that breaks us out of the credits (if any)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2607 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-07 03:20:35 +00:00
David Lawrence Ramsey
f47f150c82 preemptively update the version number
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2606 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-07 02:25:23 +00:00
David Lawrence Ramsey
457847f0fe add else's
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2605 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-06 19:35:53 +00:00
David Lawrence Ramsey
7e62d109ba in do_insertfile(), set i to 0 when we get a filename via the file
browser, so that it's read in properly when we exit the file browser


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2604 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-06 19:25:29 +00:00
David Lawrence Ramsey
193b0e56f3 add missing blank line
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2603 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-06 18:41:17 +00:00
David Lawrence Ramsey
9b108c2110 in shortcut_init(), remove unnecessary "Refresh" placeholder in the file
browser shortcut list; also add a few formatting fixes


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2602 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-06 18:38:16 +00:00
David Lawrence Ramsey
da33153379 in do_yesno(), allow refreshing the screen via Ctrl-L, as Pico does
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2601 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-06 17:00:08 +00:00
David Lawrence Ramsey
f4595bb5ae in die(), if the current filestruct's been partitioned, unpartition it
before saving the associated file


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2600 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-06 16:27:18 +00:00
David Lawrence Ramsey
c4dbdd55f5 in do_replace_loop(), when moving to the next match, update the screen
using edit_refresh() instead of edit_redraw(), as the latter won't work
properly when we've replaced one or more instances of a string in copy
and haven't yet updated current->data to match copy


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2599 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-06 03:46:32 +00:00
David Lawrence Ramsey
d29b9d5bd6 fix another memory corruption problem in display_string() found by
valgrind


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2598 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-06 03:17:07 +00:00
David Lawrence Ramsey
810d02c6a4 add const
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2597 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-06 01:53:48 +00:00
David Lawrence Ramsey
f99acbf29a make parse_line_column() more consistent: don't return an error on
strings like "3," since we don't return one on strings like ",3"


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2596 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-05 23:12:18 +00:00
David Lawrence Ramsey
6fdc81ae04 various umask-related cleanups
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2595 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-05 19:33:27 +00:00
David Lawrence Ramsey
81dabf2be7 formatting fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2594 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-05 19:20:36 +00:00
David Lawrence Ramsey
3db02389f4 in safe_tempfile(), open a newly created temporary file in "r+b" mode
instead of "w+b" mode, since the latter truncates the file if it already
exists, and we don't need to do that since it's an error if the file
already exists


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2593 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-05 19:18:11 +00:00
David Lawrence Ramsey
cc81436f81 move check_linenumbers() down so that it's near the other debugging
routines


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2592 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-05 19:08:59 +00:00
David Lawrence Ramsey
6529ab434a remove unneeded blank line
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2591 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-04 01:16:46 +00:00
David Lawrence Ramsey
160c5fec87 remove erroneous extra prototype
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2590 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-04 00:24:22 +00:00
David Lawrence Ramsey
81e49a0d4a fix #ifdef
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2589 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-03 21:00:55 +00:00
David Lawrence Ramsey
c10d8ffe9f for consistency, remove -R/--regexp command line option, and allow the
toggle unconditionally


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2588 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-03 20:51:39 +00:00
David Lawrence Ramsey
8fda94246b remove erroneous if block in update_history() preventing the history
list position from being properly moved to the bottom in some cases


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2587 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-03 20:18:46 +00:00
David Lawrence Ramsey
1addd601bc really fix bad #ifdefs; history functions are left out when NANO_SMALL
is defined, and history saving and loading functions are left out when
NANO_SMALL is defined and/or ENABLE_NANORC isn't defined


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2586 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-03 19:28:30 +00:00
David Lawrence Ramsey
8e15674c70 fix more bad #ifdefs
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2585 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-03 19:11:27 +00:00
David Lawrence Ramsey
5854a87070 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2584 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-03 19:10:47 +00:00
David Lawrence Ramsey
47ae0d764e remove now-unnecessary null_at()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2583 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-03 14:30:52 +00:00
David Lawrence Ramsey
73857558ec typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2582 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-03 04:09:45 +00:00
David Lawrence Ramsey
854b71d775 in configure.ac, don't refer to the built-in file browser as crappy
anymore


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2581 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-03 01:43:56 +00:00
David Lawrence Ramsey
cef24f2254 fix #ifdefs so the tiny version of nano compiles again; prepending a
file now uses safe_tempfile() instead of mkstemp() directly, and
safe_tempfile() requires get_full_path() and check_writable_directory()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2580 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-03 01:36:05 +00:00
David Lawrence Ramsey
8d07efac66 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2579 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-03 01:33:04 +00:00
David Lawrence Ramsey
d922f199a7 define last_kbinput inside the right #ifdef block
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2578 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-02 19:50:18 +00:00
David Lawrence Ramsey
34bdc35d94 readd tab completion of history strings, with a few minor tweaks
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2577 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-02 18:41:31 +00:00
David Lawrence Ramsey
1726050ef9 fix more bad #ifdefs, and add a few formatting fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2576 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-02 05:50:58 +00:00
David Lawrence Ramsey
8234f672d4 typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2575 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-02 02:32:39 +00:00
David Lawrence Ramsey
95778fda70 fix mismatched #ifdefs
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2574 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-02 02:27:12 +00:00
David Lawrence Ramsey
dac3bca274 clarify a comment, and don't try to display the buffer name in
die_save_file() if it's been blanked out by get_next_file()'s failure to
find a unique filename


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2573 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-06-01 04:23:52 +00:00
David Lawrence Ramsey
e0b55138b9 add missing blank line
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2572 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-31 17:35:11 +00:00
David Lawrence Ramsey
5e068c6031 rework the file-writing routines so that they can work properly with
already-opened files, such as the mkstemp()-created files used by the
spell-checking code


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2571 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-31 04:28:15 +00:00
David Lawrence Ramsey
bec2f20da0 formatting fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2570 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-31 03:39:59 +00:00
David Lawrence Ramsey
d20c0c34f5 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2569 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-31 03:36:15 +00:00
David Lawrence Ramsey
0998a64fb9 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2568 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-31 03:33:30 +00:00
David Lawrence Ramsey
527f1743f6 add documentation updates for -E/--backupdir's new ability to make
filenames unique, and preemptively update the version number


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2567 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-30 02:09:21 +00:00
David Lawrence Ramsey
54b74cee91 in die(), tweak the message displayed when a backup file can't be
written, so as to not duplicate a translted string


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2566 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-29 23:03:28 +00:00
David Lawrence Ramsey
b9b572236a when using a backup directory, make sure all the filenames written are
unique by using get_next_filename() when necessary


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2565 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-29 02:22:55 +00:00
David Lawrence Ramsey
df2a82509b fix mismatched subscript
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2564 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-28 23:51:03 +00:00
David Lawrence Ramsey
1a1ea3d42f cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2563 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-28 23:32:45 +00:00
David Lawrence Ramsey
15aaa2c31a miscellaneous minor fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2562 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-28 23:21:30 +00:00
David Lawrence Ramsey
10796ac2fc cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2561 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-27 13:50:31 +00:00
David Lawrence Ramsey
aff5a1c6b1 add multibyte/wide character support to input_tab(), so that we don't
end up with a string that contains only part of a multibyte character
during tab completion


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2560 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-27 13:06:18 +00:00
David Lawrence Ramsey
217f241be5 document bool fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2559 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-27 03:57:01 +00:00
David Lawrence Ramsey
11846fa576 bool fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2558 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-27 03:52:21 +00:00
David Lawrence Ramsey
32fe95d35e revert last change for now, as it breaks the display of filename matches
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2557 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-26 19:48:41 +00:00
David Lawrence Ramsey
920e350d85 in input_tab(), make sure that we don't set *place to the middle of a
multibyte character


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2556 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-26 19:14:42 +00:00
David Lawrence Ramsey
e5b23bd2ff formatting fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2555 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-26 18:57:56 +00:00
David Lawrence Ramsey
7de678798a cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2554 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-26 18:20:05 +00:00
David Lawrence Ramsey
638cbe5407 yet another comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2553 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-26 18:11:32 +00:00
David Lawrence Ramsey
0e0fef03c5 typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2552 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-26 18:05:22 +00:00
David Lawrence Ramsey
f1d3d9581a more miscellaneous minor fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2551 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-26 18:03:17 +00:00
David Lawrence Ramsey
40e4acf55e port over DB's (better) equivalent of the last fix, and tweak a few
comments


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2550 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-26 06:09:07 +00:00
David Lawrence Ramsey
5d8d0b19be remove redundancy
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2549 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-26 05:53:29 +00:00
David Lawrence Ramsey
86d8fc37d7 remove unneeded blank line
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2548 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-26 05:50:46 +00:00
David Lawrence Ramsey
e8bb90bd2b fix changelog entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2547 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-26 05:39:53 +00:00
David Lawrence Ramsey
e2ce2792a3 remove redundancy
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2546 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-26 05:33:57 +00:00
David Lawrence Ramsey
045d130cfa really fix one of the last fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2545 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-26 05:27:19 +00:00
David Lawrence Ramsey
31b159c1b3 add various fixes to avoid a hang and several potential assertion
failures when building with DEBUG defined


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2544 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-26 05:17:13 +00:00
David Lawrence Ramsey
e4acb69611 another comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2543 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-26 04:00:39 +00:00
David Lawrence Ramsey
e3970f503c replace all instances of strncpy() with charcpy(), since the only
difference between them is that the former pads strings with nulls when
they're longer than the number of characters specified, which doesn't
appear to be used anywhere


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2542 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-26 03:47:24 +00:00
David Lawrence Ramsey
16f88134f7 more miscellaneous minor fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2541 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-26 03:32:41 +00:00
David Lawrence Ramsey
8b3266e83c fix inaccurate comments
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2540 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-26 02:46:42 +00:00
David Lawrence Ramsey
0a8ec176e4 really fix the off-by-one errors in LINE,COLUMN parsing; the column
number in do_gotolinecolumn() should always be one-based


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2539 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-25 18:44:37 +00:00
David Lawrence Ramsey
86a9452702 in configure.ac, add minor tweaks to some of the test blocks to avoid
XSI:isms


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2538 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-24 22:20:39 +00:00
David Lawrence Ramsey
c5e9a434b1 fix one last off-by-one error that occurs when do_gotolinecolumn() is
used interactively


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2537 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-23 20:16:29 +00:00
David Lawrence Ramsey
67e3b93861 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2536 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-23 18:49:28 +00:00
David Lawrence Ramsey
e5bc1c45ce oops; free magichistory *properly* when we don't need it anymore
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2535 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-23 17:19:32 +00:00
David Lawrence Ramsey
2fba43c842 free magichistory when we don't need it anymore
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2534 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-23 17:14:46 +00:00
David Lawrence Ramsey
934f9687bb overhaul the history code to work more consistently, and clean up
various parts of it; note that history tab completion has been removed


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2533 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-23 16:30:06 +00:00
Jordi Mallach
7ae4cc6964 Updated French from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2532 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-23 11:49:50 +00:00
David Lawrence Ramsey
0f476b99b7 comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2531 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-22 04:16:36 +00:00
David Lawrence Ramsey
30f164a015 in save_history(), properly save history when in view mode
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2530 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-21 22:41:23 +00:00
David Lawrence Ramsey
86ce3903f9 in usage(), add formatting fixes and a missing N_()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2529 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-21 17:15:46 +00:00
David Lawrence Ramsey
6f25a67833 various minor fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2528 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-20 02:57:05 +00:00
David Lawrence Ramsey
5754201944 when calling do_gotolinecolymn(), default to the current line and column
if the ones passed in are unspecified or invalid


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2527 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-17 22:27:15 +00:00
David Lawrence Ramsey
172767187e in do_gotolinecolumn(), start the search for a line from fileage instead
of current (again)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2526 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-17 22:01:55 +00:00
David Lawrence Ramsey
d3d37433ae mention the support for moving to a different column in the prompt
formerly known as the "Go to Line" prompt, and also in the help text
where possible


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2525 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-17 21:49:19 +00:00
David Lawrence Ramsey
f83e5e2b13 fix off-by-one problems with COLUMN; it should be zero-based
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2524 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-17 18:29:05 +00:00
David Lawrence Ramsey
650b39c43d set placewewant more efficiently
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2523 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-17 18:15:00 +00:00
David Lawrence Ramsey
9245f97960 more LINE,COLUMN-related work: fix problems parsing it, and allow it at
the (soon-to-be-renamed) "Go to Line" prompt


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2522 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-17 18:06:26 +00:00
David Lawrence Ramsey
60a9bddcf6 formatting fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2521 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-17 16:54:34 +00:00
David Lawrence Ramsey
e1ce92c90f in do_gotoline(), properly show an error message if we try to go to line
0, since the first line in the file is 1


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2520 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-17 01:55:44 +00:00
David Lawrence Ramsey
c5659d320e add error detection to parse_line_column()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2519 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-17 00:25:50 +00:00
David Lawrence Ramsey
2f0cd35322 add missing comment
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2518 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-16 23:33:53 +00:00
David Lawrence Ramsey
b68c01b753 move duplicate code from the +LINE,COLUMN feature into a separate
function, parse_line_column()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2517 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-16 23:23:15 +00:00
David Lawrence Ramsey
50995bd024 rename another variable
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2516 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-16 20:13:09 +00:00
David Lawrence Ramsey
9c8baed321 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2515 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-16 19:43:04 +00:00
David Lawrence Ramsey
775eeba38a add the ability to open a file on a specified column as well as a
specified line, by allowing an argument of the form +LINE,COLUMN


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2514 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-16 18:38:16 +00:00
David Lawrence Ramsey
6e925cf330 update the Free Software Foundation's mailing address in various
comments


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2510 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-15 19:57:17 +00:00
David Lawrence Ramsey
066713e87e more indentation fixes and one more cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2509 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-14 23:21:02 +00:00
David Lawrence Ramsey
546f5b3d8a rename a few more variables, and fix some indentation
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2508 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-14 23:14:47 +00:00
David Lawrence Ramsey
e781ddf3b1 still more cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2507 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-14 22:44:16 +00:00
David Lawrence Ramsey
6d39f4ba66 document a renamed variable
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2506 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-14 21:19:15 +00:00
David Lawrence Ramsey
5ebd73f9a5 more cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2505 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-14 20:52:20 +00:00
David Lawrence Ramsey
02173c05dc in cut_line(), set placewewant properly after cutting a line, to avoid a
problem where the screen won't be updated if (a) we're not on the first
page when we cut the line, and (b) immediately after we cut the line, we
hit End to move to the end of the line after it


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2504 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-14 18:41:25 +00:00
David Lawrence Ramsey
7f4dd35406 another cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2503 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-08 17:08:51 +00:00
David Lawrence Ramsey
8f5e50991b cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2502 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-06 17:03:53 +00:00
David Lawrence Ramsey
340e5ca881 revert one last change that was causing breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2501 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-03 21:42:04 +00:00
David Lawrence Ramsey
75f4b7cb84 remove redundant code
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2500 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-03 21:35:58 +00:00
David Lawrence Ramsey
5e73eec3cc revert one of the previous changes; we don't really need a shortcut for
moving to the next search/replace history string, as we don't have one
for tab completion either


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2499 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-03 20:57:13 +00:00
David Lawrence Ramsey
0f83c89b09 rearrange nanogetstr() to fix breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2498 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-03 03:18:44 +00:00
David Lawrence Ramsey
6bc26a9a8b revert some attempts at simplifying the search/replace history code that
were causing breakage; make "previous history" and "next history" use
separate keys; and display them as "^P" and "^N" instead of using one
sentinel value for both, so that clicking on them with the mouse works
again


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2497 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-05-02 21:48:34 +00:00
David Lawrence Ramsey
198bd592ff document the simplification of a history check in nanogetstr(), and
remove an extra parenthesis so it actually compiles (oops)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2496 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-29 13:16:05 +00:00
David Lawrence Ramsey
fcdfb7f75f more comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2495 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-29 04:32:38 +00:00
David Lawrence Ramsey
e41e8dbead more comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2494 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-29 03:28:27 +00:00
David Lawrence Ramsey
10f880c62f remove a redundant check in get_history_newer(), and add a few comment
fixes


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2493 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-29 03:24:43 +00:00
Jordi Mallach
5e360dc065 Updated Malay from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2492 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-27 06:14:48 +00:00
David Lawrence Ramsey
6595b715d0 oops; in do_output(), properly allow wrapping when we insert a tab, for
consistency; this is incompatible with Pico, but Pico doesn't wrap
properly when other control characters are on a line, either, so its
behavior with regard to tabs is apparently a bug; besides, we wrap at
all other blank characters, including multibyte ones, so we shouldn't
make an exception for tabs


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2491 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-26 17:21:47 +00:00
Jordi Mallach
56c1e34e5a Update Norwegian bokmaal from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2490 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-26 04:47:03 +00:00
David Lawrence Ramsey
e4cb3158fd in do_output(), fix an off-by-one error that allowed wrapping when we
inserted a tab, for Pico compatibility


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2489 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-25 22:48:58 +00:00
David Lawrence Ramsey
6439330d59 in shortcut_init(), move the "Refresh" and "Exit" shortcuts to the
beginning of the help browser shortcut list, for consistency


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2488 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-25 21:48:22 +00:00
David Lawrence Ramsey
0bfec6e58d minor bits: fix slang compilation by calling clearok(TRUE) and
wrefresh() on edit instead of curscr, since slang's curses emulation
doesn't include a curscr equivalent; and revert Jordi's removal of a
space in the main help text, as its second paragraph won't be properly
indented by one space without it


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2487 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-25 20:08:29 +00:00
David Lawrence Ramsey
29be8031df comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2486 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-20 14:55:46 +00:00
Jordi Mallach
c5fe41cec8 Update Malay, Romanian and Traditional Chinese from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2485 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-20 13:26:41 +00:00
Jordi Mallach
72bff8eee4 Err, stable branch has been nano_1_2 for the last two years, doh!
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2484 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-20 13:24:39 +00:00
Jordi Mallach
d4a1c0ad29 Credit Vietnamese translator.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2483 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-20 13:22:08 +00:00
David Lawrence Ramsey
1ccada16ae actually, since copy_file() doesn't allocate ever-increasing space for a
file, it should read the file BUFSIZ bytes at a time; remove erroneous
changelog entry


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2482 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-19 22:37:01 +00:00
David Lawrence Ramsey
5b2f17e591 change all hardcoded instances of 128 bytes to MAX_BUF_SIZE, and #define
MAX_BUF_SIZE as 128 in nano.h


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2481 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-19 21:47:01 +00:00
David Lawrence Ramsey
3705924fc8 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2480 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-19 20:13:13 +00:00
David Lawrence Ramsey
c596c0c4da miscellaneous bits: make get_next_filename() use an unsigned long, make
num_of_digits() take a size_t instead of a ssize_t, and rename
num_of_digits() to digits()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2479 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-19 16:32:08 +00:00
David Lawrence Ramsey
9cf1df1f06 in do_browser() and do_help(), don't treat NANO_CANCEL_KEY as
NANO_EXIT_KEY anymore, for consistency


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2478 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-19 03:15:21 +00:00
Jordi Mallach
56074a1da6 Update Vietnamese from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2477 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-18 15:37:49 +00:00
Jordi Mallach
f79a3fa51a Catalan, Italian and Romanian updates from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2476 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-18 12:40:38 +00:00
Jordi Mallach
b9180f4a82 Remove bogus space from help text.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2475 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-18 12:31:11 +00:00
David Lawrence Ramsey
ad11460eb7 remove more unneeded clearok(TRUE)'s, and avoid an unnecessary update
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2474 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-16 18:27:57 +00:00
David Lawrence Ramsey
04652518fd simplify total_update() to call clearok(TRUE) and wrefresh() on curscr,
which updates the entire screen in fewer function calls


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2473 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-16 18:07:37 +00:00
David Lawrence Ramsey
22425a204d cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2472 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-16 15:57:19 +00:00
David Lawrence Ramsey
e527e458f4 various #include fixes: since proto.h includes nano.h, only include the
former in source files; also add an #include guard to proto.h, and make
the config.h #include in nano.h match the config.h #includes everywhere
else


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2471 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-15 18:07:26 +00:00
David Lawrence Ramsey
ac71fdde97 more cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2470 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-15 17:48:20 +00:00
David Lawrence Ramsey
ffda704ef6 cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2469 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-14 17:08:35 +00:00
David Lawrence Ramsey
6a244b689f various minor bits: add miscellaneous comment fixes; in
get_next_filename(), use a long instead of an int for the number
prepended to the filename; and in num_of_digits(), use a ssize_t instead
of an int


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2468 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-14 03:52:28 +00:00
David Lawrence Ramsey
c2b07472e2 in print1opt_full(), if desc should be empty, allow it to be NULL
instead of "", since the latter is not necessarily translated as ""


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2467 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-14 03:13:49 +00:00
Jordi Mallach
f1aed80922 Updated Spanish from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2466 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-13 22:58:51 +00:00
Jordi Mallach
95660ee4d9 Added Vietnamese translation by Phan Vinh Thinh <teppi82@gmail.com>.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2465 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-13 14:26:02 +00:00
David Lawrence Ramsey
ddedf2dbd4 Back to CVS
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2464 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2005-04-10 03:59:53 +00:00
56 changed files with 24493 additions and 17193 deletions

View File

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

1285
ChangeLog

File diff suppressed because it is too large Load Diff

View File

@@ -3,8 +3,8 @@ AUTOMAKE_OPTIONS = gnu no-dependencies
SUBDIRS = doc m4 po src
EXTRA_DIST = ABOUT-NLS AUTHORS BUGS COPYING ChangeLog INSTALL NEWS \
README THANKS TODO UPGRADE config.rpath install-sh missing \
mkinstalldirs nano.spec
EXTRA_DIST = ABOUT-NLS AUTHORS BUGS COPYING ChangeLog INSTALL NEWS \
README THANKS TODO UPGRADE config.rpath install-sh \
missing mkinstalldirs nano.spec
ACLOCAL_AMFLAGS = -I m4

57
NEWS
View File

@@ -1,3 +1,60 @@
2005.12.23 - GNU nano 1.3.10 rises to the surface. This release
contains several new features as well as fixes for
several longstanding bugs. The former include the
ability to scroll up or down single lines without
scrolling the cursor, reworked bracket searching code
that doesn't require regular expression support,
reworked command execution code that uses $SHELL if
available instead of hardcoding "/bin/sh", and the
ability to no longer add newlines to files that don't
end in them via the -L/--nonewlines option. The latter
include fixes to the statusbar prompt so that mouse
clicks work properly on it, fixes to the Yes/No/All
prompt so that mouse clicks on it work properly when
-O/--morespace is used, and fixes to the resize handling
so that nano dies properly when the terminal is too
small to display a prompt. Enjoy.
2005.10.23 - GNU nano 1.3.9 breaks through the wall. This release
includes major enhancements as well as bugfixes. The
enhancements include better handling of invalid UTF-8,
expansion of the word count option to also count lines
and characters in the file or selection, more efficient
screen update routines, a readded -K/--rebindkeypad
option to work around numeric keypad problems on
terminals that don't show the usual NumLock glitch, a
new -W/--wordbounds option to properly detect words
containing punctuation when moving among them, and
massive improvements to the color code such as handling
of unspecified foreground colors, more efficient memory
usage for color regexes, and new reserved syntaxes
"default" and "none". The bugfixes include fixes for
the rewritten history code, fixes for potential line
numbering problems on 64-bit platforms, fixes for a few
long-standing minor display problems, a fix for erroneous
hangups occurring while waiting for input, and a fix for
a segfault when displaying certain overly long lines.
Have fun with it.
2005.06.30 - GNU nano 1.3.8 floats at its own level. This release
contains several new features. Among other things, you
can now move to a specified column number as well as
line number within a file, file backups saved in a
backup directory will have unique names, the search and
replace history routines should work more consistently,
you can get a word count by pressing Meta-D at the edit
window, and there's a new -E/--tabstospaces option to
convert all typed tabs to spaces (--backupdir's short
option has been changed to -C). In terms of bugfixes,
this release contains fixes for minor problems with
screen updates, UTF-8 display, and flow control; a fix
for a segfault when displaying some lines ending with
tabs; better handling of constant cursor position
display; improved color parsing in the rcfile; and
support for the "Regexp" toggle in tiny mode
(-R/--regexp is gone, and --restricted's short option
has been changed to -R), among other things. Enjoy.
2005.04.10 - GNU nano 1.3.7 claws its way to the top. This release
mostly contains bugfixes for the massive amount of new
code in 1.3.6. Among other things, nano builds with

View File

@@ -10,11 +10,11 @@ packages:
- autoconf (version >= 2.54)
- automake (version >= 1.7)
- gettext (version >= 0.11.5)
- groff
- texinfo
- groff (version >= 1.12)
- texinfo (version >= 4.0)
- cvs
- ssh (with support for the SSH version 2 protocol)
- glib 2.x (if your system doesn't have snprintf() and/or vsnprintf())
- glib 2.x (if your system doesn't have vsnprintf())
- make, gcc and the normal development libraries (curses or slang, etc.)
These should be available on your GNU mirror. Note that you'll need a
@@ -28,10 +28,10 @@ If you're using a C shell (e.g. tcsh or csh), do
$ setenv CVS_RSH ssh
After it's set up, use the following command to download the CVS tree:
$ cvs -z3 -d:ext:anoncvs@savannah.gnu.org:/cvsroot/nano checkout nano
$ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/nano checkout nano
If you want to download the stable CVS branch, add "-r nano_1_0_branch":
$ cvs -z3 -d:ext:anoncvs@savannah.gnu.org:/cvsroot/nano checkout -r nano_1_0_branch nano
If you want to download the stable CVS branch, add "-r nano_1_2_branch":
$ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/nano checkout -r nano_1_2_branch nano
Once you have the sources in the "nano" directory, cd into it, and
execute the "autogen.sh" script in the top directory. This will set up

21
THANKS
View File

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

2
TODO
View File

@@ -6,7 +6,7 @@ For version 1.4:
- 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?
- Undo/Redo keys?
- Rebindable keys?
- Keystroke to implement "Add next sequence as raw" like vi's ^V. [DONE]
- Spell check selected text only. [DONE]

View File

@@ -2,24 +2,24 @@
#
# Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
#
# GNU nano is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# GNU nano is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2, or (at your option) any
# later version.
#
# GNU nano is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# GNU nano is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU nano; if not, write to the Free Software
# Foundation, Inc.
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301,
# USA.
#
# $Id$
AC_INIT([GNU nano], [1.3.7], [nano-devel@gnu.org], [nano])
AC_INIT([GNU nano], [1.3.10], [nano-devel@gnu.org], [nano])
AC_CONFIG_SRCDIR([src/nano.c])
AC_CANONICAL_TARGET([])
AM_INIT_AUTOMAKE
@@ -28,6 +28,7 @@ AC_CONFIG_HEADERS([config.h])
AC_PREREQ(2.54)
dnl Checks for programs.
AC_GNU_SOURCE
AC_PROG_CC
AC_PROG_LN_S
@@ -35,10 +36,13 @@ AC_ISC_POSIX
AC_SYS_LARGEFILE
dnl Internationalization macros.
AM_GNU_GETTEXT_VERSION(0.11.5)
AM_GNU_GETTEXT([external], [need-ngettext])
AM_CONDITIONAL(USE_NLS, test "x$USE_NLS" = "xyes")
dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS(fcntl.h getopt.h libintl.h limits.h regex.h termios.h wchar.h wctype.h)
AC_CHECK_HEADER(regex.h,
@@ -75,29 +79,29 @@ if test x$debug_support != xyes; then
fi
AC_ARG_ENABLE(extra,
[ --enable-extra Enable extra (optional) functions, including easter eggs],
[ --enable-extra Enable extra features, currently only easter eggs],
[if test x$enableval = xyes; then
AC_DEFINE(NANO_EXTRA, 1, [Define this to enable the extra stuff.]) extra_support=yes
AC_DEFINE(ENABLE_MULTIBUFFER, 1, [Define this to enable multiple file buffers.]) multibuffer_support=yes
fi])
AC_ARG_ENABLE(tiny,
[ --enable-tiny Disable features for the sake of size],
[if test x$enableval = xyes; then
AC_DEFINE(NANO_SMALL, 1, [Define this to make the nano executable as small as possible.]) tiny_support=yes
AC_DEFINE(DISABLE_BROWSER, 1, [Define this to disable the built-in (crappy) file browser.])
AC_DEFINE(DISABLE_HELP, 1, [Define this to disable the help menu.])
AC_DEFINE(DISABLE_JUSTIFY, 1, [Define this to disable the justify routine.])
AC_DEFINE(DISABLE_MOUSE, 1, [Define this to disable the mouse functions.])
AC_DEFINE(DISABLE_OPERATINGDIR, 1, [Define this to disable setting of the operating directory (chroot of sorts).])
AC_DEFINE(DISABLE_SPELLER, 1, [Define this to disable the use(full|less) spelling functions.])
AC_DEFINE(DISABLE_TABCOMP, 1, [Define to disable the tab completion code Chris worked so hard on!])
AC_DEFINE(NANO_TINY, 1, [Define this to make the nano executable as small as possible.]) tiny_support=yes
AC_DEFINE(DISABLE_BROWSER, 1, [Define this to disable the built-in file browser.])
AC_DEFINE(DISABLE_HELP, 1, [Define this to disable the help menu.])
AC_DEFINE(DISABLE_JUSTIFY, 1, [Define this to disable the justify routine.])
AC_DEFINE(DISABLE_MOUSE, 1, [Define this to disable the mouse functions.])
AC_DEFINE(DISABLE_OPERATINGDIR, 1, [Define this to disable setting of the operating directory (chroot of sorts).])
AC_DEFINE(DISABLE_SPELLER, 1, [Define this to disable the spell checker functions.])
AC_DEFINE(DISABLE_TABCOMP, 1, [Define to disable the tab completion code Chris worked so hard on!])
AC_DEFINE(DISABLE_WRAPPING, 1, [Define this to disable any and all text wrapping.])
fi])
AC_ARG_ENABLE(browser,
[ --disable-browser Disable mini file browser],
[if test x$enableval != xyes; then
AC_DEFINE(DISABLE_BROWSER, 1, [Define this to disable the built-in (crappy) file browser.])
AC_DEFINE(DISABLE_BROWSER, 1, [Define this to disable the built-in file browser.])
fi])
AC_ARG_ENABLE(help,
@@ -125,9 +129,9 @@ AC_ARG_ENABLE(operatingdir,
fi])
AC_ARG_ENABLE(speller,
[ --disable-speller Disable spell checker function],
[ --disable-speller Disable spell checker functions],
[if test x$enableval != xyes; then
AC_DEFINE(DISABLE_SPELLER, 1, [Define this to disable the use(full|less) spelling functions.])
AC_DEFINE(DISABLE_SPELLER, 1, [Define this to disable the spell checker functions.])
fi])
AC_ARG_ENABLE(tabcomp,
@@ -152,7 +156,7 @@ AC_ARG_ENABLE(color,
[ --enable-color Enable color and syntax highlighting],
[if test x$enableval = xyes; then
AC_DEFINE(ENABLE_NANORC, 1, [Define this to use the .nanorc file.]) nanorc_support=yes
AC_DEFINE(ENABLE_COLOR, 1, [Define this to have syntax highlighting, requires ENABLE_NANORC too!]) color_support=yes
AC_DEFINE(ENABLE_COLOR, 1, [Define this to have syntax highlighting, requires regex.h and ENABLE_NANORC too!]) color_support=yes
AC_MSG_WARN([
***********************************************************************
*** WARNING: Color support is far from perfect, but functional. ***
@@ -177,7 +181,7 @@ AC_ARG_ENABLE(all,
[ --enable-all Enable ALL extra nano functionality (kitchen sink option)],
[if test x$enableval = xyes; then
AC_DEFINE(ENABLE_NANORC, 1, [Define this to use the .nanorc file.]) nanorc_support=yes
AC_DEFINE(ENABLE_COLOR, 1, [Define this to have syntax highlighting, requires ENABLE_NANORC too!]) color_support=yes
AC_DEFINE(ENABLE_COLOR, 1, [Define this to have syntax highlighting, requires regex.h and ENABLE_NANORC too!]) color_support=yes
AC_DEFINE(ENABLE_MULTIBUFFER, 1, [Define this to enable multiple file buffers.]) multibuffer_support=yes
AC_DEFINE(NANO_EXTRA, 1, [Define this to enable the extra stuff.]) extra_support=yes
AC_MSG_WARN([
@@ -396,25 +400,24 @@ int main(void)
dnl Checks for functions.
AC_CHECK_FUNCS(snprintf vsnprintf isblank strcasecmp strncasecmp strcasestr strnlen getline getdelim)
AC_CHECK_FUNCS(getdelim getline isblank strcasecmp strcasestr strncasecmp strnlen vsnprintf)
if test x$enable_utf8 != xno; then
AC_CHECK_FUNCS(iswalnum mblen mbtowc wctomb wcwidth iswspace iswblank)
AC_CHECK_FUNCS(iswalnum iswblank iswpunct iswspace mblen mbstowcs mbtowc wctomb wcwidth)
fi
if test x$ac_cv_func_snprintf = xno -o x$ac_cv_func_vsnprintf = xno; then
if test x$ac_cv_func_vsnprintf = xno; then
AM_PATH_GLIB_2_0(2.0.0,,
AC_MSG_ERROR([
*** snprintf() and/or vsnprintf() not found. GLIB 2.x not found either.
*** You need both snprintf() and vsnprintf(). Alternatively you can
*** install the GLIB library which can be found at ftp://ftp.gtk.org/.]),
*** vsnprintf() not found. GLIB 2.x not found either. You should
*** install the GLIB 2.x library which can be found at
*** ftp://ftp.gtk.org/.]),
glib)
fi
dnl Checks for typedefs, structures, and compiler characteristics.
dnl Checks for library functions.
AC_TYPE_SIGNAL
AC_FUNC_VPRINTF
AC_CHECK_FUNCS(getopt_long)
@@ -425,7 +428,7 @@ if eval "test x$CURSES_LIB_NAME = x"; then
AC_CHECK_HEADERS(ncurses.h)
if test x$enable_utf8 != xno; then
AC_CHECK_LIB(ncursesw, wget_wch, [CURSES_LIB="-lncursesw" CURSES_LIB_NAME=ncursesw CURSES_LIB_WIDE=yes])
AC_CHECK_LIB(ncursesw, get_wch, [CURSES_LIB="-lncursesw" CURSES_LIB_NAME=ncursesw CURSES_LIB_WIDE=yes])
fi
if eval "test x$CURSES_LIB_NAME = x"; then
@@ -437,7 +440,7 @@ if eval "test x$CURSES_LIB_NAME = x"; then
AC_CHECK_HEADERS(curses.h)
if test x$enable_utf8 != xno; then
AC_CHECK_LIB(curses, wget_wch, [CURSES_LIB="-lcurses" CURSES_LIB_NAME=curses CURSES_LIB_WIDE=yes])
AC_CHECK_LIB(curses, get_wch, [CURSES_LIB="-lcurses" CURSES_LIB_NAME=curses CURSES_LIB_WIDE=yes])
fi
if eval "test x$CURSES_LIB_NAME = x"; then
@@ -454,7 +457,7 @@ else
AC_MSG_RESULT([Using $CURSES_LIB_NAME as the curses library])
fi
AC_CHECK_LIB([$CURSES_LIB_NAME], use_default_colors, AC_DEFINE(HAVE_USE_DEFAULT_COLORS, 1, [Define this if your curses library has the use_default_colors command.]))
AC_CHECK_LIB([$CURSES_LIB_NAME], use_default_colors, AC_DEFINE(HAVE_USE_DEFAULT_COLORS, 1, [Define this if your curses library has the use_default_colors() command.]))
dnl Parse any configure options.
@@ -470,14 +473,16 @@ if test "x$GLIB_LIBS" != "x"; then
fi
if test x$enable_utf8 != xno && \
test x$CURSES_LIB_WIDE = xyes -a \
x$ac_cv_func_iswalnum = xyes -a \
x$ac_cv_func_mblen = xyes -a \
x$ac_cv_func_mbtowc = xyes -a \
x$ac_cv_func_wctomb = xyes -a \
x$ac_cv_func_wcwidth = xyes && \
test x$ac_cv_func_iswspace = xyes -o x$ac_cv_func_iswblank = xyes; then
AC_DEFINE(NANO_WIDE, 1, [Define this if your system has sufficient wide character support (a wide curses library, iswalnum(), iswspace() or iswblank(), mblen(), mbtowc(), wctomb(), and wcwidth()).])
test x$CURSES_LIB_WIDE = xyes && \
test x$ac_cv_func_iswalnum = xyes && \
test x$ac_cv_func_iswpunct = xyes && \
(test x$ac_cv_func_iswblank = xyes || test x$ac_cv_func_iswspace = xyes) && \
test x$ac_cv_func_mblen = xyes && \
test x$ac_cv_func_mbstowcs = xyes && \
test x$ac_cv_func_mbtowc = xyes && \
test x$ac_cv_func_wctomb = xyes && \
test x$ac_cv_func_wcwidth = xyes; then
AC_DEFINE(ENABLE_UTF8, 1, [Define this if your system has sufficient UTF-8 support (a wide curses library, iswalnum(), iswpunct(), iswblank() or iswspace(), mblen(), mbstowcs(), mbtowc(), wctomb(), and wcwidth()).])
else
if test x$enable_utf8 = xyes; then
AC_MSG_ERROR([

View File

@@ -33,18 +33,20 @@
<h2><a href="#4">4. Running</a></h2>
<blockquote><p><a href="#4.1">4.1. How do I open a file with a name beginning with '+' from the command line?</a><br>
<a href="#4.2">4.2. Ack! My backspace/delete/enter/double bucky/meta key doesn't seem to work! What can I do?</a><br>
<a href="#4.3">4.3. How do I type the F13-F16 keys shown in the help browser? My keyboard only has F1-F12!</a><br>
<a href="#4.4">4.4. Nano crashes when I type &lt;insert keystroke here&gt;!</a><br>
<a href="#4.5">4.5. Nano crashes when I resize my window. How can I fix that?</a><br>
<a href="#4.6">4.6. [version 1.1.12 and earlier] Why does nano show ^\ in the shortcut list instead of ^J?</a><br>
<a href="#4.7a">4.7a. [version 1.1.12 and earlier] When I type in a search string, the string I last searched for is already in front of my cursor! What happened?!</a><br>
<a href="#4.7b">4.7b. [version 1.1.99pre1 and later] Hey, the search string behavior has reverted, it's now like Pico, what happened to the consistency?</a><br>
<a href="#4.8">4.8. How do I make nano my default editor (in Pine, mutt, etc.)?</a><br>
<a href="#4.9">4.9. I've compiled nano with color support, but I don't see any color when I run it!</a><br>
<a href="#4.10">4.10. How do I select text for the clipboard in an X terminal when I'm running nano in one and nano's mouse support is turned on?</a></p></blockquote>
<a href="#4.3">4.3. Ack! My numeric keypad's keys don't work properly when NumLock is off! What can I do?</a><br>
<a href="#4.4">4.4. How do I type the F13-F16 keys shown in the help browser? My keyboard only has F1-F12!</a><br>
<a href="#4.5">4.5. Nano crashes when I type &lt;insert keystroke here&gt;!</a><br>
<a href="#4.6">4.6. Nano crashes when I resize my window. How can I fix that?</a><br>
<a href="#4.7">4.7. [version 1.1.12 and earlier] Why does nano show ^\ in the shortcut list instead of ^J?</a><br>
<a href="#4.8a">4.8a. [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.8b">4.8b. [version 1.1.99pre1 and later] Hey, the search string behavior has reverted, it's now like Pico, what happened to the consistency?</a><br>
<a href="#4.9">4.9. How do I make nano my default editor (in Pine, mutt, etc.)?</a><br>
<a href="#4.10">4.10. I've compiled nano with color support, but I don't see any color when I run it!</a><br>
<a href="#4.11">4.11. How do I select text for the clipboard in an X terminal when I'm running nano in one and nano's mouse support is turned on?</a></p></blockquote>
<h2><a href="#5">5. Internationalization</a></h2>
<blockquote><p><a href="#5.1">5.1. There's no translation for my language!</a><br>
<a href="#5.2">5.2. I don't like the translation for &lt;x&gt; in my language. How can I fix it?</a></p></blockquote>
<a href="#5.2">5.2. I don't like the translation for &lt;x&gt; in my language. How can I fix it?</a><br>
<a href="#5.3">5.3. What is the status of Unicode support?</a></p></blockquote>
<h2><a href="#6">6. Advocacy and Licensing</a></h2>
<blockquote><p><a href="#6.1">6.1. Why should I use nano instead of Pico?</a><br>
<a href="#6.2">6.2. Why should I use Pico instead of nano?</a><br>
@@ -62,7 +64,7 @@
<hr width="100%">
<h1><a name="1"></a>1. General</h1>
<h2><a name="1.1"></a>1.1 About this FAQ</h2>
<blockquote><p>This FAQ was written and is maintained by Chris Allegretta &lt;<a href="mailto:chrisa@asty.org">chrisa@asty.org</a>&gt;, who also happens to be the creator of nano. Maybe someone else will volunteer to maintain this FAQ someday, who knows...</p></blockquote>
<blockquote><p>This FAQ was originally written and maintained by Chris Allegretta &lt;<a href="mailto:chrisa@asty.org">chrisa@asty.org</a>&gt;, who also happens to be the creator of nano. It is currently maintained by David Lawrence Ramsey &lt;<a href="mailto:pooka109@cox.net">pooka109@cox.net</a>&gt;. Maybe someone else will volunteer to maintain this FAQ someday, who knows...</p></blockquote>
<h2><a name="1.2"></a>1.2. How do I contribute to it?</h2>
<blockquote><p>Your best bet is to send it to the nano email address, <a href="mailto:nano@nano-editor.org">nano@nano-editor.org</a> and if it is useful enough it will be included in future versions.</p></blockquote>
<h2><a name="1.3"></a>1.3. What is GNU nano?</h2>
@@ -80,7 +82,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.7. 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.10. Of course you should always check the nano homepage to see what the latest and greatest version is.</p></blockquote>
<h2><a name="1.7"></a>1.7. I want to read the man page without having to download the program!</h2>
<blockquote><p>Jeez, demanding, aren't we? Okay, look <a href="http://www.nano-editor.org/dist/v1.3/nano.1.html">here</a>.</p></blockquote>
<hr width="100%">
@@ -154,7 +156,7 @@
<p>There's also the <b>--enable-tiny</b> option which disables everything above, as well as some larger chunks of the program (like the marker code that you use Control-^ to select with). Also, if you know you aren't going to be using other languages you can use <b>--disable-nls</b> to disable internationalization and save a few K to a few dozen K depending on if you have locale support on your system. And finally there's always good old <b>strip</b> to strip all debugging code and code that exists in libraries on your system.</p>
<p>If, on the other hand, you can't live without bells and whistles, you could try:</p>
<pre>
<b>--enable-extra</b> Enable extra functions, including easter eggs
<b>--enable-extra</b> Enable extra features, currently only easter eggs
<b>--enable-nanorc</b> Enable use of .nanorc file
<b>--enable-color</b> Enable color and syntax highlighting
<b>--enable-multibuffer</b> Enable having multiple file buffers open
@@ -163,11 +165,11 @@
Turn off wrapping of text by default when the
user is root</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.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>
<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> (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. Tell me more about this verbatim input stuff!</h2>
<blockquote><p>To use verbatim input, you must be using nano 1.3.1 or newer. When you want to insert a literal character into the file you're editing, such as a control character that nano usually treats as a command, first press <b>Meta-V</b>. (If you're not at a prompt, you'll get the message &quot;Verbatim input&quot;.) Then press the key(s) that generate the character you want.</p>
<p>Alternatively, you can press <b>Meta-V</b> and then type a four-digit hexadecimal code from 0000 to ffff (case-insensitive), and the character with the corresponding value will be inserted instead.</p></blockquote>
<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 six-digit hexadecimal code from 000000 to 10FFFF (case-insensitive), and the character with the corresponding value will be inserted instead.</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%">
@@ -181,19 +183,21 @@
<blockquote><p>Try setting your $TERM variable to 'vt100'. Nano doesn't yet support every term entry under the sun.</p>
<p>Bourne shell users (bash and sh): <b>export TERM=vt100</b><br>
C Shell users (tcsh and csh): <b>setenv TERM vt100</b></p></blockquote>
<h2><a name="4.3"></a>4.3. How do I type the F13-F16 keys shown in the help browser? My keyboard only has F1-F12!</h2>
<h2><a name="4.3"></a>4.3. Ack! My numeric keypad's keys don't work properly when NumLock is off! What can I do?</h2>
<blockquote><p>You can use the <b>-K</b> or <b>--rebindkeypad</b> options on the command line, or add the line <b>set rebindkeypad</b> to your .nanorc. However, nano's mouse support won't work properly if you do any of these things.</p></blockquote>
<h2><a name="4.4"></a>4.4. How do I type the F13-F16 keys shown in the help browser? My keyboard only has F1-F12!</h2>
<blockquote><p>It depends on the terminal type you're using. On some terminals, such as the FreeBSD console, xterm, konsole, and gnome-terminal, Shift-F1 to Shift-F4 will generate F13 to F16. On other terminals, such as the Linux console, rxvt, or Eterm, Shift-F3 to Shift-F6 will generate F13 to F16.</p></blockquote>
<h2><a name="4.4"></a>4.4. Nano crashes when I type &lt;insert keystroke here&gt;!</h2>
<h2><a name="4.5"></a>4.5. Nano crashes when I type &lt;insert keystroke here&gt;!</h2>
<blockquote><p>If you aren't trying some bizarre keystroke combination with some bizarre $TERM entry, chances are you have found a bug. You are welcome to submit it to the <a href="mailto:nano-devel@gnu.org">nano-devel</a> list or to <a href="mailto:nano@nano-editor.org">nano@nano-editor.org</a>.</p></blockquote>
<h2><a name="4.5"></a>4.5. Nano crashes when I resize my window. How can I fix that?</h2>
<h2><a name="4.6"></a>4.6. Nano crashes when I resize my window. How can I fix that?</h2>
<blockquote><p>Older versions of nano had this problem, please upgrade to a newer version (at least 0.9.9 would be great, 0.9.12 is recommended).</p></blockquote>
<h2><a name="4.6"></a>4.6. [version 1.1.12 and earlier] Why does nano show ^\ in the shortcut list instead of ^J?</h2>
<h2><a name="4.7"></a>4.7. [version 1.1.12 and earlier] Why does nano show ^\ in the shortcut list instead of ^J?</h2>
<blockquote><p>The help (^G) and justify (^J) function were among the last to be written. To show the improvements that nano had over Pico (go to line # and replace), ^_ and ^\ were put on the shortcut list. Later, ^G came back in place of ^_ as it proved to be very valuable for new Unix users. If you use the <b>-p</b> option to nano (or hit Meta-P) you will get the same shortcuts at the bottom as Pico.</p></blockquote>
<h2><a name="4.7a"></a>4.7a. [version 1.1.12 and earlier] When I type in a search string, the string I last searched for is already in front of my cursor! What happened?!</h2>
<h2><a name="4.8a"></a>4.8a. [version 1.1.12 and earlier] When I type in a search string, the string I last searched for is already in front of my cursor! What happened?!</h2>
<blockquote><p>In nano version 0.9.20, the default is to have a completely consistent user interface across all user input functions. This means that regardless of whether you're being asked for a filename to insert or write, or a string to search for, the previous value is already inserted before the cursor. If you prefer the old behavior, use the Pico emulation mode (-p or --pico) or just hit Meta-P while in nano (see the ^G help text for more details).</p></blockquote>
<h2><a name="4.7b"></a>4.7b. [version 1.1.99pre1 and later] Hey, the search string behavior has reverted, it's now like Pico, what happened to the consistency?</h2>
<h2><a name="4.8b"></a>4.8b. [version 1.1.99pre1 and later] Hey, the search string behavior has reverted, it's now like Pico, what happened to the consistency?</h2>
<blockquote><p>It was decided that consistency was nice, but people are used to Pico's inconsistent behavior. Also, in version 1.1.99pre1, search and replace history was introduced. If you wish to edit your previous search/replace entry (or any previous entry), you can do so by hitting the up arrow to cycle through your history. This method allows the best of both worlds: You don't need to erase the previous string if you want to enter a new one, but you can with one keystroke recall previous entries for editing. Therefore there is now no "Pico mode", nano is and has always been a Pico <b>clone</b>, and clones by default should be compatible.</p></blockquote>
<h2><a name="4.8"></a>4.8. How do I make nano my default editor (in Pine, mutt, etc.)?</h2>
<h2><a name="4.9"></a>4.9. 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>
@@ -206,10 +210,10 @@
<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.9"></a>4.9. I've compiled nano with color support, but I don't see any color when I run it!</h2>
<h2><a name="4.10"></a>4.10. I've compiled nano with color support, but I don't see any color when I run it!</h2>
<blockquote><p>If you want nano to actually use color, you have to specify the color configurations you want it to use in your .nanorc. Some example configurations are in the <b>nanorc.sample</b> that comes with the nano source or your nano package. See Section <a href="#3.9">3.9</a>.</p></blockquote>
<h2><a name="4.10"></a>4.10. How do I select text for the clipboard in an X terminal when I'm running nano in one and nano's mouse support is turned on?</h2>
<blockquote><p>Try holding down the Shift key and selecting the text as you normally would.</p></blockquote>
<h2><a name="4.11"></a>4.11. How do I select text for or paste text from the clipboard in an X terminal when I'm running nano in one and nano's mouse support is turned on?</h2>
<blockquote><p>Try holding down the Shift key and selecting or pasting the text as you normally would.</p></blockquote>
<hr width="100%">
<h1><a name="5"></a>5. Internationalization</h1>
<h2><a name="5.1"></a>5.1. There's no translation for my language!</h2>
@@ -218,6 +222,8 @@
<p>In any case, translating nano is very easy. Just grab the <b>nano.pot</b> file from the latest and greatest nano distribution (it's in the <b>po/</b> directory) and translate each line into your native language on the <b>msgstr</b> line. When you're done, you should send it to the TP's central po repository.</p></blockquote>
<h2><a name="5.2"></a>5.2. I don't like the translation for &lt;x&gt; in my language. How can I fix it?</h2>
<blockquote><p>The best way would probably be to e-mail the person listed in the <code>Last-Translator:</code> field in the <b>&lt;your_language&gt;.po</b> file with your suggested corrections and they can make the changes reach the nano-devel list.</p></blockquote>
<h2><a name="5.3"></a>5.3. What is the status of Unicode support?</h2>
<blockquote><p>With the latest development version (1.3.10+), Unicode should be mostly usable. With your terminal, locale (LC_ALL and similar environment variables), and encoding configured to properly support UTF-8, you should be able to enter and save Unicode text.</p></blockquote>
<hr width="100%">
<h1><a name="6"></a>6. Advocacy and Licensing</h1>
<h2><a name="6.1"></a>6.1. Why should I use nano instead of Pico?</h2>
@@ -249,7 +255,15 @@
<blockquote><p>Re-read Section <a href="#7.4">7.4</a> and you should know the answer.</p></blockquote>
<h2><a name="8"></a>8. ChangeLog</h2>
<blockquote>
<p>
<p>2005/11/21 - Clarify section 5.3 to better explain how to enable Unicode support, and remove the mention of quirks, since they turned out to not be a nano problem. (Mike Frysinger and DLR)<br>
2005/11/19 - Add a new section 5.3 to explain the status of nano's Unicode support. (Mike Frysinger, minor tweaks by DLR)<br>
2005/08/27 - Update email address. (DLR)<br>
2005/08/10 - Add a new section 4.3, and move all section 4 entries after it down one number, to explain how to deal with numeric keypad problems. (DLR)<br>
2005/08/08 - Update section 3.8 to mention that verbatim input mode now takes a six-digit hexadecimal number. (DLR)<br>
2005/07/04 - Update section 4.10 to mention that pasting from the X clipboard via the middle mouse button also works when the Shift key is used. (DLR)<br>
2005/06/15 - Update description of --enable-extra, and add missing line breaks. (DLR)<br>
2005/06/13 - Minor capitalization and wording fixes. (DLR)<br>
2005/06/08 - Updated section 1.1 to mention the current maintainer. (DLR)<br>
2005/03/09 - Added question about opening files with names beginning with '+'s, and added a few more miscellaneous cosmetic fixes. (DLR)<br>
2005/01/03 - Removed now-inaccurate note about verbatim input's not working at prompts, and update its description to mention that it handles hexadecimal values now. (DLR)<br>
2004/11/21 - Listed sh as an example of a Bourne shell. (DLR)<br>

View File

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

View File

@@ -1,5 +1,7 @@
man_MANS = nano.1 nanorc.5
mandir = @mandir@/fr
BUILT_SOURCES = nano.1.html nanorc.5.html
nano.1.html: nano.1

View File

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

View File

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

View File

@@ -6,7 +6,7 @@
.\" Public License for copying conditions. There is NO warranty.
.\"
.\" $Id$
.TH NANO 1 "version 1.3.7" "March 26, 2005"
.TH NANO 1 "version 1.3.10" "November 21, 2005"
.\" Please adjust this date whenever revising the manpage.
.\"
@@ -15,7 +15,7 @@ nano \- Nano's ANOther editor, an enhanced free Pico clone
.SH SYNOPSIS
.B nano
.I [\+LINE]\ [options]\ [file]
.I [\+LINE,COLUMN]\ [options]\ [file]
.br
.SH DESCRIPTION
@@ -32,9 +32,9 @@ replace" and "go to line number".
.SH OPTIONS
.TP
.B \+\fILINE\fP
Places cursor at line number \fILINE\fP on startup, instead of the
default of line 1.
.B \+\fILINE\fP,\fICOLUMN\fP
Places cursor at line number \fILINE\fP and column number \fICOLUMN\fP
on startup, instead of the default of line 1, column 1.
.TP
.B \-?
Same as \fB-h (\-\-help)\fP.
@@ -50,25 +50,31 @@ line.
When saving a file, back up the previous version of it to the current
filename suffixed with a ~.
.TP
.B \-E \fIdir\fP (\-\-backupdir=\fIdir\fP)
Set the directory where \fBnano\fP puts the backup files if file backups
are enabled.
.B \-C \fIdir\fP (\-\-backupdir=\fIdir\fP)
Set the directory where \fBnano\fP puts unique backup files if file
backups are enabled.
.TP
.B \-E (\-\-tabstospaces)
Convert typed tabs to spaces.
.TP
.B \-F (\-\-multibuffer)
Enable multiple file buffers, if available.
.TP
.B \-H (\-\-historylog)
Log search and replace strings to
.I ~/.nano_history
so they may be stored for later editing, if nanorc support is
configured.
Log search and replace strings to \fI~/.nano_history\fP so they can be
stored for later editing, if nanorc support is configured.
.TP
.B \-I (\-\-ignorercfiles)
Don't look at
.I SYSCONFDIR/nanorc
or
.IR ~/.nanorc ,
if nanorc support is available.
Don't look at \fISYSCONFDIR/nanorc\fP or \fI~/.nanorc\fP, if nanorc
support is available.
.TP
.B \-K (\-\-rebindkeypad)
Interpret the numeric keypad keys so that they all work properly. You
should only need to use this option if they don't, as mouse support
won't work properly with this option enabled.
.TP
.B \-L (\-\-nonewlines)
Don't add newlines to the ends of files.
.TP
.B \-N (\-\-noconvert)
Disable automatic conversion of files from DOS/Mac format.
@@ -81,34 +87,39 @@ Set the quoting string for justifying. The default is
"^([\ \\t]*[|>:}#])+" if regular expression support is available, or
">\ " otherwise.
.TP
.B \-R (\-\-regexp)
Enable regular expression matching for search strings, as well as
\\n subexpression replacement for replace strings, if available.
.TP
.B \-S (\-\-smooth)
Enable smooth scrolling. Text will scroll line-by-line, instead of the
usual chunk-by-chunk behavior.
.TP
.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
to use, if available.
.TP
.B \-Z (\-\-restricted)
.B \-R (\-\-restricted)
Restricted mode: Don't read or write to any file not specified on the
command line, read any nanorc files, allow suspending, or allow a file
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 \-S (\-\-smooth)
Enable smooth scrolling. Text will scroll line-by-line, instead of the
usual chunk-by-chunk behavior.
.TP
.B \-T \fIcols\fP (\-\-tabsize=\fIcols\fP)
Set the size (width) of a tab to \fIcols\fP columns. The value of
\fIcols\fP must be greater than 0. The default value is 8.
.TP
.B \-U (\-\-quickblank)
Do quick statusbar blanking. Statusbar messages will disappear after 1
keystroke instead of 25. Note that \fB-c\fP cancels this out.
.TP
.B \-V (\-\-version)
Show the current version number and author.
.TP
.B \-W (\-\-wordbounds)
Detect word boundaries more accurately by treating punctuation
characters as part of a word.
.TP
.B \-Y \fIstr\fP (\-\-syntax=\fIstr\fP)
Specify a specific syntax highlighting from the \fInanorc\fP to use, if
available.
.TP
.B \-c (\-\-const)
Constantly show the cursor position.
Constantly show the cursor position. Note that this cancels out
\fB-U\fP.
.TP
.B \-d (\-\-rebinddelete)
Interpret the Delete key differently so that both Backspace and Delete
@@ -128,14 +139,13 @@ Enable cut from cursor to end of line.
.B \-l (\-\-nofollow)
If the file being edited is a symbolic link, replace the link with
a new file instead of following it. Good for editing files in
.IR /tmp ,
perhaps?
\fI/tmp\fP, perhaps?
.TP
.B \-m (\-\-mouse)
Enable mouse support (if available for your system).
.TP
.B \-o \fIdir\fP (\-\-operatingdir=\fIdir\fP)
Set operating directory. Makes nano set up something similar to a
Set operating directory. Makes \fBnano\fP set up something similar to a
chroot.
.TP
.B \-p (\-\-preserve)
@@ -143,16 +153,17 @@ Preserve the XON and XOFF sequences (^Q and ^S) so they will be caught
by the terminal.
.TP
.B \-r \fIcols\fP (\-\-fill=\fIcols\fP)
Wrap lines at column \fIcols\fP. By default, this is the width of the
screen, less eight. If this value is negative, wrapping will occur at
\fIcols\fP columns from the right of the screen, allowing the wrap point
to vary along with the screen width if resized.
Wrap lines at column \fIcols\fP. If this value is 0 or less, wrapping
will occur at the width of the screen less \fIcols\fP columns, allowing
the wrap point to vary along with the width of the screen if the screen
is resized. The default value is -8.
.TP
.B \-s \fIprog\fP (\-\-speller=\fIprog\fP)
Enable alternative spell checker command.
.TP
.B \-t (\-\-tempfile)
Always save changed buffer without prompting. Same as Pico's -t option.
Always save changed buffer without prompting. Same as Pico's \fB-t\fP
option.
.TP
.B \-v (\-\-view)
View file (read only) mode.
@@ -171,13 +182,9 @@ Ignored, for compatibility with Pico.
.SH INITIALIZATION FILE
\fBnano\fP will read initialization files in the following order:
.IR SYSCONFDIR/nanorc ,
then
.IR ~/.nanorc .
Please see
.BR nanorc (5)
and the example file \fBnanorc.sample\fP which should be provided with
\fBnano\fP.
\fISYSCONFDIR/nanorc\fP, then \fI~/.nanorc\fP. Please see
\fBnanorc(5)\fP and the example file \fBnanorc.sample\fP, both of which
should be provided with \fBnano\fP.
.SH NOTES
If no alternative spell checker command is specified on the command
@@ -187,25 +194,20 @@ line or in one of the nanorc files, \fBnano\fP will check the
\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
named
.I nano.save
if the buffer didn't have a name already, or will add a ".save" suffix
to the current filename. If an emergency file with that name already
exists in the current directory, ".save" and a number (e.g. ".save.1")
will be suffixed to the current filename in order to make it unique. In
multibuffer mode, \fBnano\fP will write all the open buffers to the
respective emergency files.
named \fInano.save\fP if the buffer didn't have a name already, or will
add a ".save" suffix to the current filename. If an emergency file with
that name already exists in the current directory, ".save" and a number
(e.g. ".save.1") will be suffixed to the current filename in order to
make it unique. In multibuffer mode, \fBnano\fP will write all the open
buffers to their respective emergency files.
.SH BUGS
Please send any comments or bug reports to
.BR nano@nano-editor.org .
Please send any comments or bug reports to \fBnano@nano-editor.org\fP.
The \fBnano\fP mailing list is available from
.BR nano-devel@gnu.org .
The \fBnano\fP mailing list is available from \fBnano-devel@gnu.org\fP.
To subscribe, email to
.B nano-devel-request@gnu.org
with a subject of "subscribe".
To subscribe, email to \fBnano-devel-request@gnu.org\fP with a subject
of "subscribe".
.SH HOMEPAGE
http://www.nano-editor.org/
@@ -218,10 +220,7 @@ http://www.nano-editor.org/
\fI/usr/share/doc/nano/\fP (or equivalent on your system)
.SH AUTHOR
Chris Allegretta <chrisa@asty.org>, et al (see
.I AUTHORS
and
.I THANKS
for details). This manual page was originally written by Jordi Mallach
<jordi@sindominio.net>, for the Debian GNU system (but may be used by
others).
Chris Allegretta <chrisa@asty.org>, et al (see \fIAUTHORS\fP and
\fITHANKS\fP for details). This manual page was originally written by
Jordi Mallach <jordi@sindominio.net>, for the Debian GNU system (but may
be used by others).

View File

@@ -6,7 +6,7 @@
.\" Public License for copying conditions. There is NO warranty.
.\"
.\" $Id$
.TH NANORC 5 "version 1.3.7" "March 26, 2005"
.TH NANORC 5 "version 1.3.10" "November 21, 2005"
.\" Please adjust this date whenever revising the manpage.
.\"
.SH NAME
@@ -22,15 +22,14 @@ replace" and "go to line number".
.PP
The \fInanorc\fP file contains the default settings for \fBnano\fP.
During startup, \fBnano\fP will first read its system-wide settings from
.IR SYSCONFDIR/nanorc ,
and then user-specific settings from
.IR ~/.nanorc .
\fISYSCONFDIR/nanorc\fP, and then user-specific settings from
\fI~/.nanorc\fP.
.SH OPTIONS
The configuration file accepts a series of "set" and "unset" commands,
which can be used to configure nano on startup without using the
command-line options. Additionally, the "syntax" and "color" keywords
are used to define syntax highlighting rules for different text
command-line options. Additionally, the "syntax", "color", and "icolor"
keywords are used to define syntax highlighting rules for different text
patterns. GNU nano will read one command per line.
Options in rcfiles take precedence over nano's defaults, and command
@@ -41,73 +40,86 @@ Options are unset by default, except for options that take an argument.
The supported commands and arguments are:
.TP 3
\fBset/unset autoindent\fP
.B set/unset autoindent
Use auto-indentation.
.TP
\fBset/unset backup\fP
Create backup files in
.IR filename~ .
.B set/unset backup
Create backup files in \fIfilename~\fP.
.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
.B set backupdir "\fIdirectory\fP"
Set the directory where \fBnano\fP puts unique backup files if file
backups are enabled.
.TP
.B set/unset backwards
Do backwards searches by default.
.TP
.B set brackets "\fIstring\fP"
Set the characters treated as closing brackets. They cannot contain
tabs or spaces. Only closing punctuation, optionally followed by
blank characters. Only closing punctuation, optionally followed by
closing brackets, can end sentences.
.TP
\fBset/unset const\fP
.B set/unset casesensitive
Do case sensitive searches by default.
.TP
.B set/unset const
Constantly display the cursor position in the status bar.
.TP
\fBset/unset cut\fP
.B set/unset cut
Use cut to end of line by default.
.TP
\fBset fill \fIn\fP\fP
Wrap lines at column number \fIn\fP. If \fIn\fP is 0 or less, the line
length will be the screen width less \fIn\fP. The default value is -8.
.B set fill \fIn\fP
Wrap lines at column number \fIn\fP. If \fIn\fP is 0 or less, the
maximum line length will be the screen width less \fIn\fP columns. The
default value is -8.
.TP
\fBset/unset historylog\fP
Enable
.I ~/.nano_history
for saving and reading search/replace strings.
.B set/unset historylog
Enable \fI~/.nano_history\fP for saving and reading search/replace
strings.
.TP
\fBset/unset morespace\fP
.B set/unset morespace
Allow use of the blank line below the titlebar as extra editing space.
.TP
\fBset/unset mouse\fP
.B set/unset mouse
Enable mouse support, so that mouse clicks can be used to set the mark
and run shortcuts.
.TP
\fBset/unset multibuffer\fP
.B set/unset multibuffer
Allow inserting files into their own buffers.
.TP
\fBset/unset noconvert\fP
.B set/unset noconvert
Don't convert files from DOS/Mac format.
.TP
\fBset/unset nofollow\fP
.B set/unset nofollow
Don't follow symlinks when writing files.
.TP
\fBset/unset nohelp\fP
.B set/unset nohelp
Don't display the help lists at the bottom of the screen.
.TP
\fBset/unset nowrap\fP
.B set/unset nonewlines
Don't add newlines to the ends of files.
.TP
.B set/unset nowrap
Don't wrap text at all.
.TP
\fBset operatingdir "\fIdirectory\fP"\fP
.B set operatingdir "\fIdirectory\fP"
\fBnano\fP will only read and write files inside \fIdirectory\fP and its
subdirectories. Also, the current directory is changed to here, so
files are inserted from this dir. By default the operating directory
feature is turned off.
.TP
\fBset/unset preserve\fP
.B set/unset preserve
Preserve the XON and XOFF keys (^Q and ^S).
.TP
\fBset punct "\fIstring\fP"\fP
.B set punct "\fIstring\fP"
Set the characters treated as closing punctuation. They cannot contain
tabs or spaces. Only closing punctuation, optionally followed by
blank characters. Only closing punctuation, optionally followed by
closing brackets, can end sentences.
.TP
\fBset quotestr "\fIstring\fP"\fP
.B set/unset quickblank
Do quick statusbar blanking. Statusbar messages will disappear after 1
keystroke instead of 25.
.TP
.B set quotestr "\fIstring\fP"
The email-quote string, used to justify email-quoted paragraphs. This
is an "extended regular expression" if your system supports them,
otherwise a literal string. The default value is
@@ -117,67 +129,91 @@ otherwise a literal string. The default value is
if you have regexps, otherwise set quotestr ">\ ". Note that '\\t'
above stands for a literal Tab character.
.TP
\fBset/unset rebinddelete\fP
.B set/unset rebinddelete
Interpret the Delete key differently so that both Backspace and Delete
work properly. You should only need to use this option if Backspace
acts like Delete on your system.
.TP
\fBset/unset regexp\fP
.B set/unset rebindkeypad
Interpret the numeric keypad keys so that they all work properly. You
should only need to use this option if they don't, as mouse support
won't work properly with this option enabled.
.TP
.B set/unset regexp
Do regular expression searches by default.
.TP
\fBset/unset smarthome\fP
.B set/unset smarthome
Make the Home key smarter. When Home is pressed anywhere but at the
very beginning of non-whitespace characters on a line, the cursor will
jump to that beginning (either forwards or backwards). If the cursor is
already at that position, it will jump to the true beginning of the
line.
.TP
\fBset/unset smooth\fP
.B set/unset smooth
Use smooth scrolling by default.
.TP
\fBset speller \fIspellprog\fP\fP
.B set speller \fIspellprog\fP
Use spelling checker \fIspellprog\fP instead of the built-in one, which
calls \fIspell\fP.
.TP
\fBset/unset suspend\fP
.B set/unset suspend
Allow nano to be suspended.
.TP
\fBset tabsize \fIn\fP\fP
Use a tab size of \fIn\fP columns instead of the default (8); must be
greater than 0.
.B set tabsize \fIn\fP
Use a tab size of \fIn\fP columns. The value of \fIn\fP must be greater
than 0. The default value is 8.
.TP
\fBset/unset tempfile\fP
.B set/unset tabstospaces
Convert typed tabs to spaces.
.TP
.B set/unset tempfile
Save automatically on exit, don't prompt.
.TP
\fBset/unset view\fP
.B set/unset view
Disallow file modification.
.TP
\fBset whitespace "\fIstring\fP"\fP
.B set whitespace "\fIstring\fP"
Set the two characters used to display the first characters of tabs and
spaces. They must be single-column characters.
.TP
.B set/unset wordbounds
Detect word boundaries more accurately by treating punctuation
characters as part of a word.
.TP
.B syntax "\fIstr\fP" ["\fIfileregex\fP" ... ]
Defines a syntax named \fIstr\fP which can be activated via the \fB-Y\fP
flag, or will be automatically activated if the current filename matches
\fIfileregex\fP. All following \fBcolor\fP statements will apply to
\fIsyntax\fP until a new syntax is defined.
\fIfileregex\fP. All following \fBcolor\fP and \fBicolor\fP statements
will apply to \fIsyntax\fP until a new syntax is defined.
The \fInone\fP syntax is reserved; specifying it on the command line is
the same as not having a syntax at all. The \fIdefault\fP syntax is
special: it takes no \fIfileregex\fP, and applies to files that don't
match any other syntax's \fIfileregex\fP.
.TP
.B color \fIfgcolor\fP[,\fIbgcolor\fP] "\fIregex\fP" ...
.B color \fIfgcolor\fP,\fIbgcolor\fP "\fIregex\fP" ...
For the currently defined syntax, display all expressions matching
\fIregex\fP with foreground color \fIfgcolor\fP and optional background
color \fIbgcolor\fP. Legal colors for foreground and background color
are: white, black, red, blue, green, yellow, magenta, and cyan. You may
use the prefix "bright" to force a stronger color highlight. If your
terminal supports transparency, not specifying a \fIbgcolor\fP tells
\fBnano\fP to attempt to use a transparent background.
\fIregex\fP with foreground color \fIfgcolor\fP and background color
\fIbgcolor\fP, at least one of which must be specified. Legal colors
for foreground and background color are: white, black, red, blue, green,
yellow, magenta, and cyan. You may use the prefix "bright" to force a
stronger color highlight for the foreground. If your terminal supports
transparency, not specifying a \fIbgcolor\fP tells \fBnano\fP to attempt
to use a transparent background.
.TP
.B color \fIfgcolor\fP[,\fIbgcolor\fP] start="\fIsr\fP" end="\fIer\fP"
.B icolor \fIfgcolor\fP,\fIbgcolor\fP "\fIregex\fP" ...
Same as above, except that the expression matching is case insensitive.
.TP
.B color \fIfgcolor\fP,\fIbgcolor\fP start="\fIsr\fP" end="\fIer\fP"
Display expressions which start with \fIsr\fP and end with \fIer\fP
with foreground color \fIfgcolor\fP and optional background color
\fIbgcolor\fP. This allows syntax highlighting to span multiple lines.
Note that all subsequent instances of \fIsr\fP after an initial \fIsr\fP
is found will be highlighted until the first instance of \fIer\fP.
\fI
with foreground color \fIfgcolor\fP and background color \fIbgcolor\fP,
at least one of which must be specified. This allows syntax
highlighting to span multiple lines. Note that all subsequent instances
of \fIsr\fP after an initial \fIsr\fP is found will be highlighted until
the first instance of \fIer\fP.
.TP
.B icolor \fIfgcolor\fP,\fIbgcolor\fP start="\fIsr\fP" end="\fIer\fP"
Same as above, except that the expression matching is case insensitive.
.SH FILES
.TP
@@ -194,9 +230,6 @@ Per-user configuration file
\fI/usr/share/doc/nano/examples/nanorc.sample\fP (or equivalent on your
system)
.SH AUTHOR
Chris Allegretta <chrisa@asty.org>, et al (see
.I AUTHORS
and
.I THANKS
for details).
This manual page was written by Jordi Mallach <jordi@gnu.org>.
Chris Allegretta <chrisa@asty.org>, et al (see \fIAUTHORS\fP and
\fITHANKS\fP for details). This manual page was written by Jordi
Mallach <jordi@gnu.org>.

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

@@ -0,0 +1,83 @@
.\" Hey, EMACS: -*- nroff -*-
.\" rnano.1 is copyright 2005 by
.\" Thijs Kinkhorst <thijs@kinkhorst.com>;
.\" skeleton based on nano-tiny.1 by Jordi Mallach <jordi@debian.org>.
.\"
.\" This is free documentation, see the latest version of the GNU General
.\" Public License for copying conditions. There is NO warranty.
.\"
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.\" $Id$
.TH RNANO 1 "version 1.3.10" "November 23, 2005"
.\" Please adjust this date whenever revising the manpage.
.\"
.SH NAME
rnano \- Restricted mode for Nano's ANOther editor, an enhanced free
Pico clone
.SH SYNOPSIS
.B rnano
.I [\+LINE,COLUMN]\ [options]\ [file]
.br
.SH DESCRIPTION
This manual page documents briefly the \fBrnano\fP command.
.PP
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
.\" \fI<whatever>\fP escape sequences to invoke bold face and italics,
.\" respectively.
\fBnano\fP is a small, free and friendly editor which aims to replace
Pico, the default editor included in the non-free Pine package. Rather
than just copying Pico's look and feel, \fBnano\fP also implements some
missing (or disabled by default) features in Pico, such as "search and
replace" and "go to line number".
.PP
\fBrnano\fP is a restricted version of \fBnano\fP, which only edits
specific files and doesn't allow the user access to the filesystem or a
command shell.
.PP
In restricted mode, \fBnano\fP will \fInot\fP:
.IP \[bu] 2
read or write to any file not specified on the command line;
.IP \[bu]
read any nanorc files;
.IP \[bu]
allow suspending;
.IP \[bu]
allow a file to be appended to, prepended to, or saved under a different
name;
.IP \[bu]
use backup files or spell checking.
.SH OPTIONS
.TP
.B \-?
Same as \fB-h (\-\-help)\fP.
.TP
.B \-h (\-\-help)
Display a summary of command line options.
.TP
.B \-V (\-\-version)
Show the current version number and author.
.PP
See the \fBnano\fP(1) manpage for the complete documentation of
\fBnano\fP.
.SH BUGS
Please send any comments or bug reports to \fBnano@nano-editor.org\fP.
The \fBnano\fP mailing list is available from \fBnano-devel@gnu.org\fP.
To subscribe, email to \fBnano-devel-request@gnu.org\fP with a subject
of "subscribe".
.SH HOMEPAGE
http://www.nano-editor.org/
.SH AUTHOR
Chris Allegretta <chrisa@asty.org>, et al (see AUTHORS for details).
This manual page was originally written by Thijs Kinkhorst
<thijs@kinkhorst.com>, for the Debian system (but may be used by
others).

View File

@@ -14,23 +14,30 @@
## Backup files to filename~.
# set backup
## The directory to put the backup files in.
## The directory to put unique 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.
## Do backwards searches by default.
# set backwards
## The characters treated as closing brackets. They cannot contain
## blank characters. Only closing punctuation, optionally followed by
## closing brackets, can end sentences.
##
# set brackets "'")}]>"
## Constantly display the cursor position in the status bar.
## Do case sensitive searches by default.
# set casesensitive
## Constantly display the cursor position in the statusbar. Note that
## this cancels out "quickblank".
# set const
## Use cut to end of line by default.
# set cut
## Set the line length for wrapping text and justifying paragraphs.
## If fill is negative, the line length will be the screen width less
## If fill is 0 or less, the line length will be the screen width less
## this number.
##
# set fill -8
@@ -47,7 +54,7 @@
## Allow multiple file buffers (inserting a file will put it into a
## separate buffer). You must have configured with --enable-multibuffer
## or --enable-extra for this to work.
## for this to work.
##
# set multibuffer
@@ -60,6 +67,9 @@
## Don't display the helpful shortcut lists at the bottom of the screen.
# set nohelp
## Don't add newlines to the ends of files.
# set nonewlines
## Don't wrap text at all.
# set nowrap
@@ -74,11 +84,16 @@
# set preserve
## The characters treated as closing punctuation. They cannot contain
## tabs or spaces. Only closing punctuation, optionally followed by
## blank characters. Only closing punctuation, optionally followed by
## closing brackets, can end sentences.
##
# set punct ".?!"
## Do quick statusbar blanking. Statusbar messages will disappear after
## 1 keystroke instead of 25. Note that "const" cancels this out.
##
# set quickblank
## The email-quote string, used to justify email-quoted paragraphs.
## This is an extended regular expression if your system supports them,
## otherwise a literal string. Default:
@@ -91,6 +106,9 @@
## Fix Backspace/Delete confusion problem.
# set rebinddelete
## Fix numeric keypad key confusion problem.
# set rebindkeypad
## Do extended regular expression searches by default.
# set regexp
@@ -115,6 +133,9 @@
## Use this tab size instead of the default; it must be greater than 0.
# set tabsize 8
## Convert typed tabs to spaces.
# set tabstospaces
## Save automatically on exit, don't prompt.
# set tempfile
@@ -126,37 +147,61 @@
## (00B7 hexadecimal) seem to be good values for these.
# set whitespace " "
## Detect word boundaries more accurately by treating punctuation
## characters as part of a word.
# set wordbounds
## Color setup
##
## Format:
##
## syntax "short description" ["filename regex" ...]
##
## (The "none" syntax is reserved; specifying it on the command line is
## the same as not having a syntax at all. The "default" syntax is
## special: it takes no filename regexes, and applies to files that
## don't match any other syntax's filename regexes.)
##
## color foreground,background "regex" ["regex"...]
## or
## icolor foreground,background "regex" ["regex"...]
##
## ("color" will do case sensitive matches, while "icolor" will do case
## insensitive matches.)
##
## Legal colors: white, black, red, blue, green, yellow, magenta, cyan.
## You may use the prefix "bright" to mean a stronger color highlight.
## You may use the prefix "bright" to mean a stronger color highlight
## for the foreground.
##
## To use multi-line regexes use the start="regex" end="regex" format.
## To use multi-line regexes, use the start="regex" end="regex" format.
##
## If your system supports transparency, not specifying a background
## color will use a transparent color. If you don't want this, be sure
## to set the background color to black or white.
##
# syntax "c-file" "\.(c|C|cc|cpp|h|H|hh|hpp)$"
# color red "\<[A-Z_]{2,}\>"
# syntax "c-file" "\.(c|C|cc|cpp|cxx|h|H|hh|hpp|hxx)$"
# color brightred "\<[A-Z_][A-Z_0-9]+\>"
# color green "\<(float|double|bool|char|int|short|long|sizeof|enum|void|static|const|struct|union|typedef|extern|signed|unsigned|inline)\>"
# color green "\<(u_?)?int(8|16|32|64|ptr)_t\>"
# color green "\<(class|namespace|template|public|protected|private|typename|this|friend|virtual|using|mutable|volatile|register|explicit)\>"
# color brightyellow "\<(for|if|while|do|else|case|default|switch|goto|continue|break|return)\>"
# color brightyellow "\<(for|if|while|do|else|case|default|switch)\>"
# color brightyellow "\<(try|throw|catch|operator|new|delete)\>"
# color brightcyan "^ *# *(define|undef|include|ifn?def|endif|elif|else|if)"
# color brightmagenta "'([^\]|(\\['abfnrtv\\]))'" "'\\(([0-7][0-7]?)|([0-3][0-7][0-7]))'" "'\\x[0-9A-Fa-f][0-9A-Fa-f]?'"
# color magenta "\<(goto|continue|break|return)\>"
# color brightcyan "^[[:space:]]*#[[:space:]]*(define|undef|include|ifn?def|endif|elif|else|if|warning|error)"
# color brightmagenta "'([^"'\]|(\\["'abfnrtv\\]))'" "'\\(([0-7][0-7]?)|([0-3][0-7][0-7]))'" "'\\x[0-9A-Fa-f][0-9A-Fa-f]?'"
##
## GCC builtins
##
# color cyan "__attribute__[[:space:]]*\(\([^)]*\)\)" "__(aligned|asm|builtin|hidden|inline|packed|restrict|section|typeof|weak)__"
##
## You will in general want your comments and strings to come last,
## because syntax highlighting rules will be applied in the order they
## are read in.
##
# color brightyellow "<[^= ]*>" ""(\\.|[^\"])*""
# color brightyellow "<[^= ]*>" ""(\\.|[^\"])*""
##
## This string is VERY resource intensive!!!
# color brightyellow start=""(\\.|[^\"])*\\ *$" end="^(\\.|[^\"])*""
## This string is VERY resource intensive!
# color brightyellow start=""(\\.|[^\"])*\\[[:space:]]*$" end="^(\\.|[^\"])*""
##
## And we want to have some nice comment highlighting too
# color brightblue "//.*"
@@ -165,11 +210,11 @@
## Here is a short example for HTML
# syntax "HTML" "\.html$"
# color blue start="<" end=">"
# color red "&[^; ]*;"
# color red "&[^;[[:space:]]]*;"
## Here is a short example for TeX files
# syntax "TeX" "\.tex$"
# color green "\\.|\\[A-Za-z]*"
# icolor green "\\.|\\[A-Z]*"
# color magenta "[{}]"
# color blue "%.*"
@@ -179,10 +224,10 @@
## Here is an example for groff
##
# syntax "groff" "\.ms$" "\.mm$" "\.me$" "\.tmac$" "^tmac." ".rof"
# syntax "groff" "\.m[ems]$" "\.tmac$" "^tmac." ".rof"
## The argument of .nr or .ds
# color cyan "^\.ds [^ ]*"
# color cyan "^\.nr [^ ]*"
# color cyan "^\.ds [^[[:space:]]]*"
# color cyan "^\.nr [^[[:space:]]]*"
## Single character escapes
# color brightmagenta "\\."
## Highlight the argument of \f or \s in the same color
@@ -194,7 +239,7 @@
# color cyan "(\\|\\\\)n\(.."
# color cyan start="(\\|\\\\)n\[" end="]"
## Requests
# color brightgreen "^\. *[^ ]*"
# color brightgreen "^\.[[:space:]]*[^[[:space:]]]*"
## Comments
# color yellow "^\.\\\".*$"
## Strings
@@ -210,11 +255,7 @@
## Here is an example for perl
##
# syntax "perl" "\.p[lm]$"
# color red "\<(accept|alarm|atan2|bin(d|mode)|c(aller|h(dir|mod|op|own|root)|lose(dir)?|onnect|os|rypt)|d(bm(close|open)|efined|elete|ie|o|ump)|e(ach|of|val|x(ec|ists|it|p))|f(cntl|ileno|lock|ork))\>"
# color red "\<(get(c|login|peername|pgrp|ppid|priority|pwnam|(host|net|proto|serv)byname|pwuid|grgid|(host|net)byaddr|protobynumber|servbyport)|([gs]et|end)(pw|gr|host|net|proto|serv)ent|getsock(name|opt)|gmtime|goto|grep|hex|index|int|ioctl|join)\>"
# color red "\<(keys|kill|last|length|link|listen|local(time)?|log|lstat|m|mkdir|msg(ctl|get|snd|rcv)|next|oct|open(dir)?|ord|pack|pipe|pop|printf?|push|q|qq|qx|rand|re(ad(dir|link)?|cv|do|name|quire|set|turn|verse|winddir)|rindex|rmdir|s|scalar|seek(dir)?)\>"
# color red "\<(se(lect|mctl|mget|mop|nd|tpgrp|tpriority|tsockopt)|shift|shm(ctl|get|read|write)|shutdown|sin|sleep|socket(pair)?|sort|spli(ce|t)|sprintf|sqrt|srand|stat|study|substr|symlink|sys(call|read|tem|write)|tell(dir)?|time|tr(y)?|truncate|umask)\>"
# color red "\<(un(def|link|pack|shift)|utime|values|vec|wait(pid)?|wantarray|warn|write)\>"
# color red "\<(accept|alarm|atan2|bin(d|mode)|c(aller|h(dir|mod|op|own|root)|lose(dir)?|onnect|os|rypt)|d(bm(close|open)|efined|elete|ie|o|ump)|e(ach|of|val|x(ec|ists|it|p))|f(cntl|ileno|lock|ork))\>" "\<(get(c|login|peername|pgrp|ppid|priority|pwnam|(host|net|proto|serv)byname|pwuid|grgid|(host|net)byaddr|protobynumber|servbyport)|([gs]et|end)(pw|gr|host|net|proto|serv)ent|getsock(name|opt)|gmtime|goto|grep|hex|index|int|ioctl|join)\>" "\<(keys|kill|last|length|link|listen|local(time)?|log|lstat|m|mkdir|msg(ctl|get|snd|rcv)|next|oct|open(dir)?|ord|pack|pipe|pop|printf?|push|q|qq|qx|rand|re(ad(dir|link)?|cv|do|name|quire|set|turn|verse|winddir)|rindex|rmdir|s|scalar|seek(dir)?)\>" "\<(se(lect|mctl|mget|mop|nd|tpgrp|tpriority|tsockopt)|shift|shm(ctl|get|read|write)|shutdown|sin|sleep|socket(pair)?|sort|spli(ce|t)|sprintf|sqrt|srand|stat|study|substr|symlink|sys(call|read|tem|write)|tell(dir)?|time|tr(y)?|truncate|umask)\>" "\<(un(def|link|pack|shift)|utime|values|vec|wait(pid)?|wantarray|warn|write)\>"
# color magenta "\<(continue|else|elsif|do|for|foreach|if|unless|until|while|eq|ne|lt|gt|le|ge|cmp|x|my|sub|use|package|can|isa)\>"
# color cyan start="[$@%]" end="( |\\W|-)"
# color yellow "".*"|qq\|.*\|"
@@ -234,7 +275,7 @@
# color blue "//.*"
# color blue start="/\*" end="\*/"
# color brightblue start="/\*\*" end="\*/"
# color brightgreen,green " +$"
# color brightgreen,green "[[:space:]]+$"
## Here is an example for patch files
##
@@ -257,19 +298,47 @@
# color brightwhite "\\f[BIPR]"
# color yellow "\.(br|DS|RS|RE|PD)"
## Here is an example for assembler
##
# syntax "asm-file" "\.(S|s|asm)$"
# color red "\<[A-Z_]{2,}\>"
# color brightgreen "\.(data|subsection|text)"
# color green "\.(align|file|globl|global|hidden|section|size|type|weak)"
# color brightyellow "\.(ascii|asciz|byte|double|float|hword|int|long|short|single|struct|word)"
# icolor brightred "^[[:space:]]*[._A-Z0-9]*:"
# color brightcyan "^[[:space:]]*#[[:space:]]*(define|undef|include|ifn?def|endif|elif|else|if|warning|error)"
## Highlight strings (note: VERY resource intensive)
# color brightyellow "<[^= ]*>" ""(\\.|[^\"])*""
# color brightyellow start=""(\\.|[^\"])*\\[[:space:]]*$" end="^(\\.|[^\"])*""
## Highlight comments
# color brightblue "//.*"
# color brightblue start="/\*" end="\*/"
## Here is an example for Bourne shell scripts
##
# syntax "shellscript" "\.sh$"
# icolor brightgreen "^[_A-Z0-9]+\(\)"
# color green "\<(case|do|done|elif|else|esac|exit|fi|for|function|if|in|local|read|return|select|shift|then|time|until|while)\>"
# color green "(\{|\}|\(|\)|\;|\]|\[|`|\\|\$|<|>|!|=|&|\|)"
# color green "-(L|d|e|f|g|r|u|w|x)\>"
# color green "-(eq|ne|gt|lt|ge|le|s|n|z)\>"
# color brightblue "\<(cat|cd|chmod|chown|cp|echo|env|export|grep|install|let|ln|make|mkdir|mv|rm|sed|set|tar|touch|umask|unset)\>"
# icolor brightred "\$\{?[_A-Z0-9]+\}?"
# color yellow "#.*$"
# color brightyellow ""(\\.|[^\"])*"" "'(\\.|[^'])*'"
## Here is an example for your .nanorc
##
# syntax "nanorc" "(\.|/|)nanorc$"
## highlight possible errors and parameters
# color brightwhite "^ *(set|unset|syntax|color).*$"
# icolor brightwhite "^[[:space:]]*(set|unset|syntax|i?color).*$"
## set, unset and syntax
# color cyan "^ *(set|unset) +(autoindent|backup|backupdir|brackets|const|cut|fill|historylog|morespace|mouse|multibuffer|noconvert|nofollow|nohelp|nowrap|operatingdir|preserve|punct|quotestr|rebinddelete|regexp|smarthome|smooth|speller|suspend|tabsize|tempfile)\>"
# color cyan "^ *(set|unset) +(view|whitespace)"
# color green "^ *(set|unset|syntax)\>"
# icolor cyan "^[[:space:]]*(set|unset)[[:space:]]+(autoindent|backup|backupdir|backwards|brackets|casesensitive|const|cut|fill|historylog|morespace|mouse|multibuffer|noconvert|nofollow|nohelp|nonewlines|nowrap|operatingdir|preserve|punct|quickblank)\>" "^[[:space:]]*(set|unset)[[:space:]]+(quotestr|rebinddelete|rebindkeypad|regexp|smarthome|smooth|speller|suspend|tabsize|tabstospaces|tempfile|view|whitespace|wordbounds)\>"
# icolor green "^[[:space:]]*(set|unset|syntax)\>"
## colors
# color yellow "^ *color +(bright)?(white|black|red|blue|green|yellow|magenta|cyan)(,(white|black|red|blue|green|yellow|magenta|cyan))?\>"
# color magenta "^ *color\>" "\<(start|end)="
# icolor yellow "^[[:space:]]*i?color[[:space:]]*(bright)?(white|black|red|blue|green|yellow|magenta|cyan)?(,(white|black|red|blue|green|yellow|magenta|cyan))?\>"
# icolor magenta "^[[:space:]]*i?color\>" "\<(start|end)="
## strings
# color white "\"(\\.|[^\"])*\""
# icolor white "\"(\\.|[^\"])*\""
## comments
# color blue "^ *#.*$"
# icolor blue "^[[:space:]]*#.*$"

View File

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

View File

@@ -8,8 +8,8 @@
@c Run `makeinfo' rather than `texinfo-format-buffer'.
@smallbook
@set EDITION 0.1
@set VERSION 1.3.7
@set UPDATED 26 Mar 2005
@set VERSION 1.3.10
@set UPDATED 28 Nov 2005
@dircategory Editors
@direntry
@@ -23,7 +23,7 @@
@titlepage
@title GNU @code{nano}
@subtitle a small and friendly text editor.
@subtitle version 1.3.7
@subtitle version 1.3.10
@author Chris Allegretta
@page
@@ -91,7 +91,7 @@ internationalization support, and filename tab completion.
@node Overview, Command Line Options, Introduction, Introduction
@section Overview
@code{nano} +LINE [GNU long option] [option] [ @var{file ...} ]
@code{nano} +LINE,COLUMN [GNU long option] [option] [ @var{file ...} ]
The original goal for @code{nano} was a complete bug-for-bug compatible
emulation of Pico, but @code{nano}'s main goal is to be as compatible as
@@ -106,8 +106,9 @@ Email bug reports to @email{nano@@nano-editor.org}.
@code{nano} takes the following options from the command line:
@table @code
@item +LINE
Start at line number LINE instead of the default of line 1.
@item +LINE,COLUMN
Start at line number LINE and column number COLUMN instead of the
default of line 1, column 1.
@item -?
Same as @code{-h, --help}.
@@ -123,10 +124,13 @@ line.
When saving a file, back up the previous version of it to the current
filename suffixed with a ~.
@item -E, --backupdir=[dir]
Set the directory where @code{nano} puts the backup files if file
@item -C, --backupdir=[dir]
Set the directory where @code{nano} puts unique backup files if file
backups are enabled.
@item -E, --tabstospaces
Convert typed tabs to spaces.
@item -F, --multibuffer
Enable multiple file buffers, if available.
@@ -134,8 +138,16 @@ Enable multiple file buffers, if available.
Don't look at SYSCONFDIR/nanorc or ~/.nanorc, if nanorc support is
available.
@item -K, --rebindkeypad
Interpret the numeric keypad keys so that they all work properly. You
should only need to use this option if they don't, as mouse support
won't work properly with this option enabled.
@item -L, --nonewlines
Don't add newlines to the ends of files.
@item -N, --noconvert
Do not convert files from DOS/Mac format.
Don't convert files from DOS/Mac format.
@item -Q [str], --quotestr [str]
Set the quoting string for justifying. The default is
@@ -147,31 +159,38 @@ Set the quoting string for justifying. The default is
if regular expression support is available, or ``> '' otherwise. Note
that @code{\t} above stands for a literal Tab character.
@item -R, --regexp
Turn on regular expression search and search/replace.
@item -S, --smooth
Enable smooth scrolling.
@item -T [num], --tabsize=[#cols]
Set the displayed tab length to [#cols] columns.
@item -V, --version
Print the version number and copyright and quit.
@item -Y, --syntax=[str]
Specify a specific syntax highlighting from the .nanorc to use, if
available.
@item -Z, --restricted
@item -R, --restricted
Restricted mode: Don't read or write to any file not specified on the
command line, read any nanorc files, allow suspending, or allow a file
to be appended to, prepended to, or saved under a different name if it
already has one. Also accessible by invoking @code{nano} with any name
beginning with 'r' (e.g. "rnano").
@item -S, --smooth
Enable smooth scrolling.
@item -T [num], --tabsize=[#cols]
Set the displayed tab length to #cols columns. The value of #cols must
be greater than 0. The default value is 8.
@item -U, --quickblank
Do quick statusbar blanking. Statusbar messages will disappear after 1
keystroke instead of 25. Note that -c cancels this out.
@item -V, --version
Print the version number and copyright and quit.
@item -W, --wordbounds
Detect word boundaries more accurately by treating punctuation
characters as part of a word.
@item -Y, --syntax=[str]
Specify a specific syntax highlighting from the nanorc to use, if
available.
@item -c, --const
Constantly display the cursor position and line number on the statusbar.
Note that this cancels out -U.
@item -d, --rebinddelete
Interpret the Delete key differently so that both Backspace and Delete
@@ -205,10 +224,10 @@ Preserve the ^Q (XON) and ^S (XOFF) sequences so data being sent to the
editor can be can be stopped and started.
@item -r [#cols], --fill=[#cols].
Wrap lines at column #cols. By default this is the width of the screen,
less eight. If this value is negative, wrapping will occur at #cols
from the right of the screen, allowing it to vary along with the screen
width if the screen is resized.
Wrap lines at column #cols. If this value is 0 or less, wrapping will
occur at #cols less the width of the screen, allowing it to vary along
with the width of the screen if the screen is resized. The default
value is -8.
@item -s [prog], --speller=[prog]
Invoke [prog] as the spell checker. By default, @code{nano} uses the
@@ -217,7 +236,7 @@ set, its own interactive spell checker that requires the @code{spell}
program to be installed on your system.
@item -t, --tempfile
Do not ask whether or not to save the current contents of the file when
Don't ask whether or not to save the current contents of the file when
exiting, assume yes. This is most useful when using @code{nano} as the
composer of a mailer program.
@@ -231,16 +250,16 @@ Note: When accessing the help system, Expert Mode is temporarily
disabled to display the help system navigation keys.
@item -v, --view
Do not allow the contents of the file to be altered. Note that this
flag should NOT be used in place of correct file permissions to
Don't allow the contents of the file to be altered. Note that this
option should NOT be used in place of correct file permissions to
implement a read-only file.
@item -w, --nowrap
Do not wrap long lines at any length. This option overrides any value
Don't wrap long lines at any length. This option overrides any value
for -r.
@item -z, --suspend
Enable suspend ability of @code{nano} using the system's suspend
Enable @code{nano}'s suspend ability using the system's suspend
keystroke (usually ^Z).
@item -a, -b, -e, -f, -g, -j
@@ -334,44 +353,61 @@ and ^V (Page Down) keys. ^X exits the help system.
@chapter Feature Toggles
Toggles allow you to change certain aspects of the editor that
would normally be done via command line flags. They are invoked via
would normally be done via command line options. They are invoked via
certain Meta key sequences. @xref{Special Functions}, for more info.
The following global toggles are available:
@table @code
@item Backup File Toggle (Meta-B)
toggles the -B (@code{--backup}) command line flag.
@item Backup Files Toggle (Meta-B)
toggles the -B (@code{--backup}) command line option.
@item Constant Cursor Position Display Toggle (Meta-C)
toggles the -c (@code{--const}) command line option.
@item Multiple File Buffers Toggle (Meta-F)
toggles the -F (@code{--multibuffer}) command line flag.
toggles the -F (@code{--multibuffer}) command line option.
@item Backup File Toggle (Meta-H)
toggles the -A (@code{--smarthome}) command line flag.
@item Smart Home Key Toggle (Meta-H)
toggles the -A (@code{--smarthome}) command line option.
@item Auto Indent Toggle (Meta-I)
toggles the -i (@code{--autoindent}) command line flag.
toggles the -i (@code{--autoindent}) command line option.
@item Cut To End Toggle (Meta-K)
toggles the -k (@code{--cut}) command line flag.
toggles the -k (@code{--cut}) command line option.
@item Auto Line Wrap Toggle (Meta-L)
toggles the -w (@code{--nowrap}) command line flag.
@item Long Line Wrapping Toggle (Meta-L)
toggles the -w (@code{--nowrap}) command line option.
@item Mouse Toggle (Meta-M)
toggles the -m (@code{--mouse}) command line flag.
@item Mouse Support Toggle (Meta-M)
toggles the -m (@code{--mouse}) command line option.
@item More Space Toggle (Meta-O)
toggles the -O (@code{--morespace}) command line flag.
@item No Conversion From DOS/Mac Format Toggle (Meta-N)
toggles the -N (@code{--noconvert}) command line option.
@item More Space For Editing Toggle (Meta-O)
toggles the -O (@code{--morespace}) command line option.
@item Whitespace Display Toggle (Meta-P)
toggles whitespace display mode if you have a "whitespace" option in
your nanorc.
@item Tabs to Spaces Toggle (Meta-Q)
toggles the -E (@code{--tabstospaces}) command line option.
@item Smooth Scrolling Toggle (Meta-S)
toggles the -S (@code{--smooth}) command line flag.
toggles the -S (@code{--smooth}) command line option.
@item Expert/Nohelp Toggle (Meta-X)
toggles the -x (@code{--nohelp}) command line flag.
@item Expert/No Help Toggle (Meta-X)
toggles the -x (@code{--nohelp}) command line option.
@item Color Syntax Highlighting Toggle (Meta-Y)
toggles color syntax highlighting if you have color syntaxes in your
nanorc.
@item Suspend Toggle (Meta-Z)
toggles the -z (@code{--suspend}) command line flag.
toggles the -z (@code{--suspend}) command line option.
@end table
@@ -405,11 +441,11 @@ incompatible with Pico, method for entering search and replace strings.
In the old method, previous entries would be displayed by default as
editable text in front of the cursor, as opposed to being bracketed and
uneditable as it is in Pico. The old behavior could be made compatible
with Pico via the @code{-p} flag, but recent versions of Pico use the
@code{-p} flag to preserve the XON and XOFF sequences within the editor.
Since with the new method search and replace strings can still be edited
by simply hitting the up arrow key once, the old method was removed
completely.
with Pico via the @code{-p} option, but recent versions of Pico use the
@code{-p} option to preserve the XON and XOFF sequences within the
editor. Since with the new method search and replace strings can still
be edited by simply hitting the up arrow key once, the old method was
removed completely.
@item Writing or Appending Selected Text to Files
@@ -456,50 +492,83 @@ familiar with compiling programs with autoconf support:
@item make install
@end itemize
if you are looking to optimize @code{nano} for size, you may want to
consider the following command line options:
@table @code
@item --disable-browser
Disable the mini file browser when reading or writing files.
@item --disable-help
Disable the help function. Doing this makes the binary much smaller,
but makes it difficult for new users to learn more than very basic
things about using the editor.
@item --disable-justify
Disable the justify and unjustify functions.
@item --disable-mouse
Disable all mouse functionality. This also disables the -m command line
option, which enables the mouse functionality.
@item --disable-operatingdir
Disable setting the operating directory. This also disables the -o
command line option, which sets the operating directory.
@item --disable-speller
Disable use of the spell checker. This also disables the -s command
line option, which allows specifying an alternate spell checker.
@item --disable-tabcomp
Disable the tab completion code when reading or writing files.
@item --disable-justify
Disable the justify (^J)/unjustify (^U) functions in the editor.
@item --disable-speller
Disable spell checker ability.
@item --disable-help
Disable the help function (^G). Disabling this option makes the binary
much smaller, but makes it difficult for new users to learn more than
very basic things about using the editor.
@item --disable-browser
Disable the mini file browser (^T) when reading or writing files.
@item --disable-mouse
Disable all mouse functionality. This also disables the -m command line
flag, which enables the mouse functions.
@item --disable-operatingdir
Disable setting the operating directory. This also disables the -o
command line flag.
@item --disable-wrapping
Disable all long line wrapping. This also eliminates the -w command
line option, which enables long line wrapping.
@item --enable-tiny
This option disables all the above. It also disables some of the larger
internals of the editor, like the marker code (^^) and the cut to line
(-k) option, which depends on the marker code to work properly. It also
disables the function toggles.
internals of the editor, like the marking code and the cut to line code.
It also disables the function toggles.
@item --disable-wrapping
Disable all word wrapping in the editor. This also eliminates the -w
command line flag, as nonwrapping is then the default behavior.
@item --enable-debug
Enable support for runtime debug output. This can get pretty messy, so
chances are you only want this feature to work on the nano source.
@item --enable-extra
Enable extra features. At the moment, this is just easter egg-type
stuff.
@item --enable-color
Enable support for syntax coloring of files. See the nanorc
documentation for more details. The nanorc feature will also be
enabled.
@item --enable-multibuffer
Enable support for opening multiple files at a time and switching
between them on the fly.
@item --enable-nanorc
Enable support for reading the nanorc file at startup. You can store
custom settings in the nanorc file rather than having to pass command
line options to get desired behavior.
@item --enable-all
Shortcut for enabling the above four features (extra, color,
multibuffer, and nanorc).
@item --disable-nls
Disables Native Language support. This will make the available GNU
@code{nano} translations unusable.
Disables Native Language support. This will disable use of the
available GNU @code{nano} translations.
@item --disable-wrapping-as-root
Disable long line wrapping by default when nano is run as root.
@item --enable-utf8
Enable support for reading and writing Unicode files. This will require
either the wide version of ncurses, or a UTF-8-enabled version of Slang.
@item --disable-utf8
Disable support for reading and writing Unicode files.
@item --with-slang
Compiling @code{nano} with Slang is supported, and will make the binary

View File

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

View File

@@ -1,3 +1,131 @@
2005-12-21 Jordi Mallach <jordi@gnu.org>
* bg.po: Updated Bulgarian translation by Anton Zinoviev.
* ca.po: Updated Catalan translation.
* fr.po: Updated French translation by Jean-Philippe Guérard.
* ms.po: Updated Malay translation by Sharuzzaman Ahmat Raslan.
* zh_TW: Updated Traditional Chinese translation by
Wei-Lun Chao.
2005-12-13 Jordi Mallach <jordi@gnu.org>
* it.po: Updated Italian translation by Marco Colombo.
* de.po: Updated German translation by Michael Piefel.
* nl.po: Updated Dutch translation by Benno Schulenberg.
2005-11-08 David Lawrence Ramsey <pooka109@cox.net>
* POTFILES.in: Add prompt.c.
2005-11-05 David Lawrence Ramsey <pooka109@cox.net>
* POTFILES.in: Add browser.c.
2005-11-01 David Lawrence Ramsey <pooka109@cox.net>
* POTFILES.in: Add help.c.
2006-10-23 Jordi Mallach <jordi@gnu.org>
* ca.po: Updated Catalan translation.
* eu.po: Updated Basque translation by Mikel Olasagasti.
* fr.po: Updated French translation by Jean-Philippe Guérard.
* it.po: Updated Italian translation by Marco Colombo.
* ms.po: Updated Malay translation by Sharuzzaman Ahmat Raslan.
* nl.po: Updated Dutch translation by Benno Schulenberg.
* zh_TW: Updated Traditional Chinese translation by
Wei-Lun Chao.
2006-08-22 Jordi Mallach <jordi@gnu.org>
* bg.po: New Bulgarian translation by
Yavor Doganov <yavor@doganov.org>.
* LINGUAS: Added "bg".
2005-08-16 Jordi Mallach <jordi@gnu.org>
* ca.po: Updated Catalan translation.
2005-08-16 Jordi Mallach <jordi@gnu.org>
* nl.po: Updated Dutch translation by
Benno Schulenberg and Reinout van Schouwen.
2005-07-24 David Lawrence Ramsey <pooka109@cox.net>
* POTFILES.in: Add text.c.
2005-07-19 Jordi Mallach <jordi@gnu.org>
* ms.po: Updated Malay translation by
Sharuzzaman Ahmat Raslan.
2005-07-18 Jordi Mallach <jordi@gnu.org>
* fr.po: Updated French translation by
Jean-Philippe Guérard.
2005-07-07 Jordi Mallach <jordi@gnu.org>
* it.po: Updated Italian translation by Marco Colombo.
* ca.po: Updated Catalan translation.
2005-06-28 David Lawrence Ramsey <pooka109@cox.net>
* POTFILES.in: Remove source files that contain no translatable
strings.
2005-06-19 David Lawrence Ramsey <pooka109@cox.net>
* pt_BR.po: Typo fix.
2005-06-15 Jordi Mallach <jordi@gnu.org>
* de.po: Typo fix by Jens Seidel.
2005-05-23 Jordi Mallach <jordi@gnu.org>
* fr.po: Updated French translation by
Jean-Philippe Guérard.
2005-04-27 Jordi Mallach <jordi@gnu.org>
* ms.po: Updated Malay translation by
Sharuzzaman Ahmat Raslan.
2005-04-22 Jordi Mallach <jordi@gnu.org>
* ca.po: Updated Norwegian bokmål translation by
Geir Helland.
2005-04-20 Jordi Mallach <jordi@gnu.org>
* ms.po: Updated Malay translation by
Sharuzzaman Ahmat Raslan.
* ro.po: Updated Romanian translation by Laurentiu Buzdugan.
* zh_TW.po: Updated Traditional Chinese translation by
CHAO Wei-Lun.
2005-04-18 Jordi Mallach <jordi@gnu.org>
* vi.po: Updated Vietnamese translation by Phan Vinh Thinh.
2005-04-18 Jordi Mallach <jordi@gnu.org>
* ca.po: Updated Catalan translation.
* it.po: Updated Italian translation by Marco Colombo.
* ro.po: Updated Romanian translation by Laurentiu Buzdugan.
2005-04-14 Jordi Mallach <jordi@gnu.org>
* es.po: Updated Spanish translation by
Ricardo Javier Cárdenes Medina.
2005-04-13 Jordi Mallach <jordi@gnu.org>
* vi.po: New Vietnamese translation by Phan Vinh Thinh.
* LINGUAS: Added "vi".
2005-04-09 Jordi Mallach <jordi@gnu.org>
* zh_TW.po: Added Plural-Forms header and fix format specification

View File

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

View File

@@ -1,17 +1,14 @@
# $Id$
# List of source files containing translatable strings.
# Package source files
src/cut.c
src/browser.c
src/files.c
src/global.c
src/move.c
src/help.c
src/nano.c
src/prompt.c
src/rcfile.c
src/search.c
src/text.c
src/utils.c
src/winio.c
# Package header files
src/nano.h
src/proto.h

1660
po/bg.po Normal file

File diff suppressed because it is too large Load Diff

1343
po/ca.po

File diff suppressed because it is too large Load Diff

1516
po/de.po

File diff suppressed because it is too large Load Diff

1156
po/es.po

File diff suppressed because it is too large Load Diff

1545
po/eu.po

File diff suppressed because it is too large Load Diff

1497
po/fr.po

File diff suppressed because it is too large Load Diff

1351
po/it.po

File diff suppressed because it is too large Load Diff

1802
po/ms.po

File diff suppressed because it is too large Load Diff

1144
po/nb.po

File diff suppressed because it is too large Load Diff

2912
po/nl.po

File diff suppressed because it is too large Load Diff

View File

@@ -1333,7 +1333,7 @@ msgstr ""
"Cor %s não foi entendida.\n"
"Cores válidas são \"green\" (verde), \"red\" (vermelho), \n"
"\"blue\" (azul), \"yellow\" (amarelo), \"cyan\" (ciano), \n"
"\"magente\" (maguenta) e \"black\" (preto), com o prefixo \n"
"\"magenta\" (maguenta) e \"black\" (preto), com o prefixo \n"
"opcional \"bright\" (claro) para cores de fundo."
#: src/rcfile.c:253 src/search.c:61

435
po/ro.po

File diff suppressed because it is too large Load Diff

View File

@@ -5,19 +5,20 @@
#
# Copyright (C) 2000 Free Software Foundation.
#
# This script is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
# This script is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or (at
# your option) any later version.
#
# This script is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# This script is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this library; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301,
# USA.
#
# Authors: Kenneth Christiansen <kenneth@gnu.org>
#

1548
po/vi.po Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -4,17 +4,21 @@ INCLUDES = -Iintl -DLOCALEDIR=\"$(localedir)\" -DSYSCONFDIR=\"$(sysconfdir)\"
ACLOCAL_AMFLAGS = -I m4
bin_PROGRAMS = nano
nano_SOURCES = chars.c \
nano_SOURCES = browser.c \
chars.c \
color.c \
cut.c \
files.c \
global.c \
help.c \
move.c \
nano.c \
nano.h \
prompt.c \
proto.h \
rcfile.c \
search.c \
text.c \
utils.c \
winio.c

539
src/browser.c Normal file
View File

@@ -0,0 +1,539 @@
/* $Id$ */
/**************************************************************************
* browser.c *
* *
* Copyright (C) 2001-2004 Chris Allegretta *
* Copyright (C) 2005 David Lawrence Ramsey *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2, or (at your option) *
* any later version. *
* *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the Free Software *
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
* 02110-1301, USA. *
* *
**************************************************************************/
#include "proto.h"
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#ifndef DISABLE_BROWSER
/* Our browser function. path is the path to start browsing from.
* Assume path has already been tilde-expanded. */
char *do_browser(char *path, DIR *dir)
{
int kbinput, longest, selected, width;
bool meta_key, func_key, old_const_update = ISSET(CONST_UPDATE);
size_t numents;
char **filelist, *retval = NULL;
curs_set(0);
blank_statusbar();
bottombars(browser_list);
wnoutrefresh(bottomwin);
#if !defined(DISABLE_HELP) || !defined(DISABLE_MOUSE)
/* Set currshortcut so the user can click in the shortcut area, and
* so the browser help screen will come up. */
currshortcut = browser_list;
#endif
UNSET(CONST_UPDATE);
change_browser_directory:
/* We go here after the user selects a new directory. */
kbinput = ERR;
selected = 0;
width = 0;
path = mallocstrassn(path, get_full_path(path));
/* Assume that path exists and ends with a slash. */
assert(path != NULL && path[strlen(path) - 1] == '/');
/* Get the list of files. */
filelist = browser_init(path, &longest, &numents, dir);
assert(filelist != NULL);
/* Sort the list. */
qsort(filelist, numents, sizeof(char *), diralphasort);
titlebar(path);
do {
bool abort = FALSE;
int j, col = 0, editline = 0, fileline;
int filecols = 0;
/* Used only if width == 0, to calculate the number of files
* per row below. */
struct stat st;
char *new_path;
/* Used by the "Go To Directory" prompt. */
#ifndef DISABLE_MOUSE
MEVENT mevent;
#endif
check_statusblank();
/* Compute the line number we're on now, so that we don't divide
* by zero later. */
fileline = selected;
if (width != 0)
fileline /= width;
switch (kbinput) {
#ifndef DISABLE_MOUSE
case KEY_MOUSE:
if (getmouse(&mevent) == ERR)
break;
/* If we clicked in the edit window, we probably clicked
* on a file. */
if (wenclose(edit, mevent.y, mevent.x)) {
int old_selected = selected;
/* Subtract out the size of topwin. */
mevent.y -= 2 - no_more_space();
/* longest is the width of each column. There are
* two spaces between each column. */
selected = (fileline / editwinrows) * editwinrows *
width + mevent.y * width + mevent.x /
(longest + 2);
/* If they clicked beyond the end of a row, select
* the end of that row. */
if (mevent.x > width * (longest + 2))
selected--;
/* If we're off the screen, reset to the last item.
* If we clicked the same place as last time, select
* this name! */
if (selected > numents - 1)
selected = numents - 1;
else if (old_selected == selected)
/* Put back the 'select' key. */
unget_kbinput(NANO_ENTER_KEY, FALSE, FALSE);
} else {
/* We must have clicked a shortcut. Put back the
* equivalent shortcut key. */
int mouse_x, mouse_y;
get_mouseinput(&mouse_x, &mouse_y, TRUE);
}
break;
#endif
case NANO_PREVLINE_KEY:
if (selected >= width)
selected -= width;
break;
case NANO_BACK_KEY:
if (selected > 0)
selected--;
break;
case NANO_NEXTLINE_KEY:
if (selected + width <= numents - 1)
selected += width;
break;
case NANO_FORWARD_KEY:
if (selected < numents - 1)
selected++;
break;
case NANO_PREVPAGE_KEY:
case NANO_PREVPAGE_FKEY:
case '-': /* Pico compatibility. */
if (selected >= (editwinrows + fileline % editwinrows) *
width)
selected -= (editwinrows + fileline % editwinrows) *
width;
else
selected = 0;
break;
case NANO_NEXTPAGE_KEY:
case NANO_NEXTPAGE_FKEY:
case ' ': /* Pico compatibility. */
selected += (editwinrows - fileline % editwinrows) *
width;
if (selected >= numents)
selected = numents - 1;
break;
case NANO_HELP_KEY:
case NANO_HELP_FKEY:
case '?': /* Pico compatibility. */
#ifndef DISABLE_HELP
do_help();
curs_set(0);
#else
nano_disabled_msg();
#endif
break;
case NANO_ENTER_KEY:
case 'S': /* Pico compatibility. */
case 's':
/* You can't move up from "/". */
if (strcmp(filelist[selected], "/..") == 0) {
statusbar(_("Can't move up a directory"));
beep();
break;
}
#ifndef DISABLE_OPERATINGDIR
/* Note: the selected file can be outside the operating
* directory if it's ".." or if it's a symlink to a
* directory outside the operating directory. */
if (check_operating_dir(filelist[selected], FALSE)) {
statusbar(
_("Can't go outside of %s in restricted mode"),
operating_dir);
beep();
break;
}
#endif
if (stat(filelist[selected], &st) == -1) {
/* We can't open this file for some reason.
* Complain. */
statusbar(_("Error reading %s: %s"),
filelist[selected], strerror(errno));
beep();
break;
}
if (!S_ISDIR(st.st_mode)) {
retval = mallocstrcpy(retval, filelist[selected]);
abort = TRUE;
break;
}
dir = opendir(filelist[selected]);
if (dir == NULL) {
/* We can't open this dir for some reason.
* Complain. */
statusbar(_("Error reading %s: %s"),
filelist[selected], strerror(errno));
beep();
break;
}
path = mallocstrcpy(path, filelist[selected]);
/* Start over again with the new path value. */
free_chararray(filelist, numents);
goto change_browser_directory;
/* Redraw the screen. */
case NANO_REFRESH_KEY:
total_redraw();
break;
/* Go to a specific directory. */
case NANO_GOTOLINE_KEY:
case NANO_GOTOLINE_FKEY:
case 'G': /* Pico compatibility. */
case 'g':
curs_set(1);
j = do_prompt(FALSE, gotodir_list, "",
#ifndef NANO_TINY
NULL,
#endif
_("Go To Directory"));
curs_set(0);
bottombars(browser_list);
if (j < 0) {
statusbar(_("Cancelled"));
break;
}
new_path = real_dir_from_tilde(answer);
if (new_path[0] != '/') {
new_path = charealloc(new_path, strlen(path) +
strlen(answer) + 1);
sprintf(new_path, "%s%s", path, answer);
}
#ifndef DISABLE_OPERATINGDIR
if (check_operating_dir(new_path, FALSE)) {
statusbar(
_("Can't go outside of %s in restricted mode"),
operating_dir);
free(new_path);
break;
}
#endif
dir = opendir(new_path);
if (dir == NULL) {
/* We can't open this dir for some reason.
* Complain. */
statusbar(_("Error reading %s: %s"), answer,
strerror(errno));
beep();
free(new_path);
break;
}
/* Start over again with the new path value. */
free(path);
path = new_path;
free_chararray(filelist, numents);
goto change_browser_directory;
/* Abort the browser. */
case NANO_EXIT_KEY:
case NANO_EXIT_FKEY:
case 'E': /* Pico compatibility. */
case 'e':
abort = TRUE;
break;
}
if (abort)
break;
blank_edit();
j = (width != 0) ? width * editwinrows * ((selected / width) /
editwinrows) : 0;
wmove(edit, 0, 0);
{
size_t foo_len = mb_cur_max() * 7;
char *foo = charalloc(foo_len + 1);
for (; j < numents && editline <= editwinrows - 1; j++) {
char *disp = display_string(tail(filelist[j]), 0,
longest, FALSE);
/* Highlight the currently selected file/dir. */
if (j == selected)
wattron(edit, A_REVERSE);
blank_line(edit, editline, col, longest);
mvwaddstr(edit, editline, col, disp);
free(disp);
col += longest;
filecols++;
/* Show file info also. We don't want to report file
* sizes for links, so we use lstat(). Also, stat() and
* lstat() return an error if, for example, the file is
* deleted while the file browser is open. In that
* case, we report "--" as the file info. */
if (lstat(filelist[j], &st) == -1 ||
S_ISLNK(st.st_mode)) {
/* Aha! It's a symlink! Now, is it a dir? If so,
* mark it as such. */
if (stat(filelist[j], &st) == 0 &&
S_ISDIR(st.st_mode)) {
strncpy(foo, _("(dir)"), foo_len);
foo[foo_len] = '\0';
} else
strcpy(foo, "--");
} else if (S_ISDIR(st.st_mode)) {
strncpy(foo, _("(dir)"), foo_len);
foo[foo_len] = '\0';
} else if (st.st_size < (1 << 10)) /* less than 1 k. */
sprintf(foo, "%4u B", (unsigned int)st.st_size);
else if (st.st_size < (1 << 20)) /* less than 1 meg. */
sprintf(foo, "%4u KB",
(unsigned int)(st.st_size >> 10));
else if (st.st_size < (1 << 30)) /* less than 1 gig. */
sprintf(foo, "%4u MB",
(unsigned int)(st.st_size >> 20));
else
sprintf(foo, "%4u GB",
(unsigned int)(st.st_size >> 30));
mvwaddnstr(edit, editline, col - strlen(foo), foo,
foo_len);
if (j == selected)
wattroff(edit, A_REVERSE);
/* Add some space between the columns. */
col += 2;
/* If the next entry isn't going to fit on the line,
* move to the next line. */
if (col > COLS - longest) {
editline++;
col = 0;
if (width == 0)
width = filecols;
}
wmove(edit, editline, col);
}
free(foo);
}
wnoutrefresh(edit);
} while ((kbinput = get_kbinput(edit, &meta_key, &func_key)) !=
NANO_EXIT_KEY && kbinput != NANO_EXIT_FKEY);
blank_edit();
titlebar(NULL);
edit_refresh();
curs_set(1);
if (old_const_update)
SET(CONST_UPDATE);
/* Clean up. */
free_chararray(filelist, numents);
free(path);
return retval;
}
/* Return a list of files contained in the directory path. *longest is
* the maximum display length of a file, up to COLS - 1 (but at least
* 7). *numents is the number of files. We assume path exists and is a
* directory. If neither is true, we return NULL. */
char **browser_init(const char *path, int *longest, size_t *numents, DIR
*dir)
{
const struct dirent *nextdir;
char **filelist;
size_t i = 0, path_len;
assert(dir != NULL);
*longest = 0;
while ((nextdir = readdir(dir)) != NULL) {
size_t dlen;
/* Don't show the "." entry. */
if (strcmp(nextdir->d_name, ".") == 0)
continue;
i++;
dlen = strlenpt(nextdir->d_name);
if (dlen > *longest)
*longest = (dlen > COLS - 1) ? COLS - 1 : dlen;
}
*numents = i;
rewinddir(dir);
*longest += 10;
filelist = (char **)nmalloc(*numents * sizeof(char *));
path_len = strlen(path);
i = 0;
while ((nextdir = readdir(dir)) != NULL && i < *numents) {
/* Don't show the "." entry. */
if (strcmp(nextdir->d_name, ".") == 0)
continue;
filelist[i] = charalloc(path_len + strlen(nextdir->d_name) + 1);
sprintf(filelist[i], "%s%s", path, nextdir->d_name);
i++;
}
/* Maybe the number of files in the directory changed between the
* first time we scanned and the second. i is the actual length of
* filelist, so record it. */
*numents = i;
closedir(dir);
if (*longest > COLS - 1)
*longest = COLS - 1;
if (*longest < 7)
*longest = 7;
return filelist;
}
/* The file browser front end. We check to see if inpath has a dir in
* it. If it does, we start do_browser() from there. Otherwise, we
* start do_browser() from the current directory. */
char *do_browse_from(const char *inpath)
{
struct stat st;
char *path;
/* This holds the tilde-expanded version of inpath. */
DIR *dir = NULL;
assert(inpath != NULL);
path = real_dir_from_tilde(inpath);
/* Perhaps path is a directory. If so, we'll pass it to
* do_browser(). Or perhaps path is a directory / a file. If so,
* we'll try stripping off the last path element and passing it to
* do_browser(). Or perhaps path doesn't have a directory portion
* at all. If so, we'll just pass the current directory to
* do_browser(). */
if (stat(path, &st) == -1 || !S_ISDIR(st.st_mode)) {
striponedir(path);
if (stat(path, &st) == -1 || !S_ISDIR(st.st_mode)) {
free(path);
path = charalloc(PATH_MAX + 1);
path = getcwd(path, PATH_MAX + 1);
if (path != NULL)
align(&path);
}
}
#ifndef DISABLE_OPERATINGDIR
/* If the resulting path isn't in the operating directory, use
* the operating directory instead. */
if (check_operating_dir(path, FALSE)) {
if (path != NULL)
free(path);
path = mallocstrcpy(NULL, operating_dir);
}
#endif
if (path != NULL)
dir = opendir(path);
if (dir == NULL) {
beep();
free(path);
return NULL;
}
return do_browser(path, dir);
}
/* Strip one directory from the end of path. */
void striponedir(char *path)
{
char *tmp;
assert(path != NULL);
tmp = strrchr(path, '/');
if (tmp != NULL)
*tmp = '\0';
}
#endif /* !DISABLE_BROWSER */

View File

@@ -2,41 +2,61 @@
/**************************************************************************
* chars.c *
* *
* Copyright (C) 2005 Chris Allegretta *
* Copyright (C) 2001-2004 Chris Allegretta *
* Copyright (C) 2005 David Lawrence Ramsey *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2, or (at your option) *
* any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the Free Software *
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
* 02110-1301, USA. *
* *
**************************************************************************/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "proto.h"
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <assert.h>
#include "proto.h"
#include "nano.h"
#ifdef NANO_WIDE
#ifdef ENABLE_UTF8
#ifdef HAVE_WCHAR_H
#include <wchar.h>
#endif
#ifdef HAVE_WCTYPE_H
#include <wctype.h>
#endif
static const wchar_t bad_wchar = 0xFFFD;
/* If we get an invalid multibyte sequence, we treat it as
* Unicode FFFD (Replacement Character), unless we're
* determining if it's a control character or searching for a
* match to it. */
static const char *bad_mbchar = "\xEF\xBF\xBD";
static const int bad_mbchar_len = 3;
#endif
#ifndef HAVE_ISBLANK
/* This function is equivalent to isblank(). */
bool nisblank(int c)
{
return isspace(c) && (c == '\t' || !is_cntrl_char(c));
}
#endif
#if !defined(HAVE_ISWBLANK) && defined(ENABLE_UTF8)
/* This function is equivalent to iswblank(). */
bool niswblank(wchar_t wc)
{
return iswspace(wc) && (wc == '\t' || !is_cntrl_wchar(wc));
}
#endif
/* Return TRUE if the value of c is in byte range, and FALSE
@@ -46,51 +66,24 @@ bool is_byte(int c)
return ((unsigned int)c == (unsigned char)c);
}
/* This function is equivalent to isalnum(). */
bool is_alnum_char(int c)
{
return isalnum(c);
}
/* This function is equivalent to isalnum() for multibyte characters. */
bool is_alnum_mbchar(const char *c)
{
assert(c != NULL);
#ifdef NANO_WIDE
if (!ISSET(NO_UTF8)) {
#ifdef ENABLE_UTF8
if (ISSET(USE_UTF8)) {
wchar_t wc;
int c_mb_len = mbtowc(&wc, c, MB_CUR_MAX);
if (c_mb_len <= 0) {
if (mbtowc(&wc, c, MB_CUR_MAX) < 0) {
mbtowc(NULL, NULL, 0);
wc = (unsigned char)*c;
wc = bad_wchar;
}
return is_alnum_wchar(wc);
return iswalnum(wc);
} else
#endif
return is_alnum_char((unsigned char)*c);
}
#ifdef NANO_WIDE
/* This function is equivalent to isalnum() for wide characters. */
bool is_alnum_wchar(wchar_t wc)
{
return iswalnum(wc);
}
#endif
/* This function is equivalent to isblank(). */
bool is_blank_char(int c)
{
return
#ifdef HAVE_ISBLANK
isblank(c)
#else
isspace(c) && (c == '\t' || !is_cntrl_char(c))
#endif
;
return isalnum((unsigned char)*c);
}
/* This function is equivalent to isblank() for multibyte characters. */
@@ -98,68 +91,30 @@ bool is_blank_mbchar(const char *c)
{
assert(c != NULL);
#ifdef NANO_WIDE
if (!ISSET(NO_UTF8)) {
#ifdef ENABLE_UTF8
if (ISSET(USE_UTF8)) {
wchar_t wc;
int c_mb_len = mbtowc(&wc, c, MB_CUR_MAX);
if (c_mb_len <= 0) {
if (mbtowc(&wc, c, MB_CUR_MAX) < 0) {
mbtowc(NULL, NULL, 0);
wc = (unsigned char)*c;
wc = bad_wchar;
}
return is_blank_wchar(wc);
return iswblank(wc);
} else
#endif
return is_blank_char((unsigned char)*c);
return isblank((unsigned char)*c);
}
#ifdef NANO_WIDE
/* This function is equivalent to isblank() for wide characters. */
bool is_blank_wchar(wchar_t wc)
{
return
#ifdef HAVE_ISWBLANK
iswblank(wc)
#else
iswspace(wc) && (wc == '\t' || !is_cntrl_wchar(wc))
#endif
;
}
#endif
/* This function is equivalent to iscntrl(), except in that it also
* handles control characters with their high bits set. */
* handles high-bit control characters. */
bool is_cntrl_char(int c)
{
return (-128 <= c && c < -96) || (0 <= c && c < 32) ||
(127 <= c && c < 160);
}
/* This function is equivalent to iscntrl() for multibyte characters,
* except in that it also handles multibyte control characters with
* their high bits set. */
bool is_cntrl_mbchar(const char *c)
{
assert(c != NULL);
#ifdef NANO_WIDE
if (!ISSET(NO_UTF8)) {
wchar_t wc;
int c_mb_len = mbtowc(&wc, c, MB_CUR_MAX);
if (c_mb_len <= 0) {
mbtowc(NULL, NULL, 0);
wc = (unsigned char)*c;
}
return is_cntrl_wchar(wc);
} else
#endif
return is_cntrl_char((unsigned char)*c);
}
#ifdef NANO_WIDE
#ifdef ENABLE_UTF8
/* This function is equivalent to iscntrl() for wide characters, except
* in that it also handles wide control characters with their high bits
* set. */
@@ -169,10 +124,66 @@ bool is_cntrl_wchar(wchar_t wc)
}
#endif
/* c is a control character. It displays as ^@, ^?, or ^[ch] where ch
* is c + 64. We return that character. */
unsigned char control_rep(unsigned char c)
/* This function is equivalent to iscntrl() for multibyte characters,
* except in that it also handles multibyte control characters with
* their high bits set. */
bool is_cntrl_mbchar(const char *c)
{
assert(c != NULL);
#ifdef ENABLE_UTF8
if (ISSET(USE_UTF8)) {
wchar_t wc;
if (mbtowc(&wc, c, MB_CUR_MAX) < 0) {
mbtowc(NULL, NULL, 0);
wc = bad_wchar;
}
return is_cntrl_wchar(wc);
} else
#endif
return is_cntrl_char((unsigned char)*c);
}
/* This function is equivalent to ispunct() for multibyte characters. */
bool is_punct_mbchar(const char *c)
{
assert(c != NULL);
#ifdef ENABLE_UTF8
if (ISSET(USE_UTF8)) {
wchar_t wc;
int c_mb_len = mbtowc(&wc, c, MB_CUR_MAX);
if (c_mb_len < 0) {
mbtowc(NULL, NULL, 0);
wc = bad_wchar;
}
return iswpunct(wc);
} else
#endif
return ispunct((unsigned char)*c);
}
/* Return TRUE for a multibyte character found in a word (currently only
* an alphanumeric or punctuation character, and only the latter if
* allow_punct is TRUE) and FALSE otherwise. */
bool is_word_mbchar(const char *c, bool allow_punct)
{
assert(c != NULL);
return is_alnum_mbchar(c) || (allow_punct ? is_punct_mbchar(c) :
FALSE);
}
/* c is a control character. It displays as ^@, ^?, or ^[ch], where ch
* is (c + 64). We return that character. */
char control_rep(char c)
{
assert(is_cntrl_char(c));
/* Treat newlines embedded in a line as encoded nulls. */
if (c == '\n')
return '@';
@@ -182,50 +193,13 @@ unsigned char control_rep(unsigned char c)
return c + 64;
}
/* c is a multibyte control character. It displays as ^@, ^?, or ^[ch]
* where ch is c + 64. We return that multibyte character. */
char *control_mbrep(const char *c, char *crep, int *crep_len)
{
assert(c != NULL);
#ifdef NANO_WIDE
if (!ISSET(NO_UTF8)) {
wchar_t wc, wcrep;
int c_mb_len = mbtowc(&wc, c, MB_CUR_MAX), crep_mb_len;
if (c_mb_len <= 0) {
mbtowc(NULL, NULL, 0);
wc = (unsigned char)*c;
}
wcrep = control_wrep(wc);
crep_mb_len = wctomb(crep, wcrep);
if (crep_mb_len <= 0) {
wctomb(NULL, 0);
crep_mb_len = 0;
}
*crep_len = crep_mb_len;
return crep;
} else {
#endif
*crep_len = 1;
*crep = control_rep((unsigned char)*c);
return crep;
#ifdef NANO_WIDE
}
#endif
}
#ifdef NANO_WIDE
/* c is a wide control character. It displays as ^@, ^?, or ^[ch] where
* ch is c + 64. We return that wide character. */
#ifdef ENABLE_UTF8
/* c is a wide control character. It displays as ^@, ^?, or ^[ch],
* where ch is (c + 64). We return that wide character. */
wchar_t control_wrep(wchar_t wc)
{
assert(is_cntrl_wchar(wc));
/* Treat newlines embedded in a line as encoded nulls. */
if (wc == '\n')
return '@';
@@ -236,24 +210,97 @@ wchar_t control_wrep(wchar_t wc)
}
#endif
/* c is a multibyte control character. It displays as ^@, ^?, or ^[ch],
* where ch is (c + 64). We return that multibyte character. If crep
* is an invalid multibyte sequence, it will be replaced with Unicode
* 0xFFFD (Replacement Character). */
char *control_mbrep(const char *c, char *crep, int *crep_len)
{
assert(c != NULL && crep != NULL && crep_len != NULL);
#ifdef ENABLE_UTF8
if (ISSET(USE_UTF8)) {
wchar_t wc;
if (mbtowc(&wc, c, MB_CUR_MAX) < 0) {
mbtowc(NULL, NULL, 0);
*crep_len = bad_mbchar_len;
strncpy(crep, bad_mbchar, *crep_len);
} else {
*crep_len = wctomb(crep, control_wrep(wc));
if (*crep_len < 0) {
wctomb(NULL, 0);
*crep_len = 0;
}
}
} else {
#endif
*crep_len = 1;
*crep = control_rep(*c);
#ifdef ENABLE_UTF8
}
#endif
return crep;
}
/* c is a multibyte non-control character. We return that multibyte
* character. If crep is an invalid multibyte sequence, it will be
* replaced with Unicode 0xFFFD (Replacement Character). */
char *mbrep(const char *c, char *crep, int *crep_len)
{
assert(c != NULL && crep != NULL && crep_len != NULL);
#ifdef ENABLE_UTF8
if (ISSET(USE_UTF8)) {
wchar_t wc;
/* Reject invalid Unicode characters. */
if (mbtowc(&wc, c, MB_CUR_MAX) < 0 || !is_valid_unicode(wc)) {
mbtowc(NULL, NULL, 0);
*crep_len = bad_mbchar_len;
strncpy(crep, bad_mbchar, *crep_len);
} else {
*crep_len = wctomb(crep, wc);
if (*crep_len < 0) {
wctomb(NULL, 0);
*crep_len = 0;
}
}
} else {
#endif
*crep_len = 1;
*crep = *c;
#ifdef ENABLE_UTF8
}
#endif
return crep;
}
/* This function is equivalent to wcwidth() for multibyte characters. */
int mbwidth(const char *c)
{
assert(c != NULL);
#ifdef NANO_WIDE
if (!ISSET(NO_UTF8)) {
#ifdef ENABLE_UTF8
if (ISSET(USE_UTF8)) {
wchar_t wc;
int c_mb_len = mbtowc(&wc, c, MB_CUR_MAX), width;
int width;
if (c_mb_len <= 0) {
if (mbtowc(&wc, c, MB_CUR_MAX) < 0) {
mbtowc(NULL, NULL, 0);
wc = (unsigned char)*c;
wc = bad_wchar;
}
width = wcwidth(wc);
if (width == -1)
width++;
if (width == -1) {
wc = bad_wchar;
width = wcwidth(wc);
}
return width;
} else
@@ -265,123 +312,66 @@ int mbwidth(const char *c)
int mb_cur_max(void)
{
return
#ifdef NANO_WIDE
!ISSET(NO_UTF8) ? MB_CUR_MAX :
#ifdef ENABLE_UTF8
ISSET(USE_UTF8) ? MB_CUR_MAX :
#endif
1;
}
/* Convert the value in chr to a multibyte character with the same
* wide character value as chr. Return the (dynamically allocated)
* multibyte character and its length. */
char *make_mbchar(int chr, int *chr_mb_len)
/* Convert the Unicode value in chr to a multibyte character with the
* same wide character value as chr, if possible. If the conversion
* succeeds, return the (dynamically allocated) multibyte character and
* its length. Otherwise, return an undefined (dynamically allocated)
* multibyte character and a length of zero. */
char *make_mbchar(long chr, int *chr_mb_len)
{
char *chr_mb;
assert(chr_mb_len != NULL);
#ifdef NANO_WIDE
if (!ISSET(NO_UTF8)) {
#ifdef ENABLE_UTF8
if (ISSET(USE_UTF8)) {
chr_mb = charalloc(MB_CUR_MAX);
*chr_mb_len = wctomb(chr_mb, chr);
*chr_mb_len = wctomb(chr_mb, (wchar_t)chr);
if (*chr_mb_len <= 0) {
/* Reject invalid Unicode characters. */
if (*chr_mb_len < 0 || !is_valid_unicode((wchar_t)chr)) {
wctomb(NULL, 0);
*chr_mb_len = 0;
}
} else {
#endif
*chr_mb_len = 1;
chr_mb = charalloc(1);
*chr_mb = (char)chr;
#ifdef NANO_WIDE
chr_mb = mallocstrncpy(NULL, (char *)&chr, 1);
#ifdef ENABLE_UTF8
}
#endif
return chr_mb;
}
#if defined(ENABLE_NANORC) || defined(ENABLE_EXTRA)
/* Convert the string str to a valid multibyte string with the same wide
* character values as str. Return the (dynamically allocated)
* multibyte string. */
char *make_mbstring(const char *str)
{
assert(str != NULL);
#ifdef NANO_WIDE
if (!ISSET(NO_UTF8)) {
char *chr_mb = charalloc(MB_CUR_MAX);
int chr_mb_len;
char *str_mb = charalloc((MB_CUR_MAX * strlen(str)) + 1);
size_t str_mb_len = 0;
while (*str != '\0') {
bool bad_char;
int i;
chr_mb_len = parse_mbchar(str, chr_mb, &bad_char, NULL);
if (bad_char) {
char *bad_chr_mb;
int bad_chr_mb_len;
bad_chr_mb = make_mbchar((unsigned char)*chr_mb,
&bad_chr_mb_len);
for (i = 0; i < bad_chr_mb_len; i++)
str_mb[str_mb_len + i] = bad_chr_mb[i];
str_mb_len += bad_chr_mb_len;
free(bad_chr_mb);
} else {
for (i = 0; i < chr_mb_len; i++)
str_mb[str_mb_len + i] = chr_mb[i];
str_mb_len += chr_mb_len;
}
str += chr_mb_len;
}
free(chr_mb);
null_at(&str_mb, str_mb_len);
return str_mb;
} else
#endif
return mallocstrcpy(NULL, str);
}
#endif
/* Parse a multibyte character from buf. Return the number of bytes
* used. If chr isn't NULL, store the multibyte character in it. If
* bad_chr isn't NULL, set it to TRUE if we have a bad multibyte
* character. If col isn't NULL, store the new display width in it. If
* *str is '\t', we expect col to have the current display width. */
int parse_mbchar(const char *buf, char *chr, bool *bad_chr, size_t
*col)
* col isn't NULL, store the new display width in it. If *buf is '\t',
* we expect col to have the current display width. */
int parse_mbchar(const char *buf, char *chr, size_t *col)
{
int buf_mb_len;
assert(buf != NULL);
if (bad_chr != NULL)
*bad_chr = FALSE;
#ifdef NANO_WIDE
if (!ISSET(NO_UTF8)) {
#ifdef ENABLE_UTF8
if (ISSET(USE_UTF8)) {
/* Get the number of bytes in the multibyte character. */
buf_mb_len = mblen(buf, MB_CUR_MAX);
/* If buf contains a null byte or an invalid multibyte
* character, set bad_chr to TRUE (if it contains the latter)
* and interpret buf's first byte. */
if (buf_mb_len <= 0) {
/* If buf contains an invalid multibyte character, only
* interpret buf's first byte. */
if (buf_mb_len < 0) {
mblen(NULL, 0);
if (buf_mb_len < 0 && bad_chr != NULL)
*bad_chr = TRUE;
buf_mb_len = 1;
}
} else if (buf_mb_len == 0)
buf_mb_len++;
/* Save the multibyte character in chr. */
if (chr != NULL) {
@@ -442,7 +432,7 @@ int parse_mbchar(const char *buf, char *chr, bool *bad_chr, size_t
else
(*col)++;
}
#ifdef NANO_WIDE
#ifdef ENABLE_UTF8
}
#endif
@@ -460,10 +450,9 @@ size_t move_mbleft(const char *buf, size_t pos)
/* There is no library function to move backward one multibyte
* character. Here is the naive, O(pos) way to do it. */
while (TRUE) {
int buf_mb_len = parse_mbchar(buf + pos - pos_prev, NULL, NULL,
NULL);
int buf_mb_len = parse_mbchar(buf + pos - pos_prev, NULL, NULL);
if (pos_prev <= (size_t)buf_mb_len)
if (pos_prev <= buf_mb_len)
break;
pos_prev -= buf_mb_len;
@@ -476,7 +465,7 @@ size_t move_mbleft(const char *buf, size_t pos)
* after the one at pos. */
size_t move_mbright(const char *buf, size_t pos)
{
return pos + parse_mbchar(buf + pos, NULL, NULL, NULL);
return pos + parse_mbchar(buf + pos, NULL, NULL);
}
#ifndef HAVE_STRCASECMP
@@ -505,7 +494,7 @@ int nstrncasecmp(const char *s1, const char *s2, size_t n)
}
if (n > 0)
return (tolower(*s1) - tolower(*s2));
return tolower(*s1) - tolower(*s2);
else
return 0;
}
@@ -515,8 +504,8 @@ int nstrncasecmp(const char *s1, const char *s2, size_t n)
* strings. */
int mbstrncasecmp(const char *s1, const char *s2, size_t n)
{
#ifdef NANO_WIDE
if (!ISSET(NO_UTF8)) {
#ifdef ENABLE_UTF8
if (ISSET(USE_UTF8)) {
char *s1_mb = charalloc(MB_CUR_MAX);
char *s2_mb = charalloc(MB_CUR_MAX);
wchar_t ws1, ws2;
@@ -524,23 +513,27 @@ int mbstrncasecmp(const char *s1, const char *s2, size_t n)
assert(s1 != NULL && s2 != NULL);
while (n > 0 && *s1 != '\0' && *s2 != '\0') {
bool bad_s1_mb = FALSE, bad_s2_mb = FALSE;
int s1_mb_len, s2_mb_len;
s1_mb_len = parse_mbchar(s1, s1_mb, NULL, NULL);
s1_mb_len = parse_mbchar(s1, s1_mb, NULL);
if (mbtowc(&ws1, s1_mb, s1_mb_len) <= 0) {
if (mbtowc(&ws1, s1_mb, s1_mb_len) < 0) {
mbtowc(NULL, NULL, 0);
ws1 = (unsigned char)*s1_mb;
bad_s1_mb = TRUE;
}
s2_mb_len = parse_mbchar(s2, s2_mb, NULL, NULL);
s2_mb_len = parse_mbchar(s2, s2_mb, NULL);
if (mbtowc(&ws2, s2_mb, s2_mb_len) <= 0) {
if (mbtowc(&ws2, s2_mb, s2_mb_len) < 0) {
mbtowc(NULL, NULL, 0);
ws2 = (unsigned char)*s2_mb;
bad_s2_mb = TRUE;
}
if (n == 0 || towlower(ws1) != towlower(ws2))
if (n == 0 || bad_s1_mb != bad_s2_mb ||
towlower(ws1) != towlower(ws2))
break;
s1 += s1_mb_len;
@@ -551,15 +544,38 @@ int mbstrncasecmp(const char *s1, const char *s2, size_t n)
free(s1_mb);
free(s2_mb);
return (towlower(ws1) - towlower(ws2));
return towlower(ws1) - towlower(ws2);
} else
#endif
return strncasecmp(s1, s2, n);
}
#ifndef HAVE_STRCASESTR
/* This function is equivalent to strcasestr(). It was adapted from
* mutt's mutt_stristr() function. */
/* This function, nstrcasestr() (originally mutt_stristr()), was adapted
* from mutt 1.2.4i (lib.c). Here is the notice from that file, with
* the Free Software Foundation's address updated:
*
* Copyright (C) 1996-2000 Michael R. Elkins <me@cs.hmc.edu>
* Copyright (C) 1999-2000 Thomas Roessler <roessler@guug.de>
*
* This program is free software; you can redistribute it
* and/or modify it under the terms of the GNU General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public
* License along with this program; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301, USA. */
/* This function is equivalent to strcasestr(). */
const char *nstrcasestr(const char *haystack, const char *needle)
{
assert(haystack != NULL && needle != NULL);
@@ -581,8 +597,8 @@ const char *nstrcasestr(const char *haystack, const char *needle)
/* This function is equivalent to strcasestr() for multibyte strings. */
const char *mbstrcasestr(const char *haystack, const char *needle)
{
#ifdef NANO_WIDE
if (!ISSET(NO_UTF8)) {
#ifdef ENABLE_UTF8
if (ISSET(USE_UTF8)) {
char *r_mb = charalloc(MB_CUR_MAX);
char *q_mb = charalloc(MB_CUR_MAX);
wchar_t wr, wq;
@@ -595,21 +611,26 @@ const char *mbstrcasestr(const char *haystack, const char *needle)
int r_mb_len, q_mb_len;
while (*q != '\0') {
r_mb_len = parse_mbchar(r, r_mb, NULL, NULL);
bool bad_r_mb = FALSE, bad_q_mb = FALSE;
if (mbtowc(&wr, r_mb, r_mb_len) <= 0) {
r_mb_len = parse_mbchar(r, r_mb, NULL);
if (mbtowc(&wr, r_mb, r_mb_len) < 0) {
mbtowc(NULL, NULL, 0);
wr = (unsigned char)*r;
bad_r_mb = TRUE;
}
q_mb_len = parse_mbchar(q, q_mb, NULL, NULL);
q_mb_len = parse_mbchar(q, q_mb, NULL);
if (mbtowc(&wq, q_mb, q_mb_len) <= 0) {
if (mbtowc(&wq, q_mb, q_mb_len) < 0) {
mbtowc(NULL, NULL, 0);
wq = (unsigned char)*q;
bad_q_mb = TRUE;
}
if (towlower(wr) != towlower(wq))
if (bad_r_mb != bad_q_mb ||
towlower(wr) != towlower(wq))
break;
r += r_mb_len;
@@ -633,7 +654,7 @@ const char *mbstrcasestr(const char *haystack, const char *needle)
return strcasestr(haystack, needle);
}
#if !defined(NANO_SMALL) || !defined(DISABLE_TABCOMP)
#if !defined(NANO_TINY) || !defined(DISABLE_TABCOMP)
/* This function is equivalent to strstr(), except in that it scans the
* string in reverse, starting at rev_start. */
const char *revstrstr(const char *haystack, const char *needle, const
@@ -653,9 +674,9 @@ const char *revstrstr(const char *haystack, const char *needle, const
return NULL;
}
#endif
#endif /* !NANO_TINY || !DISABLE_TABCOMP */
#ifndef NANO_SMALL
#ifndef NANO_TINY
/* This function is equivalent to strcasestr(), except in that it scans
* the string in reverse, starting at rev_start. */
const char *revstrcasestr(const char *haystack, const char *needle,
@@ -682,8 +703,8 @@ const char *revstrcasestr(const char *haystack, const char *needle,
const char *mbrevstrcasestr(const char *haystack, const char *needle,
const char *rev_start)
{
#ifdef NANO_WIDE
if (!ISSET(NO_UTF8)) {
#ifdef ENABLE_UTF8
if (ISSET(USE_UTF8)) {
char *r_mb = charalloc(MB_CUR_MAX);
char *q_mb = charalloc(MB_CUR_MAX);
wchar_t wr, wq;
@@ -696,21 +717,26 @@ const char *mbrevstrcasestr(const char *haystack, const char *needle,
int r_mb_len, q_mb_len;
while (*q != '\0') {
r_mb_len = parse_mbchar(r, r_mb, NULL, NULL);
bool bad_r_mb = FALSE, bad_q_mb = FALSE;
if (mbtowc(&wr, r_mb, r_mb_len) <= 0) {
r_mb_len = parse_mbchar(r, r_mb, NULL);
if (mbtowc(&wr, r_mb, r_mb_len) < 0) {
mbtowc(NULL, NULL, 0);
wr = (unsigned char)*r;
bad_r_mb = TRUE;
}
q_mb_len = parse_mbchar(q, q_mb, NULL, NULL);
q_mb_len = parse_mbchar(q, q_mb, NULL);
if (mbtowc(&wq, q_mb, q_mb_len) <= 0) {
if (mbtowc(&wq, q_mb, q_mb_len) < 0) {
mbtowc(NULL, NULL, 0);
wq = (unsigned char)*q;
bad_q_mb = TRUE;
}
if (towlower(wr) != towlower(wq))
if (bad_r_mb != bad_q_mb ||
towlower(wr) != towlower(wq))
break;
r += r_mb_len;
@@ -737,7 +763,7 @@ const char *mbrevstrcasestr(const char *haystack, const char *needle,
#endif
return revstrcasestr(haystack, needle, rev_start);
}
#endif
#endif /* !NANO_TINY */
/* This function is equivalent to strlen() for multibyte strings. */
size_t mbstrlen(const char *s)
@@ -765,14 +791,13 @@ size_t mbstrnlen(const char *s, size_t maxlen)
{
assert(s != NULL);
#ifdef NANO_WIDE
if (!ISSET(NO_UTF8)) {
#ifdef ENABLE_UTF8
if (ISSET(USE_UTF8)) {
size_t n = 0;
char *s_mb = charalloc(MB_CUR_MAX);
int s_mb_len;
while (*s != '\0') {
s_mb_len = parse_mbchar(s, s_mb, NULL, NULL);
s_mb_len = parse_mbchar(s, NULL, NULL);
if (maxlen == 0)
break;
@@ -782,41 +807,62 @@ size_t mbstrnlen(const char *s, size_t maxlen)
n++;
}
free(s_mb);
return n;
} else
#endif
return strnlen(s, maxlen);
}
#ifndef NANO_TINY
/* This function is equivalent to strpbrk(), except in that it scans the
* string in reverse, starting at rev_start. */
char *revstrpbrk(const char *s, const char *accept, const char
*rev_start)
{
assert(s != NULL && accept != NULL && rev_start != NULL);
for (; rev_start >= s; rev_start--) {
const char *q = (*rev_start == '\0') ? NULL : strchr(accept,
*rev_start);
if (q != NULL)
return (char *)rev_start;
}
return NULL;
}
#endif /* !NANO_TINY */
#ifndef DISABLE_JUSTIFY
/* This function is equivalent to strchr() for multibyte strings. */
char *mbstrchr(const char *s, char *c)
{
assert(s != NULL && c != NULL);
#ifdef NANO_WIDE
if (!ISSET(NO_UTF8)) {
#ifdef ENABLE_UTF8
if (ISSET(USE_UTF8)) {
bool bad_s_mb = FALSE, bad_c_mb = FALSE;
char *s_mb = charalloc(MB_CUR_MAX);
const char *q = s;
wchar_t ws, wc;
int s_mb_len, c_mb_len = mbtowc(&wc, c, MB_CUR_MAX);
int c_mb_len = mbtowc(&wc, c, MB_CUR_MAX);
if (c_mb_len <= 0) {
if (c_mb_len < 0) {
mbtowc(NULL, NULL, 0);
wc = (unsigned char)*c;
bad_c_mb = TRUE;
}
while (*s != '\0') {
s_mb_len = parse_mbchar(s, s_mb, NULL, NULL);
int s_mb_len = parse_mbchar(s, s_mb, NULL);
if (mbtowc(&ws, s_mb, s_mb_len) <= 0) {
if (mbtowc(&ws, s_mb, s_mb_len) < 0) {
mbtowc(NULL, NULL, 0);
ws = (unsigned char)*s;
bad_s_mb = TRUE;
}
if (ws == wc)
if (bad_s_mb == bad_c_mb && ws == wc)
break;
s += s_mb_len;
@@ -825,7 +871,7 @@ char *mbstrchr(const char *s, char *c)
free(s_mb);
if (ws != wc)
if (*s == '\0')
q = NULL;
return (char *)q;
@@ -833,4 +879,79 @@ char *mbstrchr(const char *s, char *c)
#endif
return strchr(s, *c);
}
#ifdef ENABLE_NANORC
/* Return TRUE if the string s contains one or more blank characters,
* and FALSE otherwise. */
bool has_blank_chars(const char *s)
{
assert(s != NULL);
for (; *s != '\0'; s++) {
if (isblank(*s))
return TRUE;
}
return FALSE;
}
/* Return TRUE if the multibyte string s contains one or more blank
* multibyte characters, and FALSE otherwise. */
bool has_blank_mbchars(const char *s)
{
assert(s != NULL);
#ifdef ENABLE_UTF8
if (ISSET(USE_UTF8)) {
char *chr_mb = charalloc(MB_CUR_MAX);
bool retval = FALSE;
while (*s != '\0') {
int chr_mb_len;
chr_mb_len = parse_mbchar(s, chr_mb, NULL);
if (is_blank_mbchar(chr_mb)) {
retval = TRUE;
break;
}
s += chr_mb_len;
}
free(chr_mb);
return retval;
} else
#endif
return has_blank_chars(s);
}
#endif /* ENABLE_NANORC */
#endif /* !DISABLE_JUSTIFY */
#ifdef ENABLE_UTF8
/* Return TRUE if wc is valid Unicode, and FALSE otherwise. */
bool is_valid_unicode(wchar_t wc)
{
return ((0 <= wc && wc <= 0x10FFFF) && (wc <= 0xD7FF || 0xE000 <=
wc) && (wc <= 0xFDCF || 0xFDF0 <= wc) && ((wc & 0xFFFF) <=
0xFFFD));
}
#endif
#ifdef ENABLE_NANORC
/* Check if the string s is a valid multibyte string. Return TRUE if it
* is, and FALSE otherwise. */
bool is_valid_mbstring(const char *s)
{
assert(s != NULL);
return
#ifdef ENABLE_UTF8
ISSET(USE_UTF8) ?
(mbstowcs(NULL, s, 0) != (size_t)-1) :
#endif
TRUE;
}
#endif /* ENABLE_NANORC */

View File

@@ -2,39 +2,34 @@
/**************************************************************************
* color.c *
* *
* Copyright (C) 1999-2005 Chris Allegretta *
* Copyright (C) 2001-2004 Chris Allegretta *
* Copyright (C) 2005 David Lawrence Ramsey *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2, or (at your option) *
* any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the Free Software *
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
* 02110-1301, USA. *
* *
**************************************************************************/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include "proto.h"
#include "nano.h"
#include <stdio.h>
#include <string.h>
#ifdef ENABLE_COLOR
/* For each syntax list entry, we go through the list of colors and
* assign color pairs. */
/* For each syntax list entry, go through the list of colors and assign
* color pairs. */
void set_colorpairs(void)
{
const syntaxtype *this_syntax = syntaxes;
@@ -63,70 +58,147 @@ void set_colorpairs(void)
}
}
void do_colorinit(void)
/* Initialize the color information. */
void color_init(void)
{
assert(openfile != NULL);
if (has_colors()) {
const colortype *tmpcolor = NULL;
const colortype *tmpcolor;
#ifdef HAVE_USE_DEFAULT_COLORS
bool defok;
#endif
start_color();
/* Add in colors, if available. */
#ifdef HAVE_USE_DEFAULT_COLORS
/* Add in colors, if available. */
defok = (use_default_colors() != ERR);
#endif
for (tmpcolor = colorstrings; tmpcolor != NULL;
for (tmpcolor = openfile->colorstrings; tmpcolor != NULL;
tmpcolor = tmpcolor->next) {
short background = tmpcolor->bg;
short foreground = tmpcolor->fg, background = tmpcolor->bg;
if (foreground == -1) {
#ifdef HAVE_USE_DEFAULT_COLORS
if (!defok)
#endif
foreground = COLOR_WHITE;
}
if (background == -1)
if (background == -1) {
#ifdef HAVE_USE_DEFAULT_COLORS
if (!defok)
#endif
background = COLOR_BLACK;
}
init_pair(tmpcolor->pairnum, tmpcolor->fg, background);
init_pair(tmpcolor->pairnum, foreground, background);
#ifdef DEBUG
fprintf(stderr, "init_pair(): fg = %d, bg = %d\n",
tmpcolor->fg, tmpcolor->bg);
fprintf(stderr, "init_pair(): fg = %hd, bg = %hd\n", tmpcolor->fg, tmpcolor->bg);
#endif
}
}
}
/* Update the color information based on the current filename. */
void update_color(void)
void color_update(void)
{
const syntaxtype *tmpsyntax;
colortype *tmpcolor, *defcolor = NULL;
colorstrings = NULL;
for (tmpsyntax = syntaxes; tmpsyntax != NULL;
tmpsyntax = tmpsyntax->next) {
const exttype *e;
assert(openfile != NULL);
for (e = tmpsyntax->extensions; e != NULL; e = e->next) {
/* Set colorstrings if we matched the extension regex. */
if (regexec(&e->val, filename, 0, NULL, 0) == 0)
colorstrings = tmpsyntax->color;
openfile->colorstrings = NULL;
if (colorstrings != NULL)
/* If we specified a syntax override string, use it. */
if (syntaxstr != NULL) {
/* If the syntax override is "none", it's the same as not having
* a syntax at all, so get out. */
if (strcmp(syntaxstr, "none") == 0)
return;
for (tmpsyntax = syntaxes; tmpsyntax != NULL;
tmpsyntax = tmpsyntax->next) {
if (strcmp(tmpsyntax->desc, syntaxstr) == 0)
openfile->colorstrings = tmpsyntax->color;
if (openfile->colorstrings != NULL)
break;
}
}
/* If we haven't found a match, use the override string. */
if (colorstrings == NULL && syntaxstr != NULL) {
/* If we didn't specify a syntax override string, or if we did and
* there was no syntax by that name, get the syntax based on the
* file extension. */
if (openfile->colorstrings == NULL) {
for (tmpsyntax = syntaxes; tmpsyntax != NULL;
tmpsyntax = tmpsyntax->next) {
if (strcasecmp(tmpsyntax->desc, syntaxstr) == 0)
colorstrings = tmpsyntax->color;
exttype *e;
/* If this is the default syntax, it has no associated
* extensions. (We've checked for this and for duplicate
* syntax names elsewhere.) Skip over it here, but keep
* track of its color regexes. */
if (strcmp(tmpsyntax->desc, "default") == 0) {
defcolor = syntaxes->color;
continue;
}
for (e = tmpsyntax->extensions; e != NULL; e = e->next) {
bool not_compiled = (e->ext == NULL);
/* e->ext_regex has already been checked for validity
* elsewhere. Compile its specified regex if we haven't
* already. */
if (not_compiled) {
e->ext = (regex_t *)nmalloc(sizeof(regex_t));
regcomp(e->ext, e->ext_regex, REG_EXTENDED);
}
/* Set colorstrings if we matched the extension
* regex. */
if (regexec(e->ext, openfile->filename, 0, NULL,
0) == 0)
openfile->colorstrings = tmpsyntax->color;
if (openfile->colorstrings != NULL)
break;
/* Decompile e->ext_regex's specified regex if we aren't
* going to use it. */
if (not_compiled) {
regfree(e->ext);
free(e->ext);
e->ext = NULL;
}
}
}
}
/* If we didn't get a syntax based on the file extension, and we
* have a default syntax, use it. */
if (openfile->colorstrings == NULL && defcolor != NULL)
openfile->colorstrings = defcolor;
for (tmpcolor = openfile->colorstrings; tmpcolor != NULL;
tmpcolor = tmpcolor->next) {
/* tmpcolor->start_regex and tmpcolor->end_regex have already
* been checked for validity elsewhere. Compile their specified
* regexes if we haven't already. */
if (tmpcolor->start == NULL) {
tmpcolor->start = (regex_t *)nmalloc(sizeof(regex_t));
regcomp(tmpcolor->start, tmpcolor->start_regex,
REG_EXTENDED | (tmpcolor->icase ? REG_ICASE : 0));
}
if (tmpcolor->end_regex != NULL && tmpcolor->end == NULL) {
tmpcolor->end = (regex_t *)nmalloc(sizeof(regex_t));
regcomp(tmpcolor->end, tmpcolor->end_regex,
REG_EXTENDED | (tmpcolor->icase ? REG_ICASE : 0));
}
}
do_colorinit();
}
#endif /* ENABLE_COLOR */

110
src/cut.c
View File

@@ -2,54 +2,59 @@
/**************************************************************************
* cut.c *
* *
* Copyright (C) 1999-2005 Chris Allegretta *
* Copyright (C) 1999-2004 Chris Allegretta *
* Copyright (C) 2005 David Lawrence Ramsey *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2, or (at your option) *
* any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the Free Software *
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
* 02110-1301, USA. *
* *
**************************************************************************/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "proto.h"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <assert.h>
#include "proto.h"
#include "nano.h"
static bool keep_cutbuffer = FALSE;
/* Should we keep the contents of the cutbuffer? */
static filestruct *cutbottom = NULL;
/* Pointer to end of cutbuffer. */
/* Pointer to the end of the cutbuffer. */
/* Indicate that we should no longer keep the contents of the
* cutbuffer. */
void cutbuffer_reset(void)
{
keep_cutbuffer = FALSE;
}
/* If we're not on the magicline, move all the text of the current line,
* plus the newline at the end, to the cutbuffer. */
/* If we're not on the last line of the file, move all the text of the
* current line, plus the newline at the end, to the cutbuffer. If we
* are, move all of the text of the current line to the cutbuffer. In
* both cases, set the current place we want to the beginning of the
* current line. */
void cut_line(void)
{
if (current->next != NULL)
move_to_filestruct(&cutbuffer, &cutbottom, current, 0,
current->next, 0);
if (openfile->current != openfile->filebot)
move_to_filestruct(&cutbuffer, &cutbottom, openfile->current, 0,
openfile->current->next, 0);
else
move_to_filestruct(&cutbuffer, &cutbottom, openfile->current, 0,
openfile->current, strlen(openfile->current->data));
openfile->placewewant = 0;
}
#ifndef NANO_SMALL
#ifndef NANO_TINY
/* Move all currently marked text to the cutbuffer, and set the current
* place we want to where the text used to start. */
void cut_marked(void)
@@ -61,43 +66,43 @@ void cut_marked(void)
(const filestruct **)&bot, &bot_x, NULL);
move_to_filestruct(&cutbuffer, &cutbottom, top, top_x, bot, bot_x);
placewewant = xplustabs();
openfile->placewewant = xplustabs();
}
/* If we're not at the end of the current line, move all the text from
* the current cursor position to the end of the current line,
* not counting the newline at the end, to the cutbuffer. If we are,
* and we're not on the magicline, move the newline at the end to the
* cutbuffer, and set the current place we want to where the newline
* used to be. */
* and we're not on the last line of the file, move the newline at the
* end to the cutbuffer, and set the current place we want to where the
* newline used to be. */
void cut_to_eol(void)
{
size_t data_len = strlen(current->data);
size_t data_len = strlen(openfile->current->data);
assert(current_x <= data_len);
assert(openfile->current_x <= data_len);
if (current_x < data_len)
if (openfile->current_x < data_len)
/* If we're not at the end of the line, move all the text from
* the current position up to it, not counting the newline at
* the end, to the cutbuffer. */
move_to_filestruct(&cutbuffer, &cutbottom, current, current_x,
current, data_len);
else if (current->next != NULL) {
/* If we're at the end of the line, and it isn't the magicline,
* move all the text from the current position up to the
* beginning of the next line, i.e, the newline at the end, to
* the cutbuffer. */
move_to_filestruct(&cutbuffer, &cutbottom, current, current_x,
current->next, 0);
placewewant = xplustabs();
move_to_filestruct(&cutbuffer, &cutbottom, openfile->current,
openfile->current_x, openfile->current, data_len);
else if (openfile->current != openfile->filebot) {
/* If we're at the end of the line, and it isn't the last line
* of the file, move all the text from the current position up
* to the beginning of the next line, i.e, the newline at the
* end, to the cutbuffer. */
move_to_filestruct(&cutbuffer, &cutbottom, openfile->current,
openfile->current_x, openfile->current->next, 0);
openfile->placewewant = xplustabs();
}
}
#endif /* !NANO_SMALL */
#endif /* !NANO_TINY */
/* Move text from the current filestruct into the cutbuffer. */
void do_cut_text(void)
{
assert(current != NULL && current->data != NULL);
assert(openfile->current != NULL && openfile->current->data != NULL);
check_statusblank();
@@ -116,12 +121,12 @@ void do_cut_text(void)
* cutbuffer instead of replacing it. */
keep_cutbuffer = TRUE;
#ifndef NANO_SMALL
if (ISSET(MARK_ISSET)) {
#ifndef NANO_TINY
if (openfile->mark_set) {
/* If the mark is on, move the marked text to the cutbuffer and
* turn the mark off. */
cut_marked();
UNSET(MARK_ISSET);
openfile->mark_set = FALSE;
} else if (ISSET(CUT_TO_END))
/* Otherwise, if the CUT_TO_END flag is set, move all text up to
* the end of the line into the cutbuffer. */
@@ -135,34 +140,35 @@ void do_cut_text(void)
set_modified();
#ifdef DEBUG
dump_buffer(cutbuffer);
dump_filestruct(cutbuffer);
#endif
}
#ifndef NANO_SMALL
#ifndef NANO_TINY
/* Cut from the current cursor position to the end of the file. */
void do_cut_till_end(void)
{
assert(current != NULL && current->data != NULL);
assert(openfile->current != NULL && openfile->current->data != NULL);
check_statusblank();
move_to_filestruct(&cutbuffer, &cutbottom, current, current_x,
filebot, 0);
move_to_filestruct(&cutbuffer, &cutbottom, openfile->current,
openfile->current_x, openfile->filebot,
strlen(openfile->filebot->data));
edit_refresh();
set_modified();
#ifdef DEBUG
dump_buffer(cutbuffer);
dump_filestruct(cutbuffer);
#endif
}
#endif /* !NANO_SMALL */
#endif /* !NANO_TINY */
/* Copy text from the cutbuffer into the current filestruct. */
void do_uncut_text(void)
{
assert(current != NULL && current->data != NULL);
assert(openfile->current != NULL && openfile->current->data != NULL);
#ifndef DISABLE_WRAPPING
wrap_reset();
@@ -180,12 +186,12 @@ void do_uncut_text(void)
/* Set the current place we want to where the text from the
* cutbuffer ends. */
placewewant = xplustabs();
openfile->placewewant = xplustabs();
edit_refresh();
set_modified();
#ifdef DEBUG
dump_buffer_reverse();
dump_filestruct_reverse();
#endif
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

516
src/help.c Normal file
View File

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

View File

@@ -2,289 +2,673 @@
/**************************************************************************
* move.c *
* *
* Copyright (C) 1999-2005 Chris Allegretta *
* Copyright (C) 1999-2004 Chris Allegretta *
* Copyright (C) 2005 David Lawrence Ramsey *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2, or (at your option) *
* any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the Free Software *
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
* 02110-1301, USA. *
* *
**************************************************************************/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "proto.h"
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <assert.h>
#include "proto.h"
#include "nano.h"
/* Move to the first line of the file. */
void do_first_line(void)
{
size_t pww_save = placewewant;
current = fileage;
placewewant = 0;
current_x = 0;
if (edittop != fileage || need_vertical_update(pww_save))
edit_update(TOP);
const filestruct *current_save = openfile->current;
size_t pww_save = openfile->placewewant;
check_statusblank();
openfile->current = openfile->fileage;
openfile->current_x = 0;
openfile->placewewant = 0;
edit_redraw(current_save, pww_save);
}
/* Move to the last line of the file. */
void do_last_line(void)
{
size_t pww_save = placewewant;
current = filebot;
placewewant = 0;
current_x = 0;
if (edittop->lineno + (editwinrows / 2) != filebot->lineno ||
need_vertical_update(pww_save))
edit_update(CENTER);
}
const filestruct *current_save = openfile->current;
size_t pww_save = openfile->placewewant;
void do_home(void)
{
size_t pww_save = placewewant;
#ifndef NANO_SMALL
if (ISSET(SMART_HOME)) {
size_t current_x_save = current_x;
current_x = indent_length(current->data);
if (current_x == current_x_save ||
current->data[current_x] == '\0')
current_x = 0;
placewewant = xplustabs();
} else {
#endif
current_x = 0;
placewewant = 0;
#ifndef NANO_SMALL
}
#endif
check_statusblank();
if (need_horizontal_update(pww_save))
update_line(current, current_x);
}
void do_end(void)
{
size_t pww_save = placewewant;
current_x = strlen(current->data);
placewewant = xplustabs();
check_statusblank();
if (need_horizontal_update(pww_save))
update_line(current, current_x);
openfile->current = openfile->filebot;
openfile->current_x = strlen(openfile->filebot->data);
openfile->placewewant = xplustabs();
openfile->current_y = editwinrows - 1;
edit_redraw(current_save, pww_save);
}
/* Move up one page. */
void do_page_up(void)
{
size_t pww_save = placewewant;
const filestruct *current_save = current;
int i;
check_statusblank();
#ifndef DISABLE_WRAPPING
wrap_reset();
#endif
/* If the first line of the file is onscreen, move current up there
* and put the cursor at the beginning of the line. */
if (edittop == fileage) {
current = fileage;
placewewant = 0;
} else {
edit_scroll(UP, editwinrows - 2);
#ifndef NANO_SMALL
/* If we're in smooth scrolling mode and there's at least one
* page of text left, move the current line of the edit window
* up a page. */
if (ISSET(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 or there isn't at least
* one page of text left, put the cursor at the beginning of the
* top line of the edit window, as Pico does. */
else {
#endif
current = edittop;
placewewant = 0;
#ifndef NANO_SMALL
}
#endif
/* If there's less than a page of text left on the screen, put the
* cursor at the beginning of the first line of the file, and then
* update the edit window. */
if (openfile->current->lineno <= editwinrows - 2) {
do_first_line();
return;
}
/* Get the equivalent x-coordinate of the new line. */
current_x = actual_x(current->data, placewewant);
/* If we're not in smooth scrolling mode, put the cursor at the
* beginning of the top line of the edit window, as Pico does. */
#ifndef NANO_TINY
if (!ISSET(SMOOTH_SCROLL)) {
#endif
openfile->current = openfile->edittop;
openfile->placewewant = 0;
#ifndef NANO_TINY
}
#endif
/* Update all the lines that need to be updated. */
edit_redraw(current_save, pww_save);
for (i = editwinrows - 2; i > 0 && openfile->current !=
openfile->fileage; i--)
openfile->current = openfile->current->prev;
check_statusblank();
openfile->current_x = actual_x(openfile->current->data,
openfile->placewewant);
/* Scroll the edit window up a page. */
edit_scroll(UP, editwinrows - 2);
}
/* Move down one page. */
void do_page_down(void)
{
size_t pww_save = placewewant;
const filestruct *current_save = current;
int i;
check_statusblank();
#ifndef DISABLE_WRAPPING
wrap_reset();
#endif
/* If the last line of the file is onscreen, move current down
* there and put the cursor at the beginning of the line. */
if (edittop->lineno + editwinrows > filebot->lineno) {
current = filebot;
placewewant = 0;
} else {
edit_scroll(DOWN, editwinrows - 2);
#ifndef NANO_SMALL
/* If we're in smooth scrolling mode and there's at least one
* page of text left, move the current line of the edit window
* down a page. */
if (ISSET(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 or there isn't at least
* one page of text left, put the cursor at the beginning of the
* top line of the edit window, as Pico does. */
else {
#endif
current = edittop;
placewewant = 0;
#ifndef NANO_SMALL
}
#endif
/* If there's less than a page of text left on the screen, put the
* cursor at the beginning of the last line of the file, and then
* update the edit window. */
if (openfile->current->lineno + editwinrows - 2 >=
openfile->filebot->lineno) {
do_last_line();
return;
}
/* Get the equivalent x-coordinate of the new line. */
current_x = actual_x(current->data, placewewant);
/* If we're not in smooth scrolling mode, put the cursor at the
* beginning of the top line of the edit window, as Pico does. */
#ifndef NANO_TINY
if (!ISSET(SMOOTH_SCROLL)) {
#endif
openfile->current = openfile->edittop;
openfile->placewewant = 0;
#ifndef NANO_TINY
}
#endif
/* Update all the lines that need to be updated. */
edit_redraw(current_save, pww_save);
for (i = editwinrows - 2; i > 0 && openfile->current !=
openfile->filebot; i--)
openfile->current = openfile->current->next;
check_statusblank();
openfile->current_x = actual_x(openfile->current->data,
openfile->placewewant);
/* Scroll the edit window down a page. */
edit_scroll(DOWN, editwinrows - 2);
}
#ifndef DISABLE_JUSTIFY
/* Move up to the beginning of the last beginning-of-paragraph line
* before the current line. If allow_update is TRUE, update the screen
* afterwards. */
void do_para_begin(bool allow_update)
{
const filestruct *current_save = openfile->current;
const size_t pww_save = openfile->placewewant;
check_statusblank();
if (openfile->current != openfile->fileage) {
do {
openfile->current = openfile->current->prev;
openfile->current_y--;
} while (!begpar(openfile->current));
}
openfile->current_x = 0;
openfile->placewewant = 0;
if (allow_update)
edit_redraw(current_save, pww_save);
}
/* Move up to the beginning of the last beginning-of-paragraph line
* before the current line, and update the screen afterwards. */
void do_para_begin_void(void)
{
do_para_begin(TRUE);
}
/* Move down to the beginning of the last line of the current paragraph.
* Then move down one line farther if there is such a line, or to the
* end of the current line if not. If allow_update is TRUE, update the
* screen afterwards. A line is the last line of a paragraph if it is
* in a paragraph, and the next line either is the beginning line of a
* paragraph or isn't in a paragraph. */
void do_para_end(bool allow_update)
{
const filestruct *const current_save = openfile->current;
const size_t pww_save = openfile->placewewant;
check_statusblank();
while (openfile->current != openfile->filebot &&
!inpar(openfile->current))
openfile->current = openfile->current->next;
while (openfile->current != openfile->filebot &&
inpar(openfile->current->next) &&
!begpar(openfile->current->next)) {
openfile->current = openfile->current->next;
openfile->current_y++;
}
if (openfile->current != openfile->filebot) {
openfile->current = openfile->current->next;
openfile->current_x = 0;
openfile->placewewant = 0;
} else {
openfile->current_x = strlen(openfile->current->data);
openfile->placewewant = xplustabs();
}
if (allow_update)
edit_redraw(current_save, pww_save);
}
/* Move down to the beginning of the last line of the current paragraph.
* Then move down one line farther if there is such a line, or to the
* end of the current line if not, and update the screen afterwards. */
void do_para_end_void(void)
{
do_para_end(TRUE);
}
#endif /* !DISABLE_JUSTIFY */
#ifndef NANO_TINY
/* Move to the next word in the file. If allow_punct is TRUE, treat
* punctuation as part of a word. If allow_update is TRUE, update the
* screen afterwards. Return TRUE if we started on a word, and FALSE
* otherwise. */
bool do_next_word(bool allow_punct, bool allow_update)
{
size_t pww_save = openfile->placewewant;
const filestruct *current_save = openfile->current;
char *char_mb;
int char_mb_len;
bool end_line = FALSE, started_on_word = FALSE;
assert(openfile->current != NULL && openfile->current->data != NULL);
check_statusblank();
char_mb = charalloc(mb_cur_max());
/* Move forward until we find the character after the last letter of
* the current word. */
while (!end_line) {
char_mb_len = parse_mbchar(openfile->current->data +
openfile->current_x, char_mb, NULL);
/* If we've found it, stop moving forward through the current
* line. */
if (!is_word_mbchar(char_mb, allow_punct))
break;
/* If we haven't found it, then we've started on a word, so set
* started_on_word to TRUE. */
started_on_word = TRUE;
if (openfile->current->data[openfile->current_x] == '\0')
end_line = TRUE;
else
openfile->current_x += char_mb_len;
}
/* Move forward until we find the first letter of the next word. */
if (openfile->current->data[openfile->current_x] == '\0')
end_line = TRUE;
else
openfile->current_x += char_mb_len;
for (; openfile->current != NULL;
openfile->current = openfile->current->next) {
while (!end_line) {
char_mb_len = parse_mbchar(openfile->current->data +
openfile->current_x, char_mb, NULL);
/* If we've found it, stop moving forward through the
* current line. */
if (is_word_mbchar(char_mb, allow_punct))
break;
if (openfile->current->data[openfile->current_x] == '\0')
end_line = TRUE;
else
openfile->current_x += char_mb_len;
}
/* If we've found it, stop moving forward to the beginnings of
* subsequent lines. */
if (!end_line)
break;
if (openfile->current != openfile->filebot) {
end_line = FALSE;
openfile->current_x = 0;
}
}
free(char_mb);
/* If we haven't found it, leave the cursor at the end of the
* file. */
if (openfile->current == NULL)
openfile->current = openfile->filebot;
openfile->placewewant = xplustabs();
/* If allow_update is TRUE, update the screen. */
if (allow_update)
edit_redraw(current_save, pww_save);
/* Return whether we started on a word. */
return started_on_word;
}
/* Move to the next word in the file, treating punctuation as part of a
* word if the WORD_BOUNDS flag is set, and update the screen
* afterwards. */
void do_next_word_void(void)
{
do_next_word(ISSET(WORD_BOUNDS), TRUE);
}
/* Move to the previous word in the file. If allow_punct is TRUE, treat
* punctuation as part of a word. If allow_update is TRUE, update the
* screen afterwards. Return TRUE if we started on a word, and FALSE
* otherwise. */
bool do_prev_word(bool allow_punct, bool allow_update)
{
size_t pww_save = openfile->placewewant;
const filestruct *current_save = openfile->current;
char *char_mb;
int char_mb_len;
bool begin_line = FALSE, started_on_word = FALSE;
assert(openfile->current != NULL && openfile->current->data != NULL);
check_statusblank();
char_mb = charalloc(mb_cur_max());
/* Move backward until we find the character before the first letter
* of the current word. */
while (!begin_line) {
char_mb_len = parse_mbchar(openfile->current->data +
openfile->current_x, char_mb, NULL);
/* If we've found it, stop moving backward through the current
* line. */
if (!is_word_mbchar(char_mb, allow_punct))
break;
/* If we haven't found it, then we've started on a word, so set
* started_on_word to TRUE. */
started_on_word = TRUE;
if (openfile->current_x == 0)
begin_line = TRUE;
else
openfile->current_x = move_mbleft(openfile->current->data,
openfile->current_x);
}
/* Move backward until we find the last letter of the previous
* word. */
if (openfile->current_x == 0)
begin_line = TRUE;
else
openfile->current_x = move_mbleft(openfile->current->data,
openfile->current_x);
for (; openfile->current != NULL;
openfile->current = openfile->current->prev) {
while (!begin_line) {
char_mb_len = parse_mbchar(openfile->current->data +
openfile->current_x, char_mb, NULL);
/* If we've found it, stop moving backward through the
* current line. */
if (is_word_mbchar(char_mb, allow_punct))
break;
if (openfile->current_x == 0)
begin_line = TRUE;
else
openfile->current_x =
move_mbleft(openfile->current->data,
openfile->current_x);
}
/* If we've found it, stop moving backward to the ends of
* previous lines. */
if (!begin_line)
break;
if (openfile->current != openfile->fileage) {
begin_line = FALSE;
openfile->current_x = strlen(openfile->current->prev->data);
}
}
/* If we haven't found it, leave the cursor at the beginning of the
* file. */
if (openfile->current == NULL)
openfile->current = openfile->fileage;
/* If we've found it, move backward until we find the character
* before the first letter of the previous word. */
else if (!begin_line) {
if (openfile->current_x == 0)
begin_line = TRUE;
else
openfile->current_x = move_mbleft(openfile->current->data,
openfile->current_x);
while (!begin_line) {
char_mb_len = parse_mbchar(openfile->current->data +
openfile->current_x, char_mb, NULL);
/* If we've found it, stop moving backward through the
* current line. */
if (!is_word_mbchar(char_mb, allow_punct))
break;
if (openfile->current_x == 0)
begin_line = TRUE;
else
openfile->current_x =
move_mbleft(openfile->current->data,
openfile->current_x);
}
/* If we've found it, move forward to the first letter of the
* previous word. */
if (!begin_line)
openfile->current_x += char_mb_len;
}
free(char_mb);
openfile->placewewant = xplustabs();
/* If allow_update is TRUE, update the screen. */
if (allow_update)
edit_redraw(current_save, pww_save);
/* Return whether we started on a word. */
return started_on_word;
}
/* Move to the previous word in the file, treating punctuation as part
* of a word if the WORD_BOUNDS flag is set, and update the screen
* afterwards. */
void do_prev_word_void(void)
{
do_prev_word(ISSET(WORD_BOUNDS), TRUE);
}
#endif /* !NANO_TINY */
/* Move to the beginning of the current line. If the SMART_HOME flag is
* set, move to the first non-whitespace character of the current line
* if we're not already there, or to the beginning of the current line
* if we are. */
void do_home(void)
{
size_t pww_save = openfile->placewewant;
check_statusblank();
#ifndef NANO_TINY
if (ISSET(SMART_HOME)) {
size_t current_x_save = openfile->current_x;
openfile->current_x = indent_length(openfile->current->data);
if (openfile->current_x == current_x_save ||
openfile->current->data[openfile->current_x] == '\0')
openfile->current_x = 0;
openfile->placewewant = xplustabs();
} else {
#endif
openfile->current_x = 0;
openfile->placewewant = 0;
#ifndef NANO_TINY
}
#endif
if (need_horizontal_update(pww_save))
update_line(openfile->current, openfile->current_x);
}
/* Move to the end of the current line. */
void do_end(void)
{
size_t pww_save = openfile->placewewant;
check_statusblank();
openfile->current_x = strlen(openfile->current->data);
openfile->placewewant = xplustabs();
if (need_horizontal_update(pww_save))
update_line(openfile->current, openfile->current_x);
}
/* Move up one line. */
void do_up(void)
{
check_statusblank();
#ifndef DISABLE_WRAPPING
wrap_reset();
#endif
check_statusblank();
if (current->prev == NULL)
/* If we're at the top of the file, get out. */
if (openfile->current == openfile->fileage)
return;
assert(current_y == current->lineno - edittop->lineno);
assert(openfile->current_y == openfile->current->lineno - openfile->edittop->lineno);
current = current->prev;
current_x = actual_x(current->data, placewewant);
/* Move the current line of the edit window up. */
openfile->current = openfile->current->prev;
openfile->current_x = actual_x(openfile->current->data,
openfile->placewewant);
/* If we're on the first row of the edit window, scroll up one line
* if we're in smooth scrolling mode, or up half a page if we're
* not. */
if (current_y == 0)
/* If we're on the first line of the edit window, scroll the edit
* window up one line if we're in smooth scrolling mode, or up half
* a page if we're not. */
if (openfile->current_y == 0)
edit_scroll(UP,
#ifndef NANO_SMALL
ISSET(SMOOTHSCROLL) ? 1 :
#ifndef NANO_TINY
ISSET(SMOOTH_SCROLL) ? 1 :
#endif
editwinrows / 2);
/* Update the lines left alone by edit_scroll(): the line we were on
* before and the line we're on now. The former needs to be redrawn
* if we're not on the first page, and the latter needs to be
* drawn. */
if (need_vertical_update(0))
update_line(current->next, 0);
update_line(current, current_x);
/* Update the line we were on before and the line we're on now. The
* former needs to be redrawn if we're not on the first page, and
* the latter needs to be drawn unconditionally. */
else {
if (need_vertical_update(0))
update_line(openfile->current->next, 0);
update_line(openfile->current, openfile->current_x);
}
}
#ifndef NANO_TINY
/* Scroll up one line without scrolling the cursor. */
void do_scroll_up(void)
{
check_statusblank();
#ifndef DISABLE_WRAPPING
wrap_reset();
#endif
/* If the top of the file is onscreen, get out. */
if (openfile->edittop == openfile->fileage)
return;
assert(openfile->current_y == openfile->current->lineno - openfile->edittop->lineno);
/* Move the current line of the edit window up. */
openfile->current = openfile->current->prev;
openfile->current_x = actual_x(openfile->current->data,
openfile->placewewant);
/* Scroll the edit window up one line. */
edit_scroll(UP, 1);
}
#endif /* !NANO_TINY */
/* Move down one line. */
void do_down(void)
{
check_statusblank();
#ifndef DISABLE_WRAPPING
wrap_reset();
#endif
check_statusblank();
if (current->next == NULL)
/* If we're at the bottom of the file, get out. */
if (openfile->current == openfile->filebot)
return;
assert(current_y == current->lineno - edittop->lineno);
current = current->next;
current_x = actual_x(current->data, placewewant);
assert(openfile->current_y == openfile->current->lineno - openfile->edittop->lineno);
/* 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)
/* Move the current line of the edit window down. */
openfile->current = openfile->current->next;
openfile->current_x = actual_x(openfile->current->data,
openfile->placewewant);
/* If we're on the last line of the edit window, scroll the edit
* window down one line if we're in smooth scrolling mode, or down
* half a page if we're not. */
if (openfile->current_y == editwinrows - 1)
edit_scroll(DOWN,
#ifndef NANO_SMALL
ISSET(SMOOTHSCROLL) ? 1 :
#ifndef NANO_TINY
ISSET(SMOOTH_SCROLL) ? 1 :
#endif
editwinrows / 2);
/* Update the lines left alone by edit_scroll(): the line we were on
* before and the line we're on now. The former needs to be redrawn
* if we're not on the first page, and the latter needs to be
* drawn. */
if (need_vertical_update(0))
update_line(current->prev, 0);
update_line(current, current_x);
/* Update the line we were on before and the line we're on now. The
* former needs to be redrawn if we're not on the first page, and
* the latter needs to be drawn unconditionally. */
else {
if (need_vertical_update(0))
update_line(openfile->current->prev, 0);
update_line(openfile->current, openfile->current_x);
}
}
void do_left(bool allow_update)
#ifndef NANO_TINY
/* Scroll down one line without scrolling the cursor. */
void do_scroll_down(void)
{
size_t pww_save = placewewant;
if (current_x > 0)
current_x = move_mbleft(current->data, current_x);
else if (current != fileage) {
check_statusblank();
#ifndef DISABLE_WRAPPING
wrap_reset();
#endif
/* If we're at the bottom of the file, get out. */
if (openfile->current == openfile->filebot)
return;
assert(openfile->current_y == openfile->current->lineno - openfile->edittop->lineno);
/* Move the current line of the edit window down. */
openfile->current = openfile->current->next;
openfile->current_x = actual_x(openfile->current->data,
openfile->placewewant);
/* Scroll the edit window down one line. */
edit_scroll(DOWN, 1);
}
#endif /* !NANO_TINY */
/* Move left one character. */
void do_left(void)
{
size_t pww_save = openfile->placewewant;
check_statusblank();
if (openfile->current_x > 0)
openfile->current_x = move_mbleft(openfile->current->data,
openfile->current_x);
else if (openfile->current != openfile->fileage) {
do_up();
current_x = strlen(current->data);
openfile->current_x = strlen(openfile->current->data);
}
placewewant = xplustabs();
openfile->placewewant = xplustabs();
if (need_horizontal_update(pww_save))
update_line(openfile->current, openfile->current_x);
}
/* Move right one character. */
void do_right(void)
{
size_t pww_save = openfile->placewewant;
check_statusblank();
if (allow_update && need_horizontal_update(pww_save))
update_line(current, current_x);
}
void do_left_void(void)
{
do_left(TRUE);
}
assert(openfile->current_x <= strlen(openfile->current->data));
void do_right(bool allow_update)
{
size_t pww_save = placewewant;
assert(current_x <= strlen(current->data));
if (current->data[current_x] != '\0')
current_x = move_mbright(current->data, current_x);
else if (current->next != NULL) {
if (openfile->current->data[openfile->current_x] != '\0')
openfile->current_x = move_mbright(openfile->current->data,
openfile->current_x);
else if (openfile->current != openfile->filebot) {
do_down();
current_x = 0;
openfile->current_x = 0;
}
placewewant = xplustabs();
check_statusblank();
if (allow_update && need_horizontal_update(pww_save))
update_line(current, current_x);
}
void do_right_void(void)
{
do_right(TRUE);
openfile->placewewant = xplustabs();
if (need_horizontal_update(pww_save))
update_line(openfile->current, openfile->current_x);
}

3828
src/nano.c

File diff suppressed because it is too large Load Diff

View File

@@ -2,28 +2,34 @@
/**************************************************************************
* nano.h *
* *
* Copyright (C) 1999-2005 Chris Allegretta *
* Copyright (C) 1999-2004 Chris Allegretta *
* Copyright (C) 2005 David Lawrence Ramsey *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2, or (at your option) *
* any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the Free Software *
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
* 02110-1301, USA. *
* *
**************************************************************************/
#ifndef NANO_H
#define NANO_H 1
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#ifdef __TANDEM
/* Tandem NonStop Kernel */
/* Tandem NonStop Kernel. */
#include <floss.h>
#define NANO_ROOT_UID 65535
#else
@@ -34,17 +40,17 @@
#include <limits.h>
#endif
/* Macros for the flags long. */
/* Macros for flags. */
#define SET(bit) flags |= bit
#define UNSET(bit) flags &= ~bit
#define ISSET(bit) ((flags & bit) != 0)
#define TOGGLE(bit) flags ^= bit
/* Macros for character allocation. */
/* Macros for character allocation, etc. */
#define charalloc(howmuch) (char *)nmalloc((howmuch) * sizeof(char))
#define charealloc(ptr, howmuch) (char *)nrealloc(ptr, (howmuch) * sizeof(char))
#define charmove(dest, src, n) memmove(dest, src, (n) * sizeof(char))
#define charcpy(dest, src, n) memcpy(dest, src, (n) * sizeof(char))
#define charset(dest, src, n) memset(dest, src, (n) * sizeof(char))
/* Other macros. */
#ifdef BROKEN_REGEXEC
@@ -52,22 +58,23 @@
#define regexec(preg, string, nmatch, pmatch, eflags) safe_regexec(preg, string, nmatch, pmatch, eflags)
#endif
/* Set a default value for PATH_MAX, so we can use it in lines like
* "path = getcwd(NULL, PATH_MAX + 1);". */
/* Set a default value for PATH_MAX if there isn't one. */
#ifndef PATH_MAX
#define PATH_MAX 4096
#endif
#ifdef USE_SLANG
/* Slang support enabled. */
/* Slang support. */
#include <slcurses.h>
/* Slang curses emulation brain damage, part 2: Slang doesn't define the
* curses equivalents of the Insert or Delete keys. */
#define KEY_DC SL_KEY_DELETE
#define KEY_IC SL_KEY_IC
/* Ncurses support. */
#elif defined(HAVE_NCURSES_H)
#include <ncurses.h>
#else /* Uh oh. */
#else
/* Curses support. */
#include <curses.h>
#endif /* CURSES_H */
@@ -86,23 +93,30 @@
/* Mark a string that will be sent to gettext() later. */
#include <stddef.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include "config.h"
/* If no snprintf() or vsnprintf(), use the versions from glib. */
#if !defined(HAVE_SNPRINTF) || !defined(HAVE_VSNPRINTF)
#include <glib.h>
#ifndef HAVE_SNPRINTF
#define snprintf g_snprintf
#include <dirent.h>
#ifdef HAVE_REGEX_H
#include <regex.h>
#endif
#include <assert.h>
/* If no vsnprintf(), use the version from glib 2.x. */
#ifndef HAVE_VSNPRINTF
#include <glib.h>
#define vsnprintf g_vsnprintf
#endif
#endif
/* If no strcasecmp(), strncasecmp(), strcasestr(), strnlen(),
* getdelim(), or getline(), use the versions we have. */
/* If no isblank(), iswblank(), strcasecmp(), strncasecmp(),
* strcasestr(), strnlen(), getdelim(), or getline(), use the versions
* we have. */
#ifndef HAVE_ISBLANK
#define isblank nisblank
#endif
#ifndef HAVE_ISWBLANK
#define iswblank niswblank
#endif
#ifndef HAVE_STRCASECMP
#define strcasecmp nstrcasecmp
#endif
@@ -124,6 +138,12 @@
#define VERMSG "GNU nano " VERSION
/* If we don't have regex support, turn the color support off, as it
* depends on the use of regexes. */
#ifndef HAVE_REGEX_H
#undef ENABLE_COLOR
#endif
/* If we aren't using ncurses, turn the mouse support off, as it's
* ncurses-specific. */
#ifndef NCURSES_MOUSE_VERSION
@@ -140,181 +160,221 @@ typedef enum {
} file_format;
typedef enum {
UP, DOWN
} updown;
OVERWRITE, APPEND, PREPEND
} append_type;
typedef enum {
TOP, CENTER, NONE
} topmidnone;
UP, DOWN
} scroll_dir;
typedef enum {
CENTER, NONE
} update_type;
/* Structure types. */
typedef struct filestruct {
char *data;
struct filestruct *next; /* Next node. */
struct filestruct *prev; /* Previous node. */
int lineno; /* The line number. */
/* The text of this line. */
ssize_t lineno;
/* The number of this line. */
struct filestruct *next;
/* Next node. */
struct filestruct *prev;
/* Previous node. */
} filestruct;
#ifdef ENABLE_MULTIBUFFER
typedef struct openfilestruct {
char *filename;
#ifndef NANO_SMALL
struct stat originalfilestat;
#endif
struct openfilestruct *next;
/* Next node. */
struct openfilestruct *prev;
/* Previous node. */
filestruct *fileage; /* Current file. */
filestruct *filebot; /* Current file's last line. */
filestruct *edittop; /* Current top of edit window. */
filestruct *current; /* Current file's line. */
#ifndef NANO_SMALL
filestruct *mark_beginbuf;
/* Current file's beginning marked
* line. */
size_t mark_beginx; /* Current file's beginning marked
* line's x-coordinate position. */
#endif
size_t current_x; /* Current file's x-coordinate
* position. */
size_t placewewant; /* Current file's place we want. */
int totlines; /* Current file's total number of
* lines. */
size_t totsize; /* Current file's total size. */
unsigned long flags; /* Current file's flags: modification
* status (and marking status, if
* available). */
file_format fmt; /* Current file's format. */
} openfilestruct;
#endif
typedef struct partition {
filestruct *fileage;
/* The top line of this portion of the file. */
filestruct *top_prev;
/* The line before the top line of this portion of the file. */
char *top_data;
/* The text before the beginning of the top line of this portion
* of the file. */
filestruct *filebot;
/* The bottom line of this portion of the file. */
filestruct *bot_next;
/* The line after the bottom line of this portion of the
* file. */
char *bot_data;
/* The text after the end of the bottom line of this portion of
* the file. */
} partition;
#ifdef ENABLE_COLOR
typedef struct colortype {
short fg;
/* This syntax's foreground color. */
short bg;
/* This syntax's background color. */
bool bright;
/* Is this color A_BOLD? */
bool icase;
/* Is this regex string case insensitive? */
int pairnum;
/* The color pair number used for this foreground color and
* background color. */
char *start_regex;
/* The start (or all) of the regex string. */
regex_t *start;
/* The compiled start (or all) of the regex string. */
char *end_regex;
/* The end (if any) of the regex string. */
regex_t *end;
/* The compiled end (if any) of the regex string. */
struct colortype *next;
/* Next set of colors. */
} colortype;
typedef struct exttype {
char *ext_regex;
/* The extensions that match this syntax. */
regex_t *ext;
/* The compiled extensions that match this syntax. */
struct exttype *next;
/* Next set of extensions. */
} exttype;
typedef struct syntaxtype {
char *desc;
/* The name of this syntax. */
exttype *extensions;
/* The list of extensions that this syntax applies to. */
colortype *color;
/* The colors used in this syntax. */
struct syntaxtype *next;
/* Next syntax. */
} syntaxtype;
#endif /* ENABLE_COLOR */
typedef struct openfilestruct {
char *filename;
/* The current file's name. */
filestruct *fileage;
/* The current file's first line. */
filestruct *filebot;
/* The current file's last line. */
filestruct *edittop;
/* The current top of the edit window. */
filestruct *current;
/* The current file's current line. */
size_t totsize;
/* The current file's total number of characters. */
size_t current_x;
/* The current file's x-coordinate position. */
size_t placewewant;
/* The current file's place we want. */
ssize_t current_y;
/* The current file's y-coordinate position. */
bool modified;
/* Whether the current file has been modified. */
#ifndef NANO_TINY
bool mark_set;
/* Whether the mark is on in the current file. */
filestruct *mark_begin;
/* The current file's beginning marked line, if any. */
size_t mark_begin_x;
/* The current file's beginning marked line's x-coordinate
* position, if any. */
file_format fmt;
/* The current file's format. */
struct stat *current_stat;
/* The current file's stat. */
#endif
#ifdef ENABLE_COLOR
colortype *colorstrings;
/* The current file's associated colors. */
#endif
struct openfilestruct *next;
/* Next node. */
struct openfilestruct *prev;
/* Previous node. */
} openfilestruct;
typedef struct shortcut {
/* Key values that aren't used should be set to NANO_NO_KEY. */
int ctrlval; /* Special sentinel key or control key we want
* bound. */
int metaval; /* Meta key we want bound. */
int funcval; /* Function key we want bound. */
int miscval; /* Other Meta key we want bound. */
bool viewok; /* Is this function legal in view mode? */
void (*func)(void); /* Function to call when we catch this key. */
const char *desc; /* Description, e.g. "Page Up". */
int ctrlval;
/* The special sentinel key or control key we want bound, if
* any. */
int metaval;
/* The meta key we want bound, if any. */
int funcval;
/* The function key we want bound, if any. */
int miscval;
/* The other meta key we want bound, if any. */
bool viewok;
/* Is this function allowed when in view mode? */
void (*func)(void);
/* The function to call when we get this key. */
const char *desc;
/* The function's description, e.g. "Page Up". */
#ifndef DISABLE_HELP
const char *help; /* Help file entry text. */
const char *help;
/* The help file entry text for this function. */
#endif
struct shortcut *next;
/* Next shortcut. */
} shortcut;
#ifndef NANO_SMALL
#ifndef NANO_TINY
typedef struct toggle {
int val; /* Sequence to toggle the key. Should only need
* one. */
const char *desc; /* Description for when toggle is, uh, toggled,
* e.g. "Cut to end"; we'll append Enabled or
* Disabled. */
long flag; /* What flag actually gets toggled. */
int val;
/* The sequence to toggle the key. We should only need one. */
const char *desc;
/* The description for when the toggle is, uh, toggled, e.g.
* "Cut to end"; we'll append Enabled or Disabled. */
long flag;
/* Which flag actually gets toggled. */
struct toggle *next;
/* Next toggle. */
} toggle;
#endif
#ifdef ENABLE_NANORC
typedef struct rcoption {
const char *name;
/* The name of the rcfile option. */
long flag;
/* The flag associated with it, if any. */
} rcoption;
#endif
#ifdef ENABLE_COLOR
typedef struct colortype {
int fg; /* Foreground color. */
int bg; /* Background color. */
int bright; /* Is this color A_BOLD? */
int pairnum; /* Color pair number used for this
* foreground/background. */
regex_t start; /* Start (or all) of the regex
* string. */
regex_t *end; /* End (if any) of the regex string. */
struct colortype *next;
} colortype;
/* Bitwise flags so that we can save space (or, more correctly, not
* waste it). */
#define CASE_SENSITIVE (1<<0)
#define CONST_UPDATE (1<<1)
#define NO_HELP (1<<2)
#define NOFOLLOW_SYMLINKS (1<<3)
#define SUSPEND (1<<4)
#define NO_WRAP (1<<5)
#define AUTOINDENT (1<<6)
#define VIEW_MODE (1<<7)
#define USE_MOUSE (1<<8)
#define USE_REGEXP (1<<9)
#define TEMP_FILE (1<<10)
#define CUT_TO_END (1<<11)
#define BACKWARDS_SEARCH (1<<12)
#define MULTIBUFFER (1<<13)
#define SMOOTH_SCROLL (1<<14)
#define REBIND_DELETE (1<<15)
#define REBIND_KEYPAD (1<<16)
#define NO_CONVERT (1<<17)
#define BACKUP_FILE (1<<18)
#define NO_RCFILE (1<<19)
#define NO_COLOR_SYNTAX (1<<20)
#define PRESERVE (1<<21)
#define HISTORYLOG (1<<22)
#define RESTRICTED (1<<23)
#define SMART_HOME (1<<24)
#define WHITESPACE_DISPLAY (1<<25)
#define MORE_SPACE (1<<26)
#define TABS_TO_SPACES (1<<27)
#define QUICK_BLANK (1<<28)
#define WORD_BOUNDS (1<<29)
#define NO_NEWLINES (1<<30)
#define USE_UTF8 (1<<31)
typedef struct exttype {
regex_t val; /* The extensions that match this
* syntax. */
struct exttype *next;
} exttype;
typedef struct syntaxtype {
char *desc; /* Name of this syntax type. */
exttype *extensions; /* List of extensions that this syntax
* applies to. */
colortype *color; /* Color struct for this syntax. */
struct syntaxtype *next;
} syntaxtype;
#endif
#ifndef NANO_SMALL
typedef struct historytype {
struct historytype *next;
struct historytype *prev;
char *data;
} historytype;
typedef struct historyheadtype {
struct historytype *next; /* Keep *next and *prev members
* together. */
struct historytype *prev; /* And in the same order as in
* historytype. */
struct historytype *tail;
struct historytype *current;
int count;
int len;
} historyheadtype;
#endif
/* Bitwise flags so we can save space (or more correctly, not waste
* it). */
#define MODIFIED (1<<0)
#define CASE_SENSITIVE (1<<1)
#define MARK_ISSET (1<<2)
#define 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_FILE (1<<12)
#define CUT_TO_END (1<<13)
#define REVERSE_SEARCH (1<<14)
#define MULTIBUFFER (1<<15)
#define SMOOTHSCROLL (1<<16)
#define DISABLE_CURPOS (1<<17) /* Damn, we still need it. */
#define REBIND_DELETE (1<<18)
#define NO_CONVERT (1<<19)
#define BACKUP_FILE (1<<20)
#define NO_RCFILE (1<<21)
#define NO_COLOR_SYNTAX (1<<22)
#define PRESERVE (1<<23)
#define HISTORY_CHANGED (1<<24)
#define HISTORYLOG (1<<25)
#define RESTRICTED (1<<26)
#define SMART_HOME (1<<27)
#define WHITESPACE_DISPLAY (1<<28)
#define MORE_SPACE (1<<29)
#define NO_UTF8 (1<<30)
/* Control key sequences, changing these would be very very bad. */
/* 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
@@ -349,8 +409,20 @@ typedef struct historyheadtype {
#define NANO_CONTROL_7 31
#define NANO_CONTROL_8 127
#define NANO_ALT_SPACE ' '
#define NANO_ALT_LPAREN '('
#define NANO_ALT_RPAREN ')'
#define NANO_ALT_PLUS '+'
#define NANO_ALT_COMMA ','
#define NANO_ALT_MINUS '-'
#define NANO_ALT_PERIOD '.'
#define NANO_ALT_9 '9'
#define NANO_ALT_0 '0'
#define NANO_ALT_LCARAT '<'
#define NANO_ALT_EQUALS '='
#define NANO_ALT_RCARAT '>'
#define NANO_ALT_RBRACKET ']'
#define NANO_ALT_USCORE '_'
#define NANO_ALT_A 'a'
#define NANO_ALT_B 'b'
#define NANO_ALT_C 'c'
@@ -377,14 +449,6 @@ typedef struct historyheadtype {
#define NANO_ALT_X 'x'
#define NANO_ALT_Y 'y'
#define NANO_ALT_Z 'z'
#define NANO_ALT_PERIOD '.'
#define NANO_ALT_COMMA ','
#define NANO_ALT_LPAREN '('
#define NANO_ALT_RPAREN ')'
#define NANO_ALT_LCARAT '<'
#define NANO_ALT_RCARAT '>'
#define NANO_ALT_RBRACKET ']'
#define NANO_ALT_SPACE ' '
/* 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. */
@@ -392,9 +456,6 @@ typedef struct historyheadtype {
/* 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_XON_KEY NANO_CONTROL_Q
#define NANO_XOFF_KEY NANO_CONTROL_S
@@ -417,6 +478,7 @@ typedef struct historyheadtype {
#define NANO_WHEREIS_NEXT_KEY NANO_ALT_W
#define NANO_WHEREIS_NEXT_FKEY KEY_F(16)
#define NANO_TOOTHERWHEREIS_KEY NANO_CONTROL_T
#define NANO_REGEXP_KEY NANO_ALT_R
#define NANO_REPLACE_KEY NANO_CONTROL_4
#define NANO_REPLACE_FKEY KEY_F(14)
#define NANO_ALT_REPLACE_KEY NANO_ALT_R
@@ -440,8 +502,8 @@ typedef struct historyheadtype {
#define NANO_REFRESH_KEY NANO_CONTROL_L
#define NANO_JUSTIFY_KEY NANO_CONTROL_J
#define NANO_JUSTIFY_FKEY KEY_F(4)
#define NANO_UNJUSTIFY_KEY NANO_UNCUT_KEY /* Same key as uncut. */
#define NANO_UNJUSTIFY_FKEY NANO_UNCUT_FKEY /* Same key as uncut. */
#define NANO_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
@@ -459,13 +521,18 @@ typedef struct historyheadtype {
#define NANO_TOFILES_KEY NANO_CONTROL_T
#define NANO_APPEND_KEY NANO_ALT_A
#define NANO_PREPEND_KEY NANO_ALT_P
#define NANO_OPENPREV_KEY NANO_ALT_LCARAT
#define NANO_OPENNEXT_KEY NANO_ALT_RCARAT
#define NANO_OPENPREV_ALTKEY NANO_ALT_COMMA
#define NANO_OPENNEXT_ALTKEY NANO_ALT_PERIOD
#define NANO_PREVFILE_KEY NANO_ALT_LCARAT
#define NANO_NEXTFILE_KEY NANO_ALT_RCARAT
#define NANO_PREVFILE_ALTKEY NANO_ALT_COMMA
#define NANO_NEXTFILE_ALTKEY NANO_ALT_PERIOD
#define NANO_BRACKET_KEY NANO_ALT_RBRACKET
#define NANO_NEXTWORD_KEY NANO_CONTROL_SPACE
#define NANO_PREVWORD_KEY NANO_ALT_SPACE
#define NANO_WORDCOUNT_KEY NANO_ALT_D
#define NANO_SCROLLUP_KEY NANO_ALT_MINUS
#define NANO_SCROLLDOWN_KEY NANO_ALT_PLUS
#define NANO_SCROLLUP_ALTKEY NANO_ALT_USCORE
#define NANO_SCROLLDOWN_ALTKEY NANO_ALT_EQUALS
#define NANO_CUTTILLEND_KEY NANO_CONTROL_X
#define NANO_CUTTILLEND_ALTKEY NANO_ALT_T
#define NANO_PARABEGIN_KEY NANO_CONTROL_W
@@ -478,15 +545,14 @@ typedef struct historyheadtype {
#define NANO_FULLJUSTIFY_ALTKEY NANO_ALT_J
#define NANO_VERBATIM_KEY NANO_ALT_V
#ifndef NANO_SMALL
/* Toggles do not exist with NANO_SMALL. */
#ifndef NANO_TINY
/* Toggles do not exist with NANO_TINY. */
#define TOGGLE_CONST_KEY NANO_ALT_C
#define TOGGLE_AUTOINDENT_KEY NANO_ALT_I
#define TOGGLE_SUSPEND_KEY NANO_ALT_Z
#define TOGGLE_NOHELP_KEY NANO_ALT_X
#define TOGGLE_MOUSE_KEY NANO_ALT_M
#define TOGGLE_CUTTOEND_KEY NANO_ALT_K
#define TOGGLE_REGEXP_KEY NANO_ALT_R
#define TOGGLE_WRAP_KEY NANO_ALT_L
#define TOGGLE_BACKWARDS_KEY NANO_ALT_B
#define TOGGLE_CASE_KEY NANO_ALT_C
@@ -500,24 +566,31 @@ typedef struct historyheadtype {
#define TOGGLE_SMARTHOME_KEY NANO_ALT_H
#define TOGGLE_WHITESPACE_KEY NANO_ALT_P
#define TOGGLE_MORESPACE_KEY NANO_ALT_O
#endif /* !NANO_SMALL */
#define TOGGLE_TABSTOSPACES_KEY NANO_ALT_Q
#endif /* !NANO_TINY */
#define MAIN_VISIBLE 12
#define VIEW TRUE
#define NOVIEW FALSE
/* Minimum editor window rows required for nano to work correctly. */
/* The minimum editor window columns and rows required for nano to work
* correctly. */
#define MIN_EDITOR_COLS 4
#define MIN_EDITOR_ROWS 1
/* Default number of characters from end-of-line where text wrapping
* occurs. */
/* The default number of characters from the end of the line where
* wrapping occurs. */
#define CHARS_FROM_EOL 8
/* Default width of a tab. */
/* The default width of a tab in spaces. */
#define WIDTH_OF_TAB 8
/* Maximum number of search/replace history strings saved. */
/* The maximum number of search/replace history strings saved, not
* counting the blank lines at their ends. */
#define MAX_SEARCH_HISTORY 100
/* The maximum number of bytes we read from a file at one time. */
#define MAX_BUF_SIZE 128
#endif /* !NANO_H */

1244
src/prompt.c Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -2,59 +2,44 @@
/**************************************************************************
* rcfile.c *
* *
* Copyright (C) 1999-2005 Chris Allegretta *
* Copyright (C) 2001-2004 Chris Allegretta *
* Copyright (C) 2005 David Lawrence Ramsey *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2, or (at your option) *
* any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the Free Software *
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
* 02110-1301, USA. *
* *
**************************************************************************/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "proto.h"
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>
#include <unistd.h>
#include <ctype.h>
#include <assert.h>
#include "proto.h"
#include "nano.h"
#ifdef ENABLE_NANORC
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
{"cut", CUT_TO_END},
#endif
{"const", CONST_UPDATE},
#ifndef DISABLE_WRAPJUSTIFY
{"fill", 0},
#endif
#ifndef NANO_SMALL
{"historylog", HISTORYLOG},
#endif
#ifndef DISABLE_MOUSE
{"mouse", USE_MOUSE},
#endif
@@ -62,11 +47,9 @@ const static rcoption rcopts[] = {
{"multibuffer", MULTIBUFFER},
#endif
{"morespace", MORE_SPACE},
#ifndef NANO_SMALL
{"noconvert", NO_CONVERT},
#endif
{"nofollow", NOFOLLOW_SYMLINKS},
{"nohelp", NO_HELP},
{"nonewlines", NO_NEWLINES},
#ifndef DISABLE_WRAPPING
{"nowrap", NO_WRAP},
#endif
@@ -79,13 +62,10 @@ const static rcoption rcopts[] = {
{"quotestr", 0},
#endif
{"rebinddelete", REBIND_DELETE},
{"rebindkeypad", REBIND_KEYPAD},
#ifdef HAVE_REGEX_H
{"regexp", USE_REGEXP},
#endif
#ifndef NANO_SMALL
{"smarthome", SMART_HOME},
{"smooth", SMOOTHSCROLL},
#endif
#ifndef DISABLE_SPELLER
{"speller", 0},
#endif
@@ -93,15 +73,32 @@ const static rcoption rcopts[] = {
{"tabsize", 0},
{"tempfile", TEMP_FILE},
{"view", VIEW_MODE},
#ifndef NANO_SMALL
#ifndef NANO_TINY
{"autoindent", AUTOINDENT},
{"backup", BACKUP_FILE},
{"backupdir", 0},
{"backwards", BACKWARDS_SEARCH},
{"casesensitive", CASE_SENSITIVE},
{"cut", CUT_TO_END},
{"historylog", HISTORYLOG},
{"noconvert", NO_CONVERT},
{"quickblank", QUICK_BLANK},
{"smarthome", SMART_HOME},
{"smooth", SMOOTH_SCROLL},
{"tabstospaces", TABS_TO_SPACES},
{"whitespace", 0},
{"wordbounds", WORD_BOUNDS},
#endif
{NULL, 0}
};
static bool errors = FALSE;
static int lineno = 0;
/* Whether we got any errors while parsing an rcfile. */
static size_t lineno = 0;
/* If we did, the line number where the current error
* occurred. */
static char *nanorc = NULL;
/* The path to the rcfile we're parsing. */
#ifdef ENABLE_COLOR
static syntaxtype *endsyntax = NULL;
/* The end of the list of syntaxes. */
@@ -110,7 +107,7 @@ static colortype *endcolor = NULL;
#endif
/* We have an error in some part of the rcfile. Put it on stderr and
* make the user hit return to continue starting up nano. */
* make the user hit Enter to continue starting up nano. */
void rcfile_error(const char *msg, ...)
{
va_list ap;
@@ -118,7 +115,7 @@ void rcfile_error(const char *msg, ...)
fprintf(stderr, "\n");
if (lineno > 0) {
errors = TRUE;
fprintf(stderr, _("Error in %s on line %d: "), nanorc, lineno);
fprintf(stderr, _("Error in %s on line %lu: "), nanorc, (unsigned long)lineno);
}
va_start(ap, msg);
@@ -132,7 +129,7 @@ void rcfile_error(const char *msg, ...)
* the end of the line. */
char *parse_next_word(char *ptr)
{
while (!is_blank_char(*ptr) && *ptr != '\0')
while (!isblank(*ptr) && *ptr != '\0')
ptr++;
if (*ptr == '\0')
@@ -141,7 +138,7 @@ char *parse_next_word(char *ptr)
/* Null-terminate and advance ptr. */
*ptr++ = '\0';
while (is_blank_char(*ptr))
while (isblank(*ptr))
ptr++;
return ptr;
@@ -181,22 +178,19 @@ char *parse_argument(char *ptr)
ptr = last_quote + 1;
}
if (ptr != NULL)
while (is_blank_char(*ptr))
while (isblank(*ptr))
ptr++;
return ptr;
}
#ifdef ENABLE_COLOR
int color_to_int(const char *colorname, bool *bright)
/* Return the short value corresponding to the color named in colorname,
* and set bright to TRUE if that color is bright. */
short color_to_short(const char *colorname, bool *bright)
{
int mcolor = -1;
short mcolor = -1;
if (colorname == NULL) {
rcfile_error(N_("Missing color name"));
return -1;
}
assert(bright != NULL);
assert(colorname != NULL && bright != NULL);
if (strncasecmp(colorname, "bright", 6) == 0) {
*bright = TRUE;
@@ -229,13 +223,14 @@ int color_to_int(const char *colorname, bool *bright)
return mcolor;
}
/* Parse the next regex string from the line at ptr, and return it. */
char *parse_next_regex(char *ptr)
{
assert(ptr != NULL);
/* Continue until the end of the line, or a " followed by a space, a
* blank character, or \0. */
while ((*ptr != '"' || (!is_blank_char(*(ptr + 1)) &&
while ((*ptr != '"' || (!isblank(*(ptr + 1)) &&
*(ptr + 1) != '\0')) && *ptr != '\0')
ptr++;
@@ -250,33 +245,39 @@ char *parse_next_regex(char *ptr)
/* Null terminate and advance ptr. */
*ptr++ = '\0';
while (is_blank_char(*ptr))
while (isblank(*ptr))
ptr++;
return ptr;
}
/* Compile the regular expression regex to preg. Return FALSE on
* success, or TRUE if the expression is invalid. */
bool nregcomp(regex_t *preg, const char *regex, int eflags)
/* Compile the regular expression regex to see if it's valid. Return
* TRUE if it is, or FALSE otherwise. */
bool nregcomp(const char *regex, int eflags)
{
int rc = regcomp(preg, regex, REG_EXTENDED | eflags);
regex_t preg;
int rc = regcomp(&preg, regex, REG_EXTENDED | eflags);
if (rc != 0) {
size_t len = regerror(rc, preg, NULL, 0);
size_t len = regerror(rc, &preg, NULL, 0);
char *str = charalloc(len);
regerror(rc, preg, str, len);
regerror(rc, &preg, str, len);
rcfile_error(N_("Bad regex \"%s\": %s"), regex, str);
free(str);
}
return (rc != 0);
regfree(&preg);
return (rc == 0);
}
/* Parse the next syntax string from the line at ptr, and add it to the
* global list of color syntaxes. */
void parse_syntax(char *ptr)
{
const char *fileregptr = NULL, *nameptr = NULL;
const syntaxtype *tmpsyntax;
exttype *endext = NULL;
/* The end of the extensions list for this syntax. */
@@ -301,6 +302,14 @@ void parse_syntax(char *ptr)
if (ptr == NULL)
return;
for (tmpsyntax = syntaxes; tmpsyntax != NULL;
tmpsyntax = tmpsyntax->next) {
if (strcmp(nameptr, tmpsyntax->desc) == 0) {
rcfile_error(N_("Duplicate syntax name %s"), nameptr);
return;
}
}
if (syntaxes == NULL) {
syntaxes = (syntaxtype *)nmalloc(sizeof(syntaxtype));
endsyntax = syntaxes;
@@ -311,15 +320,31 @@ void parse_syntax(char *ptr)
fprintf(stderr, "Adding new syntax after first one\n");
#endif
}
endsyntax->desc = mallocstrcpy(NULL, nameptr);
endsyntax->color = NULL;
endcolor = NULL;
endsyntax->extensions = NULL;
endsyntax->next = NULL;
#ifdef DEBUG
fprintf(stderr, "Starting a new syntax type: \"%s\"\n", nameptr);
#endif
/* The "none" syntax is the same as not having a syntax at all, so
* we can't assign any extensions or colors to it. */
if (strcmp(endsyntax->desc, "none") == 0) {
rcfile_error(N_("The \"none\" syntax is reserved"));
return;
}
/* The default syntax should have no associated extensions. */
if (strcmp(endsyntax->desc, "default") == 0 && *ptr != '\0') {
rcfile_error(
N_("The \"default\" syntax must take no extensions"));
return;
}
/* Now load the extensions into their part of the struct. */
while (*ptr != '\0') {
exttype *newext;
@@ -339,24 +364,30 @@ void parse_syntax(char *ptr)
break;
newext = (exttype *)nmalloc(sizeof(exttype));
if (nregcomp(&newext->val, fileregptr, REG_NOSUB))
free(newext);
else {
/* Save the extension regex if it's valid. */
if (nregcomp(fileregptr, REG_NOSUB)) {
newext->ext_regex = mallocstrcpy(NULL, fileregptr);
newext->ext = NULL;
if (endext == NULL)
endsyntax->extensions = newext;
else
endext->next = newext;
endext = newext;
endext->next = NULL;
}
} else
free(newext);
}
}
/* Parse the color stuff into the colorstrings array. */
void parse_colors(char *ptr)
/* Parse the color string in the line at ptr, and add it to the current
* file's associated colors. If icase is TRUE, treat the color string
* as case insensitive. */
void parse_colors(char *ptr, bool icase)
{
int fg, bg;
bool bright = FALSE;
short fg, bg;
bool bright = FALSE, no_fgcolor = FALSE;
char *fgstr;
assert(ptr != NULL);
@@ -371,23 +402,33 @@ void parse_colors(char *ptr)
if (strchr(fgstr, ',') != NULL) {
char *bgcolorname;
strtok(fgstr, ",");
bgcolorname = strtok(NULL, ",");
if (bgcolorname == NULL) {
/* If we have a background color without a foreground color,
* parse it properly. */
bgcolorname = fgstr + 1;
no_fgcolor = TRUE;
}
if (strncasecmp(bgcolorname, "bright", 6) == 0) {
rcfile_error(
N_("Background color %s cannot be bright"),
bgcolorname);
return;
}
bg = color_to_int(bgcolorname, &bright);
bg = color_to_short(bgcolorname, &bright);
} else
bg = -1;
fg = color_to_int(fgstr, &bright);
if (!no_fgcolor) {
fg = color_to_short(fgstr, &bright);
/* Don't try to parse screwed-up foreground colors. */
if (fg == -1)
return;
/* Don't try to parse screwed-up foreground colors. */
if (fg == -1)
return;
} else
fg = -1;
if (syntaxes == NULL) {
rcfile_error(
@@ -395,9 +436,13 @@ void parse_colors(char *ptr)
return;
}
/* Now for the fun part. Start adding regexps to individual strings
* in the colorstrings array, woo! */
if (*ptr == '\0') {
rcfile_error(N_("Missing regex string"));
return;
}
/* Now for the fun part. Start adding regexes to individual strings
* in the colorstrings array, woo! */
while (ptr != NULL && *ptr != '\0') {
colortype *newcolor;
/* The new color structure. */
@@ -420,34 +465,45 @@ void parse_colors(char *ptr)
ptr++;
newcolor = (colortype *)nmalloc(sizeof(colortype));
fgstr = ptr;
ptr = parse_next_regex(ptr);
if (ptr == NULL)
break;
if (nregcomp(&newcolor->start, fgstr, 0)) {
free(newcolor);
cancelled = TRUE;
} else {
newcolor = (colortype *)nmalloc(sizeof(colortype));
/* Save the starting regex string if it's valid, and set up the
* color information. */
if (nregcomp(fgstr, icase ? REG_ICASE : 0)) {
newcolor->fg = fg;
newcolor->bg = bg;
newcolor->bright = bright;
newcolor->next = NULL;
newcolor->icase = icase;
newcolor->start_regex = mallocstrcpy(NULL, fgstr);
newcolor->start = NULL;
newcolor->end_regex = NULL;
newcolor->end = NULL;
newcolor->next = NULL;
if (endcolor == NULL) {
endsyntax->color = newcolor;
#ifdef DEBUG
fprintf(stderr, "Starting a new colorstring for fg %d, bg %d\n", fg, bg);
fprintf(stderr, "Starting a new colorstring for fg %hd, bg %hd\n", fg, bg);
#endif
} else {
#ifdef DEBUG
fprintf(stderr, "Adding new entry for fg %d, bg %d\n", fg, bg);
fprintf(stderr, "Adding new entry for fg %hd, bg %hd\n", fg, bg);
#endif
endcolor->next = newcolor;
}
endcolor = newcolor;
} else {
free(newcolor);
cancelled = TRUE;
}
if (expectend) {
@@ -475,17 +531,16 @@ void parse_colors(char *ptr)
if (cancelled)
continue;
newcolor->end = (regex_t *)nmalloc(sizeof(regex_t));
if (nregcomp(newcolor->end, fgstr, 0)) {
free(newcolor->end);
newcolor->end = NULL;
}
/* Save the ending regex string if it's valid. */
newcolor->end_regex = (nregcomp(fgstr, icase ? REG_ICASE :
0)) ? mallocstrcpy(NULL, fgstr) : NULL;
}
}
}
#endif /* ENABLE_COLOR */
/* Parse the rcfile, once it has been opened successfully. */
/* Parse the rcfile, once it has been opened successfully at
* rcstream. */
void parse_rcfile(FILE *rcstream)
{
char *buf = NULL;
@@ -501,7 +556,7 @@ void parse_rcfile(FILE *rcstream)
lineno++;
ptr = buf;
while (is_blank_char(*ptr))
while (isblank(*ptr))
ptr++;
/* If we have a blank line or a comment, skip to the next
@@ -522,7 +577,9 @@ void parse_rcfile(FILE *rcstream)
else if (strcasecmp(keyword, "syntax") == 0)
parse_syntax(ptr);
else if (strcasecmp(keyword, "color") == 0)
parse_colors(ptr);
parse_colors(ptr, FALSE);
else if (strcasecmp(keyword, "icolor") == 0)
parse_colors(ptr, TRUE);
#endif /* ENABLE_COLOR */
else
rcfile_error(N_("Command %s not understood"), keyword);
@@ -561,10 +618,20 @@ void parse_rcfile(FILE *rcstream)
if (*option == '"')
option++;
ptr = parse_argument(ptr);
option = make_mbstring(option);
option = mallocstrcpy(NULL, option);
#ifdef DEBUG
fprintf(stderr, "option = \"%s\"\n", option);
#endif
/* Make sure option is a valid multibyte
* string. */
if (!is_valid_mbstring(option)) {
rcfile_error(
N_("Option is not a valid multibyte string"));
break;
}
#ifndef DISABLE_OPERATINGDIR
if (strcasecmp(rcopts[i].name, "operatingdir") == 0)
operating_dir = option;
@@ -581,10 +648,11 @@ void parse_rcfile(FILE *rcstream)
free(option);
} else
#endif
#ifndef NANO_SMALL
#ifndef NANO_TINY
if (strcasecmp(rcopts[i].name, "whitespace") == 0) {
whitespace = option;
if (mbstrlen(whitespace) != 2 || strlenpt(whitespace) != 2) {
if (mbstrlen(whitespace) != 2 ||
strlenpt(whitespace) != 2) {
rcfile_error(
N_("Two single-column characters required"));
free(whitespace);
@@ -592,31 +660,28 @@ void parse_rcfile(FILE *rcstream)
} else {
whitespace_len[0] =
parse_mbchar(whitespace, NULL,
NULL, NULL);
NULL);
whitespace_len[1] =
parse_mbchar(whitespace +
whitespace_len[0], NULL,
NULL, NULL);
whitespace_len[0], NULL, NULL);
}
} else
#endif
#ifndef DISABLE_JUSTIFY
if (strcasecmp(rcopts[i].name, "punct") == 0) {
punct = option;
if (strchr(punct, '\t') != NULL ||
strchr(punct, ' ') != NULL) {
if (has_blank_mbchars(punct)) {
rcfile_error(
N_("Non-tab and non-space characters required"));
N_("Non-blank characters required"));
free(punct);
punct = NULL;
}
} else if (strcasecmp(rcopts[i].name,
"brackets") == 0) {
brackets = option;
if (strchr(brackets, '\t') != NULL ||
strchr(brackets, ' ') != NULL) {
if (has_blank_mbchars(brackets)) {
rcfile_error(
N_("Non-tab and non-space characters required"));
N_("Non-blank characters required"));
free(brackets);
brackets = NULL;
}
@@ -625,7 +690,7 @@ void parse_rcfile(FILE *rcstream)
quotestr = option;
else
#endif
#ifndef NANO_SMALL
#ifndef NANO_TINY
if (strcasecmp(rcopts[i].name,
"backupdir") == 0)
backup_dir = option;
@@ -670,8 +735,7 @@ void parse_rcfile(FILE *rcstream)
if (errors) {
errors = FALSE;
fprintf(stderr,
_("\nPress Return to continue starting nano\n"));
fprintf(stderr, _("\nPress Enter to continue starting nano\n"));
while (getchar() != '\n')
;
}
@@ -679,14 +743,13 @@ void parse_rcfile(FILE *rcstream)
return;
}
/* The main rc file function, tries to open the rc file */
/* The main rcfile function. It tries to open the system-wide rcfile,
* followed by the local rcfile. */
void do_rcfile(void)
{
FILE *rcstream;
#ifdef SYSCONFDIR
assert(sizeof(SYSCONFDIR) == strlen(SYSCONFDIR) + 1);
nanorc = mallocstrcpy(nanorc, SYSCONFDIR "/nanorc");
/* Try to open the system-wide nanorc. */
rcstream = fopen(nanorc, "r");

File diff suppressed because it is too large Load Diff

2264
src/text.c Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -2,66 +2,39 @@
/**************************************************************************
* utils.c *
* *
* Copyright (C) 1999-2005 Chris Allegretta *
* Copyright (C) 1999-2004 Chris Allegretta *
* Copyright (C) 2005 David Lawrence Ramsey *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2, or (at your option) *
* any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* This program is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the Free Software *
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
* 02110-1301, USA. *
* *
**************************************************************************/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "proto.h"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h>
#include <pwd.h>
#include <ctype.h>
#include <errno.h>
#include <assert.h>
#include "proto.h"
#include "nano.h"
#ifdef HAVE_REGEX_H
#ifdef BROKEN_REGEXEC
/* Work around a potential segfault in glibc 2.2.3's regexec(). */
int safe_regexec(const regex_t *preg, const char *string, size_t nmatch,
regmatch_t pmatch[], int eflags)
{
if (string != NULL && *string != '\0')
return regexec(preg, string, nmatch, pmatch, eflags);
return REG_NOMATCH;
}
#endif
int regexp_bol_or_eol(const regex_t *preg, const char *string)
{
return (regexec(preg, string, 0, NULL, 0) == 0 &&
regexec(preg, string, 0, NULL, REG_NOTBOL | REG_NOTEOL) ==
REG_NOMATCH);
}
#endif /* HAVE_REGEX_H */
int num_of_digits(int n)
/* Return the number of decimal digits in n. */
int digits(size_t n)
{
int i = 1;
if (n < 0)
n = -n;
while (n > 10) {
n /= 10;
i++;
@@ -108,13 +81,46 @@ bool parse_num(const char *str, ssize_t *val)
return TRUE;
}
/* Fix the memory allocation for a string. */
void align(char **strp)
/* Read an int and a ssize_t, separated by a comma, from str, and store
* them in *line and *column (if they're not both NULL). On error, we
* return FALSE. Otherwise, we return TRUE. */
bool parse_line_column(const char *str, ssize_t *line, ssize_t *column)
{
assert(strp != NULL);
bool retval = TRUE;
const char *comma;
if (*strp != NULL)
*strp = charealloc(*strp, strlen(*strp) + 1);
assert(str != NULL);
comma = strchr(str, ',');
if (comma != NULL && column != NULL) {
if (!parse_num(comma + 1, column))
retval = FALSE;
}
if (line != NULL) {
if (comma != NULL) {
char *str_line = mallocstrncpy(NULL, str, comma - str + 1);
str_line[comma - str] = '\0';
if (str_line[0] != '\0' && !parse_num(str_line, line))
retval = FALSE;
free(str_line);
} else if (!parse_num(str, line))
retval = FALSE;
}
return retval;
}
/* Fix the memory allocation for a string. */
void align(char **str)
{
assert(str != NULL);
if (*str != NULL)
*str = charealloc(*str, strlen(*str) + 1);
}
/* Null a string at a certain index and align it. */
@@ -150,10 +156,33 @@ void sunder(char *str)
}
}
#if !defined(NANO_SMALL) && defined(ENABLE_NANORC)
/* These functions, ngetline() (originally getline()) and ngetdelim()
* (originally getdelim()), were adapted from GNU mailutils 0.5
* (mailbox/getline.c). Here is the notice from that file, after
* converting to the GPL via LGPL clause 3, and with the Free Software
* Foundation's address updated:
*
* GNU Mailutils -- a suite of utilities for electronic mail
* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301, USA. */
#if !defined(NANO_TINY) && defined(ENABLE_NANORC)
#ifndef HAVE_GETLINE
/* This function is equivalent to getline(). It was adapted from
* GNU mailutils' getline() function. */
/* This function is equivalent to getline(). */
ssize_t ngetline(char **lineptr, size_t *n, FILE *stream)
{
return getdelim(lineptr, n, '\n', stream);
@@ -161,31 +190,29 @@ ssize_t ngetline(char **lineptr, size_t *n, FILE *stream)
#endif
#ifndef HAVE_GETDELIM
/* This function is equivalent to getdelim(). It was adapted from
* GNU mailutils' getdelim() function. */
/* This function is equivalent to getdelim(). */
ssize_t ngetdelim(char **lineptr, size_t *n, int delim, FILE *stream)
{
size_t indx = 0;
int c;
/* Sanity checks. */
if (lineptr == NULL || n == NULL || stream == NULL)
return -1;
assert(lineptr != NULL && n != NULL && stream != NULL);
/* Allocate the line the first time. */
if (*lineptr == NULL) {
*lineptr = charalloc(128);
*n = 128;
*lineptr = charalloc(MAX_BUF_SIZE);
*n = MAX_BUF_SIZE;
}
while ((c = getc(stream)) != EOF) {
/* Check if more memory is needed. */
if (indx >= *n) {
*lineptr = charealloc(*lineptr, *n + 128);
*n += 128;
*lineptr = charealloc(*lineptr, *n + MAX_BUF_SIZE);
*n += MAX_BUF_SIZE;
}
/* Push the result in the line. */
/* Put the result in the line. */
(*lineptr)[indx++] = (char)c;
/* Bail out. */
@@ -195,20 +222,70 @@ ssize_t ngetdelim(char **lineptr, size_t *n, int delim, FILE *stream)
/* Make room for the null character. */
if (indx >= *n) {
*lineptr = charealloc(*lineptr, *n + 128);
*n += 128;
*lineptr = charealloc(*lineptr, *n + MAX_BUF_SIZE);
*n += MAX_BUF_SIZE;
}
/* Null terminate the buffer. */
null_at(lineptr, indx++);
*n = indx;
/* The last line may not have the delimiter, we have to return what
* we got and the error will be seen on the next iteration. */
/* The last line may not have the delimiter. We have to return what
* we got, and the error will be seen on the next iteration. */
return (c == EOF && (indx - 1) == 0) ? -1 : indx - 1;
}
#endif
#endif /* !NANO_SMALL && ENABLE_NANORC */
#endif /* !NANO_TINY && ENABLE_NANORC */
#ifdef HAVE_REGEX_H
#ifdef BROKEN_REGEXEC
/* Work around a potential segfault in glibc 2.2.3's regexec(). */
int safe_regexec(const regex_t *preg, const char *string, size_t nmatch,
regmatch_t pmatch[], int eflags)
{
if (string != NULL && *string != '\0')
return regexec(preg, string, nmatch, pmatch, eflags);
return REG_NOMATCH;
}
#endif
/* Do the compiled regex in preg and the regex in string match the
* beginning or end of a line? */
bool regexp_bol_or_eol(const regex_t *preg, const char *string)
{
return (regexec(preg, string, 0, NULL, 0) == 0 &&
regexec(preg, string, 0, NULL, REG_NOTBOL | REG_NOTEOL) ==
REG_NOMATCH);
}
#endif /* HAVE_REGEX_H */
#ifndef DISABLE_SPELLER
/* Is the word starting at position pos in buf a whole word? */
bool is_whole_word(size_t pos, const char *buf, const char *word)
{
char *p = charalloc(mb_cur_max()), *r = charalloc(mb_cur_max());
size_t word_end = pos + strlen(word);
bool retval;
assert(buf != NULL && pos <= strlen(buf) && word != NULL);
parse_mbchar(buf + move_mbleft(buf, pos), p, NULL);
parse_mbchar(buf + word_end, r, NULL);
/* If we're at the beginning of the line or the character before the
* word isn't a non-punctuation "word" character, and if we're at
* the end of the line or the character after the word isn't a
* non-punctuation "word" character, we have a whole word. */
retval = (pos == 0 || !is_word_mbchar(p, FALSE)) &&
(word_end == strlen(buf) || !is_word_mbchar(r, FALSE));
free(p);
free(r);
return retval;
}
#endif /* !DISABLE_SPELLER */
/* If we are searching backwards, we will find the last match that
* starts no later than start. Otherwise we find the first match
@@ -228,17 +305,17 @@ const char *strstrwrapper(const char *haystack, const char *needle,
#ifdef HAVE_REGEX_H
if (ISSET(USE_REGEXP)) {
#ifndef NANO_SMALL
if (ISSET(REVERSE_SEARCH)) {
if (regexec(&search_regexp, haystack, 1, regmatches, 0) == 0
&& haystack + regmatches[0].rm_so <= start) {
#ifndef NANO_TINY
if (ISSET(BACKWARDS_SEARCH)) {
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 are no more matches. */
while (regexec(&search_regexp, retval + 1, 1, regmatches,
REG_NOTBOL) == 0 && retval + 1 +
regmatches[0].rm_so <= start)
retval += 1 + regmatches[0].rm_so;
while (regexec(&search_regexp, retval + 1, 1,
regmatches, REG_NOTBOL) == 0 &&
retval + regmatches[0].rm_so + 1 <= start)
retval += regmatches[0].rm_so + 1;
/* Finally, put the subexpression matches in global
* variable regmatches. The REG_NOTBOL flag doesn't
* matter now. */
@@ -246,7 +323,7 @@ const char *strstrwrapper(const char *haystack, const char *needle,
return retval;
}
} else
#endif /* !NANO_SMALL */
#endif /* !NANO_TINY */
if (regexec(&search_regexp, start, 10, regmatches,
(start > haystack) ? REG_NOTBOL : 0) == 0) {
const char *retval = start + regmatches[0].rm_so;
@@ -257,18 +334,18 @@ const char *strstrwrapper(const char *haystack, const char *needle,
return NULL;
}
#endif /* HAVE_REGEX_H */
#if !defined(NANO_SMALL) || !defined(DISABLE_SPELLER)
#if !defined(NANO_TINY) || !defined(DISABLE_SPELLER)
if (ISSET(CASE_SENSITIVE)) {
#ifndef NANO_SMALL
if (ISSET(REVERSE_SEARCH))
#ifndef NANO_TINY
if (ISSET(BACKWARDS_SEARCH))
return revstrstr(haystack, needle, start);
else
#endif
return strstr(start, needle);
}
#endif /* !DISABLE_SPELLER || !NANO_SMALL */
#ifndef NANO_SMALL
else if (ISSET(REVERSE_SEARCH))
#endif /* !DISABLE_SPELLER || !NANO_TINY */
#ifndef NANO_TINY
else if (ISSET(BACKWARDS_SEARCH))
return mbrevstrcasestr(haystack, needle, start);
#endif
return mbstrcasestr(start, needle);
@@ -287,7 +364,9 @@ void nperror(const char *s)
}
}
/* Thanks, BG, many people have been asking for this... */
/* This is a wrapper for the malloc() function that properly handles
* things when we run out of memory. Thanks, BG, many people have been
* asking for this... */
void *nmalloc(size_t howmuch)
{
void *r = malloc(howmuch);
@@ -298,6 +377,8 @@ void *nmalloc(size_t howmuch)
return r;
}
/* This is a wrapper for the realloc() function that properly handles
* things when we run out of memory. */
void *nrealloc(void *ptr, size_t howmuch)
{
void *r = realloc(ptr, howmuch);
@@ -329,7 +410,8 @@ char *mallocstrncpy(char *dest, const char *src, size_t n)
* "dest = mallocstrcpy(dest, src);". */
char *mallocstrcpy(char *dest, const char *src)
{
return mallocstrncpy(dest, src, src == NULL ? 1 : strlen(src) + 1);
return mallocstrncpy(dest, src, (src == NULL) ? 1 :
strlen(src) + 1);
}
/* Free the malloc()ed string at dest and return the malloc()ed string
@@ -341,103 +423,218 @@ char *mallocstrassn(char *dest, char *src)
return src;
}
/* nano scrolls horizontally within a line in chunks. Return the column
* number of the first character displayed in the edit window when the
* cursor is at the given column. Note that (0 <= column -
* get_page_start(column) < COLS). */
size_t get_page_start(size_t column)
{
if (column == 0 || column < COLS - 1)
return 0;
else if (COLS > 8)
return column - 7 - (column - 7) % (COLS - 8);
else
return column - (COLS - 2);
}
/* Return the placewewant associated with current_x, i.e, the zero-based
* column position of the cursor. The value will be no smaller than
* current_x. */
size_t xplustabs(void)
{
return strnlenpt(openfile->current->data, openfile->current_x);
}
/* Return the index in s of the character displayed at the given column,
* i.e, the largest value such that strnlenpt(s, actual_x(s, column)) <=
* column. */
size_t actual_x(const char *s, size_t column)
{
size_t i = 0;
/* The position in s, returned. */
size_t len = 0;
/* The screen display width to s[i]. */
assert(s != NULL);
while (*s != '\0') {
int s_len = parse_mbchar(s, NULL, &len);
if (len > column)
break;
i += s_len;
s += s_len;
}
return i;
}
/* A strnlen() with tabs and multicolumn characters factored in, similar
* to xplustabs(). How many columns wide are the first maxlen characters
* of s? */
size_t strnlenpt(const char *s, size_t maxlen)
{
size_t len = 0;
/* The screen display width to s[i]. */
if (maxlen == 0)
return 0;
assert(s != NULL);
while (*s != '\0') {
int s_len = parse_mbchar(s, NULL, &len);
s += s_len;
if (maxlen <= s_len)
break;
maxlen -= s_len;
}
return len;
}
/* A strlen() with tabs and multicolumn characters factored in, similar
* to xplustabs(). How many columns wide is s? */
size_t strlenpt(const char *s)
{
return strnlenpt(s, (size_t)-1);
}
/* Append a new magicline to filebot. */
void new_magicline(void)
{
filebot->next = (filestruct *)nmalloc(sizeof(filestruct));
filebot->next->data = mallocstrcpy(NULL, "");
filebot->next->prev = filebot;
filebot->next->next = NULL;
filebot->next->lineno = filebot->lineno + 1;
filebot = filebot->next;
totlines++;
totsize++;
openfile->filebot->next = (filestruct *)nmalloc(sizeof(filestruct));
openfile->filebot->next->data = mallocstrcpy(NULL, "");
openfile->filebot->next->prev = openfile->filebot;
openfile->filebot->next->next = NULL;
openfile->filebot->next->lineno = openfile->filebot->lineno + 1;
openfile->filebot = openfile->filebot->next;
openfile->totsize++;
}
#ifndef NANO_SMALL
#ifndef NANO_TINY
/* Remove the magicline from filebot, if there is one and it isn't the
* only line in the file. */
* only line in the file. Assume that edittop and current are not at
* filebot. */
void remove_magicline(void)
{
if (filebot->data[0] == '\0' && filebot->prev != NULL) {
filebot = filebot->prev;
free_filestruct(filebot->next);
filebot->next = NULL;
totlines--;
totsize--;
if (openfile->filebot->data[0] == '\0' &&
openfile->filebot != openfile->fileage) {
assert(openfile->filebot != openfile->edittop && openfile->filebot != openfile->current);
openfile->filebot = openfile->filebot->prev;
free_filestruct(openfile->filebot->next);
openfile->filebot->next = NULL;
openfile->totsize--;
}
}
/* Set top_x and bot_x to the top and bottom x-coordinates of the mark,
* respectively, based on the locations of top and bot. If
* right_side_up isn't NULL, set it to TRUE If the mark begins with
* (mark_beginbuf, mark_beginx) and ends with (current, current_x), or
* (mark_begin, mark_begin_x) and ends with (current, current_x), or
* FALSE otherwise. */
void mark_order(const filestruct **top, size_t *top_x, const filestruct
**bot, size_t *bot_x, bool *right_side_up)
{
assert(top != NULL && top_x != NULL && bot != NULL && bot_x != NULL);
if ((current->lineno == mark_beginbuf->lineno && current_x >
mark_beginx) || current->lineno > mark_beginbuf->lineno) {
*top = mark_beginbuf;
*top_x = mark_beginx;
*bot = current;
*bot_x = current_x;
if ((openfile->current->lineno == openfile->mark_begin->lineno &&
openfile->current_x > openfile->mark_begin_x) ||
openfile->current->lineno > openfile->mark_begin->lineno) {
*top = openfile->mark_begin;
*top_x = openfile->mark_begin_x;
*bot = openfile->current;
*bot_x = openfile->current_x;
if (right_side_up != NULL)
*right_side_up = TRUE;
} else {
*bot = mark_beginbuf;
*bot_x = mark_beginx;
*top = current;
*top_x = current_x;
*bot = openfile->mark_begin;
*bot_x = openfile->mark_begin_x;
*top = openfile->current;
*top_x = openfile->current_x;
if (right_side_up != NULL)
*right_side_up = FALSE;
}
}
#endif
/* Calculate the number of lines and the number of characters between
* begin and end, and return them in lines and size, respectively. */
void get_totals(const filestruct *begin, const filestruct *end, int
*lines, size_t *size)
/* Calculate the number of characters between begin and end, and return
* it. */
size_t get_totsize(const filestruct *begin, const filestruct *end)
{
size_t totsize = 0;
const filestruct *f;
if (lines != NULL)
*lines = 0;
if (size != NULL)
*size = 0;
/* Go through the lines from begin to end->prev, if we can. */
for (f = begin; f != NULL && f != end; f = f->next) {
/* Count this line. */
if (lines != NULL)
(*lines)++;
for (f = begin; f != end && f != NULL; f = f->next) {
/* Count the number of characters on this line. */
if (size != NULL) {
*size += mbstrlen(f->data);
totsize += mbstrlen(f->data);
/* Count the newline if we have one. */
if (f->next != NULL)
(*size)++;
}
/* Count the newline if we have one. */
if (f->next != NULL)
totsize++;
}
/* Go through the line at end, if we can. */
if (f != NULL) {
/* Count this line. */
if (lines != NULL)
(*lines)++;
/* Count the number of characters on this line. */
if (size != NULL) {
*size += mbstrlen(f->data);
totsize += mbstrlen(f->data);
/* Count the newline if we have one. */
if (f->next != NULL)
(*size)++;
}
/* Count the newline if we have one. */
if (f->next != NULL)
totsize++;
}
return totsize;
}
#ifndef NDEBUG
/* Return what the current line number should be, starting at edittop
* and ending at fileptr. */
int check_linenumbers(const filestruct *fileptr)
{
int check_line = 0;
const filestruct *filetmp;
for (filetmp = openfile->edittop; filetmp != fileptr;
filetmp = filetmp->next)
check_line++;
return check_line;
}
#endif /* !NDEBUG */
#ifdef DEBUG
/* Dump the filestruct inptr to stderr. */
void dump_filestruct(const filestruct *inptr)
{
if (inptr == openfile->fileage)
fprintf(stderr, "Dumping file buffer to stderr...\n");
else if (inptr == cutbuffer)
fprintf(stderr, "Dumping cutbuffer to stderr...\n");
else
fprintf(stderr, "Dumping a buffer to stderr...\n");
while (inptr != NULL) {
fprintf(stderr, "(%ld) %s\n", (long)inptr->lineno, inptr->data);
inptr = inptr->next;
}
}
/* Dump the current buffer's filestruct to stderr in reverse. */
void dump_filestruct_reverse(void)
{
const filestruct *fileptr = openfile->filebot;
while (fileptr != NULL) {
fprintf(stderr, "(%ld) %s\n", (long)fileptr->lineno,
fileptr->data);
fileptr = fileptr->prev;
}
}
#endif /* DEBUG */

File diff suppressed because it is too large Load Diff