Hi,
kjell@ suggested a different approach. Instead of
using hacks in basic.c, I've added wrappers in dired
itself.
Rather than overwriting existing keys (C-v and M-v),
I think that using C-w and C-T is better for now.
As usual, I welcome feedback.
Index: src/usr.bin/mg/dired.c
===
RCS file: /cvs/src/usr.bin/mg/dired.c,v
retrieving revision 1.48
diff -u -p -r1.48 dired.c
--- src/usr.bin/mg/dired.c 23 Jan 2011 00:45:03 - 1.48
+++ src/usr.bin/mg/dired.c 18 Jul 2011 22:47:43 -
@@ -36,6 +36,8 @@ static int d_rename(int, int);
static int d_shell_command(int, int);
static int d_create_directory(int, int);
static int d_makename(struct line *, char *, size_t);
+static int d_forwpage(int, int);
+static int d_backpage(int, int);
static void reaper(int);
extern struct keymap_s helpmap, cXmap, metamap;
@@ -63,10 +65,10 @@ static PF diredcl[] = {
rescan, /* ^Q */
backisearch,/* ^R */
forwisearch,/* ^S */
- rescan, /* ^T */
+ d_backpage, /* ^T */
universal_argument, /* ^U */
forwpage, /* ^V */
- rescan, /* ^W */
+ d_forwpage, /* ^W */
NULL/* ^X */
};
@@ -590,6 +592,26 @@ d_makename(struct line *lp, char *fn, si
if (strlcat(fn, p, len) = len)
return (FALSE);
return ((lgetc(lp, 2) == 'd') ? TRUE : FALSE);
+}
+
+static int
+d_forwpage(int f, int n)
+{
+ forwpage(f | FFRAND, n);
+ if ((strrchr(curwp-w_dotp-l_text, ' ')) != NULL)
+ curwp-w_doto = strrchr(curwp-w_dotp-l_text, ' ') -
+ curwp-w_dotp-l_text + 1;
+ return TRUE;
+}
+
+static int
+d_backpage(int f, int n)
+{
+ backpage(f | FFRAND, n);
+ if ((strrchr(curwp-w_dotp-l_text, ' ')) != NULL)
+ curwp-w_doto = strrchr(curwp-w_dotp-l_text, ' ') -
+ curwp-w_dotp-l_text + 1;
+ return TRUE;
}
/*