mirror of
https://github.com/Ponce/slackbuilds
synced 2024-11-29 13:00:32 +01:00
f5e7485b6c
Signed-off-by: Robby Workman <rworkman@slackbuilds.org>
105 lines
3.1 KiB
Diff
105 lines
3.1 KiB
Diff
From 91ebd29a64451742b65115fc27034c6a3d154f90 Mon Sep 17 00:00:00 2001
|
|
From: Alexander Polakov <polachok@gmail.com>
|
|
Date: Sun, 29 May 2011 15:41:53 +0400
|
|
Subject: [PATCH 5/8] ksh: print expansions like a "menu" (with numbers) in vi
|
|
mode
|
|
|
|
* adds an extra argument to x_print_expansions()
|
|
- preserves the emacs mode behaviour
|
|
|
|
Why: in vi mode one can use the expansion number to
|
|
complete the word, but w/o numbers printed you
|
|
have to *count* expansions with your eyes to
|
|
find out the number. Stupid, huh?
|
|
---
|
|
edit.c | 7 +++++--
|
|
edit.h | 2 +-
|
|
emacs.c | 4 ++--
|
|
vi.c | 4 ++--
|
|
4 files changed, 10 insertions(+), 7 deletions(-)
|
|
|
|
diff --git edit.c edit.c
|
|
index 0b1ff7d..9cdcc6d 100644
|
|
--- edit.c
|
|
+++ edit.c
|
|
@@ -292,7 +292,7 @@ static void glob_path(int flags, const char *pat, XPtrV *wp,
|
|
const char *path);
|
|
|
|
void
|
|
-x_print_expansions(int nwords, char *const *words, int is_command)
|
|
+x_print_expansions(int nwords, char *const *words, int is_command, int menu)
|
|
{
|
|
int use_copy = 0;
|
|
int prefix_len;
|
|
@@ -330,7 +330,10 @@ x_print_expansions(int nwords, char *const *words, int is_command)
|
|
*/
|
|
x_putc('\r');
|
|
x_putc('\n');
|
|
- pr_list(use_copy ? (char **) XPptrv(l) : words);
|
|
+ if (menu)
|
|
+ pr_menu(use_copy ? (char **) XPptrv(l) : words);
|
|
+ else
|
|
+ pr_list(use_copy ? (char **) XPptrv(l) : words);
|
|
|
|
if (use_copy)
|
|
XPfree(l); /* not x_free_words() */
|
|
diff --git edit.h edit.h
|
|
index 37ccf28..258affe 100644
|
|
--- edit.h
|
|
+++ edit.h
|
|
@@ -52,7 +52,7 @@ void x_puts(const char *);
|
|
bool x_mode(bool);
|
|
int promptlen(const char *, const char **);
|
|
int x_do_comment(char *, int, int *);
|
|
-void x_print_expansions(int, char *const *, int);
|
|
+void x_print_expansions(int, char *const *, int, int);
|
|
int x_cf_glob(int, const char *, int, int, int *, int *, char ***, int *);
|
|
int x_longest_prefix(int , char *const *);
|
|
int x_basename(const char *, const char *);
|
|
diff --git emacs.c emacs.c
|
|
index 0bfda96..3b2d083 100644
|
|
--- emacs.c
|
|
+++ emacs.c
|
|
@@ -1684,7 +1684,7 @@ do_complete(int flags, /* XCF_{COMMAND,FILE,COMMAND_FILE} */
|
|
}
|
|
|
|
if (type == CT_LIST) {
|
|
- x_print_expansions(nwords, words, is_command);
|
|
+ x_print_expansions(nwords, words, is_command, 0);
|
|
x_redraw(0);
|
|
x_free_words(nwords, words);
|
|
return;
|
|
@@ -1707,7 +1707,7 @@ do_complete(int flags, /* XCF_{COMMAND,FILE,COMMAND_FILE} */
|
|
}
|
|
|
|
if (type == CT_COMPLIST && !completed) {
|
|
- x_print_expansions(nwords, words, is_command);
|
|
+ x_print_expansions(nwords, words, is_command, 0);
|
|
completed = 1;
|
|
}
|
|
|
|
diff --git vi.c vi.c
|
|
index 6eb5d8c..95d192c 100644
|
|
--- vi.c
|
|
+++ vi.c
|
|
@@ -1990,7 +1990,7 @@ complete_word(int command, int count, int flags)
|
|
count--;
|
|
if (count >= nwords) {
|
|
vi_error();
|
|
- x_print_expansions(nwords, words, is_command);
|
|
+ x_print_expansions(nwords, words, is_command, 1);
|
|
x_free_words(nwords, words);
|
|
redraw_line(0);
|
|
return -1;
|
|
@@ -2064,7 +2064,7 @@ print_expansions(struct edstate *e, int flags)
|
|
vi_error();
|
|
return -1;
|
|
}
|
|
- x_print_expansions(nwords, words, is_command);
|
|
+ x_print_expansions(nwords, words, is_command, 1);
|
|
x_free_words(nwords, words);
|
|
redraw_line(0);
|
|
return 0;
|
|
--
|
|
1.7.5
|
|
|