The color is controlled by
document.browse.links.active_link.insert_mode_colors.background
document.browse.links.active_link.insert_mode_colors.text
Also avoid overloading local variable "i" in get_current_link().
---
src/config/options.inc | 12 ++++++++++++
src/document/document.c | 2 ++
src/document/options.c | 2 ++
src/document/options.h | 1 +
src/viewer/text/link.c | 17 ++++++++++++-----
5 files changed, 29 insertions(+), 5 deletions(-)
diff --git a/src/config/options.inc b/src/config/options.inc
index 340ab93..7098854 100644
--- a/src/config/options.inc
+++ b/src/config/options.inc
@@ -294,6 +294,18 @@ static struct option_info config_options_info[] = {
"text", 0, "black",
N_("Default text color.")),
+ INIT_OPT_TREE("document.browse.links.active_link", N_("Insert mode
colors"),
+ "insert_mode_colors", 0,
+ N_("Insert mode colors.")),
+
+ INIT_OPT_COLOR("document.browse.links.active_link.insert_mode_colors",
N_("Background color for text field in insert mode."),
+ "background", 0, "#0000ff",
+ N_("Background color for text field in insert mode.")),
+
+ INIT_OPT_COLOR("document.browse.links.active_link.insert_mode_colors",
N_("Text color for text field in insert mode"),
+ "text", 0, "black",
+ N_("Text color for text field in insert mode.")),
+
INIT_OPT_BOOL("document.browse.links.active_link", N_("Enable color"),
"enable_color", 0, 0,
N_("Enable use of the active link background and text color "
diff --git a/src/document/document.c b/src/document/document.c
index 5424f6f..19ee2d0 100644
--- a/src/document/document.c
+++ b/src/document/document.c
@@ -234,6 +234,8 @@ update_cached_document_options(struct session *ses)
memset(&active_link, 0, sizeof(active_link)); /* Safer. */
active_link.color.foreground =
get_opt_color("document.browse.links.active_link.colors.text", ses);
active_link.color.background =
get_opt_color("document.browse.links.active_link.colors.background", ses);
+ active_link.insert_mode_color.foreground =
get_opt_color("document.browse.links.active_link.insert_mode_colors.text", ses);
+ active_link.insert_mode_color.background =
get_opt_color("document.browse.links.active_link.insert_mode_colors.background",
ses);
active_link.enable_color =
get_opt_bool("document.browse.links.active_link.enable_color", ses);
active_link.invert =
get_opt_bool("document.browse.links.active_link.invert", ses);
active_link.underline =
get_opt_bool("document.browse.links.active_link.underline", ses);
diff --git a/src/document/options.c b/src/document/options.c
index b681fda..9208d64 100644
--- a/src/document/options.c
+++ b/src/document/options.c
@@ -52,6 +52,8 @@ init_document_options(struct session *ses, struct
document_options *doo)
doo->active_link.color.foreground =
get_opt_color("document.browse.links.active_link.colors.text", ses);
doo->active_link.color.background =
get_opt_color("document.browse.links.active_link.colors.background", ses);
+ doo->active_link.insert_mode_color.foreground =
get_opt_color("document.browse.links.active_link.insert_mode_colors.text", ses);
+ doo->active_link.insert_mode_color.background =
get_opt_color("document.browse.links.active_link.insert_mode_colors.background",
ses);
if (get_opt_bool("document.colors.increase_contrast", ses))
doo->color_flags |= COLOR_INCREASE_CONTRAST;
diff --git a/src/document/options.h b/src/document/options.h
index d3bd29a..52c1956 100644
--- a/src/document/options.h
+++ b/src/document/options.h
@@ -20,6 +20,7 @@ struct active_link_options {
unsigned int bold:1;
unsigned int invert:1;
struct active_link_options_colors color;
+ struct active_link_options_colors insert_mode_color;
};
/** This mostly acts as a option cache so rendering will be faster. However it
diff --git a/src/viewer/text/link.c b/src/viewer/text/link.c
index a9021b0..eaa15f1 100644
--- a/src/viewer/text/link.c
+++ b/src/viewer/text/link.c
@@ -165,7 +165,7 @@ get_link_cursor_offset(struct document_view *doc_view,
struct link *link)
/** Initialise a static template character with the colour and attributes
* appropriate for an active link and return that character. */
static inline struct screen_char *
-init_link_drawing(struct document_view *doc_view, struct link *link, int
invert)
+init_link_drawing(struct document_view *doc_view, struct link *link, int
invert, int input)
{
struct document_options *doc_opts;
static struct screen_char template;
@@ -187,8 +187,13 @@ init_link_drawing(struct document_view *doc_view, struct
link *link, int invert)
template.attr |= SCREEN_ATTR_BOLD;
if (doc_opts->active_link.enable_color) {
- colors.foreground = doc_opts->active_link.color.foreground;
- colors.background = doc_opts->active_link.color.background;
+ if (input) {
+ colors.foreground =
doc_opts->active_link.insert_mode_color.foreground;
+ colors.background =
doc_opts->active_link.insert_mode_color.background;
+ } else {
+ colors.foreground =
doc_opts->active_link.color.foreground;
+ colors.background =
doc_opts->active_link.color.background;
+ }
} else {
colors.foreground = link->color.foreground;
colors.background = link->color.background;
@@ -231,6 +236,7 @@ draw_current_link(struct session *ses, struct document_view
*doc_view)
struct link *link;
int cursor_offset;
int xpos, ypos;
+ int invert, input;
int i;
assert(term && doc_view && doc_view->vs);
@@ -242,8 +248,9 @@ draw_current_link(struct session *ses, struct document_view
*doc_view)
link = get_current_link(doc_view);
if (!link) return;
- i = !link_is_textinput(link) || ses->insert_mode == INSERT_MODE_OFF;
- template = init_link_drawing(doc_view, link, i);
+ invert = !link_is_textinput(link) || ses->insert_mode ==
INSERT_MODE_OFF;
+ input = ses->insert_mode == INSERT_MODE_ON;
+ template = init_link_drawing(doc_view, link, invert, input);
if (!template) return;
xpos = doc_view->box.x - doc_view->vs->x;
--
1.6.3
_______________________________________________
elinks-dev mailing list
[email protected]
http://linuxfromscratch.org/mailman/listinfo/elinks-dev