Compare commits

...

180 Commits

Author SHA1 Message Date
David Lawrence Ramsey
890ea443d7 GNU nano 1.9.99pre1
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3862 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-29 17:29:57 +00:00
Jordi Mallach
495fe91e97 French manpage translation updates.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3861 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-28 23:33:39 +00:00
Jordi Mallach
4d5cd6be1e Update French from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3860 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-28 15:57:38 +00:00
David Lawrence Ramsey
89ca96bd88 in handle_sigwinch(), just in case we're in the statusbar prompt, reset
the statusbar cursor position when resizing the window


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3859 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-28 14:31:29 +00:00
David Lawrence Ramsey
8fd5193b74 clarify TODO list entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3858 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-27 18:25:00 +00:00
David Lawrence Ramsey
1512503b2b add one more TODO list entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3857 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-27 01:35:10 +00:00
David Lawrence Ramsey
d6972ae74f cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3856 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-26 16:57:33 +00:00
David Lawrence Ramsey
5187b504d4 add missing changelog entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3855 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-26 16:51:42 +00:00
David Lawrence Ramsey
fa38795ef5 miscellaneous minor fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3854 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-26 16:50:51 +00:00
David Lawrence Ramsey
e1e2cb7064 simplify, and add comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3853 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-26 16:42:12 +00:00
David Lawrence Ramsey
17408b52e5 in do_browser(), fix potential segfault when going to a directory that
doesn't begin with '/'


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3852 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-26 15:46:20 +00:00
David Lawrence Ramsey
e5e6d9b696 remove now-unneeded entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3851 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-26 15:16:28 +00:00
David Lawrence Ramsey
98332d40dc properly preserve the cursor position when going from the "Read File" or
"Save File As" prompt to the file browser to the "Go To Directory"
prompt, and then canceling back to the "Read File" or "Save File As"
prompt


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3850 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-26 15:14:55 +00:00
Jordi Mallach
62591da0fe Dutch update from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3849 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-26 10:22:27 +00:00
Jordi Mallach
fa67260c53 Translation updates from the TP.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3848 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-25 19:32:48 +00:00
David Lawrence Ramsey
56ec5925f3 in shortcut_init(), make the help shortcut for the "Go to Directory"
prompt call do_browser_help() instead of do_help_void(), as this prompt
is only accessible inside the file browser


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3847 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-25 19:26:48 +00:00
David Lawrence Ramsey
f7b8783eaa in shortcut_init(), remove the ^X shortcut for CutTillEnd at the search
prompt, as official Pico doesn't include it, and it can be confused with
Exit


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3846 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-22 18:48:13 +00:00
David Lawrence Ramsey
6835102ce5 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3845 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-21 21:37:39 +00:00
David Lawrence Ramsey
0bbd290168 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3844 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-21 14:04:28 +00:00
David Lawrence Ramsey
5c55e85410 in help_init(), adjust the first two chunks of the main help text so
that they're no more than 509 characters again


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3843 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-19 11:11:51 +00:00
David Lawrence Ramsey
5a22dbb159 in digits(), remove the assumption that n is always positive, although
it always is in this particular case


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3842 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-18 20:30:25 +00:00
David Lawrence Ramsey
73e337594e cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3841 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-18 13:59:27 +00:00
David Lawrence Ramsey
dbc415fc47 remove unneeded duplicate plural forms, as gettext 0.15 generates errors
upon encountering them


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3840 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-15 19:06:28 +00:00
David Lawrence Ramsey
f351176756 wording fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3839 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-07 12:58:28 +00:00
David Lawrence Ramsey
69583ad664 add one last TODO list item
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3838 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-05 16:48:57 +00:00
David Lawrence Ramsey
30d7f33954 in doc/syntax/c.nanorc, remove redundancy from the file extension
regexes


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3837 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-03 02:44:22 +00:00
David Lawrence Ramsey
6da4e56f1e revert redundant change
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3836 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-02 19:30:24 +00:00
David Lawrence Ramsey
c6bef76a6c another comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3835 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-02 19:13:31 +00:00
David Lawrence Ramsey
2ea7fb0154 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3834 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-02 18:41:55 +00:00
David Lawrence Ramsey
cbab273a08 in edit_draw(), simplify the setting of paintlen
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3833 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-02 18:38:45 +00:00
David Lawrence Ramsey
28a6802307 in doc/syntax/c.nanorc, tweak the multiline comment regex to not color
lines so aggressively


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3832 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-08-02 17:02:49 +00:00
David Lawrence Ramsey
2578025e7f cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3831 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-31 23:29:22 +00:00
David Lawrence Ramsey
5b17ef85e7 revert erroneous change
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3830 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-31 23:28:27 +00:00
David Lawrence Ramsey
3714e07d7b in parse_kbinput(), translate KEY_EVENT to ERR if we get it, so that
it's properly ignored


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3829 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-31 18:25:25 +00:00
David Lawrence Ramsey
7b0531aa0b per Benno Schulenberg's patch with a few tweaks by me, add various
clarifications to translated strings


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3828 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-31 01:30:31 +00:00
David Lawrence Ramsey
e517613c01 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3827 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-30 23:30:23 +00:00
David Lawrence Ramsey
57703086e2 make all the descriptions of -O/--morespace consistent
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3826 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-30 23:26:18 +00:00
David Lawrence Ramsey
550ca10378 in nano.texi, add missing description of the -O/--morespace command line
option


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3825 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-30 23:18:15 +00:00
David Lawrence Ramsey
f9f8cc36e4 fix inaccurate comment
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3824 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-29 21:40:32 +00:00
David Lawrence Ramsey
ad344e9d1d make bad_mbchar a static const char* const in chars.c, as its value
doesn't change


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3823 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-29 14:37:47 +00:00
David Lawrence Ramsey
6827146dd2 fix changelog entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3822 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-28 17:07:46 +00:00
David Lawrence Ramsey
b159f941e8 per Benno Schulenberg's patch with a few additions by me, fix
punctuation relating to "i.e." in comments and documentation


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3821 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-28 17:06:27 +00:00
David Lawrence Ramsey
c7c49c48da in doc/Makefile.am, don't include nanorc.sample in EXTRA_DIST, as it's
only useful when we're building from source, as opposed to building a
distribution; also, tweak doc/Makefile.am and doc/man/Makefile.am to
remove usage of the += operator again


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3819 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-26 17:42:16 +00:00
David Lawrence Ramsey
4ce755072c add miscellaneous minor fixes to the faq, and preemptively update its
version number


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3818 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-26 03:20:37 +00:00
David Lawrence Ramsey
2f702285eb in toggle_init(), make sure that a blank line is not displayed after the
Meta-Q toggle when mouse support is disabled and we're in restricted
mode, and that it is displayed all other times


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3817 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-25 22:24:48 +00:00
David Lawrence Ramsey
592ccf9a5e update changelog entry: the renaming of the scroll_dir enums also fixes
compilation on NetBSD 3.0, as reported by Adam Wysocki


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3816 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-25 21:19:02 +00:00
David Lawrence Ramsey
bd28ee472b when DISABLE_HELP is defined, leave out some unused shortcut and toggle
list parameters


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3815 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-25 21:13:30 +00:00
David Lawrence Ramsey
1b4ae6997e in parse_escape_seq_kbinput(), Don't ignore escape sequences anymore;
instead, return the corresponding key so that parse_kbinput() can
translate it


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3814 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-25 19:23:35 +00:00
David Lawrence Ramsey
722b728a1c another cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3813 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-24 21:22:49 +00:00
David Lawrence Ramsey
97cd67c3d4 fix changelog entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3812 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-24 19:15:35 +00:00
David Lawrence Ramsey
f28ff9dece in parse_kbinput(), properly handle combined control character and
escape sequences, so that e.g. Esc Esc / will work properly when the /
is on the numeric keypad and NumLock is off


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3811 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-24 18:53:54 +00:00
David Lawrence Ramsey
ec177be416 in do_help(), don't allow moving down a page when the last line of the
help text is onscreen


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3810 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-23 19:57:30 +00:00
David Lawrence Ramsey
1dc7c1225a cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3809 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-23 19:55:44 +00:00
David Lawrence Ramsey
8a72370040 typo fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3808 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-23 18:00:50 +00:00
David Lawrence Ramsey
5370b0cd19 in parse_escape_seq_kbinput(), handle unknown and unignored escape
sequences once instead of handling them twice in parse_kbinput()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3807 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-23 17:54:35 +00:00
David Lawrence Ramsey
19f3bd6546 in parse_kbinput(), translate extended keypad keys to their ASCII
equivalents even when we hit Escape once or twice before typing them,
for consistency; also, if they're defined, translate KEY_SUP into
NANO_PREVLINE_KEY and KEY_SDOWN into NANO_NEXTLINE_KEY, since they are
sometimes generated by Shift-Up and Shift-Down


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3806 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-23 17:25:38 +00:00
David Lawrence Ramsey
a44ca78a50 in parse_kbinput(), properly handle combined meta and escape sequences,
so that e.g. Meta-+ will work properly when the + is on the numeric
keypad and NumLock is off


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3805 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-23 16:00:03 +00:00
David Lawrence Ramsey
006fc2338c typo fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3804 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-22 16:50:17 +00:00
David Lawrence Ramsey
118cb37e63 in mbstrncasecmp(), mbstrcasestr(), and mbrevstrcasestr(), don't
allocate space for multibyte characters until we've asserted that the
parameters we're using aren't NULL


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3803 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-22 16:45:11 +00:00
David Lawrence Ramsey
d3887dc695 update UPGRADE to fix the description of +LINE,COLUMN
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3802 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-22 15:57:28 +00:00
David Lawrence Ramsey
c81aa0641c update UPGRADE to account for the ability to indent unmarked lines
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3801 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-21 16:44:44 +00:00
David Lawrence Ramsey
f8758833cd fix changelog entry
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3800 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-19 19:42:47 +00:00
David Lawrence Ramsey
4ac129c4bf when using slang 2.x, call SLutf8_enable() with an argument of 1 instead
of TRUE, as that's the proper way to force its UTF-8 support on


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3799 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-19 19:40:54 +00:00
David Lawrence Ramsey
e53e12559f rename the DISABLE_ROOTWRAP #define to DISABLE_ROOTWRAPPING
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3798 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-19 15:50:19 +00:00
David Lawrence Ramsey
23994bd8a0 miscellaneous minor fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3797 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-19 13:34:55 +00:00
David Lawrence Ramsey
6e308c0442 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3796 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-19 02:44:56 +00:00
David Lawrence Ramsey
7c06be5ff7 fix changelog entries
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3795 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-19 00:38:27 +00:00
David Lawrence Ramsey
3bb45ae00b per Daniel Richard G.'s patch, in parse_rcfile(), add missing
ENABLE_COLOR #ifdef around the second check for a syntax with no color
commands, to fix compilation without color support


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3794 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-19 00:21:17 +00:00
David Lawrence Ramsey
6ff22e7020 rename the values of the scroll_dir enum to UP_DIR and DOWN_DIR, since
UP is defined as a termcap value in Tru64's curses.h, which breaks
compilation


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3793 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-19 00:14:52 +00:00
David Lawrence Ramsey
0a4b737b73 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3792 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-18 18:28:10 +00:00
David Lawrence Ramsey
32a3ce4cd2 revert unneeded #ifdef fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3791 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-18 18:25:56 +00:00
David Lawrence Ramsey
935594b14a add various cosmetic and #ifdef fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3790 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-18 18:16:30 +00:00
David Lawrence Ramsey
a5ad825f30 improve the display of bools in debugging statements
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3789 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-13 13:28:13 +00:00
David Lawrence Ramsey
f968a18a3f in replace_regexp(), remove unnecessary casting of c to int
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3788 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-13 13:27:16 +00:00
David Lawrence Ramsey
eec40df2a1 in do_insertfile(), remove redundant code: we only mark the file as
modified if we're not in multibuffer mode, in which case view mode
should never be on


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3787 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-13 12:18:57 +00:00
David Lawrence Ramsey
c346701d09 in do_insertfile(), if we don't insert a file into a new buffer,
properly update the x-coordinate to account for the number of characters
inserted on the current line


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3786 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-13 04:19:53 +00:00
David Lawrence Ramsey
9a145d906f in do_insertfile(), if we're in view mode, as we can be if multibuffer
mode is on, don't mark the file as modified (and remove the code that
does this in execute_command()); also, if we execute a command in a new
buffer, move back to the beginning of the first line of the buffer
afterwards, for consistency


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3785 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-13 03:06:36 +00:00
David Lawrence Ramsey
49172cad95 more typo fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3784 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-13 02:10:27 +00:00
David Lawrence Ramsey
0d8feb9a85 remove unneeded blank lines
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3783 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-12 19:30:54 +00:00
David Lawrence Ramsey
1e1117775f in nano.h, remove the manual disabling of color support if regex.h isn't
found, as configure.ac now handles that


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3782 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-12 19:12:40 +00:00
David Lawrence Ramsey
84b9f4bd17 in configure.ac, if regex.h isn't found, display an error message if we
try to enable color support; also, fix the spacing of the error message
displayed when slcurses.h isn't found


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3781 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-12 18:59:29 +00:00
David Lawrence Ramsey
82697f2fcd don't include sys/ioctl.h in nano.c when NANO_TINY is defined, as
ioctl() is never used then


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3780 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-12 18:57:04 +00:00
David Lawrence Ramsey
1a473483b1 in nano.h, if we don't have nanorc support, disable color support, as it
depends on the use of the nanorc


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3779 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-12 18:09:37 +00:00
David Lawrence Ramsey
c6c98f7c7a make Jordi's email address, and the description of what the manual pages
were written for, consistent in the documentation


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3778 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-12 16:50:43 +00:00
David Lawrence Ramsey
b8592ce2bb in do_browse_from(), don't bother freeing path if it's NULL
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3777 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-11 18:17:56 +00:00
David Lawrence Ramsey
b08c9f004c revert erroneous change
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3776 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-11 18:12:24 +00:00
David Lawrence Ramsey
87b37bde9b add miscellaneous minor cleanups to do_browser(), do_browse_from(), and
browser_init()


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3775 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-11 17:25:12 +00:00
David Lawrence Ramsey
35c9fa6da3 clean up the TODO list a bit more
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3774 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-11 17:01:45 +00:00
David Lawrence Ramsey
083cc12861 mention the need to handle resizes better in the TODO list, and clean it
up a bit


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3773 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-11 16:58:20 +00:00
David Lawrence Ramsey
4ea2eac360 comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3772 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-09 00:52:16 +00:00
David Lawrence Ramsey
e328169b6d remove unneeded #ifdef
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3771 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-09 00:50:23 +00:00
David Lawrence Ramsey
4e68588596 revert erroneous change
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3770 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-09 00:47:21 +00:00
David Lawrence Ramsey
7f3fdb4790 in titlebar(), don't display any blank space for the state if we're in
the file browser, as Pico doesn't, and since path is always assumed to
be NULL if DISABLE_BROWSER is defined, put the check for its being NULL
in a DISABLE_BROWSER #define


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3769 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-08 23:45:15 +00:00
David Lawrence Ramsey
d59c42363b typo fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3768 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-08 21:23:53 +00:00
David Lawrence Ramsey
c284e1ddb8 fix inaccurate comments
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3767 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-07 16:21:45 +00:00
David Lawrence Ramsey
664e0da48e still more cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3766 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-07 16:12:24 +00:00
David Lawrence Ramsey
a5322ee5ad another cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3765 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-07 15:54:32 +00:00
David Lawrence Ramsey
c2e585ef6c per John M. Gabriele's patch with a few tweaks by me, in
doc/syntax/ruby.nanorc, improve highlighting of constants


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3764 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-07 13:54:38 +00:00
David Lawrence Ramsey
2c36e2eb00 consolidate do_scroll_(up|down)() into do_(up|down)(), as they have a
lot of common code


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3763 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-06 22:17:47 +00:00
David Lawrence Ramsey
bf104950fd in do_scroll_up() and do_scroll_down(), fix problems where, after
scrolling, the previous and current lines would not be updated properly
if the current line was not the first or last line of the edit window


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3762 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-06 20:40:53 +00:00
David Lawrence Ramsey
ec15fdb30b comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3761 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-06 20:36:01 +00:00
David Lawrence Ramsey
b006367878 comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3760 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-06 18:29:37 +00:00
David Lawrence Ramsey
99a06d344f add another post-2.0 item
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3759 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-05 19:52:27 +00:00
David Lawrence Ramsey
aee00d4d14 if the mark isn't on, allow Meta-} and Meta-{ to indent and unindent
only the current line, just as it would if the mark covered only the
current line, instead of displaying a statusbar message and quitting


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3758 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-05 18:42:22 +00:00
David Lawrence Ramsey
7f80174373 another cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3757 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-05 16:46:22 +00:00
David Lawrence Ramsey
a89e39a35e cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3756 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-05 16:09:36 +00:00
David Lawrence Ramsey
afeed5f640 comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3755 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-05 15:21:18 +00:00
David Lawrence Ramsey
aa4eb40e71 another cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3754 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-05 15:20:16 +00:00
David Lawrence Ramsey
19cb1e6de6 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3753 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-05 14:27:14 +00:00
David Lawrence Ramsey
85e35e67a2 in get_full_path(), don't return NULL when the current directory doesn't
exist, as we can still recover from that, and also add various cleanups


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3752 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-05 14:14:06 +00:00
David Lawrence Ramsey
51b7b0e7d8 in browser_refresh() and titlebar(), don't display overly long filenames
with ellipses if the number of columns is extremely small; also, in
certain places, call wnoutrefresh(bottomwin) after calling
blank_statusbar(), in order to ensure that the statusbar is actually
blanked


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3751 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-05 06:38:47 +00:00
David Lawrence Ramsey
0cae087784 cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3750 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-05 05:43:20 +00:00
David Lawrence Ramsey
567d471681 in display_string(), properly handle buf[start_index]'s being a null
terminator


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3749 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-05 05:31:21 +00:00
David Lawrence Ramsey
f1a8e7221d still more miscellaneous minor fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3748 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-05 05:14:11 +00:00
David Lawrence Ramsey
ca53a6e35a another miscellaneous minor fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3747 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-05 04:04:30 +00:00
David Lawrence Ramsey
a7bdd2e9c6 in do_browse_from(), during the operating directory check, if path isn't
NULL, don't bother freeing it before mallocstrcpy()ing operating_dir
into it, as the latter operation will free it


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3746 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-05 03:38:49 +00:00
David Lawrence Ramsey
4953e49d92 miscellaneous minor fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3745 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-05 03:24:39 +00:00
David Lawrence Ramsey
051e953f17 yet another comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3744 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-05 02:35:03 +00:00
David Lawrence Ramsey
bc7dc36c7d make the file browser's mouse support consistent with other mouse
support, and add a few comment fixes


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3743 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-05 02:34:37 +00:00
David Lawrence Ramsey
60d22f012a in do_browser() and do_help(), detect the previous selected file or
directory and the previous help text line properly again


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3742 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-05 02:24:23 +00:00
David Lawrence Ramsey
2f7c1a0613 calculate width in browser_init(), as it's more consistent
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3741 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-05 02:05:24 +00:00
David Lawrence Ramsey
b520d509cc still more cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3740 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-05 01:13:19 +00:00
David Lawrence Ramsey
c0ba4bf3e0 simplify and remove redundancies from various bits
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3739 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-05 01:10:18 +00:00
David Lawrence Ramsey
f8d085d2ed in browser_refresh(), fix problem where width wouldn't be properly
initialized sometimes


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3738 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-04 23:47:22 +00:00
David Lawrence Ramsey
3528a034f2 more comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3737 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-04 23:44:17 +00:00
David Lawrence Ramsey
49c85d076c comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3736 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-04 23:05:27 +00:00
David Lawrence Ramsey
015c434be1 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3735 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-04 23:03:59 +00:00
David Lawrence Ramsey
afa1542b76 simplify
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3734 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-04 22:17:39 +00:00
David Lawrence Ramsey
9f2e3f7654 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3733 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-04 21:47:06 +00:00
David Lawrence Ramsey
458d004efe cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3732 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-04 21:46:34 +00:00
David Lawrence Ramsey
139dc4a844 add another missing comment
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3731 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-04 13:54:34 +00:00
David Lawrence Ramsey
a0283b7710 simplify, and add missing comments
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3730 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-04 03:49:15 +00:00
David Lawrence Ramsey
345a5b84bf comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3729 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-04 03:47:36 +00:00
David Lawrence Ramsey
d44f322f6d remove unneeded blank lines
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3728 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-03 18:49:55 +00:00
David Lawrence Ramsey
ed467e50ff in browser_refresh(), add translator comments explaining the maximum
intended lengths of "(dir)" and "(parent dir)"; also add various
formatting fixes


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3727 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-03 18:40:53 +00:00
David Lawrence Ramsey
7d6dd41a4a still more comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3726 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-02 21:15:36 +00:00
David Lawrence Ramsey
a43827d1cb more comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3725 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-02 21:12:58 +00:00
David Lawrence Ramsey
224b6d5b77 add missing comment
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3724 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-02 20:56:34 +00:00
David Lawrence Ramsey
5ee89c6898 yet another cosmetic fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3723 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-02 20:41:21 +00:00
David Lawrence Ramsey
6fa1144d1a more cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3722 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-02 19:04:28 +00:00
David Lawrence Ramsey
96514a242f add clarifying comment
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3721 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-02 18:49:30 +00:00
David Lawrence Ramsey
6b90657d94 more miscellaneous minor fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3720 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-02 18:45:45 +00:00
David Lawrence Ramsey
85ffaeeefc in browser_refresh(), if a filename is too long, truncate and display an
ellipsis before it, as titlebar() does; also add various miscellaneous
minor fixes


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3719 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-02 18:29:49 +00:00
David Lawrence Ramsey
fef3c8679d fix breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3718 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-02 17:36:55 +00:00
David Lawrence Ramsey
c021925abb in browser_init(), fix off-by-one error when calculating longest that
kept the rightmost column of the screen from being used


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3717 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-02 17:00:07 +00:00
David Lawrence Ramsey
46c29c4351 still more comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3716 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-02 15:54:14 +00:00
David Lawrence Ramsey
17e12691b0 fix breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3715 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-02 15:50:55 +00:00
David Lawrence Ramsey
3d7c2bd2d6 more comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3714 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-07-02 15:39:34 +00:00
David Lawrence Ramsey
21cdee5517 update changelog entries
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3713 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-30 22:36:29 +00:00
David Lawrence Ramsey
0457eb97af comment fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3712 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-30 22:34:10 +00:00
David Lawrence Ramsey
a43b10854f add more miscellaneous cleanups
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3711 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-30 22:28:37 +00:00
David Lawrence Ramsey
a662c5579a add miscellaneous cleanups
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3710 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-30 21:13:55 +00:00
David Lawrence Ramsey
990a695f54 in do_browser() and do_refresh(), further simplify screen update
handling


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3709 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-30 21:06:15 +00:00
David Lawrence Ramsey
6f499096ad in do_browser() and do_help(), simplify screen update handling
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3708 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-30 21:01:55 +00:00
David Lawrence Ramsey
296ee153b0 simplify
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3707 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-30 14:28:32 +00:00
David Lawrence Ramsey
8f975a11f0 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3706 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-30 14:25:34 +00:00
David Lawrence Ramsey
2458b295d9 fix breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3705 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-30 14:21:29 +00:00
David Lawrence Ramsey
a4e92c8ad6 in striponedir(), return the stripped path instead of modifying path
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3704 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-30 14:14:40 +00:00
David Lawrence Ramsey
fef232a672 in striponedir(), since all the strings passed to this are dynamically
allocated, use null_at() to strip the directory from the string


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3703 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-30 13:58:29 +00:00
David Lawrence Ramsey
8cd0d2c751 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3702 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-30 07:27:15 +00:00
David Lawrence Ramsey
0fd5d60477 revert last changes, as the "Go to Directory" prompt can allow movement
anywhere, so the error message won't make sense in some cases


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3701 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-30 07:26:14 +00:00
David Lawrence Ramsey
780f1d3f78 fix breakage
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3700 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-30 07:12:14 +00:00
David Lawrence Ramsey
6cefb9f21a in do_browser(), display an error messsage on the statusbar if we try to
move up from "/" via the "Go to Directory" prompt, for consistency


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3699 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-30 07:03:42 +00:00
David Lawrence Ramsey
d04037760d in do_browser(), after entering "..", select the directory we were in
before instead of the first filename in the list, as Pico does; add new
function browser_select_filename() to help do this properly


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3698 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-30 06:41:31 +00:00
David Lawrence Ramsey
ef45a2528c add missing comments
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3697 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-30 05:12:53 +00:00
David Lawrence Ramsey
727c244ab6 in findnextfile(), simplify the uses of tail()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3696 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-30 04:46:24 +00:00
David Lawrence Ramsey
68e2c375e7 in browser_refresh(), for the ".." entry, display "(parent dir)" instead
of "(dir)", as Pico does


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3695 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-30 03:19:28 +00:00
David Lawrence Ramsey
99c87ccb0c in browser_refresh(), fix problems where translated versions of "(dir)"
could be truncated, and where file sizes could be too long


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3694 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-30 02:44:11 +00:00
David Lawrence Ramsey
4e71ab6891 add missing blank line
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3693 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-30 02:26:26 +00:00
David Lawrence Ramsey
b0c1bc28f8 in browser_refresh(), simplify more things
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3692 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-29 15:46:05 +00:00
David Lawrence Ramsey
0e92adf153 in browser_refresh(), simplify the for loop
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3691 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-29 15:28:39 +00:00
David Lawrence Ramsey
3b722460b8 in do_browser(), remove unneeded call to blank_edit()
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3690 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-29 15:08:00 +00:00
David Lawrence Ramsey
865ad94100 in get_mouseinput(), handle both releases and clicks of mouse button 1,
as the mouse support works better that way


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3689 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-29 01:38:58 +00:00
David Lawrence Ramsey
6c8f92c092 cosmetic fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3688 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-28 23:27:07 +00:00
David Lawrence Ramsey
2f94f42730 in do_browser(), refactor and simplify the mouse support, modeling it
after do_mouse() for consistency


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3687 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-28 22:38:11 +00:00
David Lawrence Ramsey
98e4d4f3b1 fix mouse support so that it really ignores everything except releases
of button 1 (i.e, left clicks)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3686 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-28 21:54:55 +00:00
David Lawrence Ramsey
f23cc46655 comment fix
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3685 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-27 00:39:42 +00:00
David Lawrence Ramsey
decae6c25e per Mike Frysinger's patch, in doc/syntax/c.nanorc, since .i and .ii are
preprocessed C and C++ output, colorize them there


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3684 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-26 23:40:31 +00:00
David Lawrence Ramsey
74d8ebc041 add various option description fixes
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3683 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-26 04:39:31 +00:00
David Lawrence Ramsey
899d0360ec Back to CVS
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3682 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
2006-06-26 04:03:31 +00:00
47 changed files with 5182 additions and 4342 deletions

View File

@@ -12,7 +12,7 @@ David Lawrence Ramsey <pooka109@cox.net>
wrapping code, spelling fixes, const mode, parts of the UTF-8
support, and various other fixes.
Jordi Mallach <jordi@sindominio.net>
Jordi Mallach <jordi@gnu.org>
* Debian package maintainer, fellow bug squasher.
* Internationalization support head, ca.po maintainer.

262
ChangeLog
View File

@@ -1,3 +1,255 @@
GNU nano 1.9.99pre1 - 2006.08.29
- General:
- Miscellaneous comment fixes. (DLR)
- Fix option descriptions. At least one of the two parts of
+LINE,COLUMN must be specified at all times; COLUMN is not the
only optional value. Also, fix wording problems in
-O/--morespace and -W/--wordbounds. Changes to usage(),
UPGRADE, nano.1, nanorc.5, rnano.1, nano.texi, and
nanorc.sample.in. (DLR)
- Fix mouse support so that it truly ignores everything except
releases and clicks of button 1. Changes to
enable_mouse_support() and get_mouseinput(). (DLR)
- In certain places, call wnoutrefresh(bottomwin) after calling
blank_statusbar(), in order to ensure that the statusbar is
actually blanked. Changes to do_help(), do_continue(),
handle_sigwinch(), and update_statusbar_line(). (DLR)
- If the mark isn't on, allow Meta-} and Meta-{ to indent and
unindent only the current line, just as it would if the mark
covered only the current line, instead of displaying a
statusbar message and quitting. Changes to shortcut_init(),
do_indent_marked() (renamed do_indent()),
do_indent_marked_void() (renamed do_indent_void()),
do_unindent_marked_void() (renamed do_unindent()), and
UPGRADE. (DLR, suggested by John M. Gabriele)
- Consolidate do_scroll_(up|down)() into do_(up|down)(), as
they have a lot of duplicate code. New functions do_up_void()
and do_down_void(); changes to shortcut_init(), do_up(),
do_scroll_up(), do_down(), do_scroll_down(), do_left(), and
do_right(). (DLR)
- Make Jordi's email address, and the description of what the
manual pages were written for, consistent in the
documentation. Changes to AUTHORS, nano.1, nanorc.5, and
rnano.1. (DLR, based on suggestions by Jordi)
- Don't include sys/ioctl.h in nano.c when NANO_TINY is defined,
as ioctl() is never used then. (DLR)
- Improve the display of bools in debugging statements. Changes
to parse_kbinput(), get_escape_seq_kbinput(),
parse_escape_seq_kbinput(), get_shortcut(), and get_toggle().
(DLR)
- Rename the values of the scroll_dir enum to UP_DIR and
DOWN_DIR, since UP is defined as a termcap value in Tru64's
and NetBSD 3.0's curses.h, which breaks compilation on those
systems. Changes to do_page_up(), do_page_down(), do_up(),
do_down(), nano.h, and edit_scroll(). (DLR; found by Daniel
Richard G. and Adam Wysocki, repectively)
- Rename the DISABLE_ROOTWRAP #define to DISABLE_ROOTWRAPPING.
(DLR)
- When using slang 2.x, call SLutf8_enable() with an argument of
1 instead of TRUE, as that's the proper way to enable its
UTF-8 support. Changes to main() and configure.ac. (DLR)
- Fix punctuation relating to "i.e." in various comments and
documentation. (Benno Schulenberg and DLR)
- Make bad_mbchar a static const char* const in chars.c, as its
value doesn't change. (DLR)
- Add various clarifications to translated strings. Changes to
do_insertfile_void(), shortcut_init(), toggle_init(),
help_init(), print_view_warning(), usage(), and do_mark().
(Benno Schulenberg, minor tweaks by DLR)
- Properly preserve the cursor position when going from the
"Read File" or "Save File As" prompt to the file browser to
the "Go To Directory" prompt, and then canceling back to the
"Read File" or "Save File As" prompt. Changes to
get_prompt_string() and do_prompt(). (DLR)
- Rename the parameter old_pww to pww_save in
need_statusbar_horizontal_update(), need_horizontal_update(),
need_vertical_update(), and edit_redraw(); and rename the
variable old_pww to pww_save in do_search() and do_research();
for consistency. (DLR)
- browser.c:
do_browser()
- Refactor the mouse support, modeling it after do_mouse() for
consistency. (DLR)
- Remove unneeded call to blank_edit(). (DLR)
- After entering "..", select the directory we were in before
instead of the first filename in the list, as Pico does. (DLR)
- Simplify screen update handling and exiting. (DLR)
- Fix potential segfault when going to a directory that doesn't
begin with '/'. (DLR)
do_browse_from()
- During the operating directory check, if path isn't NULL,
don't bother freeing it before mallocstrcpy()ing operating_dir
into it, as the latter operation will free it. (DLR)
- Don't bother freeing path if it's NULL. (DLR)
browser_init()
- Fix off-by-one error when calculating longest that kept the
rightmost column of the screen from being used. (DLR)
- Calculate width here instead of in browser_refresh(), as it's
more consistent. (DLR)
- If filelist is initialized, free it here instead of in several
places in do_browser(). (DLR)
browser_refresh()
- Simplify. (DLR)
- Fix problems where translated versions of "(dir)" could be
truncated, and where file sizes could be too long. (DLR)
- For the ".." entry, display "(parent dir)" instead of "(dir)",
as Pico does. (DLR)
- If a filename is too long, truncate it and display an ellipsis
before it, as titlebar() does. (DLR)
- Add translator comments explaining the maximum intended
lengths of "(dir)" and "(parent dir)". (DLR)
- Fix problem where width wouldn't be properly initialized if
the file list took up one line or less. (DLR)
- Don't display overly long filenames with ellipses if the
number of columns is extremely small. (DLR)
browser_select_filename()
- New function, used to select a specific filename in the list.
(DLR)
findnextfile()
- Simplify the uses of tail(). (DLR)
striponedir()
- Since all the strings passed to this are dynamically
allocated, use null_at() to strip the directory from the
string. Also, return the stripped path instead of modifying
path. (DLR)
- chars.c:
mbstrncasecmp(), mbstrcasestr(), mbrevstrcasestr()
- Don't allocate space for multibyte characters until we've
asserted that the parameters we're using aren't NULL. (DLR)
- files.c:
do_insertfile()
- If we execute a command in a new buffer, move back to the
beginning of the first line of the buffer afterwards, for
consistency. (DLR)
- If we don't insert a file into a new buffer, properly update
the x-coordinate to account for the number of characters
inserted on the current line. (DLR)
get_full_path()
- Don't return NULL when the current directory doesn't exist, as
we can still recover from that. (DLR, found by Mike Frysinger)
- Add various cleanups. (DLR)
- global.c:
sc_init_one(), shortcut_init()
- Don't include blank_after when DISABLE_HELP is defined, as
it's never used then. (DLR)
shortcut_init()
- Remove the ^X shortcut for CutTillEnd at the search prompt, as
official Pico doesn't include it, and it can be confused with
Exit. (DLR, suggested by Benno Schulenberg)
- Make the help shortcut for the "Go to Directory" prompt call
do_browser_help() instead of do_help_void(), as this prompt is
only accessible inside the file browser. (DLR, found by Benno
Schulenberg)
toggle_init()
- Don't include desc or blank_after when DISABLE_HELP is
defined, as neither are ever used then. (DLR)
- Make sure that a blank line is not displayed after the Meta-Q
toggle when mouse support is disabled and we're in restricted
mode, and that it is displayed all other times. (DLR)
toggle_init_one()
- Don't include desc or blank_after when DISABLE_HELP is
defined, as neither are ever used then. (DLR)
- help.c:
do_help()
- Simplify screen update handling and exiting. (DLR)
- Don't allow moving down a page when the last line of the help
text is onscreen. (DLR)
help_init()
- Adjust the first two chunks of the main help text so that
they're no more than 509 characters again. (DLR)
- move.c:
do_scroll_up(), do_scroll_down()
- Fix problems where, after scrolling, the previous and current
lines would not be updated properly if the current line was
not the first or last line of the edit window. (DLR, found by
Mike Frysinger)
- nano.c:
handle_sigwinch()
- Just in case we're in the statusbar prompt, reset the
statusbar cursor position when resizing the window. (DLR)
- nano.h:
- Remove the manual disabling of color support if regex.h isn't
found, as configure.ac now handles that. (DLR)
- rcfile.c:
parse_rcfile()
- Add missing ENABLE_COLOR #ifdef around the second check for a
syntax with no color commands, to fix compilation with rcfile
support and without color support. (Daniel Richard G.)
- search.c:
replace_regexp()
- Remove unnecessary casting of c to int. (DLR)
- text.c:
execute_command()
- Remove the marking of the file as modified, as do_insertfile()
now handles that. (DLR)
- utils.c:
digits()
- Tweak to remove the assumption that n is always positive,
although it always is in this particular case. (DLR)
- winio.c:
parse_kbinput()
- Properly handle combined meta and escape sequences, so that
e.g. Meta-/ will work properly when the / is on the numeric
keypad and NumLock is off. Also, properly handle combined
control character and escape sequences, so that e.g. Esc Esc /
will work properly when the / is on the numeric keypad and
NumLock is off. (DLR)
- Translate extended keypad keys to their ASCII equivalents even
when we hit Escape once or twice before typing them, for
consistency. (DLR)
- If they're defined, translate KEY_SUP into NANO_PREVLINE_KEY
and KEY_SDOWN into NANO_NEXTLINE_KEY, since they are sometimes
generated by Shift-Up and Shift-Down. (DLR)
parse_escape_seq_kbinput()
- Handle unknown and unignored escape sequences once here
instead of twice in parse_kbinput(). (DLR)
- Don't ignore escape sequences anymore. Instead, return the
corresponding key so that parse_kbinput() can translate it.
(DLR)
display_string()
- Properly handle buf[start_index]'s being a null terminator.
(DLR)
edit_draw()
- Simplify the setting of paintlen. (DLR)
titlebar()
- Don't display overly long filenames with ellipses if the
number of columns is extremely small. (DLR)
- Don't display any blank space for the state if we're in the
file browser, as Pico doesn't. (DLR)
- configure.ac:
- If regex.h isn't found, display an error message if we try to
enable color support. (DLR)
- Fix the spacing of the error message displayed when slcurses.h
isn't found. (DLR)
- If we use the --disable-wrapping option, ignore the
--disable-wrapping-as-root option. (DLR)
- Add minor cosmetic tweaks. (DLR)
- doc/Makefile.am:
- Don't include nanorc.sample in EXTRA_DIST, as it's only useful
when we're building from source, as opposed to building a
distribution. (DLR)
- Tweak to remove usage of the += operator again. (DLR)
- doc/man/Makefile.am:
- Tweak to remove usage of the += operator again. (DLR)
- doc/man/fr/nano.1, doc/man/fr/nanorc.5, doc/man/fr/rnano.1:
- Updated manpage translations by Jean-Philippe Guérard.
- doc/faq.html:
- Update section 5.3 again to not state "the latest development
version" before 1.3.12, as it's no longer accurate. (DLR)
- Add some minor spacing fixes. (DLR)
- doc/nano.texi:
- Add missing description of the -O/--morespace command line
option. (DLR)
- doc/syntax/c.nanorc:
- Since .i and .ii are preprocessed C and C++ output, colorize
them here. (Mike Frysinger)
- Remove redundancy from the file extension regexes. (DLR)
- doc/syntax/ruby.nanorc:
- Add missing blank line after the first comment, for
consistency. (DLR)
- Improve highlighting of constants. (John M. Gabriele, minor
tweaks by DLR)
GNU nano 1.3.12 - 2006.06.26
- General:
- Miscellaneous comment fixes. (DLR)
@@ -3160,7 +3412,7 @@ GNU nano 1.3.3 - 2004.06.28
do_justify(); new functions do_justify_void() and
do_full_justify(). (DLR)
- Modify the justification algorithm to work the same way as in
the current version of Pico, i.e, add a space at the end of
the current version of Pico, i.e. add a space at the end of
each line of the justified paragraph except for the last one,
and if there was a space at the end of the last one, remove
it. Changes to justify_format() and do_justify(). Note that
@@ -3588,7 +3840,7 @@ GNU nano 1.3.2 - 2004.03.31
- Change instances in the code that refresh the entire edit
window when color support is enabled (in order to properly
handle multi-line color regexes) to only do so when
it's necessary, i.e, when COLOR_SYNTAX is set. (DLR)
it's necessary, i.e. when COLOR_SYNTAX is set. (DLR)
- Minor cosmetic tweaks to the code involving direction keys.
NANO_UP_KEY and NANO_DOWN_KEY are now NANO_PREVLINE_KEY and
NANO_NEXTLINE_KEY, and the help messages for them have been
@@ -3600,7 +3852,7 @@ GNU nano 1.3.2 - 2004.03.31
the statusbar input routines to handle them and NANO_HELP_FKEY
properly. (DLR)
- Block SIGWINCH after setting up its handler, and only unblock
and handle it when we're in a stable state, i.e, when we're
and handle it when we're in a stable state, i.e. when we're
waiting for input from the user. New function
allow_pending_sigwinch(); changes to signal_init(),
get_kbinput(), and get_verbatim_kbinput(). (DLR)
@@ -3810,7 +4062,7 @@ GNU nano 1.3.2 - 2004.03.31
- Don't use "kbinput = wgetch(win)" as a switch value. (DLR)
get_escape_seq_kbinput()
- Add support for the escape sequences for F1-F14 whenever
possible (i.e, whenever a conflict doesn't occur), some
possible (i.e. whenever a conflict doesn't occur), some
additional comments, and a few cosmetic cleanups. (DLR)
- Use switch statements instead of strncmp() to read in the long
xterm sequences for Ctrl-[arrow key] and Shift-[arrow key].
@@ -3839,7 +4091,7 @@ GNU nano 1.3.2 - 2004.03.31
do_credits()
- Use nanosleep() instead of usleep(). The latter is only
standard under BSD, whereas the former is POSIX compliant.
Accordingly, only include time.h if we use this function, i.e,
Accordingly, only include time.h if we use this function, i.e.
if NANO_EXTRA is defined. (DLR)
- Add explanatory comment. (DLR)
- configure.ac:

30
NEWS
View File

@@ -1,3 +1,23 @@
2006.08.29 - GNU nano 1.9.99pre1 passes through the flames. This
release fixes various bugs in the last version: the
mouse support properly ignores everything except clicks
of the left mouse button; the statusbar is now blanked
properly when it should be; indenting and unindenting
operate on the current line when the mark is off; nano
should build on Tru64, NetBSD, and other systems that
use termcap instead of terminfo in their curses
libraries; the built-in file browser now properly
navigates file lists that take up only one row; the
cursor position is now completely restored after
inserting a file into the current buffer, and after
inserting the output of a command into a new buffer; the
^X shortcut at the search prompt has been removed, as
official Pico doesn't include it and it's too easily
confused with Exit; the screen is updated properly after
scrolling a line without moving the cursor; the keyboard
input routines behave more consistently; and so on.
Have fun with it.
2006.06.26 - GNU nano 1.3.12 escapes the darkness. This release
contains the last new features that nano will have
before 2.0: copying text into the cutbuffer without
@@ -229,7 +249,7 @@
broken regex detection, search history recall, and
keypad handling with -K. Debugging strings are no
longer translated and comments denote where translations
should be as short as possible (i.e, the statusbar).
should be as short as possible (i.e. the statusbar).
There are new examples for syntax highlighting, and
documentation updates and fixes. The 1.3.0 CVS tree
will be opening soon for all your nano desires, so stay
@@ -362,7 +382,7 @@
mode (^O,M-P), a new "syntax" command in the .nanorc to
allow multiple syntax highlighting types, and a new -Y,
--syntax flag to set a specific one if there's no
filename regex to match it against (i.e, w/mutt). The
filename regex to match it against (i.e. w/mutt). The
^space and M-space keys will now show up in the help
menu, which itself has been tweaked a bit, and many more
configure options should now cooperate (like the odd
@@ -542,7 +562,7 @@
resizing the editor in any mode other than normal edit
mode. Other fixes include some more tab completion
segfaults, and an silly segfault that occurred when
successfully writing a file on the 2nd try (i.e, after
successfully writing a file on the 2nd try (i.e. after
an initial write error). Slowly but surely, on toward
1.0 we travel.
@@ -730,7 +750,7 @@
05/14/2000 - Nano 0.9.7 (the Mother's Day release) continues in the long
line of display fixes, and also fixes the broken symlink
behavior (i.e, symlinks weren't being followed by
behavior (i.e. symlinks weren't being followed by
default). Hopefully all major bugs can be worked out
soon and we can have a 1.0 release before the end of the
year, but who knows.
@@ -783,7 +803,7 @@
04/14/2000 - 0.9.1 has some more Pico compatibility built-in. The
option to switch to/from Search and Search/Replace (^T)
is now available, and nano now displays the more
Pico-like shortcut list when invoked as 'pico' (i.e, if
Pico-like shortcut list when invoked as 'pico' (i.e. if
'pico' is a symlink to nano). There is an important
change to the handling of symbolic links as well. Now,
nano does the "correct" thing and automatically writes

View File

@@ -80,7 +80,7 @@ Then, once it's done compiling, run
$ make install
which should copy various files (i.e, the nano executable, the info and
which should copy various files (i.e. the nano executable, the info and
man pages, and syntax highlighting pattern files) to their appropriate
directories.

18
TODO
View File

@@ -2,21 +2,25 @@ TODO file (? means the feature may be implemented, but not definitely)
------------------------------------------------------------------------
For the next version:
- Undo/Redo keys?
- Undo/Redo keys (M-U and M-E)?
- Rebindable keys?
- FriBidi support?
- Port to DJGPP?
- Make matching bracket searches sophisticated enough to skip over
brackets inside comments?
- Allow indentation of marked text by spaces as well as tabs?
- Allow indentation to add just enough columns to reach the nearest
multiple of tabsize, rather than always adding tabsize columns?
- Allow piping marked text to an external command and replacing it with
the command's output (as the internal spell checker already does with
the "spell" command)?
- Rewrite the nano FAQ in SGML.
- Allow conversion between different character sets. Maybe use glib's
iconv() if the system's iconv() is inadequate, since we already use
glib's vsnprintf() if the system lacks vsnprintf()?
- Properly preserve the cursor position when going from the "Read File"
or "Save File As" prompt to the file browser to the "Go To Directory"
prompt, and then canceling back to the "Read File" or "Save File As"
prompt.
- Handle window resizes better. After we resize, we should stay
wherever we were before we resized, as Pico does.
- Fix problems with color syntaxes' highlighting lines too aggressively.
- Allow color syntaxes to apply to more than just color, so that we can
e.g. specify a different alternate spell checker depending on which
file type we have open.
@@ -27,8 +31,8 @@ For the next version:
set via Ctrl-^) at various lines and/or columns in the buffer, and
allow movement between them with a single keystroke.
- Add the ability to move to different lines of the screen with a single
keystroke, e.g. M-` to go to the top line, M-& to go to the center
line, and M-' to go to the last line.
keystroke, e.g. M-` (M-~) to go to the top line, M-& (M-7) to go to
the center line, and M-' (M-") to go to the last line.
Old requests:

View File

@@ -6,7 +6,7 @@ Visible changes since 1.2
* Editor Features
- Support for UTF-8.
- Moving to a specified line and column of a file, instead of just a
line (+LINE[,COLUMN]).
line (+LINE,COLUMN).
- Smart home key (-A).
- Creation of unique backup files in a specified directory (-C <dir>).
- Insertion of spaces instead of a tab when Tab is pressed (-E).
@@ -28,7 +28,7 @@ Visible changes since 1.2
- Meta-W now repeats the last search. Wrapping is now toggled via
Meta-L.
- Replacing and spell checking only selected text.
- Indenting all marked lines with one keystroke.
- Indenting lines with one keystroke.
- Copying text into the cutbuffer without cutting it.
- Scrolling the text up and down single lines without moving the
cursor.

View File

@@ -19,7 +19,7 @@
#
# $Id$
AC_INIT([GNU nano], [1.3.12], [nano-devel@gnu.org], [nano])
AC_INIT([GNU nano], [1.9.99pre1], [nano-devel@gnu.org], [nano])
AC_CONFIG_SRCDIR([src/nano.c])
AC_CANONICAL_TARGET([])
AM_INIT_AUTOMAKE
@@ -39,7 +39,7 @@ 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")
AM_CONDITIONAL(USE_NLS, test x$USE_NLS = xyes)
dnl Data location.
@@ -56,8 +56,7 @@ dnl Checks for options.
AC_ARG_ENABLE(debug,
[ --enable-debug Enable debugging (disabled by default)],
[if test x$enableval = xyes; then
AC_DEFINE(DEBUG, 1, [Define this to enable nano debug messages and assert warnings.])
debug_support=yes
AC_DEFINE(DEBUG, 1, [Define this to enable nano debug messages and assert warnings.]) debug_support=yes
fi])
if test x$debug_support != xyes; then
@@ -135,14 +134,22 @@ fi])
AC_ARG_ENABLE(wrapping-as-root,
[ --disable-wrapping-as-root Disable wrapping of text as root by default],
[if test x$enableval != xyes; then
AC_DEFINE(DISABLE_ROOTWRAP, 1, [Define this to disable wrapping as root by default.])
AC_DEFINE(DISABLE_ROOTWRAPPING, 1, [Define this to disable wrapping as root by default.])
fi])
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 regex.h and ENABLE_NANORC too!]) color_support=yes
if test x$ac_cv_header_regex_h = 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 regex.h and ENABLE_NANORC too!]) color_support=yes
else
AC_MSG_ERROR([
*** The header file regex.h was not found. If you wish to use color
*** support this header file is required. Please either install C
*** libraries that include the regex.h file or do not call the configure
*** script with --enable-color.])
fi
fi])
AC_ARG_ENABLE(multibuffer,
@@ -203,12 +210,11 @@ AC_ARG_WITH(slang,
#include <slcurses.h>
int main(void)
{
SLutf8_enable(TRUE);
SLutf8_enable(1);
return 0;
}],
[AC_MSG_RESULT(yes)
AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.])
slang_support=yes
AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.]) slang_support=yes
CURSES_LIB_WIDE=yes
if test x$with_slang != xyes; then
CURSES_LIB="-L${with_slang}/lib -lslang"
@@ -230,12 +236,11 @@ int main(void)
#include <slcurses.h>
int main(void)
{
SLutf8_enable(TRUE);
SLutf8_enable(1);
return 0;
}],
[AC_MSG_RESULT(yes)
AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.])
slang_support=yes
AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.]) slang_support=yes
CURSES_LIB_WIDE=yes
if test x$with_slang != xyes; then
CURSES_LIB="-L${with_slang}/lib -lslang $tcap"
@@ -252,12 +257,11 @@ int main(void)
#include <slcurses.h>
int main(void)
{
SLutf8_enable(TRUE);
SLutf8_enable(1);
return 0;
}],
[AC_MSG_RESULT(yes)
AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.])
slang_support=yes
AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.]) slang_support=yes
CURSES_LIB_WIDE=yes
if test x$with_slang != xyes; then
CURSES_LIB="-L${with_slang}/lib -lslang $tcap -lm"
@@ -270,11 +274,10 @@ int main(void)
AC_MSG_WARN([*** Can not use slang when cross-compiling]))],
AC_MSG_WARN([*** Can not use slang when cross-compiling])),
AC_MSG_ERROR([
*** The header file slcurses.h was not found. If you wish to use
*** slang support this header file is required. Please either
*** The header file slcurses.h was not found. If you wish to use
*** slang support this header file is required. Please either
*** install a version of slang that includes the slcurses.h file or
*** do not call the configure script with --with-slang
]))
*** do not call the configure script with --with-slang.]))
fi
if eval "test x$CURSES_LIB_NAME = x"; then
@@ -295,8 +298,7 @@ int main(void)
return 0;
}],
[AC_MSG_RESULT(yes)
AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.])
slang_support=yes
AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.]) slang_support=yes
if test x$with_slang != xyes; then
CURSES_LIB="-L${with_slang}/lib -lslang"
else
@@ -321,8 +323,7 @@ int main(void)
return 0;
}],
[AC_MSG_RESULT(yes)
AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.])
slang_support=yes
AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.]) slang_support=yes
if test x$with_slang != xyes; then
CURSES_LIB="-L${with_slang}/lib -lslang $tcap"
else
@@ -342,8 +343,7 @@ int main(void)
return 0;
}],
[AC_MSG_RESULT(yes)
AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.])
slang_support=yes
AC_DEFINE(USE_SLANG, 1, [Define to use the slang wrappers for curses instead of native curses.]) slang_support=yes
if test x$with_slang != xyes; then
CURSES_LIB="-L${with_slang}/lib -lslang $tcap -lm"
else
@@ -355,11 +355,10 @@ int main(void)
AC_MSG_WARN([*** Can not use slang when cross-compiling]))],
AC_MSG_WARN([*** Can not use slang when cross-compiling])),
AC_MSG_ERROR([
*** The header file slcurses.h was not found. If you wish to use
*** slang support this header file is required. Please either
*** The header file slcurses.h was not found. If you wish to use
*** slang support this header file is required. Please either
*** install a version of slang that includes the slcurses.h file or
*** do not call the configure script with --with-slang
]))
*** do not call the configure script with --with-slang.]))
fi
if test "${_libs+set}" = "set"; then
@@ -372,7 +371,7 @@ int main(void)
;;
esac], [AC_MSG_RESULT(no)])
AM_CONDITIONAL(USE_COLOR, test "x$color_support" = "xyes")
AM_CONDITIONAL(USE_COLOR, test x$color_support = xyes)
dnl Checks for functions.

View File

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

View File

@@ -84,7 +84,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.12. 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.9.99pre1. 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%">
@@ -162,7 +162,7 @@
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> (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>
@@ -172,7 +172,7 @@
<hr width="100%">
<h1><a name="4"></a>4. Running</h1>
<h2><a name="4.1"></a>4.1. How do I open a file with a name beginning with '+' from the command line?</h2>
<blockquote><p>If a command line option that begins with '+' is followed by another option, the former is always treated as a starting line number and the latter is always treated as a filename. If a command line option that begins with '+' isn't followed by another option, it's always treated as a filename. Examples:</p>
<blockquote><p>If a command line option that begins with '+' is followed by another option, the former is always treated as a starting line number and the latter is always treated as a filename. If a command line option that begins with '+' isn't followed by another option, it's always treated as a filename. Examples:</p>
<p>To open '+filename.txt' starting on line 1: <b>nano +filename.txt</b><br>
To open '+filename.txt' starting on line 10: <b>nano +10 +filename.txt</b><br>
To open '+filename.txt' starting on line 1 and 'filename.txt' starting on line 10 (if nano has been compiled with multibuffer support): <b>nano +1 +filename.txt +20 filename.txt</b></p></blockquote>
@@ -181,7 +181,7 @@
<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. 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>
<blockquote><p>You can use the <b>-K</b> or <b>--rebindkeypad</b> options on the command line, or add the line <b>set rebindkeypad</b> to your .nanorc. However, nano's mouse support won't work properly if you do any of these things.</p></blockquote>
<h2><a name="4.4"></a>4.4. Ack! When I hold down a Meta key combination for a while, the character of the held key gets inserted now and then. What gives?</h2>
<blockquote><p>This is a bug in the terminal, not in nano. When a key is repeating faster than nano can process it, the keyboard buffer becomes full and starts dropping incoming keystrokes. Unfortunately, it doesn't just drop whole keystrokes; it can also drop parts of multibyte key combinations, resulting in nano's receiving a wrong key.</p></blockquote>
<h2><a name="4.5"></a>4.5. How do I type the F13-F16 keys shown in the help browser? My keyboard only has F1-F12!</h2>
@@ -197,7 +197,7 @@
<h2><a name="4.10a"></a>4.10a. [version 1.1.12 and earlier] When I type in a search string, the string I last searched for is already in front of my cursor! What happened?!</h2>
<blockquote><p>In nano version 0.9.20, the default is to have a completely consistent user interface across all user input functions. This means that regardless of whether you're being asked for a filename to insert or write, or a string to search for, the previous value is already inserted before the cursor. If you prefer the old behavior, use the Pico emulation mode (-p or --pico) or just hit Meta-P while in nano (see the ^G help text for more details).</p></blockquote>
<h2><a name="4.10b"></a>4.10b. [version 1.1.99pre1 and later] Hey, the search string behavior has reverted, it's now like Pico, what happened to the consistency?</h2>
<blockquote><p>It was decided that consistency was nice, but people are used to Pico's inconsistent behavior. Also, in version 1.1.99pre1, search and replace history was introduced. If you wish to edit your previous search/replace entry (or any previous entry), you can do so by hitting the up arrow to cycle through your history. This method allows the best of both worlds: You don't need to erase the previous string if you want to enter a new one, but you can with one keystroke recall previous entries for editing. Therefore there is now no "Pico mode", nano is and has always been a Pico <b>clone</b>, and clones by default should be compatible.</p></blockquote>
<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.11"></a>4.11. How do I make nano my default editor (in Pine, mutt, etc.)?</h2>
<blockquote><p>You need to make nano your $EDITOR. If you want this to be saved, you should put a line like this in your <b>.bashrc</b> if you use bash (or <b>.zshrc</b> if you believe in zsh):</p>
<p><b>export EDITOR=/usr/local/bin/nano</b></p>
@@ -224,7 +224,7 @@
<h2><a name="5.2"></a>5.2. I don't like the translation for &lt;x&gt; in my language. How can I fix it?</h2>
<blockquote><p>The best way would probably be to e-mail the person listed in the <code>Last-Translator:</code> field in the <b>&lt;your_language&gt;.po</b> file with your suggested corrections and they can make the changes reach the nano-devel list.</p></blockquote>
<h2><a name="5.3"></a>5.3. What is the status of Unicode support?</h2>
<blockquote><p>With the latest development version (1.3.12+), Unicode should be usable. With your terminal, locale (LC_ALL and similar environment variables), and encoding configured to properly support UTF-8, you should be able to enter and save Unicode text.</p></blockquote>
<blockquote><p>In version 1.3.12 or later, Unicode should be usable. With your terminal, locale (LC_ALL and similar environment variables), and encoding configured to properly support UTF-8, you should be able to enter and save Unicode text.</p></blockquote>
<hr width="100%">
<h1><a name="6"></a>6. Advocacy and Licensing</h1>
<h2><a name="6.1"></a>6.1. Why should I use nano instead of Pico?</h2>
@@ -256,7 +256,8 @@
<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>2006/06/12 - Update section 5.3, due to the display fix for two-column Unicode characters. (DLR)<br>
<p>2006/07/25 - Update section 5.3 again to not state &quot;the latest development version&quot; before 1.3.12, as it's no longer accurate. Also add some minor spacing fixes. (DLR)<br>
2006/06/12 - Update section 5.3, due to the display fix for two-column Unicode characters. (DLR)<br>
2006/06/05 - Add a new section 4.8, and move all section 4 entries after it down one number, to explain how to deal with glibc 2.2.3's crashes involving extended regular expressions. (DLR)<br>
2006/06/04 - Add minor punctuation, wording, and typo fixes. (DLR)<br>
2006/05/27 - Update section 3.8 to mention the new "Unicode Input" prompt, and how Unicode input only works when Unicode support is enabled. (DLR)<br>
@@ -280,7 +281,7 @@
2004/11/05 - Fixed inaccuracy: Pico compatibility mode was made the default in nano 1.1.99pre1, not 1.2.2. Also added question about how to type F13-F16 on terminals lacking keys past F12 (suggested by Chris), question about how to select text for the clipboard in X terminals with nano's mouse support turned on (answer found by Joseph Birthisel), and misc. fixes and link updates. (DLR)<br>
2004/04/07 - Removed NumLock glitch question, as it's no longer needed. (DLR)<br>
2004/01/30 - Fixed inaccuracy: multibuffer mode was first in nano 1.1.0, not 1.1.12. (DLR)<br>
2003/12/31 - Added question about the new verbatim input function, and a few minor fixes. Removed reference to &quot;set pico&quot; (DLR).<br>
2003/12/31 - Added question about the new verbatim input function, and a few minor fixes. Removed reference to &quot;set pico&quot; (DLR).<br>
2003/07/02 - Added question about nano's not showing color when it's compiled with color support (DLR; suggested by Jordi).<br>
2003/02/23 - Updated RPM links for nano 1.2.x (DLR).<br>
2003/01/16 - Split section 4.5 into 4.5a and 4.5b for search string behavior. Added --enable-all docs.<br>

View File

@@ -1,7 +1,7 @@
SUBDIRS =
if USE_NLS
SUBDIRS += fr
SUBDIRS = fr
else
SUBDIRS =
endif
man_MANS = nano.1 nanorc.5 rnano.1

View File

@@ -3,7 +3,7 @@
.\" 2006 by Chris Allegretta <chrisa@asty.org>
.\"
.\" Adaptation française (c) 2003-2006 par
.\" Jean-Philippe Guérard <jean-philippe.guerard@corbeaunoir.org>.
.\" Jean-Philippe Guérard <jean-philippe.guerard@tigreraye.org>.
.\"
.\" This is free documentation, see the latest version of the GNU
.\" General Public License for copying conditions. There is NO
@@ -15,7 +15,7 @@
.\" AUCUNE garantie.
.\"
.\" $Id$
.TH NANO 1 "version 1.3.12" "17\ juin\ 2006"
.TH NANO 1 "version 1.9.99pre1" "28\ août\ 2006"
.\" Please adjust this date whenever revising the manpage.
.\" Merci de modifier ces dates à chaque mise à jour de cette page.
.\"
@@ -25,7 +25,7 @@ nano \- NAno un NOuvel
.SH SYNOPSIS
.B nano
.I [OPTIONS]\ [[\+LIGNE[,COLONNE]]\ FICHIER]...
.I [OPTIONS]\ [[\+LIGNE,COLONNE]\ FICHIER]...
.br
.SH DESCRIPTION
@@ -44,9 +44,10 @@ num
.SH OPTIONS
.TP
.B \+\fILIGNE\fP[,\fICOLONNE\fP]
.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.
la ligne \fILIGNE\fR (l'un des deux, au moins, devant être spécifié) au
lieu de démarrer à la colonne\ 1, ligne\ 1.
.TP
.B \-?
Identique à \fB-h (\-\-help)\fP.
@@ -256,7 +257,7 @@ Pour vous abonner, envoyez un courrier
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.
ou du logiciel à \fBjean-philippe.guerard@tigreraye.org\fR.
.SH "SITE INTERNET"
http://www.nano-editor.org/
@@ -271,15 +272,14 @@ http://www.nano-editor.org/
.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).
manuel a été initialement rédigée par Jordi Mallach <jordi@gnu.org> pour
le système Debian (mais elle peut être utilisée par d'autres).
.SH TRADUCTION
Cette adaptation française a été réalisé par Jean-Philippe\ Guérard
<jean-philippe.guerard@corbeaunoir.org> le 17\ juin\ 2006 à partir
de la version du 8\ juin\ 2006 de la page de manuel de nano 1.3.12.
Cette page a été relue par Gérard Delafond.
<jean-philippe.guerard@tigreraye.org> le 28\ août\ 2006 à partir
de la version du 12\ juillet\ 2006 de la page de manuel de nano
1.9.99pre1. Cette page a été relue par Gérard Delafond.
Un maximum de soin a été apporté lors de l'élaboration de cette
traduction\ ; néanmoins, quelques imperfections peuvent subsister. Si

View File

@@ -2,7 +2,7 @@
.\" nanorc.5 is Copyright (C) 2003, 2004, 2005, 2006 by the Free
.\" Software Foundation, Inc.
.\"
.\" (c) 2003-2006 Jean-Philippe Guérard <jean-philippe.guerard@corbeaunoir.org>
.\" (c) 2003-2006 Jean-Philippe Guérard <jean-philippe.guerard@tigreraye.org>
.\" pour l'adaptation française.
.\"
.\" This is free documentation, see the latest version of the GNU
@@ -15,7 +15,7 @@
.\" AUCUNE garantie.
.\"
\" $Id$
.TH NANORC 5 "version 1.3.12" "17\ juin\ 2006"
.TH NANORC 5 "version 1.9.99pre1" "28\ août\ 2006"
.\" Please adjust this date whenever revising the manpage.
.\" Merci de modifier ces dates à chaque mise à jour de cette page.
@@ -321,13 +321,14 @@ votre syst
.SH AUTEUR
Chris Allegretta <chrisa@asty.org> et d'autres (voir les fichiers
\fIAUTHORS\fP et \fITHANKS\fP pour plus d'information). Cette page de
manuel a été rédigée par Jordi Mallach <jordi@gnu.org>.
manuel a été initialement rédigée par Jordi Mallach <jordi@gnu.org> pour
le système Debian (mais elle peut être utilisée par d'autres).
.SH TRADUCTION
Cette adaptation française a été réalisé par Jean-Philippe\ Guérard
<jean-philippe.guerard@corbeaunoir.org> le 17\ juin\ 2006 à partir de
la version du 24\ mai\ 2006 de la page de manuel de nanorc (pour la
version 1.3.12 de nano). Cette page a été relue par Gérard
<jean-philippe.guerard@tigreraye.org> le 28\ août\ 2006 à partir de
la version du 30\ juillet\ 2006 de la page de manuel de nanorc (pour la
version 1.9.99pre1 de nano). Cette page a été relue par Gérard
Delafond.
Un maximum de soin a été apporté lors de l'élaboration de cette

View File

@@ -1,10 +1,10 @@
.\" Hey, EMACS: -*- nroff -*-
.\" rnano.1 is Copyright 2005, 2006 by Thijs Kinkhorst
.\" <thijs@kinkhorst.com>; skeleton based on nano-tiny.1 by Jordi
.\" Mallach <jordi@debian.org>.
.\" Mallach <jordi@gnu.org>.
.\"
.\" Adaptation française (c) 2006 par
.\" Jean-Philippe Guérard <jean-philippe.guerard@corbeaunoir.org>.
.\" Jean-Philippe Guérard <jean-philippe.guerard@tigreraye.org>.
.\"
.\" This is free documentation, see the latest version of the GNU
.\" General Public License for copying conditions. There is NO
@@ -16,7 +16,7 @@
.\" AUCUNE garantie.
.\"
.\" $Id$
.TH RNANO 1 "version 1.3.12" "17\ juin\ 20O6"
.TH RNANO 1 "version 1.9.99pre1" "28\ août\ 20O6"
.\" Please adjust this date whenever revising the manpage.
.\" Merci de modifier ces dates à chaque mise à jour de cette page.
.\"
@@ -26,7 +26,7 @@ am
.SH SYNOPSIS
.B rnano
.I [OPTIONS]\ [[\+LIGNE[,COLONNE]]\ FICHIER]...
.I [OPTIONS]\ [[\+LIGNE,COLONNE]\ FICHIER]...
.br
.SH DESCRIPTION
@@ -64,9 +64,10 @@ l'utilisation de copies de s
.SH OPTIONS
.TP
.B \+\fILIGNE\fP[,\fICOLONNE\fP]
.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.
la ligne \fILIGNE\fR (l'un des deux, au moins, devant être spécifié) au
lieu de démarrer à la colonne\ 1, ligne\ 1.
.TP
.B \-?
Identique à \fB-h (\-\-help)\fP.
@@ -92,7 +93,7 @@ Pour vous abonner, envoyez un courrier
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.
ou du logiciel à \fBjean-philippe.guerard@tigreraye.org\fR.
.SH "SITE INTERNET"
http://www.nano-editor.org/
@@ -105,9 +106,9 @@ elle peut
.SH TRADUCTION
Cette adaptation française a été réalisé par Jean-Philippe\ Guérard
<jean-philippe.guerard@corbeaunoir.org> le 17\ juin\ 2006 à partir
de la version du 1er\ mai\ 2006 de la page de manuel de rnano
(pour la version 1.3.12 de nano).
<jean-philippe.guerard@tigreraye.org> le 28\ août\ 2006 à partir
de la version du 12\ juillet\ 2006 de la page de manuel de rnano
(pour la version 1.9.99pre1 de nano).
Un maximum de soin a été apporté lors de l'élaboration de cette
traduction\ ; néanmoins, quelques imperfections peuvent subsister. Si

View File

@@ -7,7 +7,7 @@
.\" warranty.
.\"
.\" $Id$
.TH NANO 1 "version 1.3.12" "June 7, 2006"
.TH NANO 1 "version 1.9.99pre1" "July 12, 2006"
.\" Please adjust this date whenever revising the manpage.
.\"
@@ -16,7 +16,7 @@ nano \- Nano's ANOther editor, an enhanced free Pico clone
.SH SYNOPSIS
.B nano
.I [OPTIONS]\ [[\+LINE[,COLUMN]]\ FILE]...
.I [OPTIONS]\ [[\+LINE,COLUMN]\ FILE]...
.br
.SH DESCRIPTION
@@ -33,9 +33,10 @@ replace" and "go to line number".
.SH OPTIONS
.TP
.B \+\fILINE\fP[,\fICOLUMN\fP]
.B \+\fILINE\fP,\fICOLUMN\fP
Places cursor at line number \fILINE\fP and column number \fICOLUMN\fP
on startup, instead of the default of line 1, column 1.
(at least one of which must be specified) on startup, instead of the
default of line 1, column 1.
.TP
.B \-?
Same as \fB-h (\-\-help)\fP.
@@ -229,5 +230,5 @@ http://www.nano-editor.org/
.SH AUTHOR
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).
Jordi Mallach <jordi@gnu.org>, for the Debian system (but may be used by
others).

View File

@@ -7,7 +7,7 @@
.\" warranty.
.\"
.\" $Id$
.TH NANORC 5 "version 1.3.12" "May 24, 2006"
.TH NANORC 5 "version 1.9.99pre1" "July 30, 2006"
.\" Please adjust this date whenever revising the manpage.
.\"
.SH NAME
@@ -92,7 +92,7 @@ come before the latter set, and both must be in the same order. The
default value is "\fI(<[{)>]}\fP".
.TP
.B set/unset morespace
Allow use of the blank line below the titlebar as extra editing space.
Use the blank line below the titlebar as extra editing space.
.TP
.B set/unset mouse
Enable mouse support, if available for your system. When enabled, mouse
@@ -194,7 +194,7 @@ 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.
characters as parts of words.
.TP
.B syntax "\fIstr\fP" ["\fIfileregex\fP" ... ]
Defines a syntax named \fIstr\fP which can be activated via the
@@ -254,5 +254,6 @@ Per-user configuration file
system)
.SH AUTHOR
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>.
\fITHANKS\fP for details). This manual page was originally written by
Jordi Mallach <jordi@gnu.org>, for the Debian system (but may be used by
others).

View File

@@ -1,14 +1,14 @@
.\" Hey, EMACS: -*- nroff -*-
.\" rnano.1 is Copyright 2005, 2006 by Thijs Kinkhorst
.\" <thijs@kinkhorst.com>; skeleton based on nano-tiny.1 by Jordi
.\" Mallach <jordi@debian.org>.
.\" Mallach <jordi@gnu.org>.
.\"
.\" This is free documentation, see the latest version of the GNU
.\" General Public License for copying conditions. There is NO
.\" warranty.
.\"
.\" $Id$
.TH RNANO 1 "version 1.3.12" "May 1, 2006"
.TH RNANO 1 "version 1.9.99pre1" "July 12, 2006"
.\" Please adjust this date whenever revising the manpage.
.\"
.SH NAME
@@ -17,7 +17,7 @@ Pico clone
.SH SYNOPSIS
.B rnano
.I [OPTIONS]\ [[\+LINE[,COLUMN]]\ FILE]...
.I [OPTIONS]\ [[\+LINE,COLUMN]\ FILE]...
.br
.SH DESCRIPTION
@@ -51,9 +51,10 @@ use backup files or spell checking.
.SH OPTIONS
.TP
.B \+\fILINE\fP[,\fICOLUMN\fP]
.B \+\fILINE\fP,\fICOLUMN\fP
Places cursor at line number \fILINE\fP and column number \fICOLUMN\fP
on startup, instead of the default of line 1, column 1.
(at least one of which must be specified) on startup, instead of the
default of line 1, column 1.
.TP
.B \-?
Same as \fB-h (\-\-help)\fP.

View File

@@ -158,7 +158,7 @@
## Save automatically on exit, don't prompt.
# set tempfile
## Disallow file modification; why would you want this in an rcfile? ;)
## Disallow file modification. Why would you want this in an rcfile? ;)
# set view
## The two single-column characters used to display the first characters
@@ -167,7 +167,7 @@
# set whitespace " "
## Detect word boundaries more accurately by treating punctuation
## characters as part of a word.
## characters as parts of words.
# set wordbounds

View File

@@ -1,6 +1,6 @@
## Here is an example for C/C++.
##
syntax "c" "\.(c|C|cc|cpp|cxx|h|H|hh|hpp|hxx)$"
syntax "c" "\.(c(c|pp|xx)?|C)$" "\.(h(h|pp|xx)?|H)$" "\.ii?$"
color brightred "\<[A-Z_][0-9A-Z_]+\>"
color green "\<(float|double|bool|char|int|short|long|sizeof|enum|void|static|const|struct|union|typedef|extern|signed|unsigned|inline)\>"
color green "\<(u_?)?int(8|16|32|64|ptr)_t\>"

View File

@@ -1,9 +1,10 @@
## Here is an example for Ruby.
##
syntax "ruby" "\.rb$"
## Asciibetical list of reserved words
color yellow "\<(BEGIN|END|alias|and|begin|break|case|class|def|defined\?|do|else|elsif|end|ensure|false|for|if|in|module|next|nil|not|or|redo|rescue|retry|return|self|super|then|true|undef|unless|until|when|while|yield)\>"
## Constants
color brightblue "(\$|@|@@)?[A-Z]+[0-9A-Z_a-z]*"
color brightblue "(\$|@|@@)?\<[A-Z]+[0-9A-Z_a-z]*"
## Ruby "symbols"
icolor magenta "([ ]|^):[0-9A-Z_]+\>"
## Some unique things we want to stand out

View File

@@ -8,8 +8,8 @@
@c Run 'makeinfo' rather than 'texinfo-format-buffer'.
@smallbook
@set EDITION 0.1
@set VERSION 1.3.12
@set UPDATED 20 Jun 2006
@set VERSION 1.9.99pre1
@set UPDATED 30 Jul 2006
@dircategory Editors
@direntry
@@ -23,7 +23,7 @@
@titlepage
@title GNU @code{nano}
@subtitle a small and friendly text editor.
@subtitle version 1.3.12
@subtitle version 1.9.99pre1
@author Chris Allegretta
@page
@@ -94,6 +94,8 @@ adding it with a comma. So the complete synopsis is:
@quotation
@code{nano [OPTION]@dots{} [[+LINE] FILE]@dots{}}
@code{nano [OPTION]@dots{} [[+,COLUMN] FILE]@dots{}}
@code{nano [OPTION]@dots{} [[+LINE,COLUMN] FILE]@dots{}}
@end quotation
@@ -105,9 +107,9 @@ Email bug reports to @email{nano@@nano-editor.org}.
@code{nano} takes the following options from the command line:
@table @code
@item +LINE[,COLUMN]
Start at line number LINE and column number COLUMN instead of the
default of line 1, column 1.
@item +LINE,COLUMN
Start at line number LINE and column number COLUMN (at least one of
which must be specified) instead of the default of line 1, column 1.
@item -?
Same as @code{-h, --help}.
@@ -155,6 +157,9 @@ Don't add newlines to the ends of files.
@item -N, --noconvert
Don't convert files from DOS/Mac format.
@item -O, --morespace
Use the blank line below the titlebar as extra editing space.
@item -Q <str>, --quotestr=<str>
Set the quoting string for justifying. The default value is
@@ -189,7 +194,7 @@ Show the current version number and exit.
@item -W, --wordbounds
Detect word boundaries more accurately by treating punctuation
characters as part of a word.
characters as parts of words.
@item -Y <str>, --syntax=<str>
Specify a specific syntax highlighting from the nanorc to use, if
@@ -520,7 +525,7 @@ default value is
@end quotation
@item set/unset morespace
Allow use of the blank line below the titlebar as extra editing space.
Use the blank line below the titlebar as extra editing space.
@item set/unset mouse
Enable mouse support, so that mouse clicks can be used to place the

View File

@@ -1,3 +1,23 @@
2006-08-28 Jordi Mallach <jordi@gnu.org>
* fr.po: Updated French translation by Jean-Philippe Guérard.
2006-08-25 Jordi Mallach <jordi@gnu.org>
* bg.po: Updated Bulgarian translation by Anton Zinoviev.
* ca.po: Updated Catalan translation.
* ga.po: Updated Irish translation by Kevin Patrick Scannell.
* it.po: Updated Italian translation by Marco Colombo.
* nl.po: Updated Dutch translation by Benno Schulenberg.
* sv.po: Updated Swedish translation by Daniel Nylander.
2006-08-15 David Lawrence Ramsey <pooka109@cox.net>
* hu.po: Removed unneeded duplicate plural forms, as gettext
0.15 generates errors upon encountering them.
* id.po: Removed unneeded duplicate plural forms, as gettext
0.15 generates errors upon encountering them.
2006-06-20 Jordi Mallach <jordi@gnu.org>
* ca.po: Updated Catalan translation.

782
po/bg.po

File diff suppressed because it is too large Load Diff

786
po/ca.po

File diff suppressed because it is too large Load Diff

797
po/fr.po

File diff suppressed because it is too large Load Diff

778
po/ga.po

File diff suppressed because it is too large Load Diff

View File

@@ -108,28 +108,24 @@ msgstr "Új puffer"
msgid "Read %lu line (Converted from DOS and Mac format)"
msgid_plural "Read %lu lines (Converted from DOS and Mac format)"
msgstr[0] "%lu sor beolvasva (DOS és Mac formátumról átalakítva)"
msgstr[1] "%lu sor beolvasva (DOS és Mac formátumról átalakítva)"
#: src/files.c:564
#, c-format
msgid "Read %lu line (Converted from Mac format)"
msgid_plural "Read %lu lines (Converted from Mac format)"
msgstr[0] "%lu sor beolvasva (Mac formátumról átalakítva)"
msgstr[1] "%lu sor beolvasva (Mac formátumról átalakítva)"
#: src/files.c:569
#, c-format
msgid "Read %lu line (Converted from DOS format)"
msgid_plural "Read %lu lines (Converted from DOS format)"
msgstr[0] "%lu sor beolvasva (DOS formátumról átalakítva)"
msgstr[1] "%lu sor beolvasva (DOS formátumról átalakítva)"
#: src/files.c:574
#, c-format
msgid "Read %lu line"
msgid_plural "Read %lu lines"
msgstr[0] "%lu sor beolvasva"
msgstr[1] "%lu sor beolvasva"
#: src/files.c:594
msgid "New File"
@@ -209,7 +205,6 @@ msgstr "Hiba az ideiglenes fájl írásakor: %s"
msgid "Wrote %lu line"
msgid_plural "Wrote %lu lines"
msgstr[0] "%lu sor kiírva"
msgstr[1] "%lu sor kiírva"
#: src/files.c:1751
msgid " [DOS Format]"
@@ -1609,7 +1604,6 @@ msgstr "Csere ezzel"
msgid "Replaced %lu occurrence"
msgid_plural "Replaced %lu occurrences"
msgstr[0] "%lu előfordulás cserélve"
msgstr[1] "%lu előfordulás cserélve"
#: src/search.c:989
msgid "Enter line number, column number"

View File

@@ -21,21 +21,18 @@ msgstr ""
msgid "Read %d line (Converted from Mac format)"
msgid_plural "Read %d lines (Converted from Mac format)"
msgstr[0] "Baca %d baris (Dikonversi dari format Mac)"
msgstr[1] "Baca %d baris (Dikonversi dari format Mac)"
#: files.c:321
#, c-format
msgid "Read %d line (Converted from DOS format)"
msgid_plural "Read %d lines (Converted from DOS format)"
msgstr[0] "Membaca %d baris (Konversi dari format DOS)"
msgstr[1] "Membaca %d baris (Konversi dari format DOS)"
#: files.c:326
#, c-format
msgid "Read %d line"
msgid_plural "Read %d lines"
msgstr[0] "Membaca %d baris"
msgstr[1] "Membaca %d baris"
#: files.c:343 search.c:58
#, c-format
@@ -170,7 +167,6 @@ msgstr "Tidak dapat menset permisi %o pada %s: %s"
msgid "Wrote %d line"
msgid_plural "Wrote %d lines"
msgstr[0] "Menulis %d baris"
msgstr[1] "Menulis %d baris"
#: files.c:1730
msgid " [Mac Format]"

918
po/it.po

File diff suppressed because it is too large Load Diff

772
po/nl.po

File diff suppressed because it is too large Load Diff

1575
po/sv.po

File diff suppressed because it is too large Load Diff

View File

@@ -31,11 +31,11 @@
#ifndef DISABLE_BROWSER
static char **filelist = NULL;
/* The list of files to display in the browser. */
/* The list of files to display in the file browser. */
static size_t filelist_len = 0;
/* The number of files in the list. */
static int width = 0;
/* The number of columns to display the list in. */
/* The number of files that we can display per line. */
static int longest = 0;
/* The number of columns in the longest filename in the list. */
static size_t selected = 0;
@@ -44,16 +44,22 @@ static size_t selected = 0;
static bool search_last_file = FALSE;
/* Have we gone past the last file while searching? */
/* Our browser function. path is the tilde-expanded path to start
* browsing from. */
/* Our main file browser function. path is the tilde-expanded path to
* start browsing from. */
char *do_browser(char *path, DIR *dir)
{
int kbinput;
bool meta_key, func_key;
bool old_const_update = ISSET(CONST_UPDATE);
char *ans = mallocstrcpy(NULL, "");
/* The last answer the user typed on the statusbar. */
char *retval = NULL;
int kbinput;
bool meta_key, func_key, old_const_update = ISSET(CONST_UPDATE);
bool abort = FALSE;
/* Whether we should abort the file browser. */
char *prev_dir = NULL;
/* The directory we were in, if any, before backing up via
* browsing to "..". */
char *ans = NULL;
/* The last answer the user typed on the statusbar. */
size_t old_selected;
/* The selected file we had before the current selected file. */
curs_set(0);
blank_statusbar();
@@ -65,86 +71,99 @@ char *do_browser(char *path, DIR *dir)
UNSET(CONST_UPDATE);
change_browser_directory:
/* We go here after the user selects a new directory. */
ans = mallocstrcpy(NULL, "");
change_browser_directory:
/* We go here after we select a new directory. */
/* Start with no key pressed. */
kbinput = ERR;
meta_key = FALSE;
func_key = FALSE;
width = 0;
selected = 0;
path = mallocstrassn(path, get_full_path(path));
/* Assume that path exists and ends with a slash. */
assert(path != NULL && path[strlen(path) - 1] == '/');
/* Get the list of files. */
/* Get the file list, and set longest and width in the process. */
browser_init(path, dir);
assert(filelist != NULL);
/* Sort the list. */
/* Sort the file list. */
qsort(filelist, filelist_len, sizeof(char *), diralphasort);
/* If prev_dir isn't NULL, select the directory saved in it, and
* then blow it away. */
if (prev_dir != NULL) {
browser_select_filename(prev_dir);
free(prev_dir);
prev_dir = NULL;
/* Otherwise, select the first file or directory in the list. */
} else
selected = 0;
old_selected = (size_t)-1;
titlebar(path);
do {
bool abort = FALSE;
while (!abort) {
struct stat st;
int i;
size_t fileline;
size_t fileline = selected / width;
/* The line number the selected file is on. */
char *new_path;
/* Used by the "Go To Directory" prompt. */
#ifndef DISABLE_MOUSE
MEVENT mevent;
#endif
/* The path we switch to at the "Go to Directory"
* prompt. */
/* Compute the line number we're on now, so that we don't divide
* by zero. */
fileline = selected;
if (width != 0)
fileline /= width;
/* Display the file list if we don't have a key, or if the
* selected file has changed, and set width in the process. */
if (kbinput == ERR || old_selected != selected)
browser_refresh();
old_selected = selected;
kbinput = get_kbinput(edit, &meta_key, &func_key);
parse_browser_input(&kbinput, &meta_key, &func_key);
switch (kbinput) {
#ifndef DISABLE_MOUSE
case KEY_MOUSE:
if (getmouse(&mevent) == ERR)
break;
/* If we clicked in the edit window, we probably clicked
* on a file. */
if (wenclose(edit, mevent.y, mevent.x)) {
size_t old_selected = selected;
/* Subtract out the size of topwin. */
mevent.y -= 2 - no_more_space();
/* longest is the width of each column. There are
* two spaces between each column. */
selected = (fileline / editwinrows) * (editwinrows *
width) + (mevent.y * width) + (mevent.x /
(longest + 2));
/* If they clicked beyond the end of a row, select
* the end of that row. */
if (mevent.x > width * (longest + 2))
selected--;
/* If we're off the screen, reset to the last item.
* If we clicked the same place as last time, select
* this name! */
if (selected > filelist_len - 1)
selected = filelist_len - 1;
else if (old_selected == selected)
/* Put back the "Select" key, so that the file
* is selected. */
unget_kbinput(NANO_ENTER_KEY, FALSE, FALSE);
} else {
/* We must have clicked a shortcut. Put back the
* equivalent shortcut key. */
{
int mouse_x, mouse_y;
get_mouseinput(&mouse_x, &mouse_y, TRUE);
if (!get_mouseinput(&mouse_x, &mouse_y, TRUE)) {
/* We can click in the edit window to select a
* filename. */
if (wenclose(edit, mouse_y, mouse_x)) {
/* Subtract out the size of topwin. */
mouse_y -= 2 - no_more_space();
/* longest is the width of each column.
* There are two spaces between each
* column. */
selected = (fileline / editwinrows) *
(editwinrows * width) + (mouse_y *
width) + (mouse_x / (longest + 2));
/* If they clicked beyond the end of a row,
* select the filename at the end of that
* row. */
if (mouse_x > width * (longest + 2))
selected--;
/* If we're off the screen, select the last
* filename. */
if (selected > filelist_len - 1)
selected = filelist_len - 1;
/* If we selected the same filename as last
* time, put back the Enter key so that it's
* read in. */
if (old_selected == selected)
unget_kbinput(NANO_ENTER_KEY, FALSE,
FALSE);
}
}
}
break;
#endif /* !DISABLE_MOUSE */
@@ -181,7 +200,7 @@ char *do_browser(char *path, DIR *dir)
case NANO_NEXTPAGE_KEY:
selected += (editwinrows - fileline % editwinrows) *
width;
if (selected >= filelist_len)
if (selected > filelist_len - 1)
selected = filelist_len - 1;
break;
case NANO_FIRSTFILE_ALTKEY:
@@ -252,7 +271,7 @@ char *do_browser(char *path, DIR *dir)
dir = opendir(new_path);
if (dir == NULL) {
/* We can't open this dir for some reason.
/* We can't open this directory for some reason.
* Complain. */
statusbar(_("Error reading %s: %s"), answer,
strerror(errno));
@@ -264,7 +283,6 @@ char *do_browser(char *path, DIR *dir)
/* Start over again with the new path value. */
free(path);
path = new_path;
free_chararray(filelist, filelist_len);
goto change_browser_directory;
case NANO_PREVLINE_KEY:
if (selected >= width)
@@ -283,7 +301,7 @@ char *do_browser(char *path, DIR *dir)
selected++;
break;
case NANO_ENTER_KEY:
/* You can't move up from "/". */
/* We can't move up from "/". */
if (strcmp(filelist[selected], "/..") == 0) {
statusbar(_("Can't move up a directory"));
beep();
@@ -291,7 +309,7 @@ char *do_browser(char *path, DIR *dir)
}
#ifndef DISABLE_OPERATINGDIR
/* Note: the selected file can be outside the operating
/* 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)) {
@@ -312,11 +330,18 @@ char *do_browser(char *path, DIR *dir)
break;
}
/* If we've successfully opened a file, we're done, so
* get out. */
if (!S_ISDIR(st.st_mode)) {
retval = mallocstrcpy(retval, filelist[selected]);
retval = mallocstrcpy(NULL, filelist[selected]);
abort = TRUE;
break;
}
/* If we've successfully opened a directory, and it's
* "..", save the current directory in prev_dir, so that
* we can select it later. */
} else if (strcmp(tail(filelist[selected]), "..") == 0)
prev_dir = mallocstrcpy(NULL,
striponedir(filelist[selected]));
dir = opendir(filelist[selected]);
if (dir == NULL) {
@@ -331,34 +356,26 @@ char *do_browser(char *path, DIR *dir)
path = mallocstrcpy(path, filelist[selected]);
/* Start over again with the new path value. */
free_chararray(filelist, filelist_len);
goto change_browser_directory;
/* Abort the browser. */
/* Abort the file browser. */
case NANO_EXIT_KEY:
abort = TRUE;
break;
}
}
if (abort)
break;
browser_refresh();
kbinput = get_kbinput(edit, &meta_key, &func_key);
parse_browser_input(&kbinput, &meta_key, &func_key);
} while (kbinput != NANO_EXIT_KEY);
blank_edit();
titlebar(NULL);
edit_refresh();
curs_set(1);
if (old_const_update)
SET(CONST_UPDATE);
/* Clean up. */
free(path);
free(ans);
free_chararray(filelist, filelist_len);
filelist = NULL;
filelist_len = 0;
return retval;
}
@@ -384,7 +401,8 @@ char *do_browse_from(const char *inpath)
* 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);
path = mallocstrassn(path, striponedir(path));
if (stat(path, &st) == -1 || !S_ISDIR(st.st_mode)) {
free(path);
@@ -399,19 +417,18 @@ char *do_browse_from(const char *inpath)
#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);
}
if (check_operating_dir(path, FALSE))
path = mallocstrcpy(path, operating_dir);
#endif
if (path != NULL)
dir = opendir(path);
/* If we can't open the path, get out. */
if (dir == NULL) {
if (path != NULL)
free(path);
beep();
free(path);
return NULL;
}
@@ -419,16 +436,28 @@ char *do_browse_from(const char *inpath)
}
/* Set filelist to the list of files contained in the directory path,
* set filelist_len to the number of files in that list, and set longest
* to the width in columns of the longest filename in that list, up to
* COLS - 1 (but at least 7). Assume path exists and is a directory. */
* set filelist_len to the number of files in that list, set longest to
* the width in columns of the longest filename in that list (between 15
* and COLS), and set width to the number of files that we can display
* per line. longest needs to be at least 15 columns in order to
* display ".. (parent dir)", as Pico does. Assume path exists and is a
* directory. */
void browser_init(const char *path, DIR *dir)
{
const struct dirent *nextdir;
size_t i = 0, path_len;
size_t i = 0, path_len = strlen(path);
int col = 0;
/* The maximum number of columns that the filenames will take
* up. */
int line = 0;
/* The maximum number of lines that the filenames will take
* up. */
int filesperline = 0;
/* The number of files that we can display per line. */
assert(dir != NULL);
assert(path != NULL && path[strlen(path) - 1] == '/' && dir != NULL);
/* Set longest to zero, just before we initialize it. */
longest = 0;
while ((nextdir = readdir(dir)) != NULL) {
@@ -437,20 +466,26 @@ void browser_init(const char *path, DIR *dir)
/* Don't show the "." entry. */
if (strcmp(nextdir->d_name, ".") == 0)
continue;
i++;
d_len = strlenpt(nextdir->d_name);
if (d_len > longest)
longest = (d_len > COLS - 1) ? COLS - 1 : d_len;
longest = (d_len > COLS) ? COLS : d_len;
i++;
}
filelist_len = i;
rewinddir(dir);
/* Put 10 columns' worth of blank space between columns of filenames
* in the list whenever possible, as Pico does. */
longest += 10;
filelist = (char **)nmalloc(filelist_len * sizeof(char *));
if (filelist != NULL)
free_chararray(filelist, filelist_len);
path_len = strlen(path);
filelist_len = i;
filelist = (char **)nmalloc(filelist_len * sizeof(char *));
i = 0;
@@ -461,6 +496,7 @@ void browser_init(const char *path, DIR *dir)
filelist[i] = charalloc(path_len + strlen(nextdir->d_name) + 1);
sprintf(filelist[i], "%s%s", path, nextdir->d_name);
i++;
}
@@ -468,12 +504,44 @@ void browser_init(const char *path, DIR *dir)
* first time we scanned and the second. i is the actual length of
* filelist, so record it. */
filelist_len = i;
closedir(dir);
if (longest > COLS - 1)
longest = COLS - 1;
if (longest < 7)
longest = 7;
/* Make sure longest is between 15 and COLS. */
if (longest < 15)
longest = 15;
if (longest > COLS)
longest = COLS;
/* Set width to zero, just before we initialize it. */
width = 0;
for (i = 0; i < filelist_len && line < editwinrows; i++) {
/* Calculate the number of columns one filename will take up. */
col += longest;
filesperline++;
/* Add some space between the columns. */
col += 2;
/* If the next entry isn't going to fit on the current line,
* move to the next line. */
if (col > COLS - longest) {
line++;
col = 0;
/* If width isn't initialized yet, and we've taken up more
* than one line, it means that width is equal to
* filesperline. */
if (width == 0)
width = filesperline;
}
}
/* If width isn't initialized yet, and we've taken up only one line,
* it means that width is equal to (COLS % longest). */
if (width == 0)
width = COLS % longest;
}
/* Determine the shortcut key corresponding to the values of kbinput
@@ -486,7 +554,7 @@ void parse_browser_input(int *kbinput, bool *meta_key, bool *func_key)
get_shortcut(browser_list, kbinput, meta_key, func_key);
/* Pico compatibility. */
if (*meta_key == FALSE) {
if (!*meta_key) {
switch (*kbinput) {
case ' ':
*kbinput = NANO_NEXTPAGE_KEY;
@@ -519,69 +587,136 @@ void parse_browser_input(int *kbinput, bool *meta_key, bool *func_key)
}
}
/* Calculate the number of columns needed to display the list of files
* in the array filelist, if necessary, and then display the list of
* files. */
/* Set width to the number of files that we can display per line, if
* necessary, and display the list of files. */
void browser_refresh(void)
{
struct stat st;
size_t i = 0;
int col = 0, line = 0, filecols = 0;
size_t foo_len = mb_cur_max() * 7;
char *foo = charalloc(foo_len + 1);
static int uimax_digits = -1;
size_t i;
int col = 0;
/* The maximum number of columns that the filenames will take
* up. */
int line = 0;
/* The maximum number of lines that the filenames will take
* up. */
char *foo;
/* The file information that we'll display. */
if (width != 0)
i = width * editwinrows * ((selected / width) / editwinrows);
if (uimax_digits == -1)
uimax_digits = digits(UINT_MAX);
blank_edit();
wmove(edit, 0, 0);
for (; i < filelist_len && line <= editwinrows - 1; i++) {
char *disp = display_string(tail(filelist[i]), 0, longest,
FALSE);
i = width * editwinrows * ((selected / width) / editwinrows);
/* Highlight the currently selected file or directory. */
for (; i < filelist_len && line < editwinrows; i++) {
struct stat st;
const char *filetail = tail(filelist[i]);
/* The filename we display, minus the path. */
size_t filetaillen = strlenpt(filetail);
/* The length of the filename in columns. */
size_t foolen;
/* The length of the file information in columns. */
int foomaxlen = 7;
/* The maximum length of the file information in
* columns: 7 for "--", "(dir)", or the file size, and
* 12 for "(parent dir)". */
bool dots = (COLS >= 15 && filetaillen >= longest -
foomaxlen - 1);
/* Do we put an ellipsis before the filename? Don't set
* this to TRUE if we have fewer than 15 columns (i.e. 1
* column for padding, plus 7 columns for a filename
* other than ".."). */
char *disp = display_string(filetail, dots ? filetaillen -
longest + foomaxlen + 4 : 0, longest, FALSE);
/* If we put an ellipsis before the filename, reserve 1
* column for padding, plus 7 columns for "--", "(dir)",
* or the file size, plus 3 columns for the ellipsis. */
/* Start highlighting the currently selected file or
* directory. */
if (i == selected)
wattron(edit, reverse_attr);
blank_line(edit, line, col, longest);
mvwaddstr(edit, line, col, disp);
/* If dots is TRUE, we will display something like
* "...ename". */
if (dots)
mvwaddstr(edit, line, col, "...");
mvwaddstr(edit, line, dots ? col + 3 : 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. */
/* Show information about the file. We don't want to report
* file sizes for links, so we use lstat(). */
if (lstat(filelist[i], &st) == -1 || S_ISLNK(st.st_mode)) {
/* Aha! It's a symlink! Now, is it a dir? If so, mark it
* as such. */
if (stat(filelist[i], &st) == 0 && S_ISDIR(st.st_mode)) {
strncpy(foo, _("(dir)"), foo_len);
foo[foo_len] = '\0';
} else
strcpy(foo, "--");
/* If the file doesn't exist (i.e. it's been deleted while
* the file browser is open), or it's a symlink that doesn't
* point to a directory, display "--". */
if (stat(filelist[i], &st) == -1 || !S_ISDIR(st.st_mode))
foo = mallocstrcpy(NULL, "--");
/* If the file is a symlink that points to a directory,
* display it as a directory. */
else
/* TRANSLATORS: Try to keep this at most 7
* characters. */
foo = mallocstrcpy(NULL, _("(dir)"));
} 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));
/* If the file is a directory, display it as such. */
if (strcmp(filetail, "..") == 0) {
/* TRANSLATORS: Try to keep this at most 12
* characters. */
foo = mallocstrcpy(NULL, _("(parent dir)"));
foomaxlen = 12;
} else
foo = mallocstrcpy(NULL, _("(dir)"));
} else {
unsigned long result = st.st_size;
char modifier;
mvwaddnstr(edit, line, col - strlen(foo), foo, foo_len);
foo = charalloc(uimax_digits + 4);
/* Bytes. */
if (st.st_size < (1 << 10))
modifier = ' ';
/* Kilobytes. */
else if (st.st_size < (1 << 20)) {
result >>= 10;
modifier = 'K';
/* Megabytes. */
} else if (st.st_size < (1 << 30)) {
result >>= 20;
modifier = 'M';
/* Gigabytes. */
} else {
result >>= 30;
modifier = 'G';
}
sprintf(foo, "%4lu %cB", result, modifier);
}
/* Make sure foo takes up no more than foomaxlen columns. */
foolen = strlenpt(foo);
if (foolen > foomaxlen) {
null_at(&foo, actual_x(foo, foomaxlen));
foolen = foomaxlen;
}
mvwaddstr(edit, line, col - foolen, foo);
/* Finish highlighting the currently selected file or
* directory. */
if (i == selected)
wattroff(edit, reverse_attr);
free(foo);
/* Add some space between the columns. */
col += 2;
@@ -590,21 +725,36 @@ void browser_refresh(void)
if (col > COLS - longest) {
line++;
col = 0;
/* Set the number of columns to display the list in, if
* necessary, so that we don't divide by zero. */
if (width == 0)
width = filecols;
}
wmove(edit, line, col);
}
free(foo);
wnoutrefresh(edit);
}
/* Look for needle. If we find it, set selected to its location. Note
* that needle must be an exact match for a file in the list. The
* return value specifies whether we found anything. */
bool browser_select_filename(const char *needle)
{
size_t currselected;
bool found = FALSE;
for (currselected = 0; currselected < filelist_len;
currselected++) {
if (strcmp(filelist[currselected], needle) == 0) {
found = TRUE;
break;
}
}
if (found)
selected = currselected;
return found;
}
/* Set up the system variables for a filename search. Return -1 if the
* search should be canceled (due to Cancel, a blank search string, or a
* failed regcomp()), return 0 on success, and return 1 on rerun calling
@@ -725,17 +875,18 @@ bool findnextfile(bool no_sameline, size_t begin, const char *needle)
size_t currselected = selected;
/* The location in the current file list of the match we
* find. */
const char *rev_start = tail(filelist[currselected]), *found = NULL;
const char *filetail = tail(filelist[currselected]);
/* The filename we display, minus the path. */
const char *rev_start = filetail, *found = NULL;
#ifndef NANO_TINY
if (ISSET(BACKWARDS_SEARCH))
rev_start += strlen(tail(filelist[currselected]));
rev_start += strlen(rev_start);
#endif
/* Look for needle in the current filename we're searching. */
while (TRUE) {
found = strstrwrapper(tail(filelist[currselected]), needle,
rev_start);
found = strstrwrapper(filetail, needle, rev_start);
/* We've found a potential match. If we're not allowed to find
* a match on the same filename we started on and this potential
@@ -775,10 +926,12 @@ bool findnextfile(bool no_sameline, size_t begin, const char *needle)
if (currselected == begin)
search_last_file = TRUE;
rev_start = tail(filelist[currselected]);
filetail = tail(filelist[currselected]);
rev_start = filetail;
#ifndef NANO_TINY
if (ISSET(BACKWARDS_SEARCH))
rev_start += strlen(tail(filelist[currselected]));
rev_start += strlen(rev_start);
#endif
}
@@ -893,27 +1046,35 @@ void do_fileresearch(void)
filesearch_abort();
}
/* Select the first file in the list. */
void do_first_file(void)
{
selected = 0;
}
/* Select the last file in the list. */
void do_last_file(void)
{
selected = filelist_len - 1;
}
/* Strip one directory from the end of path. */
void striponedir(char *path)
/* Strip one directory from the end of path, and return the stripped
* path. The returned string is dynamically allocated, and should be
* freed. */
char *striponedir(const char *path)
{
char *tmp;
char *retval, *tmp;
assert(path != NULL);
tmp = strrchr(path, '/');
retval = mallocstrcpy(NULL, path);
tmp = strrchr(retval, '/');
if (tmp != NULL)
*tmp = '\0';
null_at(&retval, tmp - retval);
return retval;
}
#endif /* !DISABLE_BROWSER */

View File

@@ -41,7 +41,7 @@ static const wchar_t bad_wchar = 0xFFFD;
* 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 char *const bad_mbchar = "\xEF\xBF\xBD";
static const int bad_mbchar_len = 3;
/* Enable UTF-8 support. */
@@ -527,12 +527,14 @@ int mbstrncasecmp(const char *s1, const char *s2, size_t n)
{
#ifdef ENABLE_UTF8
if (use_utf8) {
char *s1_mb = charalloc(MB_CUR_MAX);
char *s2_mb = charalloc(MB_CUR_MAX);
char *s1_mb, *s2_mb;
wchar_t ws1, ws2;
assert(s1 != NULL && s2 != NULL);
s1_mb = charalloc(MB_CUR_MAX);
s2_mb = charalloc(MB_CUR_MAX);
while (n > 0 && *s1 != '\0' && *s2 != '\0') {
bool bad_s1_mb = FALSE, bad_s2_mb = FALSE;
int s1_mb_len, s2_mb_len;
@@ -620,13 +622,15 @@ const char *mbstrcasestr(const char *haystack, const char *needle)
{
#ifdef ENABLE_UTF8
if (use_utf8) {
char *r_mb = charalloc(MB_CUR_MAX);
char *q_mb = charalloc(MB_CUR_MAX);
char *r_mb, *q_mb;
wchar_t wr, wq;
bool found_needle = FALSE;
assert(haystack != NULL && needle != NULL);
r_mb = charalloc(MB_CUR_MAX);
q_mb = charalloc(MB_CUR_MAX);
while (*haystack != '\0') {
const char *r = haystack, *q = needle;
int r_mb_len, q_mb_len;
@@ -726,13 +730,15 @@ const char *mbrevstrcasestr(const char *haystack, const char *needle,
{
#ifdef ENABLE_UTF8
if (use_utf8) {
char *r_mb = charalloc(MB_CUR_MAX);
char *q_mb = charalloc(MB_CUR_MAX);
char *r_mb, *q_mb;
wchar_t wr, wq;
bool begin_line = FALSE, found_needle = FALSE;
assert(haystack != NULL && needle != NULL && rev_start != NULL);
r_mb = charalloc(MB_CUR_MAX);
q_mb = charalloc(MB_CUR_MAX);
while (!begin_line) {
const char *r = rev_start, *q = needle;
int r_mb_len, q_mb_len;

View File

@@ -138,9 +138,8 @@ void color_update(void)
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. */
* extensions, which we've checked for elsewhere. Skip over
* it here, but keep track of its color regexes. */
if (strcmp(tmpsyntax->desc, "default") == 0) {
defcolor = tmpsyntax->color;
continue;

View File

@@ -90,7 +90,7 @@ void cut_to_eol(void)
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
* to the beginning of the next line, i.e. the newline at the
* end, into the cutbuffer. */
move_to_filestruct(&cutbuffer, &cutbottom, openfile->current,
openfile->current_x, openfile->current->next, 0);

View File

@@ -309,13 +309,13 @@ filestruct *read_line(char *buf, filestruct *prevnode, bool
fileptr->data[buf_len - 1] = '\0';
#endif
if (*first_line_ins == TRUE) {
if (*first_line_ins) {
/* Special case: We're inserting with the cursor on the first
* line. */
fileptr->prev = NULL;
fileptr->next = openfile->fileage;
fileptr->lineno = 1;
if (*first_line_ins == TRUE) {
if (*first_line_ins) {
*first_line_ins = FALSE;
/* If we're inserting into the first line of the file, then
* we want to make sure that our edit buffer stays on the
@@ -540,7 +540,7 @@ void read_file(FILE *f, const char *filename)
openfile->filebot);
/* If the NO_NEWLINES flag isn't set, and text has been added to
* the magicline (i.e, a file that doesn't end in a newline has been
* the magicline (i.e. a file that doesn't end in a newline has been
* inserted at the end of the current buffer), add a new magicline,
* and move the current line down to it. */
if (!ISSET(NO_NEWLINES) && openfile->filebot->data[0] != '\0') {
@@ -584,8 +584,8 @@ void read_file(FILE *f, const char *filename)
* reading with a 0 return value. *f is set to the opened file. */
int open_file(const char *filename, bool newfie, FILE **f)
{
int fd;
struct stat fileinfo;
int fd;
assert(filename != NULL && f != NULL);
@@ -683,6 +683,7 @@ void do_insertfile(
char *ans = mallocstrcpy(NULL, "");
/* The last answer the user typed on the statusbar. */
filestruct *edittop_save = openfile->edittop;
size_t current_x_save = openfile->current_x;
ssize_t current_y_save = openfile->current_y;
bool at_edittop = FALSE;
/* Whether we're at the top of the edit window. */
@@ -811,8 +812,18 @@ void do_insertfile(
/* Save the command's output in the current buffer. */
execute_command(answer);
} else {
#ifdef ENABLE_MULTIBUFFER
if (ISSET(MULTIBUFFER)) {
/* Move back to the beginning of the first line of
* the buffer. */
openfile->current = openfile->fileage;
openfile->current_x = 0;
openfile->placewewant = 0;
}
#endif
} else {
#endif /* !NANO_TINY */
/* Make sure the path to the file specified in answer is
* tilde-expanded. */
answer = mallocstrassn(answer,
@@ -835,20 +846,26 @@ void do_insertfile(
{
filestruct *top_save = openfile->fileage;
/* If we didn't insert into a new buffer, and we were at
* the top of the edit window before, set the saved
* value of edittop to the new top of the edit window,
* and update the current y-coordinate to account for
* the number of lines inserted. */
/* If we were at the top of the edit window before, set
* the saved value of edittop to the new top of the edit
* window. */
if (at_edittop)
edittop_save = openfile->fileage;
/* Update the current x-coordinate to account for the
* number of characters inserted on the current line. */
openfile->current_x = strlen(openfile->filebot->data);
if (openfile->fileage == openfile->filebot)
openfile->current_x += current_x_save;
/* Update the current y-coordinate to account for the
* number of lines inserted. */
openfile->current_y += current_y_save;
/* If we didn't insert into a new buffer, unpartition
* the filestruct so that it contains all the text
* again. Note that we've replaced the non-text
* originally in the partition with the text in the
* inserted file/executed command output. */
/* Unpartition the filestruct so that it contains all
* the text again. Note that we've replaced the
* non-text originally in the partition with the text in
* the inserted file/executed command output. */
unpartition_filestruct(&filepart);
/* Renumber starting with the beginning line of the old
@@ -882,7 +899,7 @@ void do_insertfile_void(void)
{
#ifdef ENABLE_MULTIBUFFER
if (ISSET(VIEW_MODE) && !ISSET(MULTIBUFFER))
statusbar(_("Key illegal in non-multibuffer mode"));
statusbar(_("Key invalid in non-multibuffer mode"));
else
#endif
do_insertfile(
@@ -902,21 +919,29 @@ void do_insertfile_void(void)
* able to go there. */
char *get_full_path(const char *origpath)
{
char *d_here, *d_there = NULL;
struct stat fileinfo;
char *d_here, *d_there, *d_there_file = NULL;
const char *last_slash;
bool path_only;
if (origpath == NULL)
return NULL;
/* Get the current directory. */
/* Get the current directory. If it doesn't exist, back up and try
* again until we get a directory that does, and use that as the
* current directory. */
d_here = charalloc(PATH_MAX + 1);
d_here = getcwd(d_here, PATH_MAX + 1);
if (d_here != NULL) {
const char *last_slash;
char *d_there_file = NULL;
bool path_only;
struct stat fileinfo;
while (d_here == NULL) {
if (chdir("..") == -1)
break;
d_here = getcwd(d_here, PATH_MAX + 1);
}
/* If we succeeded, canonicalize it in d_here. */
if (d_here != NULL) {
align(&d_here);
/* If the current directory isn't "/", tack a slash onto the end
@@ -925,89 +950,91 @@ char *get_full_path(const char *origpath)
d_here = charealloc(d_here, strlen(d_here) + 2);
strcat(d_here, "/");
}
/* Otherwise, set d_here to "". */
} else
d_here = mallocstrcpy(NULL, "");
d_there = real_dir_from_tilde(origpath);
d_there = real_dir_from_tilde(origpath);
assert(d_there != NULL);
assert(d_there != NULL);
/* Stat d_there. If stat() fails, assume that d_there refers to
* a new file that hasn't been saved to disk yet. Set path_only
* to TRUE if d_there refers to a directory, and FALSE if
* d_there refers to a file. */
path_only = !stat(d_there, &fileinfo) &&
S_ISDIR(fileinfo.st_mode);
/* If stat()ing d_there fails, assume that d_there refers to a new
* file that hasn't been saved to disk yet. Set path_only to TRUE
* if d_there refers to a directory, and FALSE otherwise. */
path_only = stat(d_there, &fileinfo) == 0 &&
S_ISDIR(fileinfo.st_mode);
/* If path_only is TRUE, make sure d_there ends in a slash. */
if (path_only) {
size_t d_there_len = strlen(d_there);
/* If path_only is TRUE, make sure d_there ends in a slash. */
if (path_only) {
size_t d_there_len = strlen(d_there);
if (d_there[d_there_len - 1] != '/') {
d_there = charealloc(d_there, d_there_len + 2);
strcat(d_there, "/");
}
if (d_there[d_there_len - 1] != '/') {
d_there = charealloc(d_there, d_there_len + 2);
strcat(d_there, "/");
}
}
/* Search for the last slash in d_there. */
last_slash = strrchr(d_there, '/');
/* Search for the last slash in d_there. */
last_slash = strrchr(d_there, '/');
/* If we didn't find one, then make sure the answer is in the
* format "d_here/d_there". */
if (last_slash == NULL) {
assert(!path_only);
/* If we didn't find one, then make sure the answer is in the format
* "d_here/d_there". */
if (last_slash == NULL) {
assert(!path_only);
d_there_file = d_there;
d_there = d_here;
d_there_file = d_there;
d_there = d_here;
} else {
/* If path_only is FALSE, then save the filename portion of the
* answer (everything after the last slash) in d_there_file. */
if (!path_only)
d_there_file = mallocstrcpy(NULL, last_slash + 1);
/* And remove the filename portion of the answer from
* d_there. */
null_at(&d_there, last_slash - d_there + 1);
/* Go to the path specified in d_there. */
if (chdir(d_there) == -1) {
free(d_there);
d_there = NULL;
} else {
/* If path_only is FALSE, then save the filename portion of
* the answer, everything after the last slash, in
* d_there_file. */
if (!path_only)
d_there_file = mallocstrcpy(NULL, last_slash + 1);
free(d_there);
/* And remove the filename portion of the answer from
* d_there. */
null_at(&d_there, last_slash - d_there + 1);
/* Get the full path. */
d_there = charalloc(PATH_MAX + 1);
d_there = getcwd(d_there, PATH_MAX + 1);
/* Go to the path specified in d_there. */
if (chdir(d_there) == -1) {
free(d_there);
d_there = NULL;
} else {
/* Get the full path and save it in d_there. */
free(d_there);
/* If we succeeded, canonicalize it in d_there. */
if (d_there != NULL) {
align(&d_there);
d_there = charalloc(PATH_MAX + 1);
d_there = getcwd(d_there, PATH_MAX + 1);
/* If the current directory isn't "/", tack a slash onto
* the end of it. */
if (strcmp(d_there, "/") != 0) {
d_there = charealloc(d_there, strlen(d_there) + 2);
strcat(d_there, "/");
}
} else
/* Otherwise, set path_only to TRUE, so that we clean up
* correctly, free all allocated memory, and return
* NULL. */
path_only = TRUE;
if (d_there != NULL) {
align(&d_there);
if (strcmp(d_there, "/") != 0) {
/* Make sure d_there ends in a slash. */
d_there = charealloc(d_there,
strlen(d_there) + 2);
strcat(d_there, "/");
}
} else
/* If we couldn't get the full path, set path_only
* to TRUE so that we clean up correctly, free all
* allocated memory, and return NULL. */
path_only = TRUE;
/* Finally, go back to the path specified in d_here,
* where we were before. */
chdir(d_here);
}
/* Finally, go back to the path specified in d_here,
* where we were before. We don't check for a chdir()
* error, since we can do nothing then. */
chdir(d_here);
/* Free d_here, since we're done using it. */
free(d_here);
}
/* At this point, if path_only is FALSE and d_there exists,
/* At this point, if path_only is FALSE and d_there isn't NULL,
* d_there contains the path portion of the answer and
* d_there_file contains the filename portion of the answer. If
* this is the case, tack d_there_file onto the end of
* d_there, so that d_there contains the complete answer. */
* this is the case, tack the latter onto the end of the former.
* d_there will then contain the complete answer. */
if (!path_only && d_there != NULL) {
d_there = charealloc(d_there, strlen(d_there) +
strlen(d_there_file) + 1);
@@ -2231,8 +2258,7 @@ char *input_tab(char *buf, bool allow_files, size_t *place, bool
assert(common_len > *place);
}
if (num_matches > 1 && (common_len != *place ||
*lastwastab == FALSE))
if (num_matches > 1 && (common_len != *place || !*lastwastab))
beep();
/* If there is more of a match to display on the statusbar, show
@@ -2248,7 +2274,7 @@ char *input_tab(char *buf, bool allow_files, size_t *place, bool
*place + 1);
strncpy(buf, mzero, common_len);
*place = common_len;
} else if (*lastwastab == FALSE || num_matches < 2)
} else if (!*lastwastab || num_matches < 2)
*lastwastab = TRUE;
else {
int longest_name = 0, columns, editline = 0;
@@ -2273,7 +2299,7 @@ char *input_tab(char *buf, bool allow_files, size_t *place, bool
assert(longest_name <= COLS - 1);
/* Each column will be (longest_name + 2) columns wide, i.e,
/* Each column will be (longest_name + 2) columns wide, i.e.
* two spaces between columns, except that there will be
* only one space after the last column. */
columns = (COLS + 1) / (longest_name + 2);
@@ -2319,7 +2345,7 @@ char *input_tab(char *buf, bool allow_files, size_t *place, bool
/* Only refresh the edit window if we don't have a list of filename
* matches on it. */
if (*list == FALSE)
if (!*list)
refresh_func();
/* Enable el cursor. */

File diff suppressed because it is too large Load Diff

View File

@@ -32,25 +32,28 @@
static char *help_text = NULL;
/* The text displayed in the help window. */
/* Our dynamic, shortcut list-compliant help function. refresh_func is
* the function we will call to refresh the edit window.*/
/* Our main help browser function. refresh_func is the function we will
* call to refresh the edit window. */
void do_help(void (*refresh_func)(void))
{
int kbinput = ERR;
bool meta_key, func_key, old_no_help = ISSET(NO_HELP);
bool abort = FALSE;
/* Whether we should abort the help browser. */
size_t line = 0;
/* The line number in help_text of the first displayed help
* line. This variable is zero-based. */
size_t last_line = 0;
/* The line number in help_text of the last help line. This
* variable is zero-based. */
int kbinput = ERR;
bool meta_key, func_key;
bool old_no_help = ISSET(NO_HELP);
#ifndef DISABLE_MOUSE
const shortcut *oldshortcut = currshortcut;
/* We will set currshortcut to allow clicking on the help
* screen's shortcut list. */
/* The current shortcut list. */
#endif
const char *ptr;
/* The current line of help text. */
size_t old_line = (size_t)-1;
/* The line we were on before the current line. */
curs_set(0);
blank_edit();
@@ -76,6 +79,7 @@ void do_help(void (*refresh_func)(void))
}
bottombars(help_list);
wnoutrefresh(bottomwin);
/* Get the last line of the help text. */
ptr = help_text;
@@ -88,23 +92,52 @@ void do_help(void (*refresh_func)(void))
if (last_line > 0)
last_line--;
do {
while (!abort) {
size_t i;
/* Generic loop variable. */
size_t old_line = line;
/* We redisplay the help only if it moved. */
ptr = help_text;
/* Display the help text if we don't have a key, or if the help
* text has moved. */
if (kbinput == ERR || line != old_line) {
blank_edit();
ptr = help_text;
/* 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++;
}
}
wnoutrefresh(edit);
old_line = line;
kbinput = get_kbinput(edit, &meta_key, &func_key);
parse_help_input(&kbinput, &meta_key, &func_key);
switch (kbinput) {
#ifndef DISABLE_MOUSE
case KEY_MOUSE:
{
int mouse_x, mouse_y;
get_mouseinput(&mouse_x, &mouse_y, TRUE);
}
break;
#endif
/* Redraw the screen. */
case NANO_REFRESH_KEY:
total_redraw();
break;
@@ -115,7 +148,7 @@ void do_help(void (*refresh_func)(void))
line = 0;
break;
case NANO_NEXTPAGE_KEY:
if (line + (editwinrows - 2) <= last_line)
if (line + (editwinrows - 1) < last_line)
line += editwinrows - 2;
break;
case NANO_PREVLINE_KEY:
@@ -123,7 +156,7 @@ void do_help(void (*refresh_func)(void))
line--;
break;
case NANO_NEXTLINE_KEY:
if (line + editwinrows <= last_line)
if (line + (editwinrows - 1) < last_line)
line++;
break;
case NANO_FIRSTLINE_ALTKEY:
@@ -136,35 +169,12 @@ void do_help(void (*refresh_func)(void))
line = last_line - (editwinrows - 1);
}
break;
/* Abort the help browser. */
case NANO_EXIT_KEY:
abort = TRUE;
break;
}
if ((kbinput != ERR && line == old_line) || kbinput ==
NANO_REFRESH_KEY)
goto skip_redisplay;
blank_edit();
/* Calculate where in the text we should be, based on the
* page. */
for (i = 0; i < line; i++) {
ptr += help_line_len(ptr);
if (*ptr == '\n')
ptr++;
}
for (i = 0; i < editwinrows && *ptr != '\0'; i++) {
size_t j = help_line_len(ptr);
mvwaddnstr(edit, i, 0, ptr, j);
ptr += j;
if (*ptr == '\n')
ptr++;
}
skip_redisplay:
kbinput = get_kbinput(edit, &meta_key, &func_key);
parse_help_input(&kbinput, &meta_key, &func_key);
} while (kbinput != NANO_EXIT_KEY);
}
#ifndef DISABLE_MOUSE
currshortcut = oldshortcut;
@@ -345,7 +355,7 @@ void help_init(void)
#endif /* !NANO_TINY */
else {
/* Default to the main help list. */
htx[0] = N_(" nano help text\n\n "
htx[0] = N_("Main 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. "
@@ -354,15 +364,16 @@ void help_init(void)
"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. ");
"messages. ");
htx[1] = N_("The bottom two lines show the most commonly used "
"shortcuts in the editor.\n\n The notation for "
"shortcuts is as follows: Control-key sequences are "
"notated with a caret (^) symbol and 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 "
@@ -564,7 +575,7 @@ void parse_help_input(int *kbinput, bool *meta_key, bool *func_key)
{
get_shortcut(help_list, kbinput, meta_key, func_key);
if (*meta_key == FALSE) {
if (!*meta_key) {
switch (*kbinput) {
/* For consistency with the file browser. */
case ' ':

View File

@@ -85,7 +85,7 @@ void do_page_up(void)
openfile->placewewant);
/* Scroll the edit window up a page. */
edit_scroll(UP, editwinrows - 2);
edit_scroll(UP_DIR, editwinrows - 2);
}
/* Move down one page. */
@@ -121,7 +121,7 @@ void do_page_down(void)
openfile->placewewant);
/* Scroll the edit window down a page. */
edit_scroll(DOWN, editwinrows - 2);
edit_scroll(DOWN_DIR, editwinrows - 2);
}
#ifndef DISABLE_JUSTIFY
@@ -471,11 +471,23 @@ void do_end(void)
update_line(openfile->current, openfile->current_x);
}
/* Move up one line. */
void do_up(void)
/* If scroll_only is FALSE, move up one line. If scroll_only is TRUE,
* scroll up one line without scrolling the cursor. */
void do_up(
#ifndef NANO_TINY
bool scroll_only
#else
void
#endif
)
{
/* If we're at the top of the file, get out. */
if (openfile->current == openfile->fileage)
/* If we're at the top of the file, or if scroll_only is TRUE and
* the top of the file is onscreen, get out. */
if (openfile->current == openfile->fileage
#ifndef NANO_TINY
|| (scroll_only && openfile->edittop == openfile->fileage)
#endif
)
return;
assert(openfile->current_y == openfile->current->lineno - openfile->edittop->lineno);
@@ -485,47 +497,60 @@ void do_up(void)
openfile->current_x = actual_x(openfile->current->data,
openfile->placewewant);
/* 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,
/* If scroll_only is FALSE and 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
* scroll_only is TRUE, scroll the edit window up one line
* unconditionally. */
if (openfile->current_y == 0
#ifndef NANO_TINY
ISSET(SMOOTH_SCROLL) ? 1 :
|| scroll_only
#endif
)
edit_scroll(UP_DIR,
#ifndef NANO_TINY
(ISSET(SMOOTH_SCROLL) || scroll_only) ? 1 :
#endif
editwinrows / 2);
/* 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 we're below the first line of the edit window, 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. */
if (openfile->current_y > 0) {
if (need_vertical_update(0))
update_line(openfile->current->next, 0);
update_line(openfile->current, openfile->current_x);
}
}
/* Move up one line. */
void do_up_void(void)
{
do_up(
#ifndef NANO_TINY
FALSE
#endif
);
}
#ifndef NANO_TINY
/* Scroll up one line without scrolling the cursor. */
void do_scroll_up(void)
{
/* If the top of the file is onscreen, get out. */
if (openfile->edittop == openfile->fileage)
return;
assert(openfile->current_y == openfile->current->lineno - openfile->edittop->lineno);
/* Move the current line of the edit window up. */
openfile->current = openfile->current->prev;
openfile->current_x = actual_x(openfile->current->data,
openfile->placewewant);
/* Scroll the edit window up one line. */
edit_scroll(UP, 1);
do_up(TRUE);
}
#endif /* !NANO_TINY */
#endif
/* Move down one line. */
void do_down(void)
/* If scroll_only is FALSE, move down one line. If scroll_only is TRUE,
* scroll down one line without scrolling the cursor. */
void do_down(
#ifndef NANO_TINY
bool scroll_only
#else
void
#endif
)
{
/* If we're at the bottom of the file, get out. */
if (openfile->current == openfile->filebot)
@@ -538,44 +563,50 @@ void do_down(void)
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,
/* If scroll_only is FALSE and if we're on the first 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
* scroll_only is TRUE, scroll the edit window down one line
* unconditionally. */
if (openfile->current_y == editwinrows - 1
#ifndef NANO_TINY
ISSET(SMOOTH_SCROLL) ? 1 :
|| scroll_only
#endif
)
edit_scroll(DOWN_DIR,
#ifndef NANO_TINY
(ISSET(SMOOTH_SCROLL) || scroll_only) ? 1 :
#endif
editwinrows / 2);
/* 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 we're above the last line of the edit window, 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. */
if (openfile->current_y < editwinrows - 1) {
if (need_vertical_update(0))
update_line(openfile->current->prev, 0);
update_line(openfile->current, openfile->current_x);
}
}
/* Move down one line. */
void do_down_void(void)
{
do_down(
#ifndef NANO_TINY
FALSE
#endif
);
}
#ifndef NANO_TINY
/* Scroll down one line without scrolling the cursor. */
void do_scroll_down(void)
{
/* 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);
do_down(TRUE);
}
#endif /* !NANO_TINY */
#endif
/* Move left one character. */
void do_left(void)
@@ -586,7 +617,7 @@ void do_left(void)
openfile->current_x = move_mbleft(openfile->current->data,
openfile->current_x);
else if (openfile->current != openfile->fileage) {
do_up();
do_up_void();
openfile->current_x = strlen(openfile->current->data);
}
@@ -607,7 +638,7 @@ void do_right(void)
openfile->current_x = move_mbright(openfile->current->data,
openfile->current_x);
else if (openfile->current != openfile->filebot) {
do_down();
do_down_void();
openfile->current_x = 0;
}

View File

@@ -29,15 +29,16 @@
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <errno.h>
#include <ctype.h>
#include <locale.h>
#include <termios.h>
#ifdef HAVE_GETOPT_H
#include <getopt.h>
#endif
#ifndef NANO_TINY
#include <sys/ioctl.h>
#endif
#ifdef ENABLE_NANORC
static bool no_rcfiles = FALSE;
@@ -519,19 +520,19 @@ void free_openfilestruct(openfilestruct *src)
/* Display a warning about a key disabled in view mode. */
void print_view_warning(void)
{
statusbar(_("Key illegal in VIEW mode"));
statusbar(_("Key invalid in view mode"));
}
/* What we do when we're all set to exit. */
void finish(void)
{
/* Blank the statusbar (and shortcut list, if applicable), and move
* the cursor to the last line of the screen. */
if (!ISSET(NO_HELP))
blank_bottombars();
else
blank_statusbar();
wrefresh(bottomwin);
endwin();
/* Restore the old terminal settings. */
@@ -674,7 +675,7 @@ void disable_mouse_support(void)
/* Enable mouse support. */
void enable_mouse_support(void)
{
mousemask(BUTTON1_RELEASED, NULL);
mousemask(ALL_MOUSE_EVENTS, NULL);
mouseinterval(50);
}
@@ -724,7 +725,7 @@ void print_opt_full(const char *shortflag
/* Explain how to properly use nano and its command line options. */
void usage(void)
{
printf(_("Usage: nano [OPTIONS] [[+LINE[,COLUMN]] FILE]...\n\n"));
printf(_("Usage: nano [OPTIONS] [[+LINE,COLUMN] FILE]...\n\n"));
printf(
#ifdef HAVE_GETOPT_LONG
_("Option\t\tGNU long option\t\tMeaning\n")
@@ -733,7 +734,7 @@ void usage(void)
#endif
);
print_opt("-h, -?", "--help", N_("Show this message"));
print_opt(_("+LINE[,COLUMN]"), "",
print_opt(_("+LINE,COLUMN"), "",
N_("Start at line LINE, column COLUMN"));
#ifndef NANO_TINY
print_opt("-A", "--smarthome", N_("Enable smart home key"));
@@ -766,7 +767,7 @@ void usage(void)
print_opt("-N", "--noconvert",
N_("Don't convert files from DOS/Mac format"));
#endif
print_opt("-O", "--morespace", N_("Use more space for editing"));
print_opt("-O", "--morespace", N_("Use one more line for editing"));
#ifndef DISABLE_JUSTIFY
print_opt(_("-Q <str>"), _("--quotestr=<str>"),
N_("Quoting string"));
@@ -776,7 +777,7 @@ void usage(void)
print_opt("-S", "--smooth", N_("Smooth scrolling"));
#endif
print_opt(_("-T <#cols>"), _("--tabsize=<#cols>"),
N_("Set width of a tab in cols to #cols"));
N_("Set width of a tab to #cols columns"));
#ifndef NANO_TINY
print_opt("-U", "--quickblank", N_("Do quick statusbar blanking"));
#endif
@@ -788,7 +789,7 @@ void usage(void)
#endif
#ifdef ENABLE_COLOR
print_opt(_("-Y <str>"), _("--syntax=<str>"),
N_("Syntax definition to use"));
N_("Syntax definition to use for coloring"));
#endif
print_opt("-c", "--const", N_("Constantly show cursor position"));
print_opt("-d", "--rebinddelete",
@@ -811,7 +812,7 @@ void usage(void)
N_("Preserve XON (^Q) and XOFF (^S) keys"));
#ifndef DISABLE_WRAPJUSTIFY
print_opt(_("-r <#cols>"), _("--fill=<#cols>"),
N_("Set fill cols to (wrap lines at) #cols"));
N_("Set wrapping point at column #cols"));
#endif
#ifndef DISABLE_SPELLER
print_opt(_("-s <prog>"), _("--speller=<prog>"),
@@ -819,7 +820,7 @@ void usage(void)
#endif
print_opt("-t", "--tempfile",
N_("Auto save on exit, don't prompt"));
print_opt("-v", "--view", N_("View (read only) mode"));
print_opt("-v", "--view", N_("View mode (read-only)"));
#ifndef DISABLE_WRAPPING
print_opt("-w", "--nowrap", N_("Don't wrap long lines"));
#endif
@@ -871,7 +872,7 @@ void version(void)
#ifdef DISABLE_WRAPPING
printf(" --disable-wrapping");
#endif
#if defined(DISABLE_ROOTWRAP) && !defined(DISABLE_WRAPPING)
#ifdef DISABLE_ROOTWRAPPING
printf(" --disable-wrapping-as-root");
#endif
#ifdef ENABLE_COLOR
@@ -1011,7 +1012,8 @@ RETSIGTYPE do_suspend(int signal)
disable_mouse_support();
#endif
/* Blank the screen, and move the cursor to the last line of it. */
/* Blank the screen, and move the cursor to the last line of the
* screen. */
erase();
move(LINES - 1, 0);
refresh();
@@ -1056,6 +1058,7 @@ RETSIGTYPE do_continue(int signal)
/* Redraw the contents of the windows that need it. */
blank_statusbar();
wnoutrefresh(bottomwin);
total_refresh();
#endif
}
@@ -1085,6 +1088,10 @@ RETSIGTYPE handle_sigwinch(int signal)
COLS = win.ws_col;
LINES = win.ws_row;
/* Just in case we're in the statusbar prompt, reset the statusbar
* cursor position. */
do_prompt_abort();
/* If we've partitioned the filestruct, unpartition it now. */
if (filepart != NULL)
unpartition_filestruct(&filepart);
@@ -1116,6 +1123,7 @@ RETSIGTYPE handle_sigwinch(int signal)
/* Redraw the contents of the windows that need it. */
blank_statusbar();
wnoutrefresh(bottomwin);
currshortcut = main_list;
total_refresh();
@@ -1322,7 +1330,7 @@ int do_input(bool *meta_key, bool *func_key, bool *s_or_t, bool
if (allow_funcs) {
/* If we got a mouse click and it was on a shortcut, read in the
* shortcut character. */
if (*func_key == TRUE && input == KEY_MOUSE) {
if (*func_key && input == KEY_MOUSE) {
if (do_mouse())
input = get_kbinput(edit, meta_key, func_key);
else {
@@ -1360,9 +1368,8 @@ int do_input(bool *meta_key, bool *func_key, bool *s_or_t, bool
/* If we got a non-high-bit control key, a meta key sequence, or a
* function key, and it's not a shortcut or toggle, throw it out. */
if (*s_or_t == FALSE) {
if (is_ascii_cntrl_char(input) || *meta_key == TRUE ||
*func_key == TRUE) {
if (!*s_or_t) {
if (is_ascii_cntrl_char(input) || *meta_key || *func_key) {
statusbar(_("Unknown Command"));
beep();
*meta_key = FALSE;
@@ -1376,7 +1383,7 @@ int do_input(bool *meta_key, bool *func_key, bool *s_or_t, bool
* it's a normal text character. Display the warning if we're
* in view mode, or add the character to the input buffer if
* we're not. */
if (input != ERR && *s_or_t == FALSE) {
if (input != ERR && !*s_or_t) {
if (ISSET(VIEW_MODE))
print_view_warning();
else {
@@ -1392,13 +1399,13 @@ int do_input(bool *meta_key, bool *func_key, bool *s_or_t, bool
* output all the characters in the input buffer if it isn't
* empty. Note that it should be empty if we're in view
* mode. */
if (*s_or_t == TRUE || get_key_buffer_len() == 0) {
if (*s_or_t || get_key_buffer_len() == 0) {
#ifndef DISABLE_WRAPPING
/* If we got a shortcut or toggle, and it's not the shortcut
* for verbatim input, turn off prepending of wrapped
* text. */
if (*s_or_t == TRUE && (!have_shortcut || s == NULL ||
s->func != do_verbatim_input))
if (*s_or_t && (!have_shortcut || s == NULL || s->func !=
do_verbatim_input))
wrap_reset();
#endif
@@ -1726,7 +1733,7 @@ int main(int argc, char **argv)
if (locale != NULL && (strcasestr(locale, "UTF8") != NULL ||
strcasestr(locale, "UTF-8") != NULL)) {
#ifdef USE_SLANG
SLutf8_enable(TRUE);
SLutf8_enable(1);
#endif
utf8_init();
}
@@ -1740,9 +1747,9 @@ int main(int argc, char **argv)
textdomain(PACKAGE);
#endif
#if !defined(ENABLE_NANORC) && defined(DISABLE_ROOTWRAP) && !defined(DISABLE_WRAPPING)
/* If we don't have rcfile support, we're root, and
* --disable-wrapping-as-root is used, turn wrapping off. */
#if !defined(ENABLE_NANORC) && defined(DISABLE_ROOTWRAPPING)
/* If we don't have rcfile support, --disable-wrapping-as-root is
* used, and we're root, turn wrapping off. */
if (geteuid() == NANO_ROOT_UID)
SET(NO_WRAP);
#endif
@@ -2005,7 +2012,9 @@ int main(int argc, char **argv)
tabsize = tabsize_cpy;
flags |= flags_cpy;
}
#if defined(DISABLE_ROOTWRAP) && !defined(DISABLE_WRAPPING)
#ifdef DISABLE_ROOTWRAPPING
/* If we don't have any rcfiles, --disable-wrapping-as-root is used,
* and we're root, turn wrapping off. */
else if (geteuid() == NANO_ROOT_UID)
SET(NO_WRAP);
#endif

View File

@@ -29,7 +29,7 @@
#endif
#ifdef __TANDEM
/* Tandem NonStop Kernel. */
/* Tandem NonStop Kernel support. */
#include <floss.h>
#define NANO_ROOT_UID 65535
#else
@@ -138,14 +138,8 @@
#define getline ngetline
#endif
/* 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. */
/* If we aren't using ncurses with mouse support, turn the mouse support
* off, as it's useless then. */
#ifndef NCURSES_MOUSE_VERSION
#define DISABLE_MOUSE 1
#endif
@@ -164,7 +158,7 @@ typedef enum {
} append_type;
typedef enum {
UP, DOWN
UP_DIR, DOWN_DIR
} scroll_dir;
typedef enum {
@@ -297,11 +291,12 @@ typedef struct shortcut {
#ifndef DISABLE_HELP
const char *help;
/* The help file entry text for this function. */
#endif
bool blank_after;
/* Whether there should be a blank line after the help entry
* text for this function. */
/* Key values that aren't used should be set to NANO_NO_KEY. */
#endif
/* Note: Key values that aren't used should be set to
* NANO_NO_KEY. */
int ctrlval;
/* The special sentinel key or control key we want bound, if
* any. */
@@ -326,9 +321,11 @@ typedef struct toggle {
const char *desc;
/* The description of the toggle, e.g. "Cut to end"; we'll
* append Enabled or Disabled to it. */
#ifndef DISABLE_HELP
bool blank_after;
/* Whether there should be a blank line after the description of
* the toggle. */
#endif
long flag;
/* Which flag actually gets toggled. */
struct toggle *next;
@@ -547,8 +544,8 @@ typedef struct rcoption {
#define NANO_DELETE_KEY NANO_CONTROL_D
#define NANO_BACKSPACE_KEY NANO_CONTROL_H
#define NANO_TAB_KEY NANO_CONTROL_I
#define NANO_INDENTMARKED_KEY NANO_ALT_RCURLYBRACKET
#define NANO_UNINDENTMARKED_KEY NANO_ALT_LCURLYBRACKET
#define NANO_INDENT_KEY NANO_ALT_RCURLYBRACKET
#define NANO_UNINDENT_KEY NANO_ALT_LCURLYBRACKET
#define NANO_SUSPEND_KEY NANO_CONTROL_Z
#define NANO_ENTER_KEY NANO_CONTROL_M
#define NANO_TOFILES_KEY NANO_CONTROL_T
@@ -566,7 +563,6 @@ typedef struct rcoption {
#define NANO_SCROLLDOWN_KEY NANO_ALT_PLUS
#define NANO_SCROLLUP_ALTKEY NANO_ALT_UNDERSCORE
#define NANO_SCROLLDOWN_ALTKEY NANO_ALT_EQUALS
#define NANO_CUTTILLEND_KEY NANO_CONTROL_X
#define NANO_CUTTILLEND_ALTKEY NANO_ALT_T
#define NANO_PARABEGIN_KEY NANO_CONTROL_W
#define NANO_PARABEGIN_ALTKEY NANO_ALT_LPARENTHESIS

View File

@@ -33,6 +33,10 @@ static size_t statusbar_x = (size_t)-1;
/* The cursor position in answer. */
static size_t statusbar_pww = (size_t)-1;
/* The place we want in answer. */
static size_t old_statusbar_x = (size_t)-1;
/* The old cursor position in answer, if any. */
static size_t old_pww = (size_t)-1;
/* The old place we want in answer, if any. */
static bool reset_statusbar_x = FALSE;
/* Should we reset the cursor position at the statusbar
* prompt? */
@@ -71,7 +75,7 @@ int do_statusbar_input(bool *meta_key, bool *func_key, bool *s_or_t,
if (allow_funcs) {
/* If we got a mouse click and it was on a shortcut, read in the
* shortcut character. */
if (*func_key == TRUE && input == KEY_MOUSE) {
if (*func_key && input == KEY_MOUSE) {
if (do_statusbar_mouse())
input = get_kbinput(bottomwin, meta_key, func_key);
else {
@@ -97,7 +101,7 @@ int do_statusbar_input(bool *meta_key, bool *func_key, bool *s_or_t,
#ifndef NANO_TINY
input == NANO_NEXTWORD_KEY ||
#endif
(*meta_key == TRUE && (
(*meta_key && (
#ifndef NANO_TINY
input == NANO_PREVWORD_KEY || input == NANO_BRACKET_KEY ||
#endif
@@ -108,9 +112,8 @@ int do_statusbar_input(bool *meta_key, bool *func_key, bool *s_or_t,
/* If we got a non-high-bit control key, a meta key sequence, or a
* function key, and it's not a shortcut or toggle, throw it out. */
if (*s_or_t == FALSE) {
if (is_ascii_cntrl_char(input) || *meta_key == TRUE ||
*func_key == TRUE) {
if (!*s_or_t) {
if (is_ascii_cntrl_char(input) || *meta_key || *func_key) {
beep();
*meta_key = FALSE;
*func_key = FALSE;
@@ -123,7 +126,7 @@ int do_statusbar_input(bool *meta_key, bool *func_key, bool *s_or_t,
* it's a normal text character. Display the warning if we're
* in view mode, or add the character to the input buffer if
* we're not. */
if (input != ERR && *s_or_t == FALSE) {
if (input != ERR && !*s_or_t) {
/* If we're using restricted mode, the filename isn't blank,
* and we're at the "Write File" prompt, disable text
* input. */
@@ -139,7 +142,7 @@ int do_statusbar_input(bool *meta_key, bool *func_key, bool *s_or_t,
/* If we got a shortcut, or if there aren't any other characters
* waiting after the one we read in, we need to display all the
* characters in the input buffer if it isn't empty. */
if (*s_or_t == TRUE || get_key_buffer_len() == 0) {
if (*s_or_t || get_key_buffer_len() == 0) {
if (kbinput != NULL) {
/* Display all the characters in the input buffer at
* once, filtering out control characters. */
@@ -192,7 +195,7 @@ int do_statusbar_input(bool *meta_key, bool *func_key, bool *s_or_t,
do_statusbar_next_word(FALSE);
break;
case NANO_PREVWORD_KEY:
if (*meta_key == TRUE)
if (*meta_key)
do_statusbar_prev_word(FALSE);
break;
#endif
@@ -204,12 +207,12 @@ int do_statusbar_input(bool *meta_key, bool *func_key, bool *s_or_t,
break;
#ifndef NANO_TINY
case NANO_BRACKET_KEY:
if (*meta_key == TRUE)
if (*meta_key)
do_statusbar_find_bracket();
break;
#endif
case NANO_VERBATIM_KEY:
if (*meta_key == TRUE) {
if (*meta_key) {
/* If we're using restricted mode, the filename
* isn't blank, and we're at the "Write File"
* prompt, disable verbatim input. */
@@ -840,7 +843,7 @@ void do_statusbar_find_bracket(void)
}
#endif /* !NANO_TINY */
/* Return the placewewant associated with statusbar_x, i.e, the
/* Return the placewewant associated with statusbar_x, i.e. the
* zero-based column position of the cursor. The value will be no
* smaller than statusbar_x. */
size_t statusbar_xplustabs(void)
@@ -902,16 +905,18 @@ void update_statusbar_line(const char *curranswer, size_t index)
reset_statusbar_cursor();
wattroff(bottomwin, reverse_attr);
wnoutrefresh(bottomwin);
}
/* Return TRUE if we need an update after moving horizontally, and FALSE
* otherwise. We need one if old_pww and statusbar_pww are on different
* pages. */
bool need_statusbar_horizontal_update(size_t old_pww)
* otherwise. We need one if pww_save and statusbar_pww are on
* different pages. */
bool need_statusbar_horizontal_update(size_t pww_save)
{
size_t start_col = strlenpt(prompt) + 1;
return get_statusbar_page_start(start_col, start_col + old_pww) !=
return get_statusbar_page_start(start_col, start_col + pww_save) !=
get_statusbar_page_start(start_col, start_col + statusbar_pww);
}
@@ -964,13 +969,20 @@ int get_prompt_string(bool allow_tabs,
answer = mallocstrcpy(answer, curranswer);
curranswer_len = strlen(answer);
/* Only put statusbar_x at the end of the string (and change
* statusbar_pww to match) if it's uninitialized, if it would be
* past the end of curranswer, or if reset_statusbar_x is TRUE.
* Otherwise, leave it alone. This is so the cursor position stays
* at the same place if a prompt-changing toggle is pressed. */
if (statusbar_x == (size_t)-1 || statusbar_x > curranswer_len ||
reset_statusbar_x) {
/* If reset_statusbar_x is TRUE, restore statusbar_x and
* statusbar_pww to what they were before this prompt. Then, if
* statusbar_x is uninitialized or past the end of curranswer, put
* statusbar_x at the end of the string and update statusbar_pww
* based on it. We do these things so that the cursor position
* stays at the right place if a prompt-changing toggle is pressed,
* or if this prompt was started from another prompt and we cancel
* out of it. */
if (reset_statusbar_x) {
statusbar_x = old_statusbar_x;
statusbar_pww = old_pww;
}
if (statusbar_x == (size_t)-1 || statusbar_x > curranswer_len) {
statusbar_x = curranswer_len;
statusbar_pww = statusbar_xplustabs();
}
@@ -1121,13 +1133,22 @@ int get_prompt_string(bool allow_tabs,
}
#endif
/* We finished putting in an answer or ran a normal shortcut's
* associated function, so reset statusbar_x and statusbar_pww. */
/* We've finished putting in an answer or run a normal shortcut's
* associated function, so reset statusbar_x and statusbar_pww. If
* we've finished putting in an answer, reset the statusbar cursor
* position too. */
if (kbinput == NANO_CANCEL_KEY || kbinput == NANO_ENTER_KEY ||
ran_func) {
statusbar_x = (size_t)-1;
statusbar_pww = (size_t)-1;
}
statusbar_x = old_statusbar_x;
statusbar_pww = old_pww;
if (!ran_func)
reset_statusbar_x = TRUE;
/* Otherwise, we're still putting in an answer or a shortcut with
* an associated function, so leave the statusbar cursor position
* alone. */
} else
reset_statusbar_x = FALSE;
return kbinput;
}
@@ -1191,16 +1212,19 @@ int do_prompt(bool allow_tabs,
free(prompt);
prompt = NULL;
reset_statusbar_x = FALSE;
/* We're done with the prompt, so save the statusbar cursor
* position. */
old_statusbar_x = statusbar_x;
old_pww = statusbar_pww;
/* If we left the prompt via Cancel or Enter, set the return value
* properly. */
switch (retval) {
case NANO_CANCEL_KEY:
retval = -1;
reset_statusbar_x = TRUE;
break;
case NANO_ENTER_KEY:
retval = (answer[0] == '\0') ? -2 : 0;
reset_statusbar_x = TRUE;
break;
}
@@ -1223,8 +1247,8 @@ int do_prompt(bool allow_tabs,
}
/* This function forces a reset of the statusbar cursor position. It
* should only be called after do_prompt(), and is only needed if the
* user leaves the prompt via something other than Enter or Cancel. */
* should only be called after do_prompt(), and is only needed if we
* leave the prompt via something other than Cancel or Enter. */
void do_prompt_abort(void)
{
reset_statusbar_x = TRUE;
@@ -1310,10 +1334,10 @@ int do_yesno_prompt(bool all, const char *msg)
case KEY_MOUSE:
get_mouseinput(&mouse_x, &mouse_y, FALSE);
if (mouse_x != -1 && mouse_y != -1 && !ISSET(NO_HELP) &&
wenclose(bottomwin, mouse_y, mouse_x) &&
mouse_x < (width * 2) && mouse_y - (2 -
no_more_space()) - editwinrows - 1 >= 0) {
if (wenclose(bottomwin, mouse_y, mouse_x) &&
!ISSET(NO_HELP) && mouse_x < (width * 2) &&
mouse_y - (2 - no_more_space()) -
editwinrows - 1 >= 0) {
int x = mouse_x / width;
/* Calculate the x-coordinate relative to the
* two columns of the Yes/No/All shortcuts in
@@ -1322,7 +1346,7 @@ int do_yesno_prompt(bool all, const char *msg)
editwinrows - 1;
/* Calculate the y-coordinate relative to the
* beginning of the Yes/No/All shortcuts in
* bottomwin, i.e, with the sizes of topwin,
* bottomwin, i.e. with the sizes of topwin,
* edit, and the first line of bottomwin
* subtracted out. */

View File

@@ -26,7 +26,7 @@
#include "nano.h"
/* Public externs. See global.c for descriptions of them. */
/* Public external variables. See global.c for their descriptions. */
#ifndef NANO_TINY
extern sigjmp_buf jump_buf;
extern bool jump_buf_main;
@@ -148,6 +148,7 @@ char *do_browse_from(const char *inpath);
void browser_init(const char *path, DIR *dir);
void parse_browser_input(int *kbinput, bool *meta_key, bool *func_key);
void browser_refresh(void);
bool browser_select_filename(const char *needle);
int filesearch_init(void);
bool findnextfile(bool no_sameline, size_t begin, const char *needle);
void findnextfile_wrap_reset(void);
@@ -156,7 +157,7 @@ void do_filesearch(void);
void do_fileresearch(void);
void do_first_file(void);
void do_last_file(void);
void striponedir(char *path);
char *striponedir(const char *path);
#endif
/* Public functions in chars.c. */
@@ -341,16 +342,19 @@ void save_history(void);
/* Public functions in global.c. */
size_t length_of_list(const shortcut *s);
#ifndef NANO_TINY
void toggle_init_one(int val, const char *desc, bool blank_after, long
flag);
void toggle_init_one(int val
#ifndef DISABLE_HELP
, const char *desc, bool blank_after
#endif
, long flag);
void toggle_init(void);
#endif
void sc_init_one(shortcut **shortcutage, int ctrlval, const char *desc,
void sc_init_one(shortcut **shortcutage, int ctrlval, const char *desc
#ifndef DISABLE_HELP
const char *help,
, const char *help, bool blank_after
#endif
bool blank_after, int metaval, int funcval, int miscval, bool
view, void (*func)(void));
, int metaval, int funcval, int miscval, bool view, void
(*func)(void));
void shortcut_init(bool unjustify);
void free_shortcutage(shortcut **shortcutage);
#ifdef DEBUG
@@ -388,11 +392,25 @@ void do_prev_word_void(void);
#endif
void do_home(void);
void do_end(void);
void do_up(void);
void do_up(
#ifndef NANO_TINY
bool scroll_only
#else
void
#endif
);
void do_up_void(void);
#ifndef NANO_TINY
void do_scroll_up(void);
#endif
void do_down(void);
void do_down(
#ifndef NANO_TINY
bool scroll_only
#else
void
#endif
);
void do_down_void(void);
#ifndef NANO_TINY
void do_scroll_down(void);
#endif
@@ -500,7 +518,7 @@ size_t statusbar_xplustabs(void);
size_t get_statusbar_page_start(size_t start_col, size_t column);
void reset_statusbar_cursor(void);
void update_statusbar_line(const char *curranswer, size_t index);
bool need_statusbar_horizontal_update(size_t old_pww);
bool need_statusbar_horizontal_update(size_t pww_save);
void total_statusbar_refresh(void (*refresh_func)(void));
int get_prompt_string(bool allow_tabs,
#ifndef DISABLE_TABCOMP
@@ -612,9 +630,9 @@ void do_delete(void);
void do_backspace(void);
void do_tab(void);
#ifndef NANO_TINY
void do_indent_marked(ssize_t cols);
void do_indent_marked_void(void);
void do_unindent_marked_void(void);
void do_indent(ssize_t cols);
void do_indent_void(void);
void do_unindent(void);
#endif
void do_enter(void);
#ifndef NANO_TINY
@@ -717,10 +735,9 @@ void unget_kbinput(int kbinput, bool meta_key, bool func_key);
int *get_input(WINDOW *win, size_t input_len);
int get_kbinput(WINDOW *win, bool *meta_key, bool *func_key);
int parse_kbinput(WINDOW *win, bool *meta_key, bool *func_key);
int get_escape_seq_kbinput(const int *seq, size_t seq_len, bool
*ignore_seq);
int get_escape_seq_kbinput(const int *seq, size_t seq_len);
int get_escape_seq_abcd(int kbinput);
int parse_escape_seq_kbinput(int kbinput, bool *ignore_seq);
int parse_escape_seq_kbinput(WINDOW *win, int kbinput);
int get_byte_kbinput(int kbinput);
#ifdef ENABLE_UTF8
long add_unicode_digit(int kbinput, long factor, long *uni);
@@ -756,10 +773,10 @@ void reset_cursor(void);
void edit_draw(const filestruct *fileptr, const char *converted, int
line, size_t start);
void update_line(const filestruct *fileptr, size_t index);
bool need_horizontal_update(size_t old_pww);
bool need_vertical_update(size_t old_pww);
bool need_horizontal_update(size_t pww_save);
bool need_vertical_update(size_t pww_save);
void edit_scroll(scroll_dir direction, ssize_t nlines);
void edit_redraw(const filestruct *old_current, size_t old_pww);
void edit_redraw(const filestruct *old_current, size_t pww_save);
void edit_refresh(void);
void edit_update(update_type location);
void total_redraw(void);

View File

@@ -32,7 +32,7 @@
#ifdef ENABLE_NANORC
const static rcoption rcopts[] = {
static const rcoption rcopts[] = {
{"boldtext", BOLD_TEXT},
#ifndef DISABLE_JUSTIFY
{"brackets", 0},
@@ -108,8 +108,9 @@ static colortype *endcolor = NULL;
/* The end of the color list for the current syntax. */
#endif
/* We have an error in some part of the rcfile. Put it on stderr and
* make the user hit Enter to continue starting nano. */
/* We have an error in some part of the rcfile. Print the error message
* on stderr, and then make the user hit Enter to continue starting
* nano. */
void rcfile_error(const char *msg, ...)
{
va_list ap;
@@ -127,8 +128,9 @@ void rcfile_error(const char *msg, ...)
fprintf(stderr, "\n");
}
/* Parse the next word from the string. Return points to '\0' if we hit
* the end of the line. */
/* Parse the next word from the string, null-terminate it, and return
* a pointer to the first character after the null terminator. The
* returned pointer will point to '\0' if we hit the end of the line. */
char *parse_next_word(char *ptr)
{
while (!isblank(*ptr) && *ptr != '\0')
@@ -834,9 +836,11 @@ void parse_rcfile(FILE *rcstream
rcfile_error(N_("Unknown flag \"%s\""), option);
}
#ifdef ENABLE_COLOR
if (endsyntax != NULL && endcolor == NULL)
rcfile_error(N_("Syntax \"%s\" has no color commands"),
endsyntax->desc);
#endif
free(buf);
fclose(rcstream);
@@ -880,10 +884,10 @@ void do_rcfile(void)
#endif
);
#if defined(DISABLE_ROOTWRAP) && !defined(DISABLE_WRAPPING)
#ifdef DISABLE_ROOTWRAPPING
/* We've already read SYSCONFDIR/nanorc, if it's there. If we're
* root and --disable-wrapping-as-root is used, turn wrapping
* off now. */
* root, and --disable-wrapping-as-root is used, turn wrapping off
* now. */
if (geteuid() == NANO_ROOT_UID)
SET(NO_WRAP);
#endif

View File

@@ -421,7 +421,7 @@ void do_search(void)
{
filestruct *fileptr = openfile->current;
size_t fileptr_x = openfile->current_x;
size_t old_pww = openfile->placewewant;
size_t pww_save = openfile->placewewant;
int i;
bool didfind;
@@ -493,7 +493,7 @@ void do_search(void)
}
openfile->placewewant = xplustabs();
edit_redraw(fileptr, old_pww);
edit_redraw(fileptr, pww_save);
search_replace_abort();
}
@@ -503,7 +503,7 @@ void do_research(void)
{
filestruct *fileptr = openfile->current;
size_t fileptr_x = openfile->current_x;
size_t old_pww = openfile->placewewant;
size_t pww_save = openfile->placewewant;
bool didfind;
search_init_globals();
@@ -555,7 +555,7 @@ void do_research(void)
statusbar(_("No current search pattern"));
openfile->placewewant = xplustabs();
edit_redraw(fileptr, old_pww);
edit_redraw(fileptr, pww_save);
search_replace_abort();
}
#endif
@@ -576,7 +576,7 @@ int replace_regexp(char *string, bool create)
/* Iterate through the replacement text to handle subexpression
* replacement using \1, \2, \3, etc. */
while (*c != '\0') {
int num = (int)(*(c + 1) - '0');
int num = (*(c + 1) - '0');
if (*c != '\\' || num < 1 || num > 9 || num >
search_regexp.re_nsub) {

View File

@@ -55,7 +55,7 @@ void do_mark(void)
openfile->mark_begin = openfile->current;
openfile->mark_begin_x = openfile->current_x;
} else {
statusbar(_("Mark UNset"));
statusbar(_("Mark Unset"));
openfile->mark_begin = NULL;
openfile->mark_begin_x = 0;
edit_refresh();
@@ -191,12 +191,12 @@ void do_tab(void)
}
#ifndef NANO_TINY
/* Indent or unindent all lines covered by the mark len columns,
* depending on whether len is positive or negative. If the
* TABS_TO_SPACES flag is set, indent/unindent by len spaces.
* Otherwise, indent/unindent by (len / tabsize) tabs and (len %
* tabsize) spaces. */
void do_indent_marked(ssize_t cols)
/* Indent or unindent the current line (or all lines covered by the mark
* if the mark is on) len columns, depending on whether len is positive
* or negative. If the TABS_TO_SPACES flag is set, indent/unindent by
* len spaces. Otherwise, indent/unindent by (len / tabsize) tabs and
* (len % tabsize) spaces. */
void do_indent(ssize_t cols)
{
bool indent_changed = FALSE;
/* Whether any indenting or unindenting was done. */
@@ -212,13 +212,6 @@ void do_indent_marked(ssize_t cols)
assert(openfile->current != NULL && openfile->current->data != NULL);
/* If the mark isn't on, indicate it on the statusbar and get
* out. */
if (!openfile->mark_set) {
statusbar(_("No lines selected, nothing to do!"));
return;
}
/* If cols is zero, get out. */
if (cols == 0)
return;
@@ -233,9 +226,15 @@ void do_indent_marked(ssize_t cols)
} else
indent_changed = TRUE;
/* Get the coordinates of the marked text. */
mark_order((const filestruct **)&top, &top_x,
(const filestruct **)&bot, &bot_x, NULL);
/* If the mark is on, use all lines covered by the mark. */
if (openfile->mark_set)
mark_order((const filestruct **)&top, &top_x,
(const filestruct **)&bot, &bot_x, NULL);
/* Otherwise, use the current line. */
else {
top = openfile->current;
bot = top;
}
if (!unindent) {
/* Set up the text we'll be using as indentation. */
@@ -260,7 +259,7 @@ void do_indent_marked(ssize_t cols)
line_indent[line_indent_len] = '\0';
}
/* Go through each line of the marked text. */
/* Go through each line of the text. */
for (f = top; f != bot->next; f = f->next) {
size_t line_len = strlen(f->data);
size_t indent_len = indent_length(f->data);
@@ -276,8 +275,8 @@ void do_indent_marked(ssize_t cols)
openfile->totsize += line_indent_len;
/* Keep track of the change in the current line. */
if (f == openfile->mark_begin && openfile->mark_begin_x >=
indent_len)
if (openfile->mark_set && f == openfile->mark_begin &&
openfile->mark_begin_x >= indent_len)
openfile->mark_begin_x += line_indent_len;
if (f == openfile->current && openfile->current_x >=
@@ -311,7 +310,7 @@ void do_indent_marked(ssize_t cols)
openfile->totsize -= indent_shift;
/* Keep track of the change in the current line. */
if (f == openfile->mark_begin &&
if (openfile->mark_set && f == openfile->mark_begin &&
openfile->mark_begin_x > indent_new) {
if (openfile->mark_begin_x <= indent_len)
openfile->mark_begin_x = indent_new;
@@ -347,16 +346,18 @@ void do_indent_marked(ssize_t cols)
}
}
/* Indent all lines covered by the mark tabsize columns. */
void do_indent_marked_void(void)
/* Indent the current line, or all lines covered by the mark if the mark
* is on, tabsize columns. */
void do_indent_void(void)
{
do_indent_marked(tabsize);
do_indent(tabsize);
}
/* Unindent all lines covered by the mark tabsize columns. */
void do_unindent_marked_void(void)
/* Unindent the current line, or all lines covered by the mark if the
* mark is on, tabsize columns. */
void do_unindent(void)
{
do_indent_marked(-tabsize);
do_indent(-tabsize);
}
#endif /* !NANO_TINY */
@@ -496,11 +497,6 @@ bool execute_command(const char *command)
read_file(f, "stdin");
/* If multibuffer mode is on, we could be here in view mode. If so,
* don't set the modification flag. */
if (!ISSET(VIEW_MODE))
set_modified();
if (wait(NULL) == -1)
nperror("wait");
@@ -1946,7 +1942,7 @@ const char *do_int_speller(const char *tempfile_name)
/* A new process to run spell in. */
if ((pid_spell = fork()) == 0) {
/* Child continues (i.e, future spell process). */
/* Child continues (i.e. future spell process). */
close(spell_fd[0]);
/* Replace the standard input with the temp file. */
@@ -1976,7 +1972,7 @@ const char *do_int_speller(const char *tempfile_name)
/* A new process to run sort in. */
if ((pid_sort = fork()) == 0) {
/* Child continues (i.e, future spell process). Replace the
/* Child continues (i.e. future spell process). Replace the
* standard input with the standard output of the old pipe. */
if (dup2(spell_fd[0], STDIN_FILENO) != STDIN_FILENO)
goto close_pipes_and_exit;
@@ -2002,7 +1998,7 @@ const char *do_int_speller(const char *tempfile_name)
/* A new process to run uniq in. */
if ((pid_uniq = fork()) == 0) {
/* Child continues (i.e, future uniq process). Replace the
/* Child continues (i.e. future uniq process). Replace the
* standard input with the standard output of the old pipe. */
if (dup2(sort_fd[0], STDIN_FILENO) != STDIN_FILENO)
goto close_pipes_and_exit;

View File

@@ -35,8 +35,12 @@ int digits(size_t n)
{
int i;
for (i = 1; n >= 10; n /= 10, i++)
;
if (n == 0)
i = 1;
else {
for (i = 0; n != 0; n /= 10, i++)
;
}
return i;
}
@@ -425,7 +429,7 @@ size_t get_page_start(size_t column)
return column - (COLS - 2);
}
/* Return the placewewant associated with current_x, i.e, the zero-based
/* 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)
@@ -434,7 +438,7 @@ size_t xplustabs(void)
}
/* 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)) <=
* i.e. the largest value such that strnlenpt(s, actual_x(s, column)) <=
* column. */
size_t actual_x(const char *s, size_t column)
{

File diff suppressed because it is too large Load Diff