[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemacs-commit] qemacs shell.c
From: |
Charlie Gordon |
Subject: |
[Qemacs-commit] qemacs shell.c |
Date: |
Sat, 28 May 2016 10:34:17 +0000 (UTC) |
CVSROOT: /sources/qemacs
Module name: qemacs
Changes by: Charlie Gordon <chqrlie> 16/05/28 10:34:17
Modified files:
. : shell.c
Log message:
shell: improve shell history handling
- add shell_previous_next() function:
- does previous/next command at shell prompt
- moves by four lines elsewhere
- bind shell-previous command on M-p
- bind shell-next command on M-n
- flag shell-kill-line, shell-kill-beginning-of-line, shell-yank,
shell-enter, shell-backward-delete-char, shell-tabulate commands
as modifying the buffer
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/shell.c?cvsroot=qemacs&r1=1.107&r2=1.108
Patches:
Index: shell.c
===================================================================
RCS file: /sources/qemacs/qemacs/shell.c,v
retrieving revision 1.107
retrieving revision 1.108
diff -u -b -r1.107 -r1.108
--- shell.c 27 May 2016 18:20:30 -0000 1.107
+++ shell.c 28 May 2016 10:34:17 -0000 1.108
@@ -1635,6 +1635,21 @@
}
}
+static void shell_previous_next(EditState *e, int dir)
+{
+ ShellState *s = shell_get_state(e, 1);
+
+ if (s && e->interactive) {
+ /* hack: M-p silently converted to C-p */
+ tty_write(s, dir > 0 ? s->kcud1 : s->kcuu1, -1);
+ } else {
+ /* hack: M-p silently converted to C-u C-p */
+ text_move_up_down(e, dir * 4);
+ if (s && (s->shell_flags & SF_INTERACTIVE))
+ e->interactive = (e->offset == s->cur_offset);
+ }
+}
+
static void shell_scroll_up_down(EditState *e, int dir)
{
ShellState *s = shell_get_state(e, 1);
@@ -2045,11 +2060,11 @@
static CmdDef shell_commands[] = {
CMD0( KEY_CTRL('o'), KEY_NONE,
"shell-toggle-input", do_shell_toggle_input)
- CMD0( '\r', KEY_NONE,
- "shell-enter", do_shell_enter)
+ CMD2( '\r', KEY_NONE,
+ "shell-enter", do_shell_enter, ES, "*")
/* CG: should send s->kbs */
- CMD0( KEY_DEL, KEY_NONE,
- "shell-backward-delete-char", do_shell_backspace)
+ CMD2( KEY_DEL, KEY_NONE,
+ "shell-backward-delete-char", do_shell_backspace, ES, "*")
CMD0( KEY_CTRLC(KEY_CTRL('c')), KEY_NONE, /* C-c C-c */
"shell-intr", do_shell_intr)
CMD2( KEY_CTRL('d'), KEY_DELETE,
@@ -2058,16 +2073,18 @@
"shell-delete-word", do_shell_delete_word, ESi, 1, "*v")
CMD3( KEY_META(KEY_DEL), KEY_META(KEY_BS) ,
"shell-backward-delete-word", do_shell_delete_word, ESi, -1, "*v")
- CMD2( KEY_META('p'), KEY_META('n'),
- "shell-history-search", shell_write_char, ESi, "*ki")
- CMD0( KEY_CTRL('i'), KEY_NONE,
- "shell-tabulate", do_shell_tabulate)
- CMD1( KEY_CTRL('k'), KEY_NONE,
- "shell-kill-line", do_shell_kill_line, 1)
- CMD1( KEY_META('k'), KEY_NONE,
- "shell-kill-beginning-of-line", do_shell_kill_line, -1)
- CMD0( KEY_CTRL('y'), KEY_NONE,
- "shell-yank", do_shell_yank)
+ CMD1( KEY_META('p'), KEY_NONE,
+ "shell-previous", shell_previous_next, -1)
+ CMD1( KEY_META('n'), KEY_NONE,
+ "shell-next", shell_previous_next, -1)
+ CMD2( KEY_CTRL('i'), KEY_NONE,
+ "shell-tabulate", do_shell_tabulate, ES, "*")
+ CMD3( KEY_CTRL('k'), KEY_NONE,
+ "shell-kill-line", do_shell_kill_line, ESi, 1, "*v")
+ CMD3( KEY_META('k'), KEY_NONE,
+ "shell-kill-beginning-of-line", do_shell_kill_line, ESi, -1, "*v")
+ CMD2( KEY_CTRL('y'), KEY_NONE,
+ "shell-yank", do_shell_yank, ES, "*")
CMD_DEF_END,
};
- [Qemacs-commit] qemacs shell.c,
Charlie Gordon <=