summaryrefslogtreecommitdiff
path: root/src/editor.c
diff options
context:
space:
mode:
authorsabetts <sabetts>2003-05-28 22:36:27 +0000
committersabetts <sabetts>2003-05-28 22:36:27 +0000
commit99d6bf980b231670ef58d12e082cfd52e0513707 (patch)
treea9c2d6dbb1810084a42969039b54123816ec15eb /src/editor.c
parentc590e039dac7c9edd4074d8e52f7928e789b5078 (diff)
downloadratpoison-99d6bf980b231670ef58d12e082cfd52e0513707.zip
* src/globals.h (COMPLETION_NEXT): new define
(COMPLETION_PREVIOUS): likewise * src/editor.c (editor_complete): remove prototype (editor_complete_prev): new prototype (editor_complete_next): likewise (editor_insert): make it a static function. update prototype (edit_bindings): add editor_complete_prev. replace editor_complete with editor_complete_next. (editor_complete): call completions_complete (editor_complete_next): new function (editor_complete_prev): likewise * src/completions.h (completions_next_completion): remove prototype (completions_update): likewise (completions_assign): likewise (completions_complete): new prototype * src/completions.c (completions_assign): make it a static function (completions_update): likewise (completions_prev_match): new function (completions_next_match): likewise (completions_complete): renamed from completions_next_completion. call completions_next_match and completions_prev_match.
Diffstat (limited to 'src/editor.c')
-rw-r--r--src/editor.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/editor.c b/src/editor.c
index eb3e443..a16b497 100644
--- a/src/editor.c
+++ b/src/editor.c
@@ -28,11 +28,12 @@ static edit_status editor_no_action (rp_input_line *line);
static edit_status editor_enter (rp_input_line *line);
static edit_status editor_history_previous (rp_input_line *line);
static edit_status editor_history_next (rp_input_line *line);
-static edit_status editor_complete (rp_input_line *line);
static edit_status editor_backward_kill_line (rp_input_line *line);
+static edit_status editor_complete_prev (rp_input_line *line);
+static edit_status editor_complete_next (rp_input_line *line);
/* default edit action */
-edit_status editor_insert (rp_input_line *line, char *keysym_buf);
+static edit_status editor_insert (rp_input_line *line, char *keysym_buf);
static char *saved_command = NULL;
@@ -73,7 +74,8 @@ static edit_binding edit_bindings[] =
{{XK_Down, 0}, editor_history_next},
{{XK_Return, 0}, editor_enter},
{{XK_KP_Enter, 0}, editor_enter},
- {{XK_Tab, 0}, editor_complete},
+ {{XK_Tab, 0}, editor_complete_next},
+ {{XK_ISO_Left_Tab, 0}, editor_complete_prev},
{ {0, 0}, 0} };
rp_input_line *
@@ -549,7 +551,7 @@ editor_paste_selection (rp_input_line *line)
}
static edit_status
-editor_complete (rp_input_line *line)
+editor_complete (rp_input_line *line, int direction)
{
char *tmp;
char *s;
@@ -562,7 +564,7 @@ editor_complete (rp_input_line *line)
/* We don't need to free s because it's a string from the completion
list. */
- s = completions_next_completion (line->compl, tmp);
+ s = completions_complete (line->compl, tmp, direction);
free (tmp);
if (s == NULL)
@@ -574,3 +576,15 @@ editor_complete (rp_input_line *line)
return EDIT_COMPLETE;
}
+
+static edit_status
+editor_complete_next (rp_input_line *line)
+{
+ return editor_complete (line, COMPLETION_NEXT);
+}
+
+static edit_status
+editor_complete_prev (rp_input_line *line)
+{
+ return editor_complete (line, COMPLETION_PREVIOUS);
+}