mirror of git://git.sv.gnu.org/nano.git
Everything from DB's patch that makes any sense to me
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1241 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
This commit is contained in:
parent
c46337b9c7
commit
dffa207320
105
ChangeLog
105
ChangeLog
|
@ -90,10 +90,36 @@ CVS Code -
|
|||
- Fix minor bugs with importing certain text files in Mac
|
||||
format. (DLR)
|
||||
- files.c:
|
||||
append_slash_if_dir(), input_tab()
|
||||
- Changed variable names: lastWasTab -> lastwastab, matchBuf ->
|
||||
matchbuf. (DLR)
|
||||
check_operating_dir()
|
||||
- Memory leak fix. (David Benbennick)
|
||||
check_writable_directory()
|
||||
- Optimizations (David Benbennick).
|
||||
cwd_tab_completion()
|
||||
- Changed a variable name: dirName -> dirname. (DLR)
|
||||
do_browser()
|
||||
- Optimizations and mouse selection fixes (David Benbennick).
|
||||
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)
|
||||
do_insertfile()
|
||||
- Memory leak fix (accidentally dropped 1st time).
|
||||
(David Benbennick).
|
||||
get_full_path()
|
||||
- Memory leak fix. Also, make it properly interpret ~/ notation
|
||||
so, among other things, the option "--operatingdir ~" works.
|
||||
(David Benbennick)
|
||||
- More optimizations (David Benbennick).
|
||||
new_file()
|
||||
- Make sure current_x is zero; this fixes a problem where the
|
||||
current cursor position wasn't reset when reading in a file in
|
||||
multibuffer mode. (David Benbennick)
|
||||
- Use make_new_node rather than setting up fileage by hand
|
||||
(David Benbennick).
|
||||
read_file(), read_line()
|
||||
- Rework to properly handle nulls in the input file, fix
|
||||
detection of binary files to properly mark a file as binary if
|
||||
|
@ -108,24 +134,7 @@ 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)
|
||||
do_insertfile()
|
||||
- Memory leak fix. (David Benbennick)
|
||||
get_full_path()
|
||||
- Memory leak fix. Also, make it properly interpret ~/ notation
|
||||
so, among other things, the option "--operatingdir ~" works.
|
||||
(David Benbennick)
|
||||
check_operating_dir()
|
||||
- Memory leak fix. (David Benbennick)
|
||||
cwd_tab_completion()
|
||||
- Changed a variable name: dirName -> dirname. (DLR)
|
||||
append_slash_if_dir(), input_tab()
|
||||
- Changed variable names: lastWasTab -> lastwastab, matchBuf ->
|
||||
matchbuf. (DLR)
|
||||
- Optimizations (David Benbennick).
|
||||
- global.c:
|
||||
free_toggles()
|
||||
- Only include if we're not using tiny mode. (David Benbennick)
|
||||
|
@ -150,39 +159,43 @@ CVS Code -
|
|||
- nanorc.sample:
|
||||
- Put in much less crappy example regex rules for c-file.
|
||||
- nano.c:
|
||||
clear_filename()
|
||||
- Remove this function, as it has unneeded functionality, is
|
||||
short enough to be inlined, and is only called in two spots
|
||||
anyway. (DLR)
|
||||
die()
|
||||
- Rework slightly to remove redundant printing of last message
|
||||
and print all messages after resetting the terminal. (DLR)
|
||||
do_backspace()
|
||||
- Make sure placewewant is set properly, and that the mark is
|
||||
moved backwards. (David Benbennick)
|
||||
do_char()
|
||||
- Fix a problem where, if ENABLE_COLOR wasn't used, typing
|
||||
characters on a marked line before the beginning of the mark
|
||||
would make the highlight short by one. (David Benbennick)
|
||||
die()
|
||||
- Rework slightly to remove redundant printing of last message
|
||||
and print all messages after resetting the terminal. (DLR)
|
||||
global_init()
|
||||
- Call die_too_small() when fill is 0. (DLR)
|
||||
usage()
|
||||
- List the options that are ignored for the purpose of Pico
|
||||
compatibility, and make some minor consistency fixes. (DLR)
|
||||
do_cont()
|
||||
- Handle the case where the window was resized while we were
|
||||
stopped. (David Benbennick)
|
||||
do_delete()
|
||||
- Make sure placewewant is set properly, to match Pico's
|
||||
behavior. (DLR)
|
||||
do_int_spell(), do_alt_spell()
|
||||
- Rework to save the marked selection before doing spell checking
|
||||
and restore it afterward. (DLR)
|
||||
do_next_word(), do_prev_word()
|
||||
- Fix a problem where highlighting isn't done properly after
|
||||
calling either of these, and another problem where the cursor
|
||||
would move back too far in certain cases with do_prev_word().
|
||||
(David Benbennick)
|
||||
do_backspace()
|
||||
- Make sure placewewant is set properly, and that the mark is
|
||||
moved backwards. (David Benbennick)
|
||||
do_delete()
|
||||
- Make sure placewewant is set properly, to match Pico's
|
||||
behavior. (DLR)
|
||||
clear_filename()
|
||||
- Remove this function, as it has unneeded functionality, is
|
||||
short enough to be inlined, and is only called in two spots
|
||||
anyway. (DLR)
|
||||
do_int_spell(), do_alt_spell()
|
||||
- Rework to save the marked selection before doing spell checking
|
||||
and restore it afterward. (DLR)
|
||||
do_cont()
|
||||
- Handle the case where the window was resized while we were
|
||||
stopped. (David Benbennick)
|
||||
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)
|
||||
do_wrap()
|
||||
- fill fixes and 'two short word wrap' bug (David Benbennick).
|
||||
global_init()
|
||||
- Call die_too_small() when fill is 0. (DLR)
|
||||
handle_sigwinch()
|
||||
- Make sure we adjust fill when the window is resized. (David
|
||||
Benbennick)
|
||||
|
@ -190,11 +203,6 @@ CVS Code -
|
|||
help_init()
|
||||
- Since the return value of snprintf() isn't well defined, use
|
||||
sprintf() instead. (David Benbennick)
|
||||
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.
|
||||
|
@ -211,6 +219,9 @@ CVS Code -
|
|||
can be treated separately from -r/-T string. (DLR)
|
||||
- Fix so that Esc-Esc-Space is properly treated as Ctrl-Space.
|
||||
(DLR)
|
||||
usage()
|
||||
- List the options that are ignored for the purpose of Pico
|
||||
compatibility, and make some minor consistency fixes. (DLR)
|
||||
- nano.h:
|
||||
- Fix some space/tab formatting for flags (DLR).
|
||||
- proto.h:
|
||||
|
|
160
files.c
160
files.c
|
@ -72,16 +72,14 @@ void load_file(int update)
|
|||
/* What happens when there is no file to open? aiee! */
|
||||
void new_file(void)
|
||||
{
|
||||
fileage = nmalloc(sizeof(filestruct));
|
||||
fileage = make_new_node(NULL);
|
||||
fileage->data = charalloc(1);
|
||||
fileage->data[0] = '\0';
|
||||
fileage->prev = NULL;
|
||||
fileage->next = NULL;
|
||||
fileage->lineno = 1;
|
||||
filebot = fileage;
|
||||
edittop = fileage;
|
||||
editbot = fileage;
|
||||
current = fileage;
|
||||
current_x = 0;
|
||||
totlines = 1;
|
||||
totsize = 0;
|
||||
|
||||
|
@ -258,7 +256,6 @@ int read_file(FILE *f, const char *filename, int quiet)
|
|||
|
||||
/* Did we not get a newline but still have stuff to do? */
|
||||
if (len > 0) {
|
||||
|
||||
#ifndef NANO_SMALL
|
||||
/* If file conversion isn't disabled, the last character in
|
||||
this file is a CR and fileformat isn't set yet, make sure
|
||||
|
@ -433,18 +430,14 @@ int do_insertfile(int loading_file)
|
|||
#endif
|
||||
|
||||
#ifndef DISABLE_OPERATINGDIR
|
||||
if (operating_dir && (strcmp(operating_dir, "."))) {
|
||||
if (operating_dir && strcmp(operating_dir, "."))
|
||||
i = statusq(1, insertfile_list, "", _("File to insert [from %s] "),
|
||||
operating_dir);
|
||||
} else {
|
||||
#endif
|
||||
i = statusq(1, insertfile_list, "", _("File to insert [from ./] "));
|
||||
#ifndef DISABLE_OPERATINGDIR
|
||||
}
|
||||
else
|
||||
#endif
|
||||
i = statusq(1, insertfile_list, "", _("File to insert [from ./] "));
|
||||
|
||||
if (i != -1) {
|
||||
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, _("filename is %s\n"), answer);
|
||||
#endif
|
||||
|
@ -457,28 +450,27 @@ int do_insertfile(int loading_file)
|
|||
|
||||
#ifndef DISABLE_BROWSER
|
||||
if (i == NANO_TOFILES_KEY) {
|
||||
|
||||
char *tmp = do_browse_from(realname);
|
||||
|
||||
#if !defined(DISABLE_HELP) || !defined(DISABLE_MOUSE)
|
||||
currshortcut = insertfile_list;
|
||||
#endif
|
||||
|
||||
#ifdef DISABLE_TABCOMP
|
||||
realname = NULL;
|
||||
#endif
|
||||
if (tmp != NULL)
|
||||
realname = mallocstrcpy(realname, tmp);
|
||||
else
|
||||
if (tmp != NULL) {
|
||||
free(realname);
|
||||
realname = tmp;
|
||||
} else
|
||||
return do_insertfile(loading_file);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef DISABLE_OPERATINGDIR
|
||||
if (operating_dir) {
|
||||
if (check_operating_dir(realname, 0)) {
|
||||
statusbar(_("Can't insert file from outside of %s"), operating_dir);
|
||||
return 0;
|
||||
}
|
||||
if (operating_dir && check_operating_dir(realname, 0)) {
|
||||
statusbar(_("Can't insert file from outside of %s"),
|
||||
operating_dir);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -497,10 +489,8 @@ int do_insertfile(int loading_file)
|
|||
|
||||
#ifdef ENABLE_MULTIBUFFER
|
||||
if (loading_file) {
|
||||
|
||||
/* update the current entry in the open_files structure */
|
||||
add_open_file(1);
|
||||
|
||||
new_file();
|
||||
UNSET(MODIFIED);
|
||||
#ifndef NANO_SMALL
|
||||
|
@ -510,14 +500,11 @@ int do_insertfile(int loading_file)
|
|||
#endif
|
||||
|
||||
#ifndef NANO_SMALL
|
||||
if (i == NANO_EXTCMD_KEY) {
|
||||
if (i == NANO_EXTCMD_KEY)
|
||||
i = open_pipe(answer);
|
||||
}
|
||||
else
|
||||
#endif /* NANO_SMALL */
|
||||
{
|
||||
i = open_file(realname, 1, loading_file);
|
||||
}
|
||||
|
||||
#ifdef ENABLE_MULTIBUFFER
|
||||
if (loading_file)
|
||||
|
@ -535,7 +522,6 @@ int do_insertfile(int loading_file)
|
|||
load_file(0);
|
||||
else
|
||||
#endif
|
||||
|
||||
set_modified();
|
||||
|
||||
/* Here we want to rebuild the edit window */
|
||||
|
@ -990,11 +976,12 @@ int close_open_file(void)
|
|||
* yet on disk); it is not done if the relative path doesn't exist (since
|
||||
* the first call to chdir() will fail then).
|
||||
*/
|
||||
char *get_full_path(const char *origpath)
|
||||
char *get_full_path(char *origpath)
|
||||
{
|
||||
char *newpath = NULL, *last_slash, *d_here, *d_there, *d_there_file, tmp;
|
||||
int path_only, last_slash_index;
|
||||
struct stat fileinfo;
|
||||
char *expanded_origpath;
|
||||
|
||||
/* first, get the current directory, and tack a slash onto the end of
|
||||
it, unless it turns out to be "/", in which case leave it alone */
|
||||
|
@ -1017,21 +1004,13 @@ char *get_full_path(const char *origpath)
|
|||
a new file that hasn't been saved to disk yet (i. e. set
|
||||
path_only to 0); if stat() succeeds, set path_only to 0 if
|
||||
origpath doesn't refer to a directory, or to 1 if it does */
|
||||
path_only = stat(origpath, &fileinfo);
|
||||
if (path_only == -1)
|
||||
path_only = 0;
|
||||
else {
|
||||
if (S_ISDIR(fileinfo.st_mode))
|
||||
path_only = 1;
|
||||
else
|
||||
path_only = 0;
|
||||
}
|
||||
path_only = !stat(origpath, &fileinfo) && S_ISDIR(fileinfo.st_mode);
|
||||
|
||||
expanded_origpath = real_dir_from_tilde(origpath);
|
||||
/* save the value of origpath in both d_there and d_there_file */
|
||||
d_there = charalloc(strlen(origpath) + 1);
|
||||
d_there_file = charalloc(strlen(origpath) + 1);
|
||||
strcpy(d_there, origpath);
|
||||
strcpy(d_there_file, origpath);
|
||||
d_there = mallocstrcpy(NULL, expanded_origpath);
|
||||
d_there_file = mallocstrcpy(NULL, expanded_origpath);
|
||||
free(expanded_origpath);
|
||||
|
||||
/* if we have a path but no filename, tack slashes onto the ends
|
||||
of both d_there and d_there_file, if they don't end in slashes
|
||||
|
@ -1051,13 +1030,9 @@ char *get_full_path(const char *origpath)
|
|||
|
||||
/* if we didn't find one, copy d_here into d_there; all data is
|
||||
then set up */
|
||||
if (!last_slash) {
|
||||
d_there = nrealloc(d_there, strlen(d_here) + 1);
|
||||
strcpy(d_there, d_here);
|
||||
}
|
||||
|
||||
if (!last_slash)
|
||||
d_there = mallocstrcpy(d_there, d_here);
|
||||
else {
|
||||
|
||||
/* otherwise, remove all non-path elements from d_there
|
||||
(i. e. everything after the last slash) */
|
||||
last_slash_index = strlen(d_there) - strlen(last_slash);
|
||||
|
@ -1075,7 +1050,6 @@ char *get_full_path(const char *origpath)
|
|||
|
||||
/* now go to the path specified in d_there */
|
||||
if (chdir(d_there) != -1) {
|
||||
|
||||
/* get the full pathname, and save it back in d_there,
|
||||
tacking a slash on the end if we have a path but no
|
||||
filename; if the saving fails, get out */
|
||||
|
@ -1138,7 +1112,7 @@ char *get_full_path(const char *origpath)
|
|||
* get_full_path()). On error, if the path doesn't reference a
|
||||
* directory, or if the directory isn't writable, it returns NULL.
|
||||
*/
|
||||
char *check_writable_directory(const char *path) {
|
||||
char *check_writable_directory(char *path) {
|
||||
|
||||
char *full_path = get_full_path(path);
|
||||
int writable;
|
||||
|
@ -1150,11 +1124,7 @@ char *check_writable_directory(const char *path) {
|
|||
|
||||
/* otherwise, stat() the full path to see if it's writable by the
|
||||
user; set writable to 1 if it is, or 0 if it isn't */
|
||||
stat(full_path, &fileinfo);
|
||||
if (fileinfo.st_mode & S_IWUSR)
|
||||
writable = 1;
|
||||
else
|
||||
writable = 0;
|
||||
writable = !stat(full_path, &fileinfo) && (fileinfo.st_mode & S_IWUSR);
|
||||
|
||||
/* if the full path doesn't end in a slash (meaning get_full_path()
|
||||
found that it isn't a directory) or isn't writable, free full_path
|
||||
|
@ -1280,6 +1250,7 @@ int check_operating_dir(char *currpath, int allow_tabcomp)
|
|||
/* if the operating directory is "/", that's the same as having no
|
||||
operating directory, so discard it and get out */
|
||||
if (!strcmp(operating_dir, "/")) {
|
||||
free(operating_dir);
|
||||
operating_dir = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
@ -1294,6 +1265,7 @@ int check_operating_dir(char *currpath, int allow_tabcomp)
|
|||
|
||||
/* if get_full_path() failed, discard the operating directory */
|
||||
if (!full_operating_dir) {
|
||||
free(operating_dir);
|
||||
operating_dir = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
@ -1302,6 +1274,8 @@ int check_operating_dir(char *currpath, int allow_tabcomp)
|
|||
having no operating directory, so discard it and get out */
|
||||
if (!strcmp(full_operating_dir, "/")) {
|
||||
free(full_operating_dir);
|
||||
full_operating_dir = NULL;
|
||||
free(operating_dir);
|
||||
operating_dir = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
@ -2567,42 +2541,41 @@ char *do_browser(char *inpath)
|
|||
col = 0;
|
||||
|
||||
/* Compute line number we're on now, so we don't divide by zero later */
|
||||
if (width == 0)
|
||||
lineno = selected;
|
||||
else
|
||||
lineno = selected / width;
|
||||
lineno = selected;
|
||||
if (width != 0)
|
||||
lineno /= width;
|
||||
|
||||
switch (kbinput) {
|
||||
|
||||
#ifndef DISABLE_MOUSE
|
||||
#ifdef NCURSES_MOUSE_VERSION
|
||||
case KEY_MOUSE:
|
||||
case KEY_MOUSE:
|
||||
if (getmouse(&mevent) == ERR)
|
||||
return retval;
|
||||
return retval;
|
||||
|
||||
/* If they clicked in the edit window, they probably clicked
|
||||
on a file */
|
||||
if (wenclose(edit, mevent.y, mevent.x)) {
|
||||
if (wenclose(edit, mevent.y, mevent.x)) {
|
||||
int selectedbackup = selected;
|
||||
|
||||
mevent.y -= 2;
|
||||
|
||||
/* If we're on line 0, don't toy with finding out what
|
||||
page we're on */
|
||||
if (lineno / editwinrows == 0)
|
||||
selected = mevent.y * width + mevent.x / longest;
|
||||
else
|
||||
selected = (lineno / editwinrows) * editwinrows * width
|
||||
+ mevent.y * width + mevent.x / longest;
|
||||
/* Longest is the width of each column. There are two
|
||||
* spaces between each column. */
|
||||
selected = (lineno / 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 where we did last time, select this name! */
|
||||
if (selected > numents - 1)
|
||||
selected = numents - 1;
|
||||
else if (selectedbackup == selected) {
|
||||
else if (selectedbackup == selected)
|
||||
ungetch('s'); /* Unget the 'select' key */
|
||||
break;
|
||||
}
|
||||
} else /* Must be clicking a shortcut */
|
||||
do_mouse();
|
||||
|
||||
|
@ -2639,16 +2612,7 @@ char *do_browser(char *inpath)
|
|||
case NANO_PREVPAGE_FKEY:
|
||||
case KEY_PPAGE:
|
||||
case '-':
|
||||
|
||||
if (lineno % editwinrows == 0) {
|
||||
if (selected - (editwinrows * width) >= 0)
|
||||
selected -= editwinrows * width;
|
||||
else
|
||||
selected = 0;
|
||||
}
|
||||
else if (selected - (editwinrows +
|
||||
lineno % editwinrows) * width >= 0)
|
||||
|
||||
if (selected >= (editwinrows + lineno % editwinrows) * width)
|
||||
selected -= (editwinrows + lineno % editwinrows) * width;
|
||||
else
|
||||
selected = 0;
|
||||
|
@ -2657,16 +2621,8 @@ char *do_browser(char *inpath)
|
|||
case NANO_NEXTPAGE_FKEY:
|
||||
case KEY_NPAGE:
|
||||
case ' ':
|
||||
if (lineno % editwinrows == 0) {
|
||||
if (selected + (editwinrows * width) <= numents - 1)
|
||||
selected += editwinrows * width;
|
||||
else
|
||||
selected = numents - 1;
|
||||
}
|
||||
else if (selected + (editwinrows -
|
||||
lineno % editwinrows) * width <= numents - 1)
|
||||
selected += (editwinrows - lineno % editwinrows) * width;
|
||||
else
|
||||
selected += (editwinrows - lineno % editwinrows) * width;
|
||||
if (selected >= numents)
|
||||
selected = numents - 1;
|
||||
break;
|
||||
case NANO_HELP_KEY:
|
||||
|
@ -2677,7 +2633,6 @@ char *do_browser(char *inpath)
|
|||
case NANO_ENTER_KEY:
|
||||
case 's': /* More Pico compatibility */
|
||||
case 'S':
|
||||
|
||||
/* You can't cd up from / */
|
||||
if (!strcmp(filelist[selected], "/..") && !strcmp(path, "/")) {
|
||||
statusbar(_("Can't move up a directory"));
|
||||
|
@ -2767,9 +2722,8 @@ char *do_browser(char *inpath)
|
|||
}
|
||||
|
||||
if (answer[0] != '/') {
|
||||
char *saveanswer = NULL;
|
||||
char *saveanswer = mallocstrcpy(NULL, answer);
|
||||
|
||||
saveanswer = mallocstrcpy(saveanswer, answer);
|
||||
answer = nrealloc(answer, strlen(path) + strlen(saveanswer) + 2);
|
||||
sprintf(answer, "%s/%s", path, saveanswer);
|
||||
free(saveanswer);
|
||||
|
@ -2793,8 +2747,8 @@ char *do_browser(char *inpath)
|
|||
case 'E':
|
||||
case NANO_CANCEL_KEY:
|
||||
case NANO_EXIT_FKEY:
|
||||
abort = 1;
|
||||
break;
|
||||
abort = 1;
|
||||
break;
|
||||
}
|
||||
if (abort)
|
||||
break;
|
||||
|
@ -2846,13 +2800,11 @@ char *do_browser(char *inpath)
|
|||
}
|
||||
|
||||
/* Hilight the currently selected file/dir */
|
||||
if (j == selected) {
|
||||
if (j == selected)
|
||||
wattron(edit, A_REVERSE);
|
||||
}
|
||||
waddnstr(edit, foo, strlen(foo));
|
||||
if (j == selected) {
|
||||
waddstr(edit, foo);
|
||||
if (j == selected)
|
||||
wattroff(edit, A_REVERSE);
|
||||
}
|
||||
|
||||
/* And add some space between the cols */
|
||||
waddstr(edit, " ");
|
||||
|
@ -2860,7 +2812,7 @@ char *do_browser(char *inpath)
|
|||
|
||||
/* And if the next entry isn't going to fit on the
|
||||
line, move to the next one */
|
||||
if (col > (COLS - longest)) {
|
||||
if (col > COLS - longest) {
|
||||
editline++;
|
||||
wmove(edit, editline, 0);
|
||||
col = 0;
|
||||
|
|
19
nano.c
19
nano.c
|
@ -212,7 +212,7 @@ static void global_init(int save_cutbuffer)
|
|||
|
||||
#ifndef DISABLE_WRAPJUSTIFY
|
||||
fill = wrap_at;
|
||||
if (fill < 0)
|
||||
if (fill <= 0)
|
||||
fill += COLS;
|
||||
if (fill < MIN_FILL_LENGTH)
|
||||
die_too_small();
|
||||
|
@ -573,7 +573,7 @@ void do_char(char ch)
|
|||
do_right();
|
||||
|
||||
#ifndef DISABLE_WRAPPING
|
||||
if (!ISSET(NO_WRAP) && (ch != '\t'))
|
||||
if (!ISSET(NO_WRAP) && ch != '\t')
|
||||
refresh = do_wrap(current);
|
||||
#endif
|
||||
|
||||
|
@ -841,7 +841,7 @@ int do_wrap(filestruct *inptr)
|
|||
wrap_loc = i;
|
||||
}
|
||||
}
|
||||
if (wrap_loc < 0 || wrap_loc == (len - 1))
|
||||
if (wrap_loc < 0 || wrap_loc == len - 1 || i == len)
|
||||
return 0;
|
||||
|
||||
/* Step 2, making the new wrap line. It will consist of indentation +
|
||||
|
@ -959,11 +959,7 @@ int do_wrap(filestruct *inptr)
|
|||
* right. */
|
||||
if (mark_beginbuf == inptr && mark_beginx > wrap_loc) {
|
||||
mark_beginbuf = inptr->next;
|
||||
mark_beginx -=
|
||||
#ifndef NANO_SMALL
|
||||
-indent_len +
|
||||
#endif
|
||||
wrap_loc + 1;
|
||||
mark_beginx -= wrap_loc - indent_len + 1;
|
||||
} else if (wrapping && mark_beginbuf == inptr->next)
|
||||
mark_beginx += after_break_len;
|
||||
#endif /* !NANO_SMALL */
|
||||
|
@ -1780,7 +1776,7 @@ void handle_sigwinch(int s)
|
|||
|
||||
#ifndef DISABLE_WRAPJUSTIFY
|
||||
fill = wrap_at;
|
||||
if (fill < 0)
|
||||
if (fill <= 0)
|
||||
fill += COLS;
|
||||
if (fill < MIN_FILL_LENGTH)
|
||||
die_too_small();
|
||||
|
@ -1929,7 +1925,8 @@ int do_tab(void)
|
|||
return 1;
|
||||
}
|
||||
|
||||
#if !defined(DISABLE_WRAPJUSTIFY) && !defined(NANO_SMALL)
|
||||
#if !defined(DISABLE_WRAPPING) && !defined(NANO_SMALL) || \
|
||||
!defined(DISABLE_JUSTIFY)
|
||||
/* The "indentation" of a line is the white-space between the quote part
|
||||
* and the non-white-space of the line. */
|
||||
size_t indent_length(const char *line) {
|
||||
|
@ -1942,7 +1939,7 @@ size_t indent_length(const char *line) {
|
|||
}
|
||||
return len;
|
||||
}
|
||||
#endif /* !DISABLE_WRAPJUSTIFY && !NANO_SMALL */
|
||||
#endif /* !DISABLE_WRAPPING && !NANO_SMALL || !DISABLE_JUSTIFY */
|
||||
|
||||
#ifndef DISABLE_JUSTIFY
|
||||
/* justify_format() replaces Tab by Space and multiple spaces by 1 (except
|
||||
|
|
Loading…
Reference in New Issue