make current_x a size_t instead of an int
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2034 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Этот коммит содержится в:
родитель
59f5e04fa8
Коммит
7a97e18667
@ -89,6 +89,10 @@ CVS code -
|
|||||||
- When saving or changing file positions, be sure not to ignore
|
- When saving or changing file positions, be sure not to ignore
|
||||||
placewewant. Changes to do_int_spell_fix(), findnextstr(),
|
placewewant. Changes to do_int_spell_fix(), findnextstr(),
|
||||||
do_replace_loop(), and do_replace(). (DLR)
|
do_replace_loop(), and do_replace(). (DLR)
|
||||||
|
- Convert current_x to a size_t, and convert some functions that
|
||||||
|
use it as a parameter to use size_t as well. Also change some
|
||||||
|
current_x-related assertions to handle it. (David Benbennick
|
||||||
|
and DLR)
|
||||||
- files.c:
|
- files.c:
|
||||||
do_insertfile()
|
do_insertfile()
|
||||||
- Simplify by reusing variables whereever possible, and add a
|
- Simplify by reusing variables whereever possible, and add a
|
||||||
@ -143,6 +147,9 @@ CVS code -
|
|||||||
- Update the help text to mention replacing and spell checking
|
- Update the help text to mention replacing and spell checking
|
||||||
only selected text, and also add a few cosmetic fixes to it.
|
only selected text, and also add a few cosmetic fixes to it.
|
||||||
(DLR)
|
(DLR)
|
||||||
|
do_prev_word()
|
||||||
|
- Tweak to avoid an infinite loop, since current_x is now a
|
||||||
|
size_t and hence is unsigned. (DLR)
|
||||||
do_int_spell_fix()
|
do_int_spell_fix()
|
||||||
- Move the REVERSE_SEARCH flag toggling into the NANO_SMALL
|
- Move the REVERSE_SEARCH flag toggling into the NANO_SMALL
|
||||||
#ifdef, since the tiny version of nano doesn't support reverse
|
#ifdef, since the tiny version of nano doesn't support reverse
|
||||||
|
@ -232,7 +232,7 @@ void do_cut_text(void)
|
|||||||
|
|
||||||
#ifndef NANO_SMALL
|
#ifndef NANO_SMALL
|
||||||
if (ISSET(CUT_TO_END) && !ISSET(MARK_ISSET)) {
|
if (ISSET(CUT_TO_END) && !ISSET(MARK_ISSET)) {
|
||||||
assert(current_x >= 0 && current_x <= strlen(current->data));
|
assert(current_x <= strlen(current->data));
|
||||||
|
|
||||||
if (current->data[current_x] == '\0') {
|
if (current->data[current_x] == '\0') {
|
||||||
/* If the line is empty and we didn't just cut a non-blank
|
/* If the line is empty and we didn't just cut a non-blank
|
||||||
|
@ -52,9 +52,10 @@ struct stat originalfilestat; /* Stat for the file as we loaded it */
|
|||||||
int editwinrows = 0; /* How many rows long is the edit
|
int editwinrows = 0; /* How many rows long is the edit
|
||||||
window? */
|
window? */
|
||||||
filestruct *current; /* Current buffer pointer */
|
filestruct *current; /* Current buffer pointer */
|
||||||
int current_x = 0, current_y = 0; /* Current position of X and Y in
|
size_t current_x = 0; /* Current x-coordinate in the edit
|
||||||
the editor - relative to edit
|
window */
|
||||||
window (0,0) */
|
int current_y = 0; /* Current y-coordinate in the edit
|
||||||
|
window */
|
||||||
filestruct *fileage = NULL; /* Our file buffer */
|
filestruct *fileage = NULL; /* Our file buffer */
|
||||||
filestruct *edittop = NULL; /* Pointer to the top of the edit
|
filestruct *edittop = NULL; /* Pointer to the top of the edit
|
||||||
buffer with respect to the
|
buffer with respect to the
|
||||||
|
@ -54,7 +54,7 @@ void do_home(void)
|
|||||||
size_t old_pww = placewewant;
|
size_t old_pww = placewewant;
|
||||||
#ifndef NANO_SMALL
|
#ifndef NANO_SMALL
|
||||||
if (ISSET(SMART_HOME)) {
|
if (ISSET(SMART_HOME)) {
|
||||||
int old_current_x = current_x;
|
size_t old_current_x = current_x;
|
||||||
|
|
||||||
for (current_x = 0; isblank(current->data[current_x]) &&
|
for (current_x = 0; isblank(current->data[current_x]) &&
|
||||||
current->data[current_x] != '\0'; current_x++)
|
current->data[current_x] != '\0'; current_x++)
|
||||||
|
21
src/nano.c
21
src/nano.c
@ -1162,21 +1162,25 @@ void do_prev_word(void)
|
|||||||
const filestruct *old_current = current;
|
const filestruct *old_current = current;
|
||||||
assert(current != NULL && current->data != NULL);
|
assert(current != NULL && current->data != NULL);
|
||||||
|
|
||||||
|
current_x++;
|
||||||
|
|
||||||
/* Skip letters in this word first. */
|
/* Skip letters in this word first. */
|
||||||
while (current_x >= 0 && isalnum(current->data[current_x]))
|
while (current_x > 0 && isalnum(current->data[current_x - 1]))
|
||||||
current_x--;
|
current_x--;
|
||||||
|
|
||||||
for (; current != NULL; current = current->prev) {
|
for (; current != NULL; current = current->prev) {
|
||||||
while (current_x >= 0 && !isalnum(current->data[current_x]))
|
while (current_x > 0 && !isalnum(current->data[current_x - 1]))
|
||||||
current_x--;
|
current_x--;
|
||||||
|
|
||||||
if (current_x >= 0)
|
if (current_x > 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (current->prev != NULL)
|
if (current->prev != NULL)
|
||||||
current_x = strlen(current->prev->data);
|
current_x = strlen(current->prev->data) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
current_x--;
|
||||||
|
|
||||||
if (current == NULL) {
|
if (current == NULL) {
|
||||||
current = fileage;
|
current = fileage;
|
||||||
current_x = 0;
|
current_x = 0;
|
||||||
@ -1463,7 +1467,7 @@ bool do_int_spell_fix(const char *word)
|
|||||||
/* Start from the top of the file. */
|
/* Start from the top of the file. */
|
||||||
edittop = fileage;
|
edittop = fileage;
|
||||||
current = fileage;
|
current = fileage;
|
||||||
current_x = -1;
|
current_x = (size_t)-1;
|
||||||
placewewant = 0;
|
placewewant = 0;
|
||||||
|
|
||||||
/* Find the first whole-word occurrence of word. */
|
/* Find the first whole-word occurrence of word. */
|
||||||
@ -1718,8 +1722,8 @@ const char *do_int_speller(const char *tempfile_name)
|
|||||||
const char *do_alt_speller(char *tempfile_name)
|
const char *do_alt_speller(char *tempfile_name)
|
||||||
{
|
{
|
||||||
int alt_spell_status, lineno_cur = current->lineno;
|
int alt_spell_status, lineno_cur = current->lineno;
|
||||||
int x_cur = current_x, y_cur = current_y;
|
size_t x_cur = current_x, pww_cur = placewewant;
|
||||||
size_t pww_cur = placewewant;
|
int y_cur = current_y;
|
||||||
pid_t pid_spell;
|
pid_t pid_spell;
|
||||||
char *ptr;
|
char *ptr;
|
||||||
static int arglen = 3;
|
static int arglen = 3;
|
||||||
@ -2355,7 +2359,8 @@ void do_justify(bool full_justify)
|
|||||||
|
|
||||||
/* We save these global variables to be restored if the user
|
/* We save these global variables to be restored if the user
|
||||||
* unjustifies. Note that we don't need to save totlines. */
|
* unjustifies. Note that we don't need to save totlines. */
|
||||||
int current_x_save = current_x, current_y_save = current_y;
|
size_t current_x_save = current_x;
|
||||||
|
int current_y_save = current_y;
|
||||||
long flags_save = flags, totsize_save = totsize;
|
long flags_save = flags, totsize_save = totsize;
|
||||||
filestruct *edittop_save = edittop, *current_save = current;
|
filestruct *edittop_save = edittop, *current_save = current;
|
||||||
#ifndef NANO_SMALL
|
#ifndef NANO_SMALL
|
||||||
|
@ -168,7 +168,7 @@ typedef struct openfilestruct {
|
|||||||
int file_mark_beginx; /* Current file's beginning marked
|
int file_mark_beginx; /* Current file's beginning marked
|
||||||
* line's x-coordinate position. */
|
* line's x-coordinate position. */
|
||||||
#endif
|
#endif
|
||||||
int file_current_x; /* Current file's x-coordinate
|
size_t file_current_x; /* Current file's x-coordinate
|
||||||
* position. */
|
* position. */
|
||||||
int file_current_y; /* Current file's y-coordinate
|
int file_current_y; /* Current file's y-coordinate
|
||||||
* position. */
|
* position. */
|
||||||
|
@ -32,7 +32,9 @@
|
|||||||
extern ssize_t wrap_at;
|
extern ssize_t wrap_at;
|
||||||
#endif
|
#endif
|
||||||
extern int editwinrows;
|
extern int editwinrows;
|
||||||
extern int current_x, current_y, totlines;
|
extern size_t current_x;
|
||||||
|
extern int current_y;
|
||||||
|
extern int totlines;
|
||||||
extern size_t placewewant;
|
extern size_t placewewant;
|
||||||
#ifndef NANO_SMALL
|
#ifndef NANO_SMALL
|
||||||
extern int mark_beginx;
|
extern int mark_beginx;
|
||||||
@ -421,7 +423,7 @@ void do_replace(void);
|
|||||||
void do_gotoline(int line, bool save_pos);
|
void do_gotoline(int line, bool save_pos);
|
||||||
void do_gotoline_void(void);
|
void do_gotoline_void(void);
|
||||||
#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, size_t pos_pww);
|
void do_gotopos(int line, size_t pos_x, int pos_y, size_t pos_pww);
|
||||||
#endif
|
#endif
|
||||||
void do_find_bracket(void);
|
void do_find_bracket(void);
|
||||||
#ifndef NANO_SMALL
|
#ifndef NANO_SMALL
|
||||||
|
@ -772,7 +772,8 @@ ssize_t do_replace_loop(const char *needle, filestruct *real_current,
|
|||||||
|
|
||||||
/* Set the cursor at the last character of the replacement
|
/* Set the cursor at the last character of the replacement
|
||||||
* text, so searching will resume after the replacement
|
* text, so searching will resume after the replacement
|
||||||
* text. Note that current_x might be set to -1 here. */
|
* text. Note that current_x might be set to (size_t)-1
|
||||||
|
* here. */
|
||||||
#ifndef NANO_SMALL
|
#ifndef NANO_SMALL
|
||||||
if (!ISSET(REVERSE_SEARCH))
|
if (!ISSET(REVERSE_SEARCH))
|
||||||
#endif
|
#endif
|
||||||
@ -965,7 +966,7 @@ void do_gotoline_void(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#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, size_t pos_pww)
|
void do_gotopos(int line, size_t pos_x, int pos_y, size_t pos_pww)
|
||||||
{
|
{
|
||||||
/* Since do_gotoline() resets the x-coordinate but not the
|
/* Since do_gotoline() resets the x-coordinate but not the
|
||||||
* y-coordinate, set the coordinates up this way. */
|
* y-coordinate, set the coordinates up this way. */
|
||||||
|
18
src/winio.c
18
src/winio.c
@ -1819,9 +1819,9 @@ int nanogetstr(bool allow_tabs, const char *buf, const char *def,
|
|||||||
{
|
{
|
||||||
int kbinput;
|
int kbinput;
|
||||||
bool meta_key, func_key;
|
bool meta_key, func_key;
|
||||||
static int x = -1;
|
static size_t x = (size_t)-1;
|
||||||
/* the cursor position in 'answer' */
|
/* the cursor position in 'answer' */
|
||||||
int xend;
|
size_t xend;
|
||||||
/* length of 'answer', the status bar text */
|
/* length of 'answer', the status bar text */
|
||||||
bool tabbed = FALSE;
|
bool tabbed = FALSE;
|
||||||
/* used by input_tab() */
|
/* used by input_tab() */
|
||||||
@ -1849,7 +1849,7 @@ int nanogetstr(bool allow_tabs, const char *buf, const char *def,
|
|||||||
resetstatuspos is TRUE. Otherwise, leave it alone. This is so
|
resetstatuspos is TRUE. Otherwise, leave it alone. This is so
|
||||||
the cursor position stays at the same place if a prompt-changing
|
the cursor position stays at the same place if a prompt-changing
|
||||||
toggle is pressed. */
|
toggle is pressed. */
|
||||||
if (x == -1 || x > xend || resetstatuspos)
|
if (x == (size_t)-1 || x > xend || resetstatuspos)
|
||||||
x = xend;
|
x = xend;
|
||||||
|
|
||||||
answer = charealloc(answer, xend + 1);
|
answer = charealloc(answer, xend + 1);
|
||||||
@ -1906,7 +1906,7 @@ int nanogetstr(bool allow_tabs, const char *buf, const char *def,
|
|||||||
return t->ctrlval;
|
return t->ctrlval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
assert(0 <= x && x <= xend && xend == strlen(answer));
|
assert(x <= xend && xend == strlen(answer));
|
||||||
|
|
||||||
if (kbinput != '\t')
|
if (kbinput != '\t')
|
||||||
tabbed = FALSE;
|
tabbed = FALSE;
|
||||||
@ -1926,7 +1926,7 @@ int nanogetstr(bool allow_tabs, const char *buf, const char *def,
|
|||||||
case NANO_HOME_KEY:
|
case NANO_HOME_KEY:
|
||||||
#ifndef NANO_SMALL
|
#ifndef NANO_SMALL
|
||||||
if (ISSET(SMART_HOME)) {
|
if (ISSET(SMART_HOME)) {
|
||||||
int old_x = x;
|
size_t old_x = x;
|
||||||
|
|
||||||
for (x = 0; isblank(answer[x]) && x < xend; x++)
|
for (x = 0; isblank(answer[x]) && x < xend; x++)
|
||||||
;
|
;
|
||||||
@ -2137,7 +2137,7 @@ int nanogetstr(bool allow_tabs, const char *buf, const char *def,
|
|||||||
} /* while (kbinput ...) */
|
} /* while (kbinput ...) */
|
||||||
|
|
||||||
/* We finished putting in an answer; reset x */
|
/* We finished putting in an answer; reset x */
|
||||||
x = -1;
|
x = (size_t)-1;
|
||||||
|
|
||||||
return kbinput;
|
return kbinput;
|
||||||
}
|
}
|
||||||
@ -3265,8 +3265,8 @@ void display_main_list(void)
|
|||||||
void do_cursorpos(bool constant)
|
void do_cursorpos(bool constant)
|
||||||
{
|
{
|
||||||
const filestruct *fileptr;
|
const filestruct *fileptr;
|
||||||
unsigned long i = 0;
|
size_t i = 0;
|
||||||
static unsigned long old_i = 0;
|
static size_t old_i = 0;
|
||||||
static long old_totsize = -1;
|
static long old_totsize = -1;
|
||||||
|
|
||||||
assert(current != NULL && fileage != NULL && totlines != 0);
|
assert(current != NULL && fileage != NULL && totlines != 0);
|
||||||
@ -3305,7 +3305,7 @@ void do_cursorpos(bool constant)
|
|||||||
_("line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%ld (%d%%)"),
|
_("line %ld/%ld (%d%%), col %lu/%lu (%d%%), char %lu/%ld (%d%%)"),
|
||||||
current->lineno, totlines, linepct,
|
current->lineno, totlines, linepct,
|
||||||
(unsigned long)xpt, (unsigned long)cur_len, colpct,
|
(unsigned long)xpt, (unsigned long)cur_len, colpct,
|
||||||
i, totsize, bytepct);
|
(unsigned long)i, totsize, bytepct);
|
||||||
UNSET(DISABLE_CURPOS);
|
UNSET(DISABLE_CURPOS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Загрузка…
Ссылка в новой задаче
Block a user