[w3m-dev 03292] Re: load file at cursor
* anchor.c (reAnchorPos): added (reAnchorWord): added (reAnchorAny): rewrite to use reAnchorPos() * funcname.tab (MARK_WORD): added * keybind.c (;) MARK_WORD * main.c (getCurWord): added (chkWORD): added (is_wordchar): added (getCurWord): added (GetWord): rewrite to use getCurWord() * proto.h (chkWORD): added (reAnchorWord): added * doc/README.func: add MARK_WORD * doc/keymap.default: add MARK_WORD * doc-jp/README.func: add MARK_WORD * doc-jp/keymap.default: add MARK_WORD * NEWS: add MARK_WORD From: Fumitoshi UKAI <ukai@debian.or.jp>
This commit is contained in:
@@ -1,3 +1,24 @@
|
|||||||
|
2002-09-06 Fumitoshi UKAI <ukai@debian.or.jp>
|
||||||
|
|
||||||
|
* [w3m-dev 03292] Re: load file at cursor
|
||||||
|
* anchor.c (reAnchorPos): added
|
||||||
|
(reAnchorWord): added
|
||||||
|
(reAnchorAny): rewrite to use reAnchorPos()
|
||||||
|
* funcname.tab (MARK_WORD): added
|
||||||
|
* keybind.c (;) MARK_WORD
|
||||||
|
* main.c (getCurWord): added
|
||||||
|
(chkWORD): added
|
||||||
|
(is_wordchar): added
|
||||||
|
(getCurWord): added
|
||||||
|
(GetWord): rewrite to use getCurWord()
|
||||||
|
* proto.h (chkWORD): added
|
||||||
|
(reAnchorWord): added
|
||||||
|
* doc/README.func: add MARK_WORD
|
||||||
|
* doc/keymap.default: add MARK_WORD
|
||||||
|
* doc-jp/README.func: add MARK_WORD
|
||||||
|
* doc-jp/keymap.default: add MARK_WORD
|
||||||
|
* NEWS: add MARK_WORD
|
||||||
|
|
||||||
2002-08-28 Kiyokazu SUTO <suto@ks-and-ks.ne.jp>
|
2002-08-28 Kiyokazu SUTO <suto@ks-and-ks.ne.jp>
|
||||||
|
|
||||||
* [w3m-dev 03291] parsetagx.c:toNumber()
|
* [w3m-dev 03291] parsetagx.c:toNumber()
|
||||||
@@ -3721,4 +3742,4 @@
|
|||||||
* release-0-2-1
|
* release-0-2-1
|
||||||
* import w3m-0.2.1
|
* import w3m-0.2.1
|
||||||
|
|
||||||
$Id: ChangeLog,v 1.418 2002/08/27 16:39:40 ukai Exp $
|
$Id: ChangeLog,v 1.419 2002/09/05 15:43:21 ukai Exp $
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
w3m 0.4?
|
w3m 0.4?
|
||||||
|
|
||||||
|
* func: MARK_WORD
|
||||||
* rc: imgsize: obsoleted
|
* rc: imgsize: obsoleted
|
||||||
* w3m-img for framebuffer merged
|
* w3m-img for framebuffer merged
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: anchor.c,v 1.10 2002/03/29 16:39:37 ukai Exp $ */
|
/* $Id: anchor.c,v 1.11 2002/09/05 15:43:21 ukai Exp $ */
|
||||||
#include "fm.h"
|
#include "fm.h"
|
||||||
#include "myctype.h"
|
#include "myctype.h"
|
||||||
#include "regex.h"
|
#include "regex.h"
|
||||||
@@ -277,6 +277,36 @@ reseq_anchor(Buffer *buf)
|
|||||||
reseq_anchor0(buf->formitem, seqmap);
|
reseq_anchor0(buf->formitem, seqmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
reAnchorPos(Buffer *buf, Line *l, char *p1, char *p2,
|
||||||
|
Anchor *(*anchorproc) (Buffer *, char *, char *, int, int))
|
||||||
|
{
|
||||||
|
Anchor *a;
|
||||||
|
int spos, epos;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
spos = p1 - l->lineBuf;
|
||||||
|
epos = p2 - l->lineBuf;
|
||||||
|
for (i = spos; i < epos; i++) {
|
||||||
|
if (l->propBuf[i] & (PE_ANCHOR | PE_FORM))
|
||||||
|
return p2;
|
||||||
|
}
|
||||||
|
a = anchorproc(buf, p1, p2, l->linenumber, p1 - l->lineBuf);
|
||||||
|
a->end.line = l->linenumber;
|
||||||
|
a->end.pos = epos;
|
||||||
|
a->hseq = -2;
|
||||||
|
for (i = a->start.pos; i < a->end.pos; i++)
|
||||||
|
l->propBuf[i] |= PE_ANCHOR;
|
||||||
|
return p2;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
reAnchorWord(Buffer *buf, Line *l, int spos, int epos)
|
||||||
|
{
|
||||||
|
reAnchorPos(buf, l, &l->lineBuf[spos], &l->lineBuf[epos], _put_anchor_all);
|
||||||
|
reseq_anchor(buf);
|
||||||
|
}
|
||||||
|
|
||||||
/* search regexp and register them as anchors */
|
/* search regexp and register them as anchors */
|
||||||
/* returns error message if any */
|
/* returns error message if any */
|
||||||
static char *
|
static char *
|
||||||
@@ -285,9 +315,6 @@ reAnchorAny(Buffer *buf, char *re,
|
|||||||
{
|
{
|
||||||
Line *l;
|
Line *l;
|
||||||
char *p, *p1, *p2;
|
char *p, *p1, *p2;
|
||||||
Anchor *a;
|
|
||||||
int i;
|
|
||||||
int spos, epos;
|
|
||||||
|
|
||||||
if (re == NULL || *re == '\0') {
|
if (re == NULL || *re == '\0') {
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -302,20 +329,7 @@ reAnchorAny(Buffer *buf, char *re,
|
|||||||
for (;;) {
|
for (;;) {
|
||||||
if (regexMatch(p, &l->lineBuf[l->len] - p, p == l->lineBuf) == 1) {
|
if (regexMatch(p, &l->lineBuf[l->len] - p, p == l->lineBuf) == 1) {
|
||||||
matchedPosition(&p1, &p2);
|
matchedPosition(&p1, &p2);
|
||||||
spos = p1 - l->lineBuf;
|
p = reAnchorPos(buf, l, p1, p2, anchorproc);
|
||||||
epos = p2 - l->lineBuf;
|
|
||||||
for (i = spos; i < epos; i++) {
|
|
||||||
if (l->propBuf[i] & (PE_ANCHOR | PE_FORM))
|
|
||||||
goto _next;
|
|
||||||
}
|
|
||||||
a = anchorproc(buf, p1, p2, l->linenumber, p1 - l->lineBuf);
|
|
||||||
a->end.line = l->linenumber;
|
|
||||||
a->end.pos = epos;
|
|
||||||
a->hseq = -2;
|
|
||||||
for (i = a->start.pos; i < a->end.pos; i++)
|
|
||||||
l->propBuf[i] |= PE_ANCHOR;
|
|
||||||
_next:
|
|
||||||
p = p2;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ MAIN_MENU
|
|||||||
MARK マークを設定/解除します
|
MARK マークを設定/解除します
|
||||||
MARK_MID Message-ID風の文字列を,news:のリンクにします
|
MARK_MID Message-ID風の文字列を,news:のリンクにします
|
||||||
MARK_URL URL風の文字列をリンクにします
|
MARK_URL URL風の文字列をリンクにします
|
||||||
|
MARK_WORD カーソルのある語をリンクにします
|
||||||
MENU メニューを立ち上げます
|
MENU メニューを立ち上げます
|
||||||
MOUSE_TOGGLE マウスの有効/無効をトグルする
|
MOUSE_TOGGLE マウスの有効/無効をトグルする
|
||||||
MOVE_DOWN カーソルを下に移動します(改ページ時には半ページスクロール)
|
MOVE_DOWN カーソルを下に移動します(改ページ時には半ページスクロール)
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ keymap , LEFT
|
|||||||
keymap . RIGHT
|
keymap . RIGHT
|
||||||
keymap / SEARCH
|
keymap / SEARCH
|
||||||
keymap : MARK_URL
|
keymap : MARK_URL
|
||||||
|
keymap ; MARK_WORD
|
||||||
keymap < SHIFT_LEFT
|
keymap < SHIFT_LEFT
|
||||||
keymap = INFO
|
keymap = INFO
|
||||||
keymap > SHIFT_RIGHT
|
keymap > SHIFT_RIGHT
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ MAIN_MENU Popup menu
|
|||||||
MARK Set/unset mark
|
MARK Set/unset mark
|
||||||
MARK_MID Mark Message-ID-like strings as anchors
|
MARK_MID Mark Message-ID-like strings as anchors
|
||||||
MARK_URL Mark URL-like strings as anchors
|
MARK_URL Mark URL-like strings as anchors
|
||||||
|
MARK_WORD Mark current word as anchor
|
||||||
MENU Popup menu
|
MENU Popup menu
|
||||||
MOUSE_TOGGLE Toggle activity of mouse
|
MOUSE_TOGGLE Toggle activity of mouse
|
||||||
MOVE_DOWN Move cursor down (a half screen scroll at the end of screen)
|
MOVE_DOWN Move cursor down (a half screen scroll at the end of screen)
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ keymap , LEFT
|
|||||||
keymap . RIGHT
|
keymap . RIGHT
|
||||||
keymap / SEARCH
|
keymap / SEARCH
|
||||||
keymap : MARK_URL
|
keymap : MARK_URL
|
||||||
|
keymap ; MARK_WORD
|
||||||
keymap < SHIFT_LEFT
|
keymap < SHIFT_LEFT
|
||||||
keymap = INFO
|
keymap = INFO
|
||||||
keymap > SHIFT_RIGHT
|
keymap > SHIFT_RIGHT
|
||||||
|
|||||||
+2
-1
@@ -1,4 +1,4 @@
|
|||||||
# $Id: funcname.tab,v 1.10 2002/06/01 17:09:05 ukai Exp $
|
# $Id: funcname.tab,v 1.11 2002/09/05 15:43:21 ukai Exp $
|
||||||
# macro name function name
|
# macro name function name
|
||||||
#----------------------------
|
#----------------------------
|
||||||
@@@ nulcmd
|
@@@ nulcmd
|
||||||
@@ -50,6 +50,7 @@ MAIN_MENU mainMn
|
|||||||
MARK _mark
|
MARK _mark
|
||||||
MARK_MID chkNMID
|
MARK_MID chkNMID
|
||||||
MARK_URL chkURL
|
MARK_URL chkURL
|
||||||
|
MARK_WORD chkWORD
|
||||||
MENU mainMn
|
MENU mainMn
|
||||||
MOUSE mouse
|
MOUSE mouse
|
||||||
MOUSE_TOGGLE msToggle
|
MOUSE_TOGGLE msToggle
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: keybind.c,v 1.6 2002/01/23 17:19:47 ukai Exp $ */
|
/* $Id: keybind.c,v 1.7 2002/09/05 15:43:21 ukai Exp $ */
|
||||||
#include "funcname2.h"
|
#include "funcname2.h"
|
||||||
|
|
||||||
char GlobalKeymap[128] = {
|
char GlobalKeymap[128] = {
|
||||||
@@ -21,7 +21,7 @@ char GlobalKeymap[128] = {
|
|||||||
/* 0 1 2 3 4 5 6 7 */
|
/* 0 1 2 3 4 5 6 7 */
|
||||||
nulcmd, nulcmd, nulcmd, nulcmd, nulcmd, nulcmd, nulcmd, nulcmd,
|
nulcmd, nulcmd, nulcmd, nulcmd, nulcmd, nulcmd, nulcmd, nulcmd,
|
||||||
/* 8 9 : ; < = > ? */
|
/* 8 9 : ; < = > ? */
|
||||||
nulcmd, nulcmd, chkURL, nulcmd, shiftl, pginfo, shiftr, srchbak,
|
nulcmd, nulcmd, chkURL, chkWORD, shiftl, pginfo, shiftr, srchbak,
|
||||||
/* @ A B C D E F G */
|
/* @ A B C D E F G */
|
||||||
readsh, nulcmd, backBf, nulcmd, nulcmd, editBf, rFrame, goLineL,
|
readsh, nulcmd, backBf, nulcmd, nulcmd, editBf, rFrame, goLineL,
|
||||||
/* H I J K L M N O */
|
/* H I J K L M N O */
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: main.c,v 1.110 2002/07/17 16:07:37 ukai Exp $ */
|
/* $Id: main.c,v 1.111 2002/09/05 15:43:21 ukai Exp $ */
|
||||||
#define MAINPROGRAM
|
#define MAINPROGRAM
|
||||||
#include "fm.h"
|
#include "fm.h"
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
@@ -75,6 +75,8 @@ static void keyPressEventProc(int c);
|
|||||||
int show_params_p = 0;
|
int show_params_p = 0;
|
||||||
void show_params(FILE * fp);
|
void show_params(FILE * fp);
|
||||||
|
|
||||||
|
static char *getCurWord(Buffer *buf, int *spos, int *epos, const char *badchars);
|
||||||
|
|
||||||
static int display_ok = FALSE;
|
static int display_ok = FALSE;
|
||||||
static void dump_source(Buffer *);
|
static void dump_source(Buffer *);
|
||||||
static void dump_head(Buffer *);
|
static void dump_head(Buffer *);
|
||||||
@@ -4381,6 +4383,18 @@ chkURL(void)
|
|||||||
displayBuffer(Currentbuf, B_FORCE_REDRAW);
|
displayBuffer(Currentbuf, B_FORCE_REDRAW);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
chkWORD(void)
|
||||||
|
{
|
||||||
|
char *p;
|
||||||
|
int spos, epos;
|
||||||
|
p = getCurWord(Currentbuf, &spos, &epos, ":\"\'`<>");
|
||||||
|
if (p == NULL)
|
||||||
|
return;
|
||||||
|
reAnchorWord(Currentbuf, Currentbuf->currentLine, spos, epos);
|
||||||
|
displayBuffer(Currentbuf, B_FORCE_REDRAW);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef USE_NNTP
|
#ifdef USE_NNTP
|
||||||
/* mark Message-ID-like patterns as NEWS anchors */
|
/* mark Message-ID-like patterns as NEWS anchors */
|
||||||
void
|
void
|
||||||
@@ -4802,28 +4816,52 @@ wrapToggle(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
is_wordchar(int c, const char *badchars)
|
||||||
|
{
|
||||||
|
if (badchars)
|
||||||
|
return !(IS_SPACE(c) || strchr(badchars, c));
|
||||||
|
else
|
||||||
|
return IS_ALPHA(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
getCurWord(Buffer *buf, int *spos, int *epos, const char *badchars)
|
||||||
|
{
|
||||||
|
char *p;
|
||||||
|
Line *l = buf->currentLine;
|
||||||
|
int b, e;
|
||||||
|
|
||||||
|
*spos = 0;
|
||||||
|
*epos = 0;
|
||||||
|
if (l == NULL)
|
||||||
|
return NULL;
|
||||||
|
p = l->lineBuf;
|
||||||
|
e = buf->pos;
|
||||||
|
while (e > 0 && !is_wordchar(p[e], badchars))
|
||||||
|
e--;
|
||||||
|
if (!is_wordchar(p[e], badchars))
|
||||||
|
return NULL;
|
||||||
|
b = e;
|
||||||
|
while (b > 0 && is_wordchar(p[b-1], badchars))
|
||||||
|
b--;
|
||||||
|
while (e < l->len && is_wordchar(p[e], badchars))
|
||||||
|
e++;
|
||||||
|
*spos = b;
|
||||||
|
*epos = e;
|
||||||
|
return &p[b];
|
||||||
|
}
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
GetWord(Buffer *buf)
|
GetWord(Buffer *buf)
|
||||||
{
|
{
|
||||||
Line *l = buf->currentLine;
|
|
||||||
char *lb;
|
|
||||||
int b, e;
|
int b, e;
|
||||||
|
char *p;
|
||||||
|
|
||||||
if (l == NULL)
|
if ((p = getCurWord(buf, &b, &e, 0)) != NULL) {
|
||||||
return NULL;
|
return Strnew_charp_n(p, e - b)->ptr;
|
||||||
lb = l->lineBuf;
|
}
|
||||||
|
return NULL;
|
||||||
e = buf->pos;
|
|
||||||
while (e > 0 && !IS_ALPHA(lb[e]))
|
|
||||||
e--;
|
|
||||||
if (!IS_ALPHA(lb[e]))
|
|
||||||
return NULL;
|
|
||||||
b = e;
|
|
||||||
while (b > 0 && IS_ALPHA(lb[b - 1]))
|
|
||||||
b--;
|
|
||||||
while (e < l->len && IS_ALPHA(lb[e]))
|
|
||||||
e++;
|
|
||||||
return Strnew_charp_n(&lb[b], e - b)->ptr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_DICT
|
#ifdef USE_DICT
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: proto.h,v 1.45 2002/08/20 17:49:39 ukai Exp $ */
|
/* $Id: proto.h,v 1.46 2002/09/05 15:43:22 ukai Exp $ */
|
||||||
/*
|
/*
|
||||||
* This file was automatically generated by version 1.7 of cextract.
|
* This file was automatically generated by version 1.7 of cextract.
|
||||||
* Manual editing not recommended.
|
* Manual editing not recommended.
|
||||||
@@ -92,6 +92,7 @@ extern void vwSrc(void);
|
|||||||
extern void reload(void);
|
extern void reload(void);
|
||||||
extern void chkURL(void);
|
extern void chkURL(void);
|
||||||
extern void chkURLBuffer(Buffer *buf);
|
extern void chkURLBuffer(Buffer *buf);
|
||||||
|
extern void chkWORD(void);
|
||||||
#ifdef USE_NNTP
|
#ifdef USE_NNTP
|
||||||
extern void chkNMID(void);
|
extern void chkNMID(void);
|
||||||
extern void chkNMIDBuffer(Buffer *buf);
|
extern void chkNMIDBuffer(Buffer *buf);
|
||||||
@@ -486,6 +487,7 @@ extern Anchor *retrieveCurrentImg(Buffer *buf);
|
|||||||
extern Anchor *retrieveCurrentForm(Buffer *buf);
|
extern Anchor *retrieveCurrentForm(Buffer *buf);
|
||||||
extern Anchor *searchAnchor(AnchorList *al, char *str);
|
extern Anchor *searchAnchor(AnchorList *al, char *str);
|
||||||
extern Anchor *searchURLLabel(Buffer *buf, char *url);
|
extern Anchor *searchURLLabel(Buffer *buf, char *url);
|
||||||
|
extern void reAnchorWord(Buffer *buf, Line *l, int spos, int epos);
|
||||||
extern char *reAnchor(Buffer *buf, char *re);
|
extern char *reAnchor(Buffer *buf, char *re);
|
||||||
#ifdef USE_NNTP
|
#ifdef USE_NNTP
|
||||||
extern char *reAnchorNews(Buffer *buf, char *re);
|
extern char *reAnchorNews(Buffer *buf, char *re);
|
||||||
|
|||||||
Reference in New Issue
Block a user