Rename range-faces to range-specs
range-faces are now used to replace-range highlighters, where the string part is not interpretted as a face but as a display line, so the name was not relevant anymore.
This commit is contained in:
parent
44d2db2706
commit
dfaafcd49a
|
@ -863,9 +863,9 @@ Options are typed, their type can be
|
||||||
* `{int,str}-list`: a list, elements are separated by a colon (:)
|
* `{int,str}-list`: a list, elements are separated by a colon (:)
|
||||||
if an element needs to contain a colon, it can be escaped with a
|
if an element needs to contain a colon, it can be escaped with a
|
||||||
backslash.
|
backslash.
|
||||||
* `range-faces`: a `:` separated list of a pair of a buffer range
|
* `range-specs`: a `:` separated list of a pair of a buffer range
|
||||||
(`<begin line>.<begin column>,<end line>.<end column>` or
|
(`<begin line>.<begin column>,<end line>.<end column>` or
|
||||||
`<begin line>.<end line>+<length>`) and a face (separated by `|`),
|
`<begin line>.<end line>+<length>`) and a string (separated by `|`),
|
||||||
except for the first element which is just the timestamp of the buffer.
|
except for the first element which is just the timestamp of the buffer.
|
||||||
* `line-flags`: a `:` separated list of a line number and a corresponding
|
* `line-flags`: a `:` separated list of a line number and a corresponding
|
||||||
flag (`<line>|<flag text>`), except for the first element which is just
|
flag (`<line>|<flag text>`), except for the first element which is just
|
||||||
|
@ -1245,7 +1245,10 @@ General highlighters are:
|
||||||
the rest of the buffer, default is `|`.
|
the rest of the buffer, default is `|`.
|
||||||
* `wrap \<-word>`: Soft wrap buffer content to window width, wrap at word boundaries if `-word` is specified.
|
* `wrap \<-word>`: Soft wrap buffer content to window width, wrap at word boundaries if `-word` is specified.
|
||||||
* `fill <face>`: fill using given face, mostly useful with <<regions-highlighters,Regions highlighters>>
|
* `fill <face>`: fill using given face, mostly useful with <<regions-highlighters,Regions highlighters>>
|
||||||
* `ranges <option_name>`: use the data in the range-faces option of the given name to highlight the buffer.
|
* `ranges <option_name>`: use the data in the range-specs option of the given name to highlight the buffer.
|
||||||
|
The string part of the is interpretted as a face to apply to the range.
|
||||||
|
* `replace-ranges <option_name>`: use the data in the range-specs option of the given name to highlight the buffer.
|
||||||
|
The string part of the is interpretted as a display line to display in place of the range.
|
||||||
|
|
||||||
Highlighting Groups
|
Highlighting Groups
|
||||||
^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
@ -91,8 +91,14 @@ General highlighters
|
||||||
wrap at word boundaries instead of codepoint boundaries.
|
wrap at word boundaries instead of codepoint boundaries.
|
||||||
|
|
||||||
*ranges* <option_name>::
|
*ranges* <option_name>::
|
||||||
use the data in the range-faces option of the given name to highlight
|
use the data in the range-specs option of the given name to highlight
|
||||||
the buffer.
|
the buffer. The string part of the is interpretted as a face to apply
|
||||||
|
to the range.
|
||||||
|
|
||||||
|
*replace-ranges* <option_name>::
|
||||||
|
use the data in the range-specs option of the given name to highlight
|
||||||
|
the buffer. The string part of the is interpretted as a display line to
|
||||||
|
display in place of the range.
|
||||||
|
|
||||||
*fill* <face>::
|
*fill* <face>::
|
||||||
fill using the given *face*, mostly useful with regions highlighters
|
fill using the given *face*, mostly useful with regions highlighters
|
||||||
|
|
|
@ -21,10 +21,10 @@ Types
|
||||||
*int-list*, *str-list*::
|
*int-list*, *str-list*::
|
||||||
a list, elements are separated by a colon (:) if an element needs
|
a list, elements are separated by a colon (:) if an element needs
|
||||||
to contain a colon, it can be escaped with a backslash
|
to contain a colon, it can be escaped with a backslash
|
||||||
*range-faces*::
|
*range-specs*::
|
||||||
a `:` separated list of a pair of a buffer range
|
a `:` separated list of a pair of a buffer range
|
||||||
(`<begin line>.<begin column>,<end line>.<end column>` or
|
(`<begin line>.<begin column>,<end line>.<end column>` or
|
||||||
`<begin line>.<begin column>+<length>`) and a face (separated by `|`),
|
`<begin line>.<begin column>+<length>`) and a string (separated by `|`),
|
||||||
except for the first element which is just the timestamp of the buffer.
|
except for the first element which is just the timestamp of the buffer.
|
||||||
*line-flags*::
|
*line-flags*::
|
||||||
a `:` separated list of a line number and a corresponding flag
|
a `:` separated list of a line number and a corresponding flag
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
decl -hidden range-faces spell_regions
|
decl -hidden range-specs spell_regions
|
||||||
decl -hidden str spell_lang
|
decl -hidden str spell_lang
|
||||||
decl -hidden str spell_tmp_file
|
decl -hidden str spell_tmp_file
|
||||||
|
|
||||||
|
|
|
@ -48,9 +48,9 @@ StringView option_type_name(Meta::Type<TimestampedList<LineAndFlag>>)
|
||||||
return "line-flags";
|
return "line-flags";
|
||||||
}
|
}
|
||||||
|
|
||||||
StringView option_type_name(Meta::Type<TimestampedList<RangeAndFace>>)
|
StringView option_type_name(Meta::Type<TimestampedList<RangeAndString>>)
|
||||||
{
|
{
|
||||||
return "range-faces";
|
return "range-specs";
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
|
@ -1335,7 +1335,7 @@ const CommandDesc declare_option_cmd = {
|
||||||
" str-list: list of character strings\n"
|
" str-list: list of character strings\n"
|
||||||
" completions: list of completion candidates\n"
|
" completions: list of completion candidates\n"
|
||||||
" line-flags: list of line flags\n"
|
" line-flags: list of line flags\n"
|
||||||
" range-faces: list of range faces\n",
|
" range-specs: list of range specs\n",
|
||||||
ParameterDesc{
|
ParameterDesc{
|
||||||
{ { "hidden", { false, "do not display option name when completing" } },
|
{ { "hidden", { false, "do not display option name when completing" } },
|
||||||
{ "docstring", { true, "specify option description" } } },
|
{ "docstring", { true, "specify option description" } } },
|
||||||
|
@ -1346,7 +1346,7 @@ const CommandDesc declare_option_cmd = {
|
||||||
make_completer(
|
make_completer(
|
||||||
[](const Context& context, CompletionFlags flags,
|
[](const Context& context, CompletionFlags flags,
|
||||||
const String& prefix, ByteCount cursor_pos) -> Completions {
|
const String& prefix, ByteCount cursor_pos) -> Completions {
|
||||||
auto c = {"int", "bool", "str", "regex", "int-list", "str-list", "completions", "line-flags", "range-faces"};
|
auto c = {"int", "bool", "str", "regex", "int-list", "str-list", "completions", "line-flags", "range-specs"};
|
||||||
return { 0_byte, cursor_pos, complete(prefix, cursor_pos, c) };
|
return { 0_byte, cursor_pos, complete(prefix, cursor_pos, c) };
|
||||||
}),
|
}),
|
||||||
[](const ParametersParser& parser, Context& context, const ShellContext&)
|
[](const ParametersParser& parser, Context& context, const ShellContext&)
|
||||||
|
@ -1377,8 +1377,8 @@ const CommandDesc declare_option_cmd = {
|
||||||
opt = ®.declare_option<CompletionList>(parser[1], docstring, {}, flags);
|
opt = ®.declare_option<CompletionList>(parser[1], docstring, {}, flags);
|
||||||
else if (parser[0] == "line-flags")
|
else if (parser[0] == "line-flags")
|
||||||
opt = ®.declare_option<TimestampedList<LineAndFlag>>(parser[1], docstring, {}, flags);
|
opt = ®.declare_option<TimestampedList<LineAndFlag>>(parser[1], docstring, {}, flags);
|
||||||
else if (parser[0] == "range-faces")
|
else if (parser[0] == "range-specs")
|
||||||
opt = ®.declare_option<TimestampedList<RangeAndFace>>(parser[1], docstring, {}, flags);
|
opt = ®.declare_option<TimestampedList<RangeAndString>>(parser[1], docstring, {}, flags);
|
||||||
else
|
else
|
||||||
throw runtime_error(format("unknown type {}", parser[0]));
|
throw runtime_error(format("unknown type {}", parser[0]));
|
||||||
|
|
||||||
|
|
|
@ -1345,10 +1345,10 @@ void option_from_string(StringView str, InclusiveBufferRange& opt)
|
||||||
opt = { first, last };
|
opt = { first, last };
|
||||||
}
|
}
|
||||||
|
|
||||||
BufferCoord& get_first(RangeAndFace& r) { return std::get<0>(r).first; }
|
BufferCoord& get_first(RangeAndString& r) { return std::get<0>(r).first; }
|
||||||
BufferCoord& get_last(RangeAndFace& r) { return std::get<0>(r).last; }
|
BufferCoord& get_last(RangeAndString& r) { return std::get<0>(r).last; }
|
||||||
|
|
||||||
static void update_ranges_ifn(const Buffer& buffer, TimestampedList<RangeAndFace>& range_and_faces)
|
static void update_ranges_ifn(const Buffer& buffer, TimestampedList<RangeAndString>& range_and_faces)
|
||||||
{
|
{
|
||||||
if (range_and_faces.prefix == buffer.timestamp())
|
if (range_and_faces.prefix == buffer.timestamp())
|
||||||
return;
|
return;
|
||||||
|
@ -1386,7 +1386,7 @@ struct RangesHighlighter : Highlighter
|
||||||
|
|
||||||
const String& option_name = params[0];
|
const String& option_name = params[0];
|
||||||
// throw if wrong option type
|
// throw if wrong option type
|
||||||
GlobalScope::instance().options()[option_name].get<TimestampedList<RangeAndFace>>();
|
GlobalScope::instance().options()[option_name].get<TimestampedList<RangeAndString>>();
|
||||||
|
|
||||||
return {"hlranges_" + params[0], make_unique<RangesHighlighter>(option_name)};
|
return {"hlranges_" + params[0], make_unique<RangesHighlighter>(option_name)};
|
||||||
}
|
}
|
||||||
|
@ -1395,7 +1395,7 @@ private:
|
||||||
void do_highlight(const Context& context, HighlightPass, DisplayBuffer& display_buffer, BufferRange) override
|
void do_highlight(const Context& context, HighlightPass, DisplayBuffer& display_buffer, BufferRange) override
|
||||||
{
|
{
|
||||||
auto& buffer = context.buffer();
|
auto& buffer = context.buffer();
|
||||||
auto& range_and_faces = context.options()[m_option_name].get_mutable<TimestampedList<RangeAndFace>>();
|
auto& range_and_faces = context.options()[m_option_name].get_mutable<TimestampedList<RangeAndString>>();
|
||||||
update_ranges_ifn(buffer, range_and_faces);
|
update_ranges_ifn(buffer, range_and_faces);
|
||||||
|
|
||||||
for (auto& range : range_and_faces.list)
|
for (auto& range : range_and_faces.list)
|
||||||
|
@ -1428,7 +1428,7 @@ struct ReplaceRangesHighlighter : Highlighter
|
||||||
|
|
||||||
const String& option_name = params[0];
|
const String& option_name = params[0];
|
||||||
// throw if wrong option type
|
// throw if wrong option type
|
||||||
GlobalScope::instance().options()[option_name].get<TimestampedList<RangeAndFace>>();
|
GlobalScope::instance().options()[option_name].get<TimestampedList<RangeAndString>>();
|
||||||
|
|
||||||
return {"replace_ranges_" + params[0], make_unique<ReplaceRangesHighlighter>(option_name)};
|
return {"replace_ranges_" + params[0], make_unique<ReplaceRangesHighlighter>(option_name)};
|
||||||
}
|
}
|
||||||
|
@ -1437,7 +1437,7 @@ private:
|
||||||
void do_highlight(const Context& context, HighlightPass, DisplayBuffer& display_buffer, BufferRange) override
|
void do_highlight(const Context& context, HighlightPass, DisplayBuffer& display_buffer, BufferRange) override
|
||||||
{
|
{
|
||||||
auto& buffer = context.buffer();
|
auto& buffer = context.buffer();
|
||||||
auto& range_and_faces = context.options()[m_option_name].get_mutable<TimestampedList<RangeAndFace>>();
|
auto& range_and_faces = context.options()[m_option_name].get_mutable<TimestampedList<RangeAndString>>();
|
||||||
update_ranges_ifn(buffer, range_and_faces);
|
update_ranges_ifn(buffer, range_and_faces);
|
||||||
|
|
||||||
for (auto& range : range_and_faces.list)
|
for (auto& range : range_and_faces.list)
|
||||||
|
@ -1973,12 +1973,14 @@ void register_highlighters()
|
||||||
"ranges",
|
"ranges",
|
||||||
{ RangesHighlighter::create,
|
{ RangesHighlighter::create,
|
||||||
"Parameters: <option name>\n"
|
"Parameters: <option name>\n"
|
||||||
"Use the range-faces option given as parameter to highlight buffer\n" } });
|
"Use the range-specs option given as parameter to highlight buffer\n"
|
||||||
|
"each spec is interpreted as a face to apply to the range\n" } });
|
||||||
registry.insert({
|
registry.insert({
|
||||||
"replace-ranges",
|
"replace-ranges",
|
||||||
{ ReplaceRangesHighlighter::create,
|
{ ReplaceRangesHighlighter::create,
|
||||||
"Parameters: <option name>\n"
|
"Parameters: <option name>\n"
|
||||||
"Use the range-faces option given as parameter to highlight buffer\n" } });
|
"Use the range-specs option given as parameter to highlight buffer\n"
|
||||||
|
"each spec is interpreted as a display line to display in place of the range\n" } });
|
||||||
registry.insert({
|
registry.insert({
|
||||||
"line",
|
"line",
|
||||||
{ create_line_highlighter,
|
{ create_line_highlighter,
|
||||||
|
|
|
@ -19,7 +19,7 @@ String option_to_string(InclusiveBufferRange range);
|
||||||
void option_from_string(StringView str, InclusiveBufferRange& opt);
|
void option_from_string(StringView str, InclusiveBufferRange& opt);
|
||||||
|
|
||||||
using LineAndFlag = std::tuple<LineCount, String>;
|
using LineAndFlag = std::tuple<LineCount, String>;
|
||||||
using RangeAndFace = std::tuple<InclusiveBufferRange, String>;
|
using RangeAndString = std::tuple<InclusiveBufferRange, String>;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user