aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurence Richert <laurencerichert@yahoo.de>2013-10-12 10:57:35 +0000
committerTatsuya Kinoshita <tats@debian.org>2013-10-12 10:57:35 +0000
commit3864447c900e7ad460c97f519905c52b4e2b1fd7 (patch)
tree2438a2f0d0c375bb16086e1a6567e48f24a099a9
parentMerge from upstream on 2012-05-22 (diff)
downloadw3m-3864447c900e7ad460c97f519905c52b4e2b1fd7.tar.gz
w3m-3864447c900e7ad460c97f519905c52b4e2b1fd7.zip
vim/-perator like handling
- half page scrolling - jumping to elements numbered by getLinkNumberStr() from Karsten Schoelzel
Diffstat (limited to '')
-rw-r--r--main.c39
-rw-r--r--proto.h3
2 files changed, 42 insertions, 0 deletions
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);