commit 099063cb08f3a7fcc52134ec132c93b5096571a4
parent 2eb4931742974b81bd37aaadc350fec147c9f34c
Author: ukai <ukai>
Date: Fri, 23 Nov 2001 20:50:59 +0000
add emacs_like_lineedit
Diffstat:
M | ChangeLog | | | 7 | +++++++ |
M | fm.h | | | 3 | +++ |
M | linein.c | | | 68 | ++++++++++++++++++++++++++++++++++++++++---------------------------- |
M | rc.c | | | 9 | +++++++++ |
4 files changed, 59 insertions(+), 28 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -1,5 +1,12 @@
2001-11-24 Fumitoshi UKAI <ukai@debian.or.jp
+ * fm.h (emacs_like_lineedit): runtime option emacs_like_lineedit
+ * linein.c (inputLineHist): ditto
+ * linein.c (_esc): ditto
+ * linein.c (next_dcompl): ditto
+ * rc.c (CMT_EMACS_LIKE_LINEEDIT): ditto
+ * rc.c (params3): ditto
+
* fm.h (ftppass_hostnamegen): runtime option ftppass_hostnamegen
* ftp.c (FtpLogin): ditto
* rc.c (CMT_FTPPASS_HOSTNAMEGEN): ditto
diff --git a/fm.h b/fm.h
@@ -703,6 +703,9 @@ global int useVisitedColor init(FALSE);
global int visited_color init(5); /* magenta */
#endif /* USE_COLOR */
global int confirm_on_quit init(TRUE);
+#ifdef EMACS_LIKE_LINEEDIT
+global int emacs_like_lineedit init(FALSE);
+#endif
global int displayLink init(FALSE);
global int retryAsHttp init(TRUE);
global int showLineNum init(FALSE);
diff --git a/linein.c b/linein.c
@@ -37,10 +37,7 @@ static void insertself(char c),
_mvB(void), _mvE(void), _enter(void), _quo(void), _bs(void), _bsw(void),
killn(void), killb(void), _inbrk(void), _esc(void),
_prev(void), _next(void), _compl(void), _tcompl(void),
- _dcompl(void), _rdcompl(void);
-#ifndef EMACS_LIKE_LINEEDIT
-static void _rcompl(void);
-#endif
+ _dcompl(void), _rdcompl(void), _rcompl(void);
#ifdef __EMX__
static int getcntrl(void);
#endif
@@ -191,22 +188,27 @@ inputLineHist(char *prompt, char *def_str, int flag, Hist * hist)
(((cm_mode & CPL_ALWAYS) && (c == CTRL_I || c == ' ')) ||
((cm_mode & CPL_ON) && (c == CTRL_I)))) {
#ifdef EMACS_LIKE_LINEEDIT
- if (cm_next) {
- _dcompl();
- need_redraw = TRUE;
- }
- else {
- _compl();
- cm_disp_next = -1;
- }
-#else
- _compl();
- cm_disp_next = -1;
+ if (emacs_like_lineedit && cm_next) {
+ _dcompl();
+ need_redraw = TRUE;
+ }
+ else {
+#endif
+ _compl();
+ cm_disp_next = -1;
+#ifdef EMACS_LIKE_LINEEDIT
+ }
+#endif
}
else if (!i_quote && CLen == CPos &&
(cm_mode & CPL_ALWAYS || cm_mode & CPL_ON) && c == CTRL_D) {
- _dcompl();
- need_redraw = TRUE;
+#ifdef EMACS_LIKE_LINEEDIT
+ if (! emacs_like_lineedit) {
+#endif
+ _dcompl();
+ need_redraw = TRUE;
+#ifdef EMACS_LIKE_LINEEDIT
+ }
#endif
}
else if (!i_quote && c == DEL_CODE) {
@@ -421,25 +423,35 @@ _esc(void)
case CTRL_I:
case ' ':
#ifdef EMACS_LIKE_LINEEDIT
- _rdcompl();
- cm_clear = FALSE;
+ if (emacs_like_lineedit) {
+ _rdcompl();
+ cm_clear = FALSE;
+ need_redraw = TRUE;
+ } else
#else
- _rcompl();
+ _rcompl();
+#endif
break;
case CTRL_D:
- _rdcompl();
+#ifdef EMACS_LIKE_LINEEDIT
+ if (!emacs_like_lineedit)
+#else
+ _rdcompl();
#endif
need_redraw = TRUE;
break;
#ifdef EMACS_LIKE_LINEEDIT
case 'f':
- _mvRw();
+ if (emacs_like_lineedit)
+ _mvRw();
break;
case 'b':
- _mvLw();
+ if (emacs_like_lineedit)
+ _mvLw();
break;
case CTRL_H:
- _bsw();
+ if (emacs_like_lineedit)
+ _bsw();
break;
#endif
#ifdef JP_CHARSET
@@ -628,13 +640,11 @@ _compl(void)
next_compl(1);
}
-#ifndef EMACS_LIKE_LINEEDIT
static void
_rcompl(void)
{
next_compl(-1);
}
-#endif
static void
_tcompl(void)
@@ -815,9 +825,11 @@ disp_next:
clrtoeolx();
bold();
#ifdef EMACS_LIKE_LINEEDIT
- addstr("----- Press TAB to continue -----");
+ if (emacs_like_lineedit)
+ addstr("----- Press TAB to continue -----");
+ else
#else
- addstr("----- Press CTRL-D to continue -----");
+ addstr("----- Press CTRL-D to continue -----");
#endif
boldend();
}
diff --git a/rc.c b/rc.c
@@ -89,6 +89,9 @@ static int rc_initialized = 0;
#define CMT_PDROOT "/~user で表されるディレクトリ"
#define CMT_CGIBIN "/cgi-bin で表されるディレクトリ"
#define CMT_CONFIRM_QQ "q での終了時に確認する"
+#ifdef EMACS_LIKE_LINEEDIT
+#define CMT_EMACS_LIKE_LINEEDIT "Emacs風の行編集にする"
+#endif
#define CMT_SHOW_NUM "行番号を表示する"
#define CMT_MIMETYPES "利用するmime.types"
#define CMT_MAILCAP "利用するmailcap"
@@ -187,6 +190,9 @@ static int rc_initialized = 0;
#define CMT_PDROOT "Directory corresponds to /~user"
#define CMT_CGIBIN "Directory corresponds to /cgi-bin"
#define CMT_CONFIRM_QQ "Confirm when quitting with q"
+#ifdef EMACS_LIKE_LINEEDIT
+#define CMT_EMACS_LIKE_LINEEDIT "Emacs-style line editing"
+#endif
#define CMT_SHOW_NUM "Show line number"
#define CMT_MIMETYPES "mime.types files"
#define CMT_MAILCAP "mailcap files"
@@ -387,6 +393,9 @@ struct param_ptr params3[] =
{"save_hist", P_INT, PI_ONOFF, (void *) &SaveURLHist, CMT_SAVEHIST, NULL},
#endif /* USE_HISTORY */
{"confirm_qq", P_INT, PI_ONOFF, (void *) &confirm_on_quit, CMT_CONFIRM_QQ, NULL},
+#ifdef EMACS_LIKE_LINEEDIT
+ {"emacs_like_lineedit", P_INT, PI_ONOFF, (void *) &emacs_like_lineedit, CMT_EMACS_LIKE_LINEEDIT, NULL },
+#endif
{"wrap_search", P_INT, PI_ONOFF, (void *) &WrapDefault, CMT_WRAP, NULL},
{"ignorecase_search", P_INT, PI_ONOFF, (void *) &IgnoreCase, CMT_IGNORE_CASE, NULL},
#ifdef USE_MOUSE