From 7e71cf52a3914d834267882d1592a903e85bc25d Mon Sep 17 00:00:00 2001 From: Renaud Fivet Date: Sun, 22 May 2016 22:22:39 +0800 Subject: [PATCH] Review cursor move commands in basic. --- Makefile | 24 ++--- basic.c | 309 +++++++++++++++++++++++++++++-------------------------- basic.h | 34 ++++-- ebind.c | 56 +++++----- names.c | 20 ++-- random.c | 6 +- 6 files changed, 239 insertions(+), 210 deletions(-) diff --git a/Makefile b/Makefile index 8080651..2633a21 100644 --- a/Makefile +++ b/Makefile @@ -129,8 +129,8 @@ depend: ${SRC} # DO NOT DELETE THIS LINE -- make depend uses it -basic.o: basic.c basic.h buffer.h line.h retcode.h utf8.h estruct.h \ - input.h bind.h mlout.h random.h terminal.h defines.h window.h +basic.o: basic.c basic.h retcode.h input.h bind.h mlout.h random.h \ + terminal.h defines.h utf8.h window.h buffer.h line.h bind.o: bind.c bind.h estruct.h bindable.h buffer.h line.h retcode.h \ utf8.h display.h ebind.h exec.h file.h flook.h input.h names.h window.h \ defines.h @@ -142,10 +142,10 @@ buffer.o: buffer.c buffer.h line.h retcode.h utf8.h defines.h estruct.h \ display.o: display.c display.h estruct.h utf8.h buffer.h line.h retcode.h \ input.h bind.h termio.h terminal.h defines.h version.h wrapper.h \ window.h -ebind.o: ebind.c ebind.h basic.h bind.h estruct.h bindable.h buffer.h \ - line.h retcode.h utf8.h eval.h exec.h file.h isearch.h random.h region.h \ +ebind.o: ebind.c ebind.h basic.h retcode.h bind.h estruct.h bindable.h \ + buffer.h line.h utf8.h eval.h exec.h file.h isearch.h random.h region.h \ search.h spawn.h window.h defines.h word.h -eval.o: eval.c eval.h basic.h bind.h buffer.h line.h retcode.h utf8.h \ +eval.o: eval.c eval.h basic.h retcode.h bind.h buffer.h line.h utf8.h \ display.h estruct.h exec.h execute.h flook.h input.h random.h search.h \ terminal.h defines.h termio.h version.h window.h exec.o: exec.c exec.h retcode.h buffer.h line.h utf8.h bind.h display.h \ @@ -160,19 +160,19 @@ fileio.o: fileio.c fileio.h defines.h retcode.h utf8.h flook.o: flook.c flook.h retcode.h defines.h fileio.h input.o: input.c input.h bind.h estruct.h bindable.h display.h utf8.h \ exec.h retcode.h names.h terminal.h defines.h wrapper.h -isearch.o: isearch.c isearch.h basic.h buffer.h line.h retcode.h utf8.h \ +isearch.o: isearch.c isearch.h basic.h retcode.h buffer.h line.h utf8.h \ display.h estruct.h exec.h input.h bind.h search.h terminal.h defines.h \ window.h line.o: line.c line.h retcode.h utf8.h buffer.h estruct.h mlout.h \ window.h defines.h lock.o: lock.c estruct.h lock.h -main.o: main.c estruct.h basic.h bind.h bindable.h buffer.h line.h \ - retcode.h utf8.h display.h eval.h execute.h file.h lock.h mlout.h \ - random.h search.h terminal.h defines.h termio.h version.h window.h +main.o: main.c estruct.h basic.h retcode.h bind.h bindable.h buffer.h \ + line.h utf8.h display.h eval.h execute.h file.h lock.h mlout.h random.h \ + search.h terminal.h defines.h termio.h version.h window.h mingw32.o: mingw32.c mlout.o: mlout.c mlout.h -names.o: names.c names.h basic.h bind.h bindable.h buffer.h line.h \ - retcode.h utf8.h display.h estruct.h eval.h exec.h file.h isearch.h \ +names.o: names.c names.h basic.h retcode.h bind.h bindable.h buffer.h \ + line.h utf8.h display.h estruct.h eval.h exec.h file.h isearch.h \ region.h random.h search.h spawn.h window.h defines.h word.h pklock.o: pklock.c estruct.h pklock.h posix.o: posix.c @@ -192,7 +192,7 @@ termio.o: termio.c termio.h utf8.h estruct.h retcode.h utf8.o: utf8.c utf8.h window.o: window.c window.h defines.h buffer.h line.h retcode.h utf8.h \ basic.h display.h estruct.h execute.h terminal.h wrapper.h -word.o: word.c word.h basic.h buffer.h line.h retcode.h utf8.h estruct.h \ +word.o: word.c word.h basic.h retcode.h buffer.h line.h utf8.h estruct.h \ mlout.h random.h region.h window.h defines.h wrapper.o: wrapper.c wrapper.h wscreen.o: wscreen.c wscreen.h diff --git a/basic.c b/basic.c index 9c044a3..6d04337 100644 --- a/basic.c +++ b/basic.c @@ -2,8 +2,6 @@ #include "basic.h" -#define CVMVAS 1 /* arguments to page forward/back in pages */ - /* basic.c * * The routines in this file move the cursor around on the screen. They @@ -18,19 +16,18 @@ #include #include -#include "buffer.h" -#include "estruct.h" #include "input.h" -#include "line.h" #include "mlout.h" #include "random.h" #include "terminal.h" -#include "utf8.h" #include "window.h" -int overlap = 0 ; /* line overlap in forw/back page */ -int curgoal ; /* Goal for C-P, C-N */ +#define CVMVAS 1 /* arguments to page forward/back in pages */ + + +int overlap = DEFAULT_OVERLAP ; /* line overlap in forw/back page */ +int curgoal ; /* Goal for C-P, C-N */ /* @@ -38,7 +35,7 @@ int curgoal ; /* Goal for C-P, C-N */ * column, return the best choice for the offset. The offset is returned. * Used by "C-N" and "C-P". */ -static unsigned getgoal( struct line *dlp) { +static unsigned getgoal( line_p dlp) { int col ; unsigned idx ; const unsigned len = llength( dlp) ; @@ -69,21 +66,117 @@ static unsigned getgoal( struct line *dlp) { } /* - * Move the cursor to the beginning of the current line. + * Move the cursor to the beginning of the current line of active window. */ -int gotobol(int f, int n) -{ - curwp->w_doto = 0; - return TRUE; +boolean gotobol( int f, int n) { + curwp->w_doto = 0 ; + return TRUE ; } /* - * Move the cursor to the end of the current line. Trivial. No errors. + * Move the cursor to the end of the current line of active window. */ -int gotoeol(int f, int n) -{ - curwp->w_doto = llength(curwp->w_dotp); - return TRUE; +boolean gotoeol( int f, int n) { + curwp->w_doto = llength( curwp->w_dotp) ; + return TRUE ; +} + +/* + * Goto the beginning of the buffer. Massive adjustment of dot. This is + * considered to be hard motion; it really isn't if the original value of dot + * is the same as the new value of dot. Normally bound to "M-<". + */ +boolean gotobob( int f, int n) { + curwp->w_dotp = lforw( curbp->b_linep) ; + curwp->w_doto = 0 ; + curwp->w_flag |= WFHARD ; + return TRUE ; +} + +/* + * Move to the end of the buffer. Dot is always put at the end of the file + * (ZJ). The standard screen code does most of the hard parts of update. + * Bound to "M->". + */ +boolean gotoeob( int f, int n) { + curwp->w_dotp = curbp->b_linep ; + curwp->w_doto = 0 ; + curwp->w_flag |= WFHARD ; + return TRUE ; +} + +/* + * Move forward by full lines. If the number of lines to move is less than + * zero, call the backward line function to actually do it. The last command + * controls how the goal column is set. Bound to "C-N". No errors are + * possible. + */ +boolean forwline( int f, int n) { + line_p dlp ; + + if (n < 0) + return backline(f, -n); + + /* if we are on the last line as we start....fail the command */ + if (curwp->w_dotp == curbp->b_linep) + return FALSE; + + /* if the last command was not a line move, reset the goal column */ + if ((lastflag & CFCPCN) == 0) + curgoal = getccol(FALSE); + + /* flag this command as a line move */ + thisflag |= CFCPCN; + + /* and move the point down */ + dlp = curwp->w_dotp; + while( n && dlp != curbp->b_linep) { + dlp = lforw( dlp) ; + n -= 1 ; + } + + /* reseting the current position */ + curwp->w_dotp = dlp; + curwp->w_doto = getgoal(dlp); + curwp->w_flag |= WFMOVE; + return (n == 0) ? TRUE : FALSE ; +} + +/* + * This function is like "forwline", but goes backwards. The scheme is exactly + * the same. Check for arguments that are less than zero and call your + * alternate. Figure out the new line and call "movedot" to perform the + * motion. No errors are possible. Bound to "C-P". + */ +boolean backline( int f, int n) { + line_p dlp ; + + if (n < 0) + return forwline(f, -n); + + /* if we are on the first line as we start....fail the command */ + if (lback(curwp->w_dotp) == curbp->b_linep) + return FALSE; + + /* if the last command was not a line move, reset the goal column */ + if ((lastflag & CFCPCN) == 0) + curgoal = getccol(FALSE); + + /* flag this command as a line move */ + thisflag |= CFCPCN; + + /* and move the point up */ + dlp = curwp->w_dotp; + while( n && lback( dlp) != curbp->b_linep) { + dlp = lback( dlp) ; + n -= 1 ; + } + + /* reseting the current position */ + curwp->w_dotp = dlp; + curwp->w_doto = getgoal(dlp); + curwp->w_flag |= WFMOVE; + return (n == 0) ? TRUE : FALSE ; } /* @@ -120,107 +213,7 @@ int gotoline( int f, int n) { /* First, we go to the begin of the buffer. */ gotobob(f, n); - return forwline(f, n - 1); -} - -/* - * Goto the beginning of the buffer. Massive adjustment of dot. This is - * considered to be hard motion; it really isn't if the original value of dot - * is the same as the new value of dot. Normally bound to "M-<". - */ -int gotobob(int f, int n) -{ - curwp->w_dotp = lforw(curbp->b_linep); - curwp->w_doto = 0; - curwp->w_flag |= WFHARD; - return TRUE; -} - -/* - * Move to the end of the buffer. Dot is always put at the end of the file - * (ZJ). The standard screen code does most of the hard parts of update. - * Bound to "M->". - */ -int gotoeob(int f, int n) -{ - curwp->w_dotp = curbp->b_linep; - curwp->w_doto = 0; - curwp->w_flag |= WFHARD; - return TRUE; -} - -/* - * Move forward by full lines. If the number of lines to move is less than - * zero, call the backward line function to actually do it. The last command - * controls how the goal column is set. Bound to "C-N". No errors are - * possible. - */ -int forwline(int f, int n) -{ - struct line *dlp; - - if (n < 0) - return backline(f, -n); - - /* if we are on the last line as we start....fail the command */ - if (curwp->w_dotp == curbp->b_linep) - return FALSE; - - /* if the last command was not note a line move, - reset the goal column */ - if ((lastflag & CFCPCN) == 0) - curgoal = getccol(FALSE); - - /* flag this command as a line move */ - thisflag |= CFCPCN; - - /* and move the point down */ - dlp = curwp->w_dotp; - while (n-- && dlp != curbp->b_linep) - dlp = lforw(dlp); - - /* reseting the current position */ - curwp->w_dotp = dlp; - curwp->w_doto = getgoal(dlp); - curwp->w_flag |= WFMOVE; - return TRUE; -} - -/* - * This function is like "forwline", but goes backwards. The scheme is exactly - * the same. Check for arguments that are less than zero and call your - * alternate. Figure out the new line and call "movedot" to perform the - * motion. No errors are possible. Bound to "C-P". - */ -int backline(int f, int n) -{ - struct line *dlp; - - if (n < 0) - return forwline(f, -n); - - /* if we are on the last line as we start....fail the command */ - if (lback(curwp->w_dotp) == curbp->b_linep) - return FALSE; - - /* if the last command was not note a line move, - reset the goal column */ - if ((lastflag & CFCPCN) == 0) - curgoal = getccol(FALSE); - - /* flag this command as a line move */ - thisflag |= CFCPCN; - - /* and move the point up */ - dlp = curwp->w_dotp; - while (n-- && lback(dlp) != curbp->b_linep) - dlp = lback(dlp); - - /* reseting the current position */ - curwp->w_dotp = dlp; - curwp->w_doto = getgoal(dlp); - curwp->w_flag |= WFMOVE; - return TRUE; + return (n == 1) ? TRUE : forwline( f, n - 1) ; } /* @@ -229,20 +222,20 @@ int backline(int f, int n) * the overlap; this value is the default overlap value in ITS EMACS. Because * this zaps the top line in the display window, we have to do a hard update. */ -int forwpage(int f, int n) -{ - struct line *lp; +boolean forwpage( int f, int n) { + line_p lp ; if (f == FALSE) { #if SCROLLCODE - if (term.t_scroll != NULL) - if (overlap == 0) - n = curwp->w_ntrows / 3 * 2; + if (term.t_scroll != NULL) /* $scroll == FALSE */ + if (overlap == 0) /* $overlap == 0 */ + n = curwp->w_ntrows * 2 / 3 ; else n = curwp->w_ntrows - overlap; else #endif n = curwp->w_ntrows - 2; /* Default scroll. */ + if (n <= 0) /* Forget the overlap. */ n = 1; /* If tiny window. */ } else if (n < 0) @@ -251,12 +244,19 @@ int forwpage(int f, int n) else /* Convert from pages. */ n *= curwp->w_ntrows; /* To lines. */ #endif - lp = curwp->w_linep; - while (n-- && lp != curbp->b_linep) - lp = lforw(lp); - curwp->w_linep = lp; + +/* lp = curwp->w_linep; */ + lp = curwp->w_dotp ; + while( n && lp != curbp->b_linep) { + lp = lforw( lp) ; + n -= 1 ; + } + +/* curwp->w_linep = lp; */ curwp->w_dotp = lp; curwp->w_doto = 0; + reposition( TRUE, 0) ; + #if SCROLLCODE curwp->w_flag |= WFHARD | WFKILLS; #else @@ -271,20 +271,28 @@ int forwpage(int f, int n) * EMACS manual. Bound to "M-V". We do a hard update for exactly the same * reason. */ -int backpage(int f, int n) -{ - struct line *lp; +boolean backpage( int f, int n) { + line_p lp ; + + if (f == FALSE) { /* interactive, default n = 1 supplied */ + /* in interactive mode, first move dot to top of window */ + if( curwp->w_dotp != curwp->w_linep) { + curwp->w_dotp = curwp->w_linep ; + curwp->w_doto = 0 ; +/* curwp->w_flag |= WFMOVE ; */ + return TRUE ; + } - if (f == FALSE) { #if SCROLLCODE - if (term.t_scroll != NULL) - if (overlap == 0) - n = curwp->w_ntrows / 3 * 2; + if (term.t_scroll != NULL) /* $scroll != FALSE */ + if (overlap == 0) /* $overlap == 0 */ + n = curwp->w_ntrows * 2 / 3 ; else n = curwp->w_ntrows - overlap; else #endif n = curwp->w_ntrows - 2; /* Default scroll. */ + if (n <= 0) /* Don't blow up if the. */ n = 1; /* Window is tiny. */ } else if (n < 0) @@ -293,12 +301,19 @@ int backpage(int f, int n) else /* Convert from pages. */ n *= curwp->w_ntrows; /* To lines. */ #endif - lp = curwp->w_linep; - while (n-- && lback(lp) != curbp->b_linep) - lp = lback(lp); - curwp->w_linep = lp; + +/* lp = curwp->w_linep; */ + lp = curwp->w_dotp ; + while( n && lback( lp) != curbp->b_linep) { + lp = lback( lp) ; + n -= 1 ; + } + +/* curwp->w_linep = lp; */ curwp->w_dotp = lp; curwp->w_doto = 0; + reposition( TRUE, (f == FALSE) ? 1 : 0) ; + #if SCROLLCODE curwp->w_flag |= WFHARD | WFINS; #else @@ -311,8 +326,7 @@ int backpage(int f, int n) * Set the mark in the current window to the value of "." in the window. No * errors are possible. Bound to "M-.". */ -int setmark(int f, int n) -{ +boolean setmark( int f, int n) { curwp->w_markp = curwp->w_dotp; curwp->w_marko = curwp->w_doto; mloutstr( "(Mark set)") ; @@ -321,13 +335,12 @@ int setmark(int f, int n) /* * Swap the values of "." and "mark" in the current window. This is pretty - * easy, bacause all of the hard work gets done by the standard routine + * easy, because all of the hard work gets done by the standard routine * that moves the mark about. The only possible error is "no mark". Bound to * "C-X C-X". */ -int swapmark(int f, int n) -{ - struct line *odotp; +boolean swapmark( int f, int n) { + line_p odotp ; int odoto; if( curwp->w_markp == NULL) { @@ -344,3 +357,5 @@ int swapmark(int f, int n) curwp->w_flag |= WFMOVE; return TRUE; } + +/* end of basic.c */ diff --git a/basic.h b/basic.h index 20631db..a3aab55 100644 --- a/basic.h +++ b/basic.h @@ -1,20 +1,34 @@ +/* basic.h -- basic commands for cursor movement in active window */ + #ifndef _BASIC_H_ #define _BASIC_H_ +#include "retcode.h" + +/* +** $overlap is the size of the line overlap when doing page forw/back +** if 0, page will move by 2/3 of the window size (1/3 page overlap) +** default to 0 +*/ +#define DEFAULT_OVERLAP 0 extern int overlap ; /* line overlap in forw/back page */ + + extern int curgoal ; /* Goal for C-P, C-N */ -int gotobol( int f, int n) ; -int gotoeol( int f, int n) ; +boolean gotobol( int f, int n) ; +boolean gotoeol( int f, int n) ; int gotoline( int f, int n) ; -int gotobob( int f, int n) ; -int gotoeob( int f, int n) ; -int forwline( int f, int n) ; -int backline( int f, int n) ; -int forwpage( int f, int n) ; -int backpage( int f, int n) ; -int setmark( int f, int n) ; -int swapmark( int f, int n) ; +boolean gotobob( int f, int n) ; +boolean gotoeob( int f, int n) ; +boolean forwline( int f, int n) ; +boolean backline( int f, int n) ; +boolean forwpage( int f, int n) ; +boolean backpage( int f, int n) ; +boolean setmark( int f, int n) ; +boolean swapmark( int f, int n) ; #endif + +/* end of basic.h */ diff --git a/ebind.c b/ebind.c index c860cc4..b3f6bec 100644 --- a/ebind.c +++ b/ebind.c @@ -35,7 +35,7 @@ * control-X commands. */ struct key_tab keytab[NBINDS] = { - {CONTROL | 'A', gotobol} + {CONTROL | 'A', (fn_t) gotobol} , {CONTROL | 'B', (fn_t) backchar} , @@ -43,7 +43,7 @@ struct key_tab keytab[NBINDS] = { , {CONTROL | 'D', forwdel} , - {CONTROL | 'E', gotoeol} + {CONTROL | 'E', (fn_t) gotoeol} , {CONTROL | 'F', (fn_t) forwchar} , @@ -61,11 +61,11 @@ struct key_tab keytab[NBINDS] = { , {CONTROL | 'M', insert_newline} , - {CONTROL | 'N', forwline} + {CONTROL | 'N', (fn_t) forwline} , {CONTROL | 'O', openline} , - {CONTROL | 'P', backline} + {CONTROL | 'P', (fn_t) backline} , {CONTROL | 'Q', quote} , @@ -77,7 +77,7 @@ struct key_tab keytab[NBINDS] = { , {CONTROL | 'U', unarg} , - {CONTROL | 'V', forwpage} + {CONTROL | 'V', (fn_t) forwpage} , {CONTROL | 'W', killregion} , @@ -85,7 +85,7 @@ struct key_tab keytab[NBINDS] = { , {CONTROL | 'Y', yank} , - {CONTROL | 'Z', backpage} + {CONTROL | 'Z', (fn_t) backpage} , {CONTROL | ']', metafn} , @@ -138,7 +138,7 @@ struct key_tab keytab[NBINDS] = { , {CTLX | CONTROL | 'W', filewrite} , - {CTLX | CONTROL | 'X', swapmark} + {CTLX | CONTROL | 'X', (fn_t) swapmark} , {CTLX | CONTROL | 'Z', shrinkwind} , @@ -246,17 +246,17 @@ struct key_tab keytab[NBINDS] = { #endif {META | CONTROL | 'Z', scrnextup} , - {META | ' ', setmark} + {META | ' ', (fn_t) setmark} , {META | '?', help} , {META | '!', reposition} , - {META | '.', setmark} + {META | '.', (fn_t) setmark} , - {META | '>', gotoeob} + {META | '>', (fn_t) gotoeob} , - {META | '<', gotobob} + {META | '<', (fn_t) gotobob} , {META | '~', unmark} , @@ -307,7 +307,7 @@ struct key_tab keytab[NBINDS] = { #endif {META | 'U', upperword} , - {META | 'V', backpage} + {META | 'V', (fn_t) backpage} , {META | 'W', copyregion} , @@ -323,21 +323,21 @@ struct key_tab keytab[NBINDS] = { , {SPEC | CONTROL | 'S', backhunt} , - {SPEC | 71, gotobol} + {SPEC | 71, (fn_t) gotobol} , - {SPEC | 72, backline} + {SPEC | 72, (fn_t) backline} , - {SPEC | 73, backpage} + {SPEC | 73, (fn_t) backpage} , {SPEC | 75, (fn_t) backchar} , {SPEC | 77, (fn_t) forwchar} , - {SPEC | 79, gotoeol} + {SPEC | 79, (fn_t) gotoeol} , - {SPEC | 80, forwline} + {SPEC | 80, (fn_t) forwline} , - {SPEC | 81, forwpage} + {SPEC | 81, (fn_t) forwpage} , {SPEC | 82, insspace} , @@ -374,9 +374,9 @@ struct key_tab keytab[NBINDS] = { {SPEC | 93, cbuf10} , #if PKCODE - {SPEC | 117, gotoeob} + {SPEC | 117, (fn_t) gotoeob} , - {SPEC | 119, gotobob} + {SPEC | 119, (fn_t) gotobob} , {SPEC | 141, gotobop} , @@ -390,21 +390,21 @@ struct key_tab keytab[NBINDS] = { #endif #if VT220 - {SPEC | '1', gotobob /* fisearch */} + {SPEC | '1', (fn_t) gotobob /* fisearch */} , /* VT220 keys */ {SPEC | '2', yank} , {SPEC | '3', forwdel /* killregion */} , - {SPEC | '4', gotoeob /* setmark */} + {SPEC | '4', (fn_t) gotoeob /* setmark */} , - {SPEC | '5', backpage} + {SPEC | '5', (fn_t) backpage} , - {SPEC | '6', forwpage} + {SPEC | '6', (fn_t) forwpage} , - {SPEC | 'A', backline} + {SPEC | 'A', (fn_t) backline} , - {SPEC | 'B', forwline} + {SPEC | 'B', (fn_t) forwline} , {SPEC | 'C', (fn_t) forwchar} , @@ -414,9 +414,9 @@ struct key_tab keytab[NBINDS] = { , {SPEC | 'd', (fn_t) backchar} , - {SPEC | 'e', forwline} + {SPEC | 'e', (fn_t) forwline} , - {SPEC | 'f', gotobob} + {SPEC | 'f', (fn_t) gotobob} , {SPEC | 'h', help} , diff --git a/names.c b/names.c index 0b69bdd..4b24bab 100644 --- a/names.c +++ b/names.c @@ -36,8 +36,8 @@ struct name_bind names[] = { #endif {"backward-character", (fn_t) backchar}, {"begin-macro", ctlxlp}, - {"beginning-of-file", gotobob}, - {"beginning-of-line", gotobol}, + {"beginning-of-file", (fn_t) gotobob}, + {"beginning-of-line", (fn_t) gotobol}, {"bind-to-key", bindtokey}, {"buffer-position", showcpos}, {"case-region-lower", lowerregion}, @@ -71,12 +71,12 @@ struct name_bind names[] = { {"detab-line", detab}, #endif {"end-macro", ctlxrp}, - {"end-of-file", gotoeob}, - {"end-of-line", gotoeol}, + {"end-of-file", (fn_t) gotoeob}, + {"end-of-line", (fn_t) gotoeol}, #if AEDIT {"entab-line", entab}, #endif - {"exchange-point-and-mark", swapmark}, + {"exchange-point-and-mark", (fn_t) swapmark}, {"execute-buffer", execbuf}, {"execute-command-line", execcmd}, {"execute-file", execfile}, @@ -165,8 +165,8 @@ struct name_bind names[] = { {"newline", insert_newline}, {"newline-and-indent", indent}, {"next-buffer", nextbuffer}, - {"next-line", forwline}, - {"next-page", forwpage}, + {"next-line", (fn_t) forwline}, + {"next-page", (fn_t) forwpage}, #if WORDPRO {"next-paragraph", gotoeop}, #endif @@ -176,8 +176,8 @@ struct name_bind names[] = { {"open-line", openline}, {"overwrite-string", ovstring}, {"pipe-command", pipecmd}, - {"previous-line", backline}, - {"previous-page", backpage}, + {"previous-line", (fn_t) backline}, + {"previous-page", (fn_t) backpage}, #if WORDPRO {"previous-paragraph", gotobop}, #endif @@ -206,7 +206,7 @@ struct name_bind names[] = { {"select-buffer", usebuffer}, {"set", setvar}, {"set-fill-column", setfillcol}, - {"set-mark", setmark}, + {"set-mark", (fn_t) setmark}, {"shell-command", spawn}, {"shrink-window", shrinkwind}, {"split-current-window", splitwind}, diff --git a/random.c b/random.c index 34c4765..6b4f097 100644 --- a/random.c +++ b/random.c @@ -358,7 +358,7 @@ int detab(int f, int n) curwp->w_doto = 0; /* to the begining of the line */ thisflag &= ~CFCPCN; /* flag that this resets the goal column */ lchange(WFEDIT); /* yes, we have made at least an edit */ - return TRUE; + return (n == 0) ? TRUE : FALSE ; } /* @@ -433,7 +433,7 @@ int entab(int f, int n) curwp->w_doto = 0; /* to the begining of the line */ thisflag &= ~CFCPCN; /* flag that this resets the goal column */ lchange(WFEDIT); /* yes, we have made at least an edit */ - return TRUE; + return (n == 0) ? TRUE : FALSE ; } /* @@ -478,7 +478,7 @@ int trim(int f, int n) } lchange(WFEDIT); thisflag &= ~CFCPCN; /* flag that this resets the goal column */ - return TRUE; + return (n == 0) ? TRUE : FALSE ; } #endif