From: NeilBrown Date: Wed, 25 Nov 2015 22:27:37 +0000 (+1100) Subject: Provide a "Move-to" command to use e.g. when completing a search. X-Git-Tag: lca2016~227 X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=5a8181289448dea4f05f7d2a8c10273a1f924382;p=edlib.git Provide a "Move-to" command to use e.g. when completing a search. Better than direct access to point_to_mark(). Signed-off-by: NeilBrown --- diff --git a/core-doc.c b/core-doc.c index 62e45c70..5ab745ff 100644 --- a/core-doc.c +++ b/core-doc.c @@ -175,6 +175,11 @@ DEF_CMD(doc_handle) return 1; } + if (strcmp(ci->key, "Move-to") == 0) { + point_to_mark(ci->home->point, ci->mark); + return 1; + } + if (strcmp(ci->key, "doc:set-name") == 0) { doc_set_name(d, ci->str); return 1; diff --git a/mode-emacs.c b/mode-emacs.c index 2da6abbe..8c60d6ae 100644 --- a/mode-emacs.c +++ b/mode-emacs.c @@ -557,6 +557,7 @@ DEF_CMD(emacs_kill_doc) DEF_CMD(emacs_search) { struct cmd_info ci2 = {0}; + struct mark *m; if (strcmp(ci->key, "Search String") != 0) { struct pane *p = pane_attach(ci->focus, "popup", NULL, "TR2"); @@ -580,14 +581,20 @@ DEF_CMD(emacs_search) if (!ci->str || !ci->str[0]) return -1; ci2.pointp = pane_point(ci->focus); - ci2.mark = mark_dup(&(*ci2.pointp)->m, 1); + m = mark_dup(&(*ci2.pointp)->m, 1); + ci2.mark = m; ci2.str = ci->str; ci2.key = "text-search"; if (!key_lookup(pane2ed(ci->focus)->commands, &ci2)) ci2.extra = -1; - if (ci2.extra > 0) - point_to_mark(*ci2.pointp, ci2.mark); - mark_free(ci2.mark); + if (ci2.extra > 0) { + memset(&ci2, 0, sizeof(ci2)); + ci2.key = "Move-to"; + ci2.mark = m; + ci2.focus = ci->focus; + key_handle_focus(&ci2); + } + mark_free(m); return 1; }