Carl Drinkwater's backup patch, plus miscellaneous fixes by David
Benbennick and me git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1225 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Этот коммит содержится в:
родитель
fbc7920654
Коммит
5db0cdc4c9
97
ChangeLog
97
ChangeLog
@ -16,6 +16,36 @@ CVS Code -
|
||||
and spacing improvements. (David Benbennick)
|
||||
- Make more functions use const variables when possible. (David
|
||||
Benbennick)
|
||||
- Add Carl Drinkwater's backup file option (-B or --backup on the
|
||||
command line, M-B in nano's global shortcuts). If the original
|
||||
file is unchanged from when it was loaded, it is backed up to
|
||||
filename~; if the original file has been changed or deleted
|
||||
since it was originally loaded, it isn't backed up. The backup
|
||||
file retains the permissions, owner/group, and
|
||||
access/modification times of the original file. This option is
|
||||
disabled when --enable-tiny is used. It will not back up
|
||||
temporary files. Minor fixes to it by David Benbennick and
|
||||
DLR. Changes to open_file(), add_open_file(),
|
||||
load_open_file(), write_file(), and do_writeout().
|
||||
- Add \n's to the ends of "filename is %s" debugging strings.
|
||||
(Carl Drinkwater)
|
||||
- Add the long option --quotestr as an alternative for -Q, and
|
||||
--regexp as an alternative for -R; they were listed in nano's
|
||||
usage information, but weren't actually in nano. Also, display
|
||||
"-?" as an alternative for "-h" in nano's usage information,
|
||||
put the command line options in a more consistent (i. e. mostly
|
||||
alphabetical) order in nano, put the long options in a more
|
||||
consistent order in rcfile.c and nanorc.sample, don't include
|
||||
rcfile options if their equivalent command line options are
|
||||
disabled, and remove obsolete relative option from
|
||||
nanorc.sample. (DLR)
|
||||
- Change "File Name to Append/Prepend" to "File Name to
|
||||
Append/Prepend to". The original prompt could confusingly
|
||||
imply that we are appending/prepending another file to the
|
||||
current file, when we are actually appending/prepending the
|
||||
current file to another file. (DLR)
|
||||
- Put nano.1, nano.1.html, and nano.texi up to date. (DLR)
|
||||
- Typo fixes for the ChangeLog. (David Benbennick)
|
||||
- files.c:
|
||||
read_file(), read_line():
|
||||
- Rework to properly handle nulls in the input file, fix
|
||||
@ -31,10 +61,25 @@ CVS Code -
|
||||
writing a marked selection to a file, save and restore totsize
|
||||
so it isn't decreased by the size of the selection afterward.
|
||||
(DLR)
|
||||
do_writeout():
|
||||
- Fix problem with formatstr's being defined as NULL when
|
||||
--enable-tiny is used. Since formatstr isn't ever used in tiny
|
||||
mode, don't bother even creating the variable. (David
|
||||
Benbennick and DLR)
|
||||
append_slash_if_dir(), input_tab():
|
||||
- Changed a variable name: lastWasTab -> lastwastab. (DLR)
|
||||
- global.c:
|
||||
shortcut_init()
|
||||
free_toggles():
|
||||
- Only include if we're not using tiny mode. (David Benbennick)
|
||||
toggle_init():
|
||||
- Remove global entries for search toggles, as they aren't really
|
||||
global. (DLR)
|
||||
- Don't reinititialize the toggles if they've already been
|
||||
initialized; it's unnecessary and even causes a segfault in
|
||||
do_toggle() if Pico emulation mode is the toggle in question.
|
||||
Don't free the toggles here, either; it's unnecessary after the
|
||||
above change. (David Benbennick)
|
||||
shortcut_init():
|
||||
- Rework IFHELP macro (David Benbennick).
|
||||
- move.c:
|
||||
page_down(), page_up():
|
||||
@ -52,6 +97,11 @@ CVS Code -
|
||||
do_int_spell(), do_alt_spell():
|
||||
- Rework to save the marked selection before doing spell checking
|
||||
and restore it afterward. (DLR)
|
||||
do_toggle():
|
||||
- Since the search mode toggles aren't global anymore, we don't
|
||||
need to explicitly block them here anymore (which will end up
|
||||
blocking the global backup mode toggle, which is the same as
|
||||
the backwards search toggle). (DLR)
|
||||
main():
|
||||
- Rework to blank out filename manually before doing anything
|
||||
with it, instead of calling clear_filename() in two places.
|
||||
@ -59,7 +109,15 @@ CVS Code -
|
||||
hold a line number. (DLR)
|
||||
- Properly handle multiple -r settings on the command line. (Carl
|
||||
Drinkwater)
|
||||
- rcfile.c:
|
||||
colortoint():
|
||||
- Only include if ENABLE_COLOR is defined. (DLR)
|
||||
- search.c:
|
||||
search_init():
|
||||
- Since the search mode toggles aren't global anymore, rework the
|
||||
part of this function referencing them so that they still work.
|
||||
(DLR)
|
||||
- Remove unneeded toggles variable. (David Benbennick)
|
||||
findnextstr():
|
||||
- Update the current line at current_x if we don't find a match.
|
||||
Also, pass current_x_find to strstrwrapper() so we know whether
|
||||
@ -95,7 +153,7 @@ CVS Code -
|
||||
better on smaller terminals. (Carl Drinkwater)
|
||||
update_line():
|
||||
- When marking control characters, make sure the mark moves
|
||||
forward by two characters inctead of one. Rework control
|
||||
forward by two characters instead of one. Rework control
|
||||
character display routine to display newlines within the line
|
||||
(which should never occur under normal circumstances; they will
|
||||
only be there if the line had nulls in it and was unsunder()ed
|
||||
@ -106,6 +164,7 @@ CVS Code -
|
||||
with TERM=ansi). (DLR)
|
||||
- THANKS:
|
||||
- Completed a bit (Jordi).
|
||||
- Fixed David Benbennick's email address (David Benbennick).
|
||||
GNU nano 1.1.9 - 05/12/2002
|
||||
- General:
|
||||
- Typos n misspellings all over the place (David Benbennick).
|
||||
@ -119,7 +178,7 @@ GNU nano 1.1.9 - 05/12/2002
|
||||
- Preliminary prepend code. This may be a bad idea, but I've
|
||||
been wanting it for awhile now and we'll see how bad it messes
|
||||
everything up. Changes to files.c:do_writeout(), write_file().
|
||||
Fixes for O_CREAT & append compatibililty by David Benbennick.
|
||||
Fixes for O_CREAT & append compatibility by David Benbennick.
|
||||
- Change from read() and write() to file streams by Jay Carlson.
|
||||
Allows OS to implement read and write ahead rather than making
|
||||
us do it. Hopefully merged properly.
|
||||
@ -133,8 +192,8 @@ GNU nano 1.1.9 - 05/12/2002
|
||||
to specify the type on the command line, if there's no good
|
||||
filename regex to use. Global variable syntaxstr.
|
||||
- Changed many strcmp()s and strcpy()s to their equivalent
|
||||
'\0' conterparts (David Lawrence Ramsey).
|
||||
- Many chanes to allow marked cutting to work with multiple
|
||||
'\0' counterparts (David Lawrence Ramsey).
|
||||
- Many changes to allow marked cutting to work with multiple
|
||||
file buffers: changes to openfilestruct type in nano.h and
|
||||
files.c (David Lawrence Ramsey).
|
||||
- Changed NANO_SMALL to ENABLE_NLS for gettext disabling
|
||||
@ -162,7 +221,7 @@ GNU nano 1.1.9 - 05/12/2002
|
||||
do_wrap()
|
||||
- Complete rewrite (David Benbennick).
|
||||
help_init()
|
||||
- A little les readable, a lot shorer :-) (David Benbennick).
|
||||
- A little less readable, a lot shorter :-) (David Benbennick).
|
||||
- Fix Meta-A not getting capitalized, and convert the ASCII
|
||||
#s to their character equivalent.
|
||||
main()
|
||||
@ -187,7 +246,7 @@ GNU nano 1.1.9 - 05/12/2002
|
||||
- Changed some syntax highlight computations for the sake of COLS.
|
||||
- Add in the necessary regfree() calls to stop nano from leaking
|
||||
memory like a sieve when using color syntax highlighting :-)
|
||||
botombars(), onekey()
|
||||
bottombars(), onekey()
|
||||
- Cleanups (David Benbennick).
|
||||
- po/gl.po:
|
||||
- Galician translation updates (Jacobo Tarrio).
|
||||
@ -311,7 +370,7 @@ GNU nano 1.1.7 - 03/05/2002
|
||||
- malloc->calloc, etc cleanups (DLR).
|
||||
- New option, noconvert (-N, --noconvert) to completely stop
|
||||
the translation of files from DOS or Mac format (DLR).
|
||||
- New functions wheck_writable_directory() and safe_tempnam()
|
||||
- New functions check_writable_directory() and safe_tempnam()
|
||||
to get around the tempnam warning. More improvements (DLR)
|
||||
Still needs testing.
|
||||
- Added DOS and Mac format options to write file routine.
|
||||
@ -346,7 +405,7 @@ GNU nano 1.1.7 - 03/05/2002
|
||||
- Added call to AM_ACLOCAL_INCLUDE.
|
||||
- files.c:
|
||||
read_byte()
|
||||
- Added check for conrol characters (indicative of a binary
|
||||
- Added check for control characters (indicative of a binary
|
||||
file), set NO_CONVERT if found (fixes by DLR).
|
||||
do_insertfile()
|
||||
- Added support for -o in prompt (Steven Kneizys).
|
||||
@ -380,7 +439,7 @@ GNU nano 1.1.7 - 03/05/2002
|
||||
- Fixes for various search issues (Ken Tyler)
|
||||
- winio.c:
|
||||
do_cursorpos()
|
||||
- Rewritten to show col place as well as charcter place, without
|
||||
- Rewritten to show col place as well as character place, without
|
||||
needing an entirely separate flag.
|
||||
bottombars(), onekey()
|
||||
- Make bottom list dynamic with screen size (Guus Sliepen & Chris).
|
||||
@ -428,7 +487,7 @@ GNU nano 1.1.7 - 03/05/2002
|
||||
|
||||
nano-1.1.6 - 01/25/2002
|
||||
- General
|
||||
- Add Meta-A as alternate keyystroke for ^^ for people with
|
||||
- Add Meta-A as alternate keystroke for ^^ for people with
|
||||
non-US keyboards.
|
||||
- Add Alt-G (NANO_ALT_GOTO_KEY) as alternate for goto dir in
|
||||
browser.
|
||||
@ -473,7 +532,7 @@ nano-1.1.6 - 01/25/2002
|
||||
- nano.h:
|
||||
- Changed color struct slightly, because of previous issue with
|
||||
applying color painting in order, the "str" portion was
|
||||
uselss. Renamed "val" in colortype to "start", added "end"
|
||||
useless. Renamed "val" in colortype to "start", added "end"
|
||||
for multi-line color strings.
|
||||
- rcfile.c:
|
||||
General
|
||||
@ -482,7 +541,7 @@ nano-1.1.6 - 01/25/2002
|
||||
- Re-indented.
|
||||
- Added stdarg.h to includes.
|
||||
rcfile_error()
|
||||
- Now automatically prpends the "error in line blah at foo"
|
||||
- Now automatically prepends the "error in line blah at foo"
|
||||
message to error messages.
|
||||
parse_colors()
|
||||
- Added section for computing "end" section.
|
||||
@ -548,7 +607,7 @@ nano-1.1.5 - 01/05/2002
|
||||
suspending nano on the Hurd.
|
||||
help_init()
|
||||
- Typo fixes in help strings (Jordi).
|
||||
- New variable helplen needes cause currslen is not always
|
||||
- New variable helplen needed cause currslen is not always
|
||||
the length we want (bug found by David Lawrence Ramsey).
|
||||
- Typo in file switch string (found by David Lawrence Ramsey).
|
||||
main()
|
||||
@ -870,8 +929,8 @@ nano-1.1.0 - 07/15/2001
|
||||
--enable-nanorc is used. Tons of new funcs, most notably
|
||||
do_rcfile() called from nano.c:main(). Added much needed
|
||||
function ncalloc(), will have to go through source code later
|
||||
and change the aproproate calls which used nmalloc for lack of
|
||||
an apropriate calloc function *** FIXME ***
|
||||
and change the appropriate calls which used nmalloc for lack of
|
||||
an appropriate calloc function *** FIXME ***
|
||||
- After "Alternate" spell checker is called, cursor is repositioned on
|
||||
the same line as before ^T was pressed.
|
||||
- Moved config.h up in all .c files #include list (Albert Chin).
|
||||
@ -885,10 +944,10 @@ nano-1.1.0 - 07/15/2001
|
||||
and justify being disabled. This allows us to compile out the
|
||||
-r flag if neither are set, and will also allow us to comment
|
||||
out -W when it is written.
|
||||
- Allow fill to take a negative value ot signify a "from right side"
|
||||
- Allow fill to take a negative value to signify a "from right side"
|
||||
value. This allows the value to vary with the screen size yet
|
||||
still be correct. New static value wrap_at to minimize code
|
||||
inpact. Updated man page and info file.
|
||||
impact. Updated man page and info file.
|
||||
- Allow file appending. New shortcut list nano_insertfile_list (since
|
||||
insert and write routines can't share shortcut lists anymore),
|
||||
new args to do_writeout and write_file called append, and of source
|
||||
@ -963,7 +1022,7 @@ nano-1.1.0 - 07/15/2001
|
||||
down, etc, and add the consistent ^C to exit (Jim Knoble).
|
||||
do_writeout()
|
||||
- New code to allow writing selected text to a separate file.
|
||||
When this is done, the current state is prserved.
|
||||
When this is done, the current state is preserved.
|
||||
write_file()
|
||||
- New arg, nonamechange, means whether or not to update the
|
||||
current filename after writing the file out.
|
||||
|
3
THANKS
3
THANKS
@ -29,8 +29,7 @@ Miquel Vidal <miquel@sindominio.net> Catalan Translator
|
||||
Pauli Virtanen <pauli.virtanen@saunalahti.fi> Finnish Translator
|
||||
|
||||
Ben Armstrong <synrg@sanctuary.nslug.ns.ca> Negative -r value idea, code
|
||||
David Benbennick dbenbenn@polygon.math.cornell.edu>
|
||||
Misc fixes and enhancements
|
||||
David Benbennick <dbenbenn@math.cornell.edu> Misc fixes and enhancements
|
||||
Thomas Dickey <dickey@herndon4.his.com> Curses help and advice
|
||||
Sven Guckes <guckes@math.fu-berlin.de> Advice and Advocacy
|
||||
Jim Knoble <jmknoble@pobox.com> Pico compat for browser
|
||||
|
2
TODO
2
TODO
@ -5,7 +5,7 @@ For version 1.2:
|
||||
- Single line scroll up/down? [DONE]
|
||||
- Color syntax highlighting? (certainly seems like there's a demand for it.)
|
||||
- .nanorc [DONE]
|
||||
- Backup making (filename~)?
|
||||
- Backup making (filename~)? [DONE]
|
||||
- Search (etc) string history [1.2]
|
||||
- Implement Pico's -j and -g flags, as they are pretty easy to do. [DONE]
|
||||
- Make mouse support work with clicking on the shortcuts (-m). Must
|
||||
|
159
files.c
159
files.c
@ -28,6 +28,7 @@
|
||||
#include <sys/types.h>
|
||||
#include <sys/wait.h>
|
||||
#include <sys/stat.h>
|
||||
#include <utime.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <ctype.h>
|
||||
@ -356,6 +357,9 @@ int open_file(const char *filename, int insert, int quiet)
|
||||
return -1;
|
||||
}
|
||||
read_file(f, filename, quiet);
|
||||
#ifndef NANO_SMALL
|
||||
stat(filename, &originalfilestat);
|
||||
#endif
|
||||
}
|
||||
|
||||
return 1;
|
||||
@ -417,7 +421,7 @@ int do_insertfile(int loading_file)
|
||||
if (i != -1) {
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, _("filename is %s"), answer);
|
||||
fprintf(stderr, _("filename is %s\n"), answer);
|
||||
#endif
|
||||
|
||||
#ifndef DISABLE_TABCOMP
|
||||
@ -596,7 +600,7 @@ int add_open_file(int update)
|
||||
open_files and splice it in after the current one */
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, _("filename is %s"), open_files->filename);
|
||||
fprintf(stderr, _("filename is %s\n"), open_files->filename);
|
||||
#endif
|
||||
|
||||
tmp = make_new_opennode(NULL);
|
||||
@ -607,6 +611,11 @@ int add_open_file(int update)
|
||||
/* save current filename */
|
||||
open_files->filename = mallocstrcpy(open_files->filename, filename);
|
||||
|
||||
#ifndef NANO_SMALL
|
||||
/* save the file's stat */
|
||||
open_files->originalfilestat = originalfilestat;
|
||||
#endif
|
||||
|
||||
/* save current total number of lines */
|
||||
open_files->file_totlines = totlines;
|
||||
|
||||
@ -649,7 +658,7 @@ int add_open_file(int update)
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, _("filename is %s"), open_files->filename);
|
||||
fprintf(stderr, _("filename is %s\n"), open_files->filename);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
@ -668,6 +677,9 @@ int load_open_file(void)
|
||||
/* set up the filename, the file buffer, the total number of lines in
|
||||
the file, and the total file size */
|
||||
filename = mallocstrcpy(filename, open_files->filename);
|
||||
#ifndef NANO_SMALL
|
||||
originalfilestat = open_files->originalfilestat;
|
||||
#endif
|
||||
fileage = open_files->fileage;
|
||||
current = fileage;
|
||||
filebot = open_files->filebot;
|
||||
@ -740,7 +752,7 @@ int open_prevfile(int closing_file)
|
||||
open_files = open_files->prev;
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, _("filename is %s"), open_files->filename);
|
||||
fprintf(stderr, _("filename is %s\n"), open_files->filename);
|
||||
#endif
|
||||
|
||||
}
|
||||
@ -752,7 +764,7 @@ int open_prevfile(int closing_file)
|
||||
open_files = open_files->next;
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, _("filename is %s"), open_files->filename);
|
||||
fprintf(stderr, _("filename is %s\n"), open_files->filename);
|
||||
#endif
|
||||
|
||||
}
|
||||
@ -804,7 +816,7 @@ int open_nextfile(int closing_file)
|
||||
open_files = open_files->next;
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, _("filename is %s"), open_files->filename);
|
||||
fprintf(stderr, _("filename is %s\n"), open_files->filename);
|
||||
#endif
|
||||
|
||||
}
|
||||
@ -815,7 +827,7 @@ int open_nextfile(int closing_file)
|
||||
open_files = open_files->prev;
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, _("filename is %s"), open_files->filename);
|
||||
fprintf(stderr, _("filename is %s\n"), open_files->filename);
|
||||
#endif
|
||||
|
||||
}
|
||||
@ -873,7 +885,7 @@ int close_open_file(void)
|
||||
}
|
||||
#endif /* MULTIBUFFER */
|
||||
|
||||
#if !defined (DISABLE_SPELLER) || !defined (DISABLE_OPERATINGDIR)
|
||||
#if !defined(DISABLE_SPELLER) || !defined(DISABLE_OPERATINGDIR)
|
||||
/*
|
||||
* When passed "[relative path]" or "[relative path][filename]" in
|
||||
* origpath, return "[full path]" or "[full path][filename]" on success,
|
||||
@ -1283,6 +1295,75 @@ int write_file(char *name, int tmp, int append, int nonamechange)
|
||||
/* Save the state of file at the end of the symlink (if there is one) */
|
||||
realexists = stat(realname, &st);
|
||||
|
||||
#ifndef NANO_SMALL
|
||||
/* We backup only if the backup toggle is set, the file isn't
|
||||
temporary, and the file already exists. Furthermore, if we aren't
|
||||
appending, prepending, or writing a selection, also backup only if
|
||||
the file has not been modified by someone else since nano opened
|
||||
it. */
|
||||
if (ISSET(BACKUP_FILE) && !tmp && realexists == 0 &&
|
||||
(append || ISSET(MARK_ISSET) ||
|
||||
originalfilestat.st_mtime == st.st_mtime)) {
|
||||
FILE *backup_file;
|
||||
char *backupname = NULL;
|
||||
char backupbuf[COPYFILEBLOCKSIZE];
|
||||
size_t bytesread;
|
||||
struct utimbuf filetime;
|
||||
|
||||
/* save the original file's access and modification times */
|
||||
filetime.actime = originalfilestat.st_atime;
|
||||
filetime.modtime = originalfilestat.st_mtime;
|
||||
|
||||
/* open the original file to copy to the backup */
|
||||
f = fopen(realname, "rb");
|
||||
if (!f) {
|
||||
statusbar(_("Could not read %s for backup: %s"), realname,
|
||||
strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
backupname = charalloc(strlen(realname) + 2);
|
||||
sprintf(backupname, "%s~", realname);
|
||||
|
||||
/* get a file descriptor for the destination backup file */
|
||||
backup_file = fopen(backupname, "wb");
|
||||
if (!backup_file) {
|
||||
statusbar(_("Couldn't write backup: %s"), strerror(errno));
|
||||
free(backupname);
|
||||
return -1;
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, _("Backing up %s to %s\n"), realname, backupname);
|
||||
#endif
|
||||
|
||||
/* copy the file */
|
||||
while ((bytesread = fread(backupbuf, sizeof(char),
|
||||
COPYFILEBLOCKSIZE, f)) > 0)
|
||||
if (fwrite(backupbuf, sizeof(char), bytesread, backup_file) <= 0)
|
||||
break;
|
||||
fclose(backup_file);
|
||||
fclose(f);
|
||||
|
||||
if (chmod(backupname, originalfilestat.st_mode) == -1)
|
||||
statusbar(_("Could not set permissions %o on backup %s: %s"),
|
||||
originalfilestat.st_mode, backupname,
|
||||
strerror(errno));
|
||||
|
||||
if (chown(backupname, originalfilestat.st_uid,
|
||||
originalfilestat.st_gid) == -1)
|
||||
statusbar(_("Could not set owner %d/group %d on backup %s: %s"),
|
||||
originalfilestat.st_uid, originalfilestat.st_gid,
|
||||
backupname, strerror(errno));
|
||||
|
||||
if (utime(backupname, &filetime) == -1)
|
||||
statusbar(_("Could not set access/modification time on backup %s: %s"),
|
||||
backupname, strerror(errno));
|
||||
|
||||
free(backupname);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Stat the link itself for the check... */
|
||||
anyexists = lstat(realname, &lst);
|
||||
|
||||
@ -1368,7 +1449,6 @@ int write_file(char *name, int tmp, int append, int nonamechange)
|
||||
else
|
||||
fprintf(stderr, _("Wrote >%s\n"), fileptr->data);
|
||||
#endif
|
||||
|
||||
#ifndef NANO_SMALL
|
||||
if (ISSET(DOS_FILE) || ISSET(MAC_FILE))
|
||||
putc('\r', f);
|
||||
@ -1424,7 +1504,6 @@ int write_file(char *name, int tmp, int append, int nonamechange)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (fclose(f)) {
|
||||
statusbar(_("Could not close %s: %s"), realname, strerror(errno));
|
||||
unlink(buf);
|
||||
@ -1481,7 +1560,6 @@ int write_file(char *name, int tmp, int append, int nonamechange)
|
||||
fclose(f_dest);
|
||||
}
|
||||
|
||||
|
||||
if (realexists == -1 || tmp ||
|
||||
(!ISSET(FOLLOW_SYMLINKS) && S_ISLNK(lst.st_mode))) {
|
||||
|
||||
@ -1489,7 +1567,7 @@ int write_file(char *name, int tmp, int append, int nonamechange)
|
||||
mask = umask(0);
|
||||
umask(mask);
|
||||
|
||||
if (tmp) /* We don't want anyone reading our temporary file! */
|
||||
if (tmp) /* We don't want anyone reading our temporary file! */
|
||||
mask = 0600;
|
||||
else
|
||||
mask = 0666 & ~mask;
|
||||
@ -1529,6 +1607,10 @@ int write_file(char *name, int tmp, int append, int nonamechange)
|
||||
if (!nonamechange)
|
||||
filename = mallocstrcpy(filename, realname);
|
||||
|
||||
#ifndef NANO_SMALL
|
||||
/* Update originalfilestat to reference the file as it is now. */
|
||||
stat(filename, &originalfilestat);
|
||||
#endif
|
||||
statusbar(_("Wrote %d lines"), lineswritten);
|
||||
UNSET(MODIFIED);
|
||||
titlebar(NULL);
|
||||
@ -1539,8 +1621,9 @@ int write_file(char *name, int tmp, int append, int nonamechange)
|
||||
int do_writeout(char *path, int exiting, int append)
|
||||
{
|
||||
int i = 0;
|
||||
char *formatstr = NULL;
|
||||
|
||||
#ifndef NANO_SMALL
|
||||
const char *formatstr, *backupstr;
|
||||
#endif
|
||||
#ifdef NANO_EXTRA
|
||||
static int did_cred = 0;
|
||||
#endif
|
||||
@ -1568,7 +1651,6 @@ int do_writeout(char *path, int exiting, int append)
|
||||
while (1) {
|
||||
|
||||
#ifndef NANO_SMALL
|
||||
|
||||
if (ISSET(MAC_FILE))
|
||||
formatstr = _(" [Mac Format]");
|
||||
else if (ISSET(DOS_FILE))
|
||||
@ -1576,31 +1658,44 @@ int do_writeout(char *path, int exiting, int append)
|
||||
else
|
||||
formatstr = "";
|
||||
|
||||
if (ISSET(BACKUP_FILE))
|
||||
backupstr = _(" [Backup]");
|
||||
else
|
||||
backupstr = "";
|
||||
|
||||
/* Be nice to the translation folks */
|
||||
if (ISSET(MARK_ISSET) && !exiting) {
|
||||
if (append == 2)
|
||||
i = statusq(1, writefile_list, "",
|
||||
"%s%s", _("Prepend Selection to File"), formatstr);
|
||||
"%s%s%s", _("Prepend Selection to File"), formatstr, backupstr);
|
||||
else if (append)
|
||||
i = statusq(1, writefile_list, "",
|
||||
"%s%s", _("Append Selection to File"), formatstr);
|
||||
"%s%s%s", _("Append Selection to File"), formatstr, backupstr);
|
||||
else
|
||||
i = statusq(1, writefile_list, "",
|
||||
"%s%s", _("Write Selection to File"), formatstr);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
"%s%s%s", _("Write Selection to File"), formatstr, backupstr);
|
||||
} else {
|
||||
if (append == 2)
|
||||
i = statusq(1, writefile_list, answer,
|
||||
"%s%s", _("File Name to Prepend"), formatstr);
|
||||
"%s%s%s", _("File Name to Prepend to"), formatstr, backupstr);
|
||||
else if (append)
|
||||
i = statusq(1, writefile_list, answer,
|
||||
"%s%s", _("File Name to Append"), formatstr);
|
||||
"%s%s%s", _("File Name to Append to"), formatstr, backupstr);
|
||||
else
|
||||
i = statusq(1, writefile_list, answer,
|
||||
"%s%s", _("File Name to Write"), formatstr);
|
||||
|
||||
"%s%s%s", _("File Name to Write"), formatstr, backupstr);
|
||||
}
|
||||
#else
|
||||
if (append == 2)
|
||||
i = statusq(1, writefile_list, answer,
|
||||
"%s", _("File Name to Prepend to"));
|
||||
else if (append)
|
||||
i = statusq(1, writefile_list, answer,
|
||||
"%s", _("File Name to Append to"));
|
||||
else
|
||||
i = statusq(1, writefile_list, answer,
|
||||
"%s", _("File Name to Write"));
|
||||
#endif /* !NANO_SMALL */
|
||||
|
||||
if (i != -1) {
|
||||
|
||||
@ -1627,13 +1722,18 @@ int do_writeout(char *path, int exiting, int append)
|
||||
UNSET(DOS_FILE);
|
||||
TOGGLE(MAC_FILE);
|
||||
return(do_writeout(answer, exiting, append));
|
||||
#ifndef NANO_SMALL
|
||||
} else if (i == TOGGLE_BACKUP_KEY) {
|
||||
TOGGLE(BACKUP_FILE);
|
||||
return(do_writeout(answer, exiting, append));
|
||||
#endif
|
||||
} else if (i == NANO_PREPEND_KEY)
|
||||
return(do_writeout(answer, exiting, append == 2 ? 0 : 2));
|
||||
else if (i == NANO_APPEND_KEY)
|
||||
return(do_writeout(answer, exiting, append == 1 ? 0 : 1));
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, _("filename is %s"), answer);
|
||||
fprintf(stderr, _("filename is %s\n"), answer);
|
||||
#endif
|
||||
|
||||
#ifdef NANO_EXTRA
|
||||
@ -1653,8 +1753,8 @@ int do_writeout(char *path, int exiting, int append)
|
||||
continue;
|
||||
}
|
||||
}
|
||||
#ifndef NANO_SMALL
|
||||
|
||||
#ifndef NANO_SMALL
|
||||
/* Here's where we allow the selected text to be written to
|
||||
a separate file. */
|
||||
if (ISSET(MARK_ISSET) && !exiting) {
|
||||
@ -1692,7 +1792,8 @@ int do_writeout(char *path, int exiting, int append)
|
||||
if (oldmod)
|
||||
set_modified();
|
||||
} else
|
||||
#endif
|
||||
#endif /* !NANO_SMALL */
|
||||
|
||||
i = write_file(answer, 0, append, 0);
|
||||
|
||||
#ifdef ENABLE_MULTIBUFFER
|
||||
@ -2357,7 +2458,7 @@ char *do_browser(char *inpath)
|
||||
|
||||
blank_statusbar_refresh();
|
||||
|
||||
#if !defined DISABLE_HELP || !defined(DISABLE_MOUSE)
|
||||
#if !defined(DISABLE_HELP) || !defined(DISABLE_MOUSE)
|
||||
currshortcut = browser_list;
|
||||
#endif
|
||||
|
||||
|
97
global.c
97
global.c
@ -42,6 +42,11 @@ WINDOW *edit; /* The file portion of the editor */
|
||||
WINDOW *topwin; /* Top line of screen */
|
||||
WINDOW *bottomwin; /* Bottom buffer */
|
||||
char *filename = NULL; /* Name of the file */
|
||||
|
||||
#ifndef NANO_SMALL
|
||||
struct stat originalfilestat; /* Stat for the file as we loaded it */
|
||||
#endif
|
||||
|
||||
int editwinrows = 0; /* How many rows long is the edit
|
||||
window? */
|
||||
filestruct *current; /* Current buffer pointer */
|
||||
@ -114,7 +119,7 @@ shortcut *browser_list = NULL;
|
||||
char *syntaxstr = NULL;
|
||||
#endif
|
||||
|
||||
#if !defined(DISABLE_BROWSER) || !defined(DISABLE_MOUSE) || !defined (DISABLE_HELP)
|
||||
#if !defined(DISABLE_BROWSER) || !defined(DISABLE_MOUSE) || !defined(DISABLE_HELP)
|
||||
shortcut *currshortcut; /* Current shortcut list we're using */
|
||||
#endif
|
||||
|
||||
@ -153,7 +158,7 @@ static void sc_init_one(shortcut **shortcutage, int key,
|
||||
const char *desc,
|
||||
#ifndef DISABLE_HELP
|
||||
const char *help,
|
||||
#endif /* !DISABLE_HELP */
|
||||
#endif
|
||||
int alt, int misc1, int misc2, int view,
|
||||
int (*func) (void))
|
||||
{
|
||||
@ -173,7 +178,7 @@ static void sc_init_one(shortcut **shortcutage, int key,
|
||||
s->desc = desc;
|
||||
#ifndef DISABLE_HELP
|
||||
s->help = help;
|
||||
#endif /* !DISABLE_HELP */
|
||||
#endif
|
||||
s->altval = alt;
|
||||
s->misc1 = misc1;
|
||||
s->misc2 = misc2;
|
||||
@ -205,6 +210,7 @@ static void toggle_init_one(int val, const char *desc, int flag)
|
||||
u->next = NULL;
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
/* Deallocate all of the toggles */
|
||||
static void free_toggles(void)
|
||||
{
|
||||
@ -217,23 +223,27 @@ static void free_toggles(void)
|
||||
}
|
||||
toggles = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void toggle_init(void)
|
||||
{
|
||||
char *toggle_const_msg, *toggle_autoindent_msg, *toggle_suspend_msg,
|
||||
*toggle_nohelp_msg, *toggle_picomode_msg, *toggle_mouse_msg,
|
||||
*toggle_cuttoend_msg, *toggle_wrap_msg, *toggle_case_msg,
|
||||
*toggle_backwards_msg, *toggle_noconvert_msg, *toggle_dos_msg,
|
||||
*toggle_mac_msg, *toggle_smooth_msg;
|
||||
|
||||
#ifdef HAVE_REGEX_H
|
||||
char *toggle_regexp_msg;
|
||||
#endif
|
||||
*toggle_cuttoend_msg, *toggle_wrap_msg, *toggle_noconvert_msg,
|
||||
*toggle_dos_msg, *toggle_mac_msg, *toggle_backup_msg,
|
||||
*toggle_smooth_msg;
|
||||
|
||||
#ifdef ENABLE_MULTIBUFFER
|
||||
char *toggle_load_msg;
|
||||
#endif
|
||||
|
||||
/* There is no need to reinitialize the toggles. They can't
|
||||
change. In fact, reinitializing them causes a segfault in
|
||||
nano.c:do_toggle() when it is called with the Pico-mode
|
||||
toggle. */
|
||||
if (toggles != NULL)
|
||||
return;
|
||||
|
||||
toggle_const_msg = _("Constant cursor position");
|
||||
toggle_autoindent_msg = _("Auto indent");
|
||||
toggle_suspend_msg = _("Suspend");
|
||||
@ -241,25 +251,16 @@ static void toggle_init(void)
|
||||
toggle_picomode_msg = _("Pico mode");
|
||||
toggle_mouse_msg = _("Mouse support");
|
||||
toggle_cuttoend_msg = _("Cut to end");
|
||||
toggle_backwards_msg = _("Backwards search");
|
||||
toggle_case_msg = _("Case sensitive search");
|
||||
|
||||
#ifdef HAVE_REGEX_H
|
||||
toggle_regexp_msg = _("Regular expression search");
|
||||
#endif
|
||||
|
||||
toggle_noconvert_msg = _("No conversion from DOS/Mac format");
|
||||
toggle_dos_msg = _("Writing file in DOS format");
|
||||
toggle_mac_msg = _("Writing file in Mac format");
|
||||
toggle_backup_msg = _("Backing up file");
|
||||
toggle_smooth_msg = _("Smooth scrolling");
|
||||
toggle_wrap_msg = _("Auto wrap");
|
||||
|
||||
#ifdef ENABLE_MULTIBUFFER
|
||||
toggle_load_msg = _("Multiple file buffers");
|
||||
#endif
|
||||
|
||||
free_toggles();
|
||||
|
||||
toggle_init_one(TOGGLE_CONST_KEY, toggle_const_msg, CONSTUPDATE);
|
||||
toggle_init_one(TOGGLE_AUTOINDENT_KEY, toggle_autoindent_msg, AUTOINDENT);
|
||||
toggle_init_one(TOGGLE_SUSPEND_KEY, toggle_suspend_msg, SUSPEND);
|
||||
@ -268,22 +269,17 @@ static void toggle_init(void)
|
||||
toggle_init_one(TOGGLE_WRAP_KEY, toggle_wrap_msg, NO_WRAP);
|
||||
toggle_init_one(TOGGLE_MOUSE_KEY, toggle_mouse_msg, USE_MOUSE);
|
||||
toggle_init_one(TOGGLE_CUTTOEND_KEY, toggle_cuttoend_msg, CUT_TO_END);
|
||||
toggle_init_one(TOGGLE_BACKWARDS_KEY, toggle_backwards_msg, REVERSE_SEARCH);
|
||||
toggle_init_one(TOGGLE_CASE_KEY, toggle_case_msg, CASE_SENSITIVE);
|
||||
#ifdef HAVE_REGEX_H
|
||||
toggle_init_one(TOGGLE_REGEXP_KEY, toggle_regexp_msg, USE_REGEXP);
|
||||
#endif
|
||||
#ifdef ENABLE_MULTIBUFFER
|
||||
toggle_init_one(TOGGLE_LOAD_KEY, toggle_load_msg, MULTIBUFFER);
|
||||
#endif
|
||||
toggle_init_one(TOGGLE_NOCONVERT_KEY, toggle_noconvert_msg, NO_CONVERT);
|
||||
toggle_init_one(TOGGLE_DOS_KEY, toggle_dos_msg, DOS_FILE);
|
||||
toggle_init_one(TOGGLE_MAC_KEY, toggle_mac_msg, MAC_FILE);
|
||||
toggle_init_one(TOGGLE_BACKUP_KEY, toggle_backup_msg, BACKUP_FILE);
|
||||
toggle_init_one(TOGGLE_SMOOTH_KEY, toggle_smooth_msg, SMOOTHSCROLL);
|
||||
}
|
||||
#endif /* !NANO_SMALL */
|
||||
|
||||
|
||||
/* Deallocate the given shortcut. */
|
||||
static void free_shortcutage(shortcut **shortcutage)
|
||||
{
|
||||
@ -302,42 +298,40 @@ static void free_shortcutage(shortcut **shortcutage)
|
||||
void shortcut_init(int unjustify)
|
||||
{
|
||||
#ifndef DISABLE_HELP
|
||||
char *nano_help_msg = "", *nano_writeout_msg = "", *nano_exit_msg = "",
|
||||
*nano_goto_msg = "", *nano_justify_msg = "", *nano_replace_msg =
|
||||
"", *nano_insert_msg = "", *nano_whereis_msg =
|
||||
"", *nano_prevpage_msg = "", *nano_nextpage_msg =
|
||||
"", *nano_cut_msg = "", *nano_uncut_msg = "", *nano_cursorpos_msg =
|
||||
char *nano_help_msg = "", *nano_writeout_msg = "", *nano_exit_msg =
|
||||
"", *nano_goto_msg = "", *nano_justify_msg =
|
||||
"", *nano_replace_msg = "", *nano_insert_msg =
|
||||
"", *nano_whereis_msg = "", *nano_prevpage_msg =
|
||||
"", *nano_nextpage_msg = "", *nano_cut_msg =
|
||||
"", *nano_uncut_msg = "", *nano_cursorpos_msg =
|
||||
"", *nano_spell_msg = "", *nano_up_msg = "", *nano_down_msg =
|
||||
"", *nano_forward_msg = "", *nano_back_msg = "", *nano_home_msg =
|
||||
"", *nano_end_msg = "", *nano_firstline_msg =
|
||||
"", *nano_lastline_msg = "", *nano_refresh_msg =
|
||||
"", *nano_mark_msg = "", *nano_delete_msg =
|
||||
"", *nano_backspace_msg = "", *nano_tab_msg =
|
||||
"", *nano_enter_msg = "", *nano_cancel_msg =
|
||||
"", *nano_enter_msg = "", *nano_cancel_msg =
|
||||
"", *nano_unjustify_msg = "", *nano_append_msg =
|
||||
"", *nano_prepend_msg = "";
|
||||
"", *nano_prepend_msg = "", *nano_tofiles_msg =
|
||||
"", *nano_gotodir_msg = "", *nano_case_msg =
|
||||
"", *nano_reverse_msg = "", *nano_execute_msg =
|
||||
"", *nano_dos_msg = "", *nano_mac_msg =
|
||||
"", *nano_backup_msg = "";
|
||||
|
||||
#ifdef ENABLE_MULTIBUFFER
|
||||
char *nano_openprev_msg = "", *nano_opennext_msg = "";
|
||||
#endif
|
||||
|
||||
char *nano_tofiles_msg = "", *nano_gotodir_msg = "", *nano_case_msg =
|
||||
"", *nano_reverse_msg = "", *nano_execute_msg = "";
|
||||
char *nano_dos_msg = "", *nano_mac_msg = "";
|
||||
|
||||
#ifdef HAVE_REGEX_H
|
||||
char *nano_regexp_msg = "", *nano_bracket_msg = "";
|
||||
#endif
|
||||
|
||||
nano_help_msg = _("Invoke the help menu");
|
||||
nano_writeout_msg = _("Write the current file to disk");
|
||||
|
||||
#ifdef ENABLE_MULTIBUFFER
|
||||
nano_exit_msg = _("Close currently loaded file/Exit from nano");
|
||||
#else
|
||||
nano_exit_msg = _("Exit from nano");
|
||||
#endif
|
||||
|
||||
nano_goto_msg = _("Go to a specific line number");
|
||||
nano_justify_msg = _("Justify the current paragraph");
|
||||
nano_unjustify_msg = _("Unjustify after a justify");
|
||||
@ -349,7 +343,7 @@ void shortcut_init(int unjustify)
|
||||
nano_cut_msg = _("Cut the current line and store it in the cutbuffer");
|
||||
nano_uncut_msg = _("Uncut from the cutbuffer into the current line");
|
||||
nano_cursorpos_msg = _("Show the position of the cursor");
|
||||
nano_spell_msg = _("Invoke the spell checker (if available)");
|
||||
nano_spell_msg = _("Invoke the spell checker, if available");
|
||||
nano_up_msg = _("Move up one line");
|
||||
nano_down_msg = _("Move down one line");
|
||||
nano_forward_msg = _("Move forward one character");
|
||||
@ -376,8 +370,11 @@ void shortcut_init(int unjustify)
|
||||
nano_reverse_msg = _("Search backwards");
|
||||
nano_dos_msg = _("Write file out in DOS format");
|
||||
nano_mac_msg = _("Write file out in Mac format");
|
||||
#ifndef NANO_SMALL
|
||||
nano_backup_msg = _("Back up original file when saving");
|
||||
#endif
|
||||
#ifdef HAVE_REGEX_H
|
||||
nano_regexp_msg = _("Use Regular expressions");
|
||||
nano_regexp_msg = _("Use regular expressions");
|
||||
nano_bracket_msg = _("Find other bracket");
|
||||
#endif
|
||||
#ifdef ENABLE_MULTIBUFFER
|
||||
@ -408,6 +405,7 @@ void shortcut_init(int unjustify)
|
||||
do_exit);
|
||||
else
|
||||
#endif
|
||||
|
||||
sc_init_one(&main_list, NANO_EXIT_KEY, _("Exit"),
|
||||
IFHELP(nano_exit_msg, 0), NANO_EXIT_FKEY, 0, VIEW,
|
||||
do_exit);
|
||||
@ -445,7 +443,6 @@ void shortcut_init(int unjustify)
|
||||
IFHELP(nano_insert_msg, 0),
|
||||
NANO_INSERTFILE_FKEY, 0, NOVIEW, do_insertfile_void);
|
||||
#endif
|
||||
|
||||
else
|
||||
sc_init_one(&main_list, NANO_REPLACE_KEY, _("Replace"),
|
||||
IFHELP(nano_replace_msg, NANO_ALT_REPLACE_KEY),
|
||||
@ -484,7 +481,6 @@ void shortcut_init(int unjustify)
|
||||
IFHELP(nano_spell_msg, 0),
|
||||
NANO_SPELL_FKEY, 0, NOVIEW, do_spell);
|
||||
|
||||
|
||||
sc_init_one(&main_list, NANO_UP_KEY, _("Up"),
|
||||
IFHELP(nano_up_msg, 0),
|
||||
KEY_UP, 0, VIEW, do_up);
|
||||
@ -554,13 +550,11 @@ void shortcut_init(int unjustify)
|
||||
IFHELP(_("Move backward one word"), NANO_PREVWORD_KEY), 0, 0,
|
||||
VIEW, do_prev_word_void);
|
||||
#endif
|
||||
|
||||
#if (!defined NANO_SMALL) && (defined HAVE_REGEX_H)
|
||||
#if !defined(NANO_SMALL) && defined(HAVE_REGEX_H)
|
||||
sc_init_one(&main_list, -9, _("Find Other Bracket"),
|
||||
IFHELP(nano_bracket_msg, NANO_BRACKET_KEY),
|
||||
0, 0, VIEW, do_find_bracket);
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_MULTIBUFFER
|
||||
sc_init_one(&main_list, -9, _("Previous File"),
|
||||
IFHELP(nano_openprev_msg, NANO_OPENPREV_KEY),
|
||||
@ -703,6 +697,11 @@ void shortcut_init(int unjustify)
|
||||
sc_init_one(&writefile_list, NANO_PREPEND_KEY, _("Prepend"),
|
||||
IFHELP(nano_prepend_msg, 0), 0, 0, NOVIEW, 0);
|
||||
|
||||
#ifndef NANO_SMALL
|
||||
sc_init_one(&writefile_list, TOGGLE_BACKUP_KEY, _("Backup File"),
|
||||
IFHELP(nano_backup_msg, 0), 0, 0, NOVIEW, 0);
|
||||
#endif
|
||||
|
||||
sc_init_one(&writefile_list, NANO_CANCEL_KEY, _("Cancel"),
|
||||
IFHELP(nano_cancel_msg, 0), 0, 0, VIEW, 0);
|
||||
|
||||
@ -742,7 +741,6 @@ void shortcut_init(int unjustify)
|
||||
#endif
|
||||
|
||||
#ifndef DISABLE_BROWSER
|
||||
|
||||
free_shortcutage(&browser_list);
|
||||
|
||||
sc_init_one(&browser_list, NANO_HELP_KEY, _("Get Help"),
|
||||
@ -770,14 +768,11 @@ void shortcut_init(int unjustify)
|
||||
|
||||
sc_init_one(&gotodir_list, NANO_CANCEL_KEY, _("Cancel"),
|
||||
IFHELP(nano_cancel_msg, 0), 0, 0, VIEW, 0);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#if !defined(DISABLE_BROWSER) || !defined(DISABLE_MOUSE) || !defined (DISABLE_HELP)
|
||||
currshortcut = main_list;
|
||||
#endif
|
||||
|
||||
#ifndef NANO_SMALL
|
||||
toggle_init();
|
||||
#endif
|
||||
|
36
nano.1
36
nano.1
@ -6,7 +6,7 @@
|
||||
.\" Public License for copying conditions. There is NO warranty.
|
||||
.\"
|
||||
.\" $Id$
|
||||
.TH NANO 1 "January 3, 2002"
|
||||
.TH NANO 1 "June 27, 2002"
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.\"
|
||||
.SH NAME
|
||||
@ -31,11 +31,15 @@ also implements some missing (or disabled by default) features in Pico,
|
||||
such as "search and replace" and "goto line number".
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.B \-B (\-\-backup)
|
||||
When saving a file, back up the previous version of it to the current
|
||||
filename suffixed with a ~.
|
||||
.TP
|
||||
.B \-D (\-\-dos)
|
||||
Write file in DOS format.
|
||||
.TP
|
||||
.B \-F (\-\-multibuffer)
|
||||
Enable multiple file buffers (if available).
|
||||
Enable multiple file buffers, if available.
|
||||
.TP
|
||||
.B \-K (\-\-keypad)
|
||||
Do not use the ncurses keypad() call unless necessary. Try this flag if
|
||||
@ -66,7 +70,8 @@ Set the size (width) of a tab.
|
||||
Show the current version number and author.
|
||||
.TP
|
||||
.B \-Y (\-\-syntax=[str])
|
||||
Specify a specific syntax highlighting from the .nanorc to use (if available).
|
||||
Specify a specific syntax highlighting from the .nanorc to use, if
|
||||
available.
|
||||
.TP
|
||||
.B \-c (\-\-const)
|
||||
Constantly show the cursor position.
|
||||
@ -89,18 +94,19 @@ a new file, do not follow it. Good for editing files in /tmp, perhaps?
|
||||
Enable mouse support (if available for your system).
|
||||
.TP
|
||||
.B \-o [dir] (\-\-operatingdir=[dir])
|
||||
Set operating directory. Makes nano set up something similar to a chroot.
|
||||
Set operating directory. Makes nano set up something similar to a
|
||||
chroot.
|
||||
.TP
|
||||
.B \-p (\-\-pico)
|
||||
Emulate Pico as closely as possible. This affects both the "shortcut list"
|
||||
at the bottom of the screen, as well as the display and entry of previous
|
||||
search and replace strings.
|
||||
Emulate Pico as closely as possible. This affects both the "shortcut
|
||||
list" at the bottom of the screen, as well as the display and entry of
|
||||
previous search and replace strings.
|
||||
.TP
|
||||
.B \-r [#cols] (\-\-fill=[#cols])
|
||||
Wrap lines at column #cols. By default, this is the width of the screen,
|
||||
less eight. If this value is negative, wrapping will occur at #cols from
|
||||
the right of the screen, allowing it to vary along with the screen width
|
||||
if the screen is resized.
|
||||
Wrap lines at column #cols. By default, this is the width of the
|
||||
screen, less eight. If this value is negative, wrapping will occur at
|
||||
#cols from the right of the screen, allowing it to vary along with the
|
||||
screen width if the screen is resized.
|
||||
.TP
|
||||
.B \-s [prog] (\-\-speller=[prog])
|
||||
Enable alternative spell checker command.
|
||||
@ -128,10 +134,10 @@ Places cursor at LINE on startup.
|
||||
.SH NOTES
|
||||
Nano will try to dump the buffer into an emergency file in some cases.
|
||||
Mainly, this will happen if Nano receives a SIGHUP or runs out of
|
||||
memory, when it will write the buffer into a file named "nano.save" if the
|
||||
buffer didn't have a name already, or will add a ".save" suffix to the
|
||||
current filename. If an emergency file with that name already exists in
|
||||
the current directory, ".save" and a number (e.g. ".save.1") will be
|
||||
memory, when it will write the buffer into a file named "nano.save" if
|
||||
the buffer didn't have a name already, or will add a ".save" suffix to
|
||||
the current filename. If an emergency file with that name already exists
|
||||
in the current directory, ".save" and a number (e.g. ".save.1") will be
|
||||
suffixed to the current filename in order to make it unique. In
|
||||
multibuffer mode, nano will write all the open buffers to the respective
|
||||
emergency files.
|
||||
|
39
nano.1.html
39
nano.1.html
@ -3,7 +3,7 @@ Content-type: text/html
|
||||
<HTML><HEAD><TITLE>Manpage of NANO</TITLE>
|
||||
</HEAD><BODY>
|
||||
<H1>NANO</H1>
|
||||
Section: User Commands (1)<BR>Updated: January 3, 2002<BR><A HREF="#index">Index</A>
|
||||
Section: User Commands (1)<BR>Updated: June 27, 2002<BR><A HREF="#index">Index</A>
|
||||
<A HREF="http://localhost/cgi-bin/man/man2html">Return to Main Contents</A><HR>
|
||||
|
||||
|
||||
@ -44,6 +44,11 @@ such as "search and replace" and "goto line number".
|
||||
<H2>OPTIONS</H2>
|
||||
|
||||
<DL COMPACT>
|
||||
<DT><B>-B (--backup)</B>
|
||||
|
||||
<DD>
|
||||
When saving a file, back up the previous version of it to the current
|
||||
filename suffixed with a ~.
|
||||
<DT><B>-D (--dos)</B>
|
||||
|
||||
<DD>
|
||||
@ -51,7 +56,7 @@ Write file in DOS format.
|
||||
<DT><B>-F (--multibuffer)</B>
|
||||
|
||||
<DD>
|
||||
Enable multiple file buffers (if available).
|
||||
Enable multiple file buffers, if available.
|
||||
<DT><B>-K (--keypad)</B>
|
||||
|
||||
<DD>
|
||||
@ -91,7 +96,8 @@ Show the current version number and author.
|
||||
<DT><B>-Y (--syntax=[str])</B>
|
||||
|
||||
<DD>
|
||||
Specify a specific syntax highlighting from the .nanorc to use (if available).
|
||||
Specify a specific syntax highlighting from the .nanorc to use, if
|
||||
available.
|
||||
<DT><B>-c (--const)</B>
|
||||
|
||||
<DD>
|
||||
@ -121,20 +127,21 @@ Enable mouse support (if available for your system).
|
||||
<DT><B>-o [dir] (--operatingdir=[dir])</B>
|
||||
|
||||
<DD>
|
||||
Set operating directory. Makes nano set up something similar to a chroot.
|
||||
Set operating directory. Makes nano set up something similar to a
|
||||
chroot.
|
||||
<DT><B>-p (--pico)</B>
|
||||
|
||||
<DD>
|
||||
Emulate Pico as closely as possible. This affects both the "shortcut list"
|
||||
at the bottom of the screen, as well as the display and entry of previous
|
||||
search and replace strings.
|
||||
Emulate Pico as closely as possible. This affects both the "shortcut
|
||||
list" at the bottom of the screen, as well as the display and entry of
|
||||
previous search and replace strings.
|
||||
<DT><B>-r [#cols] (--fill=[#cols])</B>
|
||||
|
||||
<DD>
|
||||
Wrap lines at column #cols. By default, this is the width of the screen,
|
||||
less eight. If this value is negative, wrapping will occur at #cols from
|
||||
the right of the screen, allowing it to vary along with the screen width
|
||||
if the screen is resized.
|
||||
Wrap lines at column #cols. By default, this is the width of the
|
||||
screen, less eight. If this value is negative, wrapping will occur at
|
||||
#cols from the right of the screen, allowing it to vary along with the
|
||||
screen width if the screen is resized.
|
||||
<DT><B>-s [prog] (--speller=[prog])</B>
|
||||
|
||||
<DD>
|
||||
@ -173,10 +180,10 @@ Places cursor at LINE on startup.
|
||||
|
||||
Nano will try to dump the buffer into an emergency file in some cases.
|
||||
Mainly, this will happen if Nano receives a SIGHUP or runs out of
|
||||
memory, when it will write the buffer into a file named "nano.save" if the
|
||||
buffer didn't have a name already, or will add a ".save" suffix to the
|
||||
current filename. If an emergency file with that name already exists in
|
||||
the current directory, ".save" and a number (e.g. ".save.1") will be
|
||||
memory, when it will write the buffer into a file named "nano.save" if
|
||||
the buffer didn't have a name already, or will add a ".save" suffix to
|
||||
the current filename. If an emergency file with that name already exists
|
||||
in the current directory, ".save" and a number (e.g. ".save.1") will be
|
||||
suffixed to the current filename in order to make it unique. In
|
||||
multibuffer mode, nano will write all the open buffers to the respective
|
||||
emergency files.
|
||||
@ -227,6 +234,6 @@ used by others).
|
||||
This document was created by
|
||||
<A HREF="http://localhost/cgi-bin/man/man2html">man2html</A>,
|
||||
using the manual pages.<BR>
|
||||
Time: 19:17:30 GMT, May 08, 2002
|
||||
Time: 21:45:15 GMT, June 27, 2002
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
107
nano.c
107
nano.c
@ -464,7 +464,9 @@ void usage(void)
|
||||
printf(_("Option Meaning\n"));
|
||||
#endif /* HAVE_GETOPT_LONG */
|
||||
|
||||
print1opt("-h, -?", "--help", _("Show this message"));
|
||||
#ifndef NANO_SMALL
|
||||
print1opt("-B", "--backup", _("Backup existing files on save"));
|
||||
print1opt("-D", "--dos", _("Write file in DOS format"));
|
||||
#endif
|
||||
#ifdef ENABLE_MULTIBUFFER
|
||||
@ -478,7 +480,9 @@ void usage(void)
|
||||
#ifndef DISABLE_JUSTIFY
|
||||
print1opt(_("-Q [str]"), _("--quotestr [str]"), _("Quoting string, default \"> \""));
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_REGEX_H
|
||||
print1opt("-R", "--regexp", _("Do regular expression searches"));
|
||||
#endif
|
||||
#ifndef NANO_SMALL
|
||||
print1opt("-S", "--smooth", _("Smooth scrolling"));
|
||||
#endif
|
||||
@ -488,7 +492,6 @@ void usage(void)
|
||||
print1opt(_("-Y [str]"), _("--syntax [str]"), _("Syntax definition to use"));
|
||||
#endif
|
||||
print1opt("-c", "--const", _("Constantly show cursor position"));
|
||||
print1opt("-h", "--help", _("Show this message"));
|
||||
#ifndef NANO_SMALL
|
||||
print1opt("-i", "--autoindent", _("Automatically indent new lines"));
|
||||
print1opt("-k", "--cut", _("Let ^K cut from cursor to end of line"));
|
||||
@ -503,7 +506,6 @@ void usage(void)
|
||||
print1opt(_("-o [dir]"), _("--operatingdir=[dir]"), _("Set operating directory"));
|
||||
#endif
|
||||
print1opt("-p", "--pico", _("Emulate Pico as closely as possible"));
|
||||
|
||||
#ifndef DISABLE_WRAPJUSTIFY
|
||||
print1opt(_("-r [#cols]"), _("--fill=[#cols]"), _("Set fill cols to (wrap lines at) #cols"));
|
||||
#endif
|
||||
@ -2395,7 +2397,7 @@ int do_justify(void)
|
||||
strcpy(&tmpline->data[j], quotestr);
|
||||
|
||||
/* Skip the white space in current. */
|
||||
memcpy(&tmpline->data[qdepth], current->data + i + 1, slen-qdepth);
|
||||
memcpy(&tmpline->data[qdepth], current->data + i + 1, slen - qdepth);
|
||||
tmpline->data[slen] = '\0';
|
||||
|
||||
current->data = nrealloc(current->data, i + 1);
|
||||
@ -2700,13 +2702,6 @@ void do_toggle(toggle *which)
|
||||
char *enabled = _("enabled");
|
||||
char *disabled = _("disabled");
|
||||
|
||||
switch (which->val) {
|
||||
case TOGGLE_BACKWARDS_KEY:
|
||||
case TOGGLE_CASE_KEY:
|
||||
case TOGGLE_REGEXP_KEY:
|
||||
return;
|
||||
}
|
||||
|
||||
/* Even easier! */
|
||||
TOGGLE(which->flag);
|
||||
|
||||
@ -2809,49 +2804,49 @@ int main(int argc, char *argv[])
|
||||
#ifdef HAVE_GETOPT_LONG
|
||||
int option_index = 0;
|
||||
struct option long_options[] = {
|
||||
{"help", 0, 0, 'h'},
|
||||
#ifdef ENABLE_MULTIBUFFER
|
||||
{"multibuffer", 0, 0, 'F'},
|
||||
#endif
|
||||
{"keypad", 0, 0, 'K'},
|
||||
#ifndef DISABLE_JUSTIFY
|
||||
{"quotestr", 1, 0, 'Q'},
|
||||
#endif
|
||||
#ifdef HAVE_REGEX_H
|
||||
{"regexp", 0, 0, 'R'},
|
||||
#endif
|
||||
{"tabsize", 1, 0, 'T'},
|
||||
{"version", 0, 0, 'V'},
|
||||
#ifdef ENABLE_COLOR
|
||||
{"syntax", 1, 0, 'Y'},
|
||||
#endif
|
||||
{"const", 0, 0, 'c'},
|
||||
{"suspend", 0, 0, 'z'},
|
||||
{"nowrap", 0, 0, 'w'},
|
||||
{"nohelp", 0, 0, 'x'},
|
||||
{"help", 0, 0, 'h'},
|
||||
{"view", 0, 0, 'v'},
|
||||
#ifndef NANO_SMALL
|
||||
{"cut", 0, 0, 'k'},
|
||||
{"dos", 0, 0, 'D'},
|
||||
{"mac", 0, 0, 'M'},
|
||||
{"noconvert", 0, 0, 'N'},
|
||||
{"autoindent", 0, 0, 'i'},
|
||||
#endif
|
||||
{"tempfile", 0, 0, 't'},
|
||||
#ifndef DISABLE_SPELLER
|
||||
{"speller", 1, 0, 's'},
|
||||
#endif
|
||||
|
||||
#ifndef DISABLE_WRAPJUSTIFY
|
||||
{"fill", 1, 0, 'r'},
|
||||
#endif
|
||||
{"nofollow", 0, 0, 'l'},
|
||||
{"mouse", 0, 0, 'm'},
|
||||
#ifndef DISABLE_OPERATINGDIR
|
||||
{"operatingdir", 1, 0, 'o'},
|
||||
#endif
|
||||
{"pico", 0, 0, 'p'},
|
||||
{"nofollow", 0, 0, 'l'},
|
||||
{"tabsize", 1, 0, 'T'},
|
||||
|
||||
#ifdef ENABLE_MULTIBUFFER
|
||||
{"multibuffer", 0, 0, 'F'},
|
||||
#ifndef DISABLE_WRAPJUSTIFY
|
||||
{"fill", 1, 0, 'r'},
|
||||
#endif
|
||||
#ifndef DISABLE_SPELLER
|
||||
{"speller", 1, 0, 's'},
|
||||
#endif
|
||||
{"tempfile", 0, 0, 't'},
|
||||
{"view", 0, 0, 'v'},
|
||||
{"nowrap", 0, 0, 'w'},
|
||||
{"nohelp", 0, 0, 'x'},
|
||||
{"suspend", 0, 0, 'z'},
|
||||
#ifndef NANO_SMALL
|
||||
{"backup", 0, 0, 'B'},
|
||||
{"dos", 0, 0, 'D'},
|
||||
{"mac", 0, 0, 'M'},
|
||||
{"noconvert", 0, 0, 'N'},
|
||||
{"smooth", 0, 0, 'S'},
|
||||
{"autoindent", 0, 0, 'i'},
|
||||
{"cut", 0, 0, 'k'},
|
||||
#endif
|
||||
#ifdef ENABLE_COLOR
|
||||
{"syntax", 1, 0, 'Y'},
|
||||
#endif
|
||||
{"keypad", 0, 0, 'K'},
|
||||
{0, 0, 0, 0}
|
||||
};
|
||||
#endif
|
||||
@ -2872,16 +2867,31 @@ int main(int argc, char *argv[])
|
||||
#endif /* ENABLE_NANORC */
|
||||
|
||||
#ifdef HAVE_GETOPT_LONG
|
||||
while ((optchr = getopt_long(argc, argv, "h?DFKMNQ:RST:VY:abcefgijklmo:pr:s:tvwxz",
|
||||
while ((optchr = getopt_long(argc, argv, "h?BDFKMNQ:RST:VY:abcefgijklmo:pr:s:tvwxz",
|
||||
long_options, &option_index)) != EOF) {
|
||||
#else
|
||||
while ((optchr =
|
||||
getopt(argc, argv, "h?DFKMNQ:RST:VY:abcefgijklmo:pr:s:tvwxz")) != EOF) {
|
||||
getopt(argc, argv, "h?BDFKMNQ:RST:VY:abcefgijklmo:pr:s:tvwxz")) != EOF) {
|
||||
#endif
|
||||
|
||||
switch (optchr) {
|
||||
|
||||
case 'h':
|
||||
case '?':
|
||||
usage();
|
||||
exit(0);
|
||||
case 'a':
|
||||
case 'b':
|
||||
case 'e':
|
||||
case 'f':
|
||||
case 'g':
|
||||
case 'j':
|
||||
/* Pico compatibility flags */
|
||||
break;
|
||||
#ifndef NANO_SMALL
|
||||
case 'B':
|
||||
SET(BACKUP_FILE);
|
||||
break;
|
||||
case 'D':
|
||||
SET(DOS_FILE);
|
||||
break;
|
||||
@ -2935,21 +2945,9 @@ int main(int argc, char *argv[])
|
||||
syntaxstr = mallocstrcpy(syntaxstr, optarg);
|
||||
break;
|
||||
#endif
|
||||
case 'a':
|
||||
case 'b':
|
||||
case 'e':
|
||||
case 'f':
|
||||
case 'g':
|
||||
case 'j':
|
||||
/* Pico compatibility flags */
|
||||
break;
|
||||
case 'c':
|
||||
SET(CONSTUPDATE);
|
||||
break;
|
||||
case 'h':
|
||||
case '?':
|
||||
usage();
|
||||
exit(0);
|
||||
#ifndef NANO_SMALL
|
||||
case 'i':
|
||||
SET(AUTOINDENT);
|
||||
@ -3026,7 +3024,6 @@ int main(int argc, char *argv[])
|
||||
usage();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* Clear the filename we'll be using */
|
||||
|
21
nano.h
21
nano.h
@ -36,6 +36,10 @@
|
||||
#define ISSET(bit) (flags & bit)
|
||||
#define TOGGLE(bit) flags ^= bit
|
||||
|
||||
#ifndef NANO_SMALL
|
||||
/* For the backup file copy ... */
|
||||
# define COPYFILEBLOCKSIZE 1024
|
||||
#endif
|
||||
|
||||
#ifdef USE_SLANG /* Slang support enabled */
|
||||
#include <slcurses.h>
|
||||
@ -50,6 +54,8 @@
|
||||
#include <libintl.h>
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include "config.h"
|
||||
|
||||
#if !defined(HAVE_SNPRINTF) || !defined(HAVE_VSNPRINTF)
|
||||
@ -79,6 +85,9 @@ typedef struct filestruct {
|
||||
#ifdef ENABLE_MULTIBUFFER
|
||||
typedef struct openfilestruct {
|
||||
char *filename;
|
||||
#ifndef NANO_SMALL
|
||||
struct stat originalfilestat;
|
||||
#endif
|
||||
struct openfilestruct *next; /* Next node */
|
||||
struct openfilestruct *prev; /* Previous node */
|
||||
struct filestruct *fileage; /* Current file */
|
||||
@ -190,6 +199,7 @@ typedef struct syntaxtype {
|
||||
#define DISABLE_CURPOS (1<<24) /* Damn, we still need it */
|
||||
#define ALT_KEYPAD (1<<25)
|
||||
#define NO_CONVERT (1<<26)
|
||||
#define BACKUP_FILE (1<<27)
|
||||
|
||||
/* Control key sequences, changing these would be very very bad */
|
||||
|
||||
@ -259,9 +269,7 @@ typedef struct syntaxtype {
|
||||
#define NANO_ALT_LCARAT '<'
|
||||
#define NANO_ALT_RCARAT '>'
|
||||
#define NANO_ALT_BRACKET ']'
|
||||
#ifndef NANO_SMALL
|
||||
# define NANO_ALT_SPACE ' '
|
||||
#endif
|
||||
#define NANO_ALT_SPACE ' '
|
||||
|
||||
/* Some semi-changeable keybindings; don't play with unless you're sure you
|
||||
know what you're doing */
|
||||
@ -325,10 +333,8 @@ know what you're doing */
|
||||
#define NANO_OPENNEXT_ALTKEY NANO_ALT_PERIOD
|
||||
#define NANO_BRACKET_KEY NANO_ALT_BRACKET
|
||||
#define NANO_EXTCMD_KEY NANO_CONTROL_X
|
||||
#ifndef NANO_SMALL
|
||||
# define NANO_NEXTWORD_KEY NANO_CONTROL_SPACE
|
||||
# define NANO_PREVWORD_KEY NANO_ALT_SPACE
|
||||
#endif
|
||||
#define NANO_NEXTWORD_KEY NANO_CONTROL_SPACE
|
||||
#define NANO_PREVWORD_KEY NANO_ALT_SPACE
|
||||
|
||||
#define TOGGLE_CONST_KEY NANO_ALT_C
|
||||
#define TOGGLE_AUTOINDENT_KEY NANO_ALT_I
|
||||
@ -346,6 +352,7 @@ know what you're doing */
|
||||
#define TOGGLE_MAC_KEY NANO_ALT_O
|
||||
#define TOGGLE_SMOOTH_KEY NANO_ALT_S
|
||||
#define TOGGLE_NOCONVERT_KEY NANO_ALT_N
|
||||
#define TOGGLE_BACKUP_KEY NANO_ALT_B
|
||||
|
||||
#define MAIN_VISIBLE 12
|
||||
|
||||
|
74
nano.texi
74
nano.texi
@ -9,7 +9,7 @@
|
||||
@smallbook
|
||||
@set EDITION 0.1
|
||||
@set VERSION 1.1.9
|
||||
@set UPDATED 4 Jan 2002
|
||||
@set UPDATED 27 Jun 2002
|
||||
|
||||
@dircategory Editors
|
||||
@direntry
|
||||
@ -106,13 +106,18 @@ Email bug reports to @email{nano@@nano-editor.org}.
|
||||
@section Command Line Options
|
||||
|
||||
@code{nano} takes the following options from the command line:
|
||||
|
||||
@table @code
|
||||
|
||||
@item -B, --backup
|
||||
When saving a file, back up the previous version of it to the current
|
||||
filename suffixed with a ~.
|
||||
|
||||
@item -D, --dos
|
||||
Write file in DOS format.
|
||||
|
||||
@item -F, --multibuffer
|
||||
Enable multiple file buffers.
|
||||
Enable multiple file buffers, if available.
|
||||
|
||||
@item -K, --keypad
|
||||
Do not use the ncurses keypad() call unless necessary. Try this flag if
|
||||
@ -140,6 +145,10 @@ Set the displayed tab length to [num] columns.
|
||||
@item -V, --version
|
||||
Print the version number and copyright and quit.
|
||||
|
||||
@item -Y, --syntax=[str]
|
||||
Specify a specific syntax highlighting from the .nanorc to use, if
|
||||
available.
|
||||
|
||||
@item -c, --const
|
||||
Constantly display the cursor position and line number on the statusbar.
|
||||
|
||||
@ -270,22 +279,22 @@ will display the current directory instead of the filename.
|
||||
@node The Statusbar, Shortcut Lists, The Titlebar, Editor Basics
|
||||
@section The Statusbar
|
||||
|
||||
The statusbar is located three lines from the bottom of the screen (or the
|
||||
bottom line in Expert Mode. @xref{Expert Mode}, for more info.
|
||||
The statusbar is located three lines from the bottom of the screen (or
|
||||
the bottom line in Expert Mode. @xref{Expert Mode}, for more info.
|
||||
|
||||
The Statusbar shows important and informational messages. Any error
|
||||
messages that occur from using the editor will appear on the statusbar.
|
||||
Any questions that are asked of the user will be asked on the statusbar,
|
||||
and any user input (search strings, file names, etc) will be input on the
|
||||
statusbar.
|
||||
and any user input (search strings, file names, etc) will be input on
|
||||
the statusbar.
|
||||
|
||||
@node Shortcut Lists, , The Statusbar, Editor Basics
|
||||
@section Shortcut Lists
|
||||
|
||||
The Shortcut Lists are the two lines at the bottom of the screen which show
|
||||
some of the more commonly used functions in the editor. The exact
|
||||
functions which are displayed depend on whether Pico Compatibility Mode mode
|
||||
is enabled. @xref{Pico Compatibility}, for more info.
|
||||
The Shortcut Lists are the two lines at the bottom of the screen which
|
||||
show some of the more commonly used functions in the editor. The exact
|
||||
functions which are displayed depend on whether Pico Compatibility Mode
|
||||
mode is enabled. @xref{Pico Compatibility}, for more info.
|
||||
|
||||
@node Online Help, Feature Toggles, Editor Basics, Top
|
||||
@chapter Online Help
|
||||
@ -302,25 +311,16 @@ and ^V (Page Down) keys. ^X exits the help system.
|
||||
Toggles allow you to change certain aspects of the editor that
|
||||
would normally be done via command line flags. They are invoked via
|
||||
certain Meta key sequenced. @xref{Special Functions}, for more info.
|
||||
The following toggles are available:
|
||||
The following global toggles are available:
|
||||
|
||||
@table @code
|
||||
|
||||
@item Case Sensitive Search Toggle (Meta-A)
|
||||
toggles case sensistive searching functionality on/off.
|
||||
|
||||
@item Backwards Search Toggle (Meta-B)
|
||||
toggles backwards searching fuctionality on/off.
|
||||
|
||||
@item Constant Update Toggle (Meta-C)
|
||||
toggles the -c (--const) command line flag.
|
||||
@item Backup File Toggle (Meta-B)
|
||||
toggles the -B (--backup) command line flag.
|
||||
|
||||
@item DOS Format Toggle (Meta-D)
|
||||
toggles the -D (--dos) command line flag.
|
||||
|
||||
@item Regular Expressions Toggle (Meta-E)
|
||||
toggles the -R (--regexp) command line flag.
|
||||
|
||||
@item Multiple Files Toggle (Meta-F)
|
||||
toggles the -F (--multibuffer) command line flag.
|
||||
|
||||
@ -365,21 +365,21 @@ changes buffer to next loaded file.
|
||||
@chapter The File Browser
|
||||
|
||||
When reading or writing files, pressing ^T will invoke the file browser.
|
||||
Here, one can navigate directories in a graphical manner in order to find
|
||||
the desired file.
|
||||
Here, one can navigate directories in a graphical manner in order to
|
||||
find the desired file.
|
||||
|
||||
Basic movement in the file browser is accomplished with he arrow keys
|
||||
and page up/down. The behavior of the enter (or 's') key varies by what
|
||||
is currently selected. If the currently selected object is a directory,
|
||||
the file browser will enter and display the contents of the directory. If
|
||||
the object is a file, this filename and path are copied to the statusbar
|
||||
and the file browser is exited.
|
||||
and page up/down. The behavior of the enter (or 's') key varies by what
|
||||
is currently selected. If the currently selected object is a directory,
|
||||
the file browser will enter and display the contents of the directory.
|
||||
If the object is a file, this filename and path are copied to the
|
||||
statusbar and the file browser is exited.
|
||||
|
||||
@node Pico Compatibility, Building and Configure Options, The File Browser, Top
|
||||
@chapter Pico Compatibility
|
||||
|
||||
Nano does not completely emulate Pico by default. The following differences
|
||||
apply to the default mode and Pico Compatibility mode:
|
||||
Nano does not completely emulate Pico by default. The following
|
||||
differences apply to the default mode and Pico Compatibility mode:
|
||||
|
||||
@table @code
|
||||
@item Displayed Shortcuts
|
||||
@ -466,24 +466,22 @@ Disables all word wrapping in the editor. This also eliminates the
|
||||
-w command line flag, as nonwrapping is then the default behavior.
|
||||
|
||||
@item --disable-mouse
|
||||
Disables all mouse functionality. This also disables the -m commands line
|
||||
Disables all mouse functionality. This also disables the -m command line
|
||||
flag which enables the mouse functions.
|
||||
|
||||
@item --disable-operatingdir
|
||||
Disables setting of operating directory. This also disables the -o command
|
||||
line flag.
|
||||
Disables setting of operating directory. This also disables the -o
|
||||
command line flag.
|
||||
|
||||
@item --disable-nls
|
||||
Disables Native Language support. This will make the available GNU nano
|
||||
translations unusable.
|
||||
|
||||
@item --with-slang
|
||||
Compiling GNU nano with Slang is supported, and will make the binary notably
|
||||
smaller than if compiled with ncurses or other curses libraries.
|
||||
Compiling GNU nano with Slang is supported, and will make the binary
|
||||
notably smaller than if compiled with ncurses or other curses libraries.
|
||||
|
||||
@end table
|
||||
|
||||
@contents
|
||||
@bye
|
||||
|
||||
|
||||
|
@ -4,74 +4,73 @@
|
||||
#
|
||||
# To make sure a value is not enabled, use "unset <option>"
|
||||
|
||||
# Use regular expressions by default
|
||||
# set regexp
|
||||
# Use auto-indentation
|
||||
# set autoindent
|
||||
|
||||
# Backup files to filename~
|
||||
# set backup
|
||||
|
||||
# Constantly update the cursor position
|
||||
# set const
|
||||
|
||||
# Show column position relative to the current line, not the whole file
|
||||
# set relative
|
||||
|
||||
# Use cut to end of line with ^K by default
|
||||
# set cut
|
||||
|
||||
# Use Auto-indentation
|
||||
# set autoindent
|
||||
# Use this value instead of the default
|
||||
# set fill -8
|
||||
|
||||
# Use alternate keypad routines
|
||||
# set keypad
|
||||
|
||||
# Allow multiple file buffers (using ^R inserts into separate buffer)
|
||||
# You must have configured with --enable-multibuffer or --enable-extra
|
||||
# for this to work
|
||||
#
|
||||
# set multibuffer
|
||||
|
||||
# Don't convert files from DOS/Mac format
|
||||
# set noconvert
|
||||
|
||||
# Don't follow symlinks when writing files
|
||||
# set nofollow
|
||||
|
||||
# Don't display the help lists at the bottom of the screen
|
||||
# set nohelp
|
||||
|
||||
# Don't wrap text at all
|
||||
# set nowrap
|
||||
|
||||
# Set operating directory (chroot of sorts)
|
||||
# set operatingdir "~"
|
||||
|
||||
# Use Pico Compatibility mode for the shortcut lists and search text
|
||||
# set pico
|
||||
|
||||
# Use this value instead of the default
|
||||
# set fill -8
|
||||
# Use this as the quoting string. You shouldn't need to change this,
|
||||
# but...... default "> "
|
||||
# set quotestr "// "
|
||||
|
||||
# Use this tab size instead of the default
|
||||
# set tabsize 4
|
||||
# Do regular expression searches by default
|
||||
# set regexp
|
||||
|
||||
# Use smooth scrolling as the default
|
||||
# set smooth
|
||||
|
||||
# Use this spelling checker instead of the default one
|
||||
# set speller aspell
|
||||
|
||||
# Allow nano to be suspended with ^Z
|
||||
# set suspend
|
||||
|
||||
# Use this tab size instead of the default
|
||||
# set tabsize 4
|
||||
|
||||
# Save automatically on exit, don't prompt
|
||||
# set tempfile
|
||||
|
||||
# Disallow file modification, why would you want this in an rc file? ;)
|
||||
# set view
|
||||
|
||||
# Don't wrap text at all
|
||||
# set nowrap
|
||||
|
||||
# Don't display the help lists at the bottom of the screen
|
||||
# set nohelp
|
||||
|
||||
# Allow nano to be suspended with ^Z
|
||||
# set suspend
|
||||
|
||||
# Use smooth scrolling as the default
|
||||
# set smooth
|
||||
|
||||
# Use alternate keypad routines
|
||||
# set keypad
|
||||
|
||||
# Don't convert files from DOS/Mac format
|
||||
# set noconvert
|
||||
|
||||
# Allow multiple file buffers (using ^R inserts into separate buffer)
|
||||
# You must have configured with --enable-multibuffer or --enable-extra for
|
||||
# this to work
|
||||
#
|
||||
# set multibuffer
|
||||
|
||||
# Use this as the quoting string. You shouldn't need to change this,
|
||||
# but...... default "> "
|
||||
# set quotestr "// "
|
||||
|
||||
#
|
||||
# Color setup
|
||||
# Format:
|
||||
# syntax "short description" ["filename regex" ...]
|
||||
@ -85,7 +84,7 @@
|
||||
# If your system supports transparency, not specifying a background
|
||||
# color will use a transparent color. If you don't want this, be sure
|
||||
# to set the background color to black or white.
|
||||
#
|
||||
|
||||
# syntax "c-file" ".*\.c" ".*\.h"
|
||||
# color red "\<[A-Z_]\{2,\}\>"
|
||||
# color green "\<float\>" "\<char\>" "\<int\>" "\<void\>"
|
||||
@ -94,14 +93,15 @@
|
||||
# color brightcyan "#define" "#include" "#ifn*def" "#endif"
|
||||
# color brightcyan "#elif" "#else" "#if"
|
||||
|
||||
# You will in general want your comments and strings to come last, becase
|
||||
# syntax highlighting rules will be applied in the order they are read in
|
||||
# You will in general want your comments and strings to come last,
|
||||
# because syntax highlighting rules will be applied in the order they are
|
||||
# read in
|
||||
|
||||
# color brightyellow "<[^= ]*>" "\"[^"]*\""
|
||||
# color brightblue "//.*"
|
||||
# color brightblue start="/\*.*" end="\*/"
|
||||
|
||||
# For this you will probably want to set your editor to "nano -Y mutt"
|
||||
#
|
||||
|
||||
# syntax "mutt"
|
||||
# color green "^>.*"
|
||||
|
1
proto.h
1
proto.h
@ -45,6 +45,7 @@ extern char *quotestr;
|
||||
|
||||
extern WINDOW *edit, *topwin, *bottomwin;
|
||||
extern char *filename;
|
||||
extern struct stat originalfilestat;
|
||||
extern char *answer;
|
||||
extern char *hblank, *help_text;
|
||||
extern char *last_search;
|
||||
|
64
rcfile.c
64
rcfile.c
@ -44,27 +44,48 @@
|
||||
|
||||
/* Static stuff for the nanorc file */
|
||||
rcoption rcopts[] = {
|
||||
{"regexp", USE_REGEXP},
|
||||
{"const", CONSTUPDATE},
|
||||
#ifndef NANO_SMALL
|
||||
{"autoindent", AUTOINDENT},
|
||||
{"backup", BACKUP_FILE},
|
||||
#endif
|
||||
{"const", CONSTUPDATE},
|
||||
#ifndef NANO_SMALL
|
||||
{"cut", CUT_TO_END},
|
||||
{"nofollow", FOLLOW_SYMLINKS},
|
||||
{"mouse", USE_MOUSE},
|
||||
{"operatingdir", 0},
|
||||
{"pico", PICO_MODE},
|
||||
{"tabsize", 0},
|
||||
#endif
|
||||
{"fill", 0},
|
||||
{"keypad", ALT_KEYPAD},
|
||||
#ifndef DISABLE_MOUSE
|
||||
{"mouse", USE_MOUSE},
|
||||
#endif
|
||||
#ifdef ENABLE_MULTIBUFFER
|
||||
{"multibuffer", MULTIBUFFER},
|
||||
#endif
|
||||
#ifndef NANO_SMALL
|
||||
{"noconvert", NO_CONVERT},
|
||||
#endif
|
||||
{"nofollow", FOLLOW_SYMLINKS},
|
||||
{"nohelp", NO_HELP},
|
||||
{"nowrap", NO_WRAP},
|
||||
#ifndef DISABLE_OPERATINGDIR
|
||||
{"operatingdir", 0},
|
||||
#endif
|
||||
{"pico", PICO_MODE},
|
||||
#ifndef NANO_SMALL
|
||||
{"quotestr", 0},
|
||||
#endif
|
||||
#ifdef HAVE_REGEX_H
|
||||
{"regexp", USE_REGEXP},
|
||||
#endif
|
||||
#ifndef NANO_SMALL
|
||||
{"smooth", SMOOTHSCROLL},
|
||||
#endif
|
||||
#ifndef DISABLE_SPELLER
|
||||
{"speller", 0},
|
||||
#endif
|
||||
{"suspend", SUSPEND},
|
||||
{"tabsize", 0},
|
||||
{"tempfile", TEMP_OPT},
|
||||
{"view", VIEW_MODE},
|
||||
{"nowrap", NO_WRAP},
|
||||
{"nohelp", NO_HELP},
|
||||
{"suspend", SUSPEND},
|
||||
{"multibuffer", MULTIBUFFER},
|
||||
{"smooth", SMOOTHSCROLL},
|
||||
{"keypad", ALT_KEYPAD},
|
||||
{"noconvert", NO_CONVERT},
|
||||
{"quotestr", 0},
|
||||
{"", 0}
|
||||
};
|
||||
|
||||
@ -144,6 +165,8 @@ char *parse_next_regex(char *ptr)
|
||||
|
||||
}
|
||||
|
||||
#ifdef ENABLE_COLOR
|
||||
|
||||
int colortoint(char *colorname, int *bright)
|
||||
{
|
||||
int mcolor = 0;
|
||||
@ -183,8 +206,6 @@ int colortoint(char *colorname, int *bright)
|
||||
return mcolor;
|
||||
}
|
||||
|
||||
|
||||
#ifdef ENABLE_COLOR
|
||||
void parse_syntax(FILE * rcstream, char *buf, char *ptr)
|
||||
{
|
||||
syntaxtype *tmpsyntax = NULL;
|
||||
@ -268,8 +289,7 @@ void parse_syntax(FILE * rcstream, char *buf, char *ptr)
|
||||
exttmp->next->val = mallocstrcpy(exttmp->next->val, fileregptr);
|
||||
exttmp->next->next = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/* Parse the color stuff into the colorstrings array */
|
||||
@ -399,7 +419,8 @@ void parse_colors(FILE * rcstream, char *buf, char *ptr)
|
||||
|
||||
}
|
||||
}
|
||||
#endif /* ENABLE_COLOR */
|
||||
|
||||
#endif /* ENABLE_COLOR */
|
||||
|
||||
/* Parse the RC file, once it has been opened successfully */
|
||||
void parse_rcfile(FILE * rcstream)
|
||||
@ -597,5 +618,4 @@ void do_rcfile(void)
|
||||
|
||||
}
|
||||
|
||||
|
||||
#endif /* ENABLE_NANORC */
|
||||
#endif /* ENABLE_NANORC */
|
||||
|
18
search.c
18
search.c
@ -75,9 +75,6 @@ int search_init(int replacing)
|
||||
int i = 0;
|
||||
char *buf;
|
||||
static char *backupstring = NULL;
|
||||
#ifndef NANO_SMALL
|
||||
toggle *t;
|
||||
#endif
|
||||
|
||||
search_init_globals();
|
||||
|
||||
@ -180,20 +177,19 @@ int search_init(int replacing)
|
||||
last_replace[0] = '\0';
|
||||
break;
|
||||
case TOGGLE_CASE_KEY:
|
||||
TOGGLE(CASE_SENSITIVE);
|
||||
goto string_reinit;
|
||||
case TOGGLE_BACKWARDS_KEY:
|
||||
TOGGLE(REVERSE_SEARCH);
|
||||
goto string_reinit;
|
||||
#ifdef HAVE_REGEX_H
|
||||
case TOGGLE_REGEXP_KEY:
|
||||
TOGGLE(USE_REGEXP);
|
||||
#endif
|
||||
string_reinit:
|
||||
free(backupstring);
|
||||
backupstring = NULL;
|
||||
backupstring = mallocstrcpy(backupstring, answer);
|
||||
|
||||
#ifndef NANO_SMALL
|
||||
for (t = toggles; t != NULL; t = t->next)
|
||||
if (i == t->val)
|
||||
TOGGLE(t->flag);
|
||||
#endif
|
||||
|
||||
return 1;
|
||||
case NANO_OTHERSEARCH_KEY:
|
||||
backupstring = mallocstrcpy(backupstring, answer);
|
||||
@ -859,7 +855,7 @@ int do_gotoline_void(void)
|
||||
return do_gotoline(0, 0);
|
||||
}
|
||||
|
||||
#if (defined ENABLE_MULTIBUFFER || !defined DISABLE_SPELLER)
|
||||
#if defined(ENABLE_MULTIBUFFER) || !defined(DISABLE_SPELLER)
|
||||
void do_gotopos(int line, int pos_x, int pos_y, int pos_placewewant)
|
||||
{
|
||||
/* since do_gotoline() resets the x-coordinate but not the
|
||||
|
4
winio.c
4
winio.c
@ -1920,7 +1920,7 @@ void dump_buffer(filestruct * inptr)
|
||||
fflush(stderr);
|
||||
fileptr = fileptr->next;
|
||||
}
|
||||
#endif /* DEBUG */
|
||||
#endif /* DEBUG */
|
||||
}
|
||||
|
||||
void dump_buffer_reverse(filestruct * inptr)
|
||||
@ -1934,7 +1934,7 @@ void dump_buffer_reverse(filestruct * inptr)
|
||||
fflush(stderr);
|
||||
fileptr = fileptr->prev;
|
||||
}
|
||||
#endif /* DEBUG */
|
||||
#endif /* DEBUG */
|
||||
}
|
||||
|
||||
/* Fix editbot, based on the assumption that edittop is correct */
|
||||
|
Загрузка…
Ссылка в новой задаче
Block a user