aboutsummaryrefslogtreecommitdiffstats
path: root/debian/patches/210_vim-like.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/210_vim-like.patch')
-rw-r--r--debian/patches/210_vim-like.patch87
1 files changed, 87 insertions, 0 deletions
diff --git a/debian/patches/210_vim-like.patch b/debian/patches/210_vim-like.patch
new file mode 100644
index 0000000..dcb598b
--- /dev/null
+++ b/debian/patches/210_vim-like.patch
@@ -0,0 +1,87 @@
+Origin: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=724028
+Bug: https://sourceforge.net/p/w3m/patches/68/
+Subject: vim/-perator like handling
+From: Laurence Richert <laurencerichert@yahoo.de>
+
+ - half page scrolling
+ - jumping to elements numbered by getLinkNumberStr() from Karsten
+ Schoelzel
+
+diff --git a/main.c b/main.c
+index b421943..4b40e8e 100644
+--- a/main.c
++++ b/main.c
+@@ -1566,6 +1566,18 @@ DEFUN(pgBack, PREV_PAGE, "Move to previous page")
+ * (Currentbuf->LINES - 1)), prec_num ? B_SCROLL : B_NORMAL);
+ }
+
++/* Move half page forward */
++DEFUN(hpgFore, NEXT_HALF_PAGE, "Scroll down half page")
++{
++ nscroll(searchKeyNum() * (Currentbuf->LINES / 2 - 1), B_NORMAL);
++}
++
++/* Move half page backward */
++DEFUN(hpgBack, PREV_HALF_PAGE, "Scroll up half page")
++{
++ nscroll(-searchKeyNum() * (Currentbuf->LINES / 2 - 1), B_NORMAL);
++}
++
+ /* 1 line up */
+ DEFUN(lup1, UP, "Scroll up one line")
+ {
+@@ -3568,6 +3580,33 @@ DEFUN(lastA, LINK_END, "Go to the last link")
+ displayBuffer(Currentbuf, B_NORMAL);
+ }
+
++/* go to the nth anchor */
++DEFUN(nthA, LINK_N, "Go to the nth link")
++{
++ HmarkerList *hl = Currentbuf->hmarklist;
++ BufferPoint *po;
++ Anchor *an;
++
++ int n = searchKeyNum();
++ if (n < 0 || n > hl->nmark) return;
++
++ if (Currentbuf->firstLine == NULL)
++ return;
++ if (!hl || hl->nmark == 0)
++ return;
++
++ po = hl->marks + n-1;
++ an = retrieveAnchor(Currentbuf->href, po->line, po->pos);
++ if (an == NULL)
++ an = retrieveAnchor(Currentbuf->formitem, po->line, po->pos);
++ if (an == NULL) return;
++
++ gotoLine(Currentbuf, po->line);
++ Currentbuf->pos = po->pos;
++ arrangeCursor(Currentbuf);
++ displayBuffer(Currentbuf, B_NORMAL);
++}
++
+ /* go to the next anchor */
+ DEFUN(nextA, NEXT_LINK, "Move to next link")
+ {
+diff --git a/proto.h b/proto.h
+index f8a7345..9d14a58 100644
+--- a/proto.h
++++ b/proto.h
+@@ -11,6 +11,8 @@ extern void pushEvent(int cmd, void *data);
+ extern MySignalHandler intTrap(SIGNAL_ARG);
+ extern void pgFore(void);
+ extern void pgBack(void);
++extern void hpgFore(void);
++extern void hpgBack(void);
+ extern void lup1(void);
+ extern void ldown1(void);
+ extern void ctrCsrV(void);
+@@ -61,6 +63,7 @@ extern void submitForm(void);
+ extern void followForm(void);
+ extern void topA(void);
+ extern void lastA(void);
++extern void nthA(void);
+ extern void onA(void);
+
+ extern void nextA(void);