Support passing +<line number> parameter to specify the first buffer target line on open
Fixes #336
This commit is contained in:
parent
1d748a4017
commit
4d230e4051
24
src/main.cc
24
src/main.cc
|
@ -413,7 +413,7 @@ int run_client(StringView session, StringView init_command)
|
||||||
|
|
||||||
int run_server(StringView session, StringView init_command,
|
int run_server(StringView session, StringView init_command,
|
||||||
bool ignore_kakrc, bool daemon, bool dummy_ui,
|
bool ignore_kakrc, bool daemon, bool dummy_ui,
|
||||||
ConstArrayView<StringView> files)
|
ConstArrayView<StringView> files, LineCount target_line)
|
||||||
{
|
{
|
||||||
static bool terminate = false;
|
static bool terminate = false;
|
||||||
if (daemon)
|
if (daemon)
|
||||||
|
@ -510,6 +510,10 @@ int run_server(StringView session, StringView init_command,
|
||||||
local_client = client_manager.create_client(
|
local_client = client_manager.create_client(
|
||||||
create_local_ui(dummy_ui), get_env_vars(), init_command);
|
create_local_ui(dummy_ui), get_env_vars(), init_command);
|
||||||
|
|
||||||
|
auto& selections = local_client->context().selections_write_only();
|
||||||
|
auto& buffer = selections.buffer();
|
||||||
|
selections = SelectionList(buffer, buffer.clamp(target_line));
|
||||||
|
|
||||||
if (startup_error)
|
if (startup_error)
|
||||||
local_client->print_status({
|
local_client->print_status({
|
||||||
"error during startup, see *debug* buffer for details",
|
"error during startup, see *debug* buffer for details",
|
||||||
|
@ -732,9 +736,21 @@ int main(int argc, char* argv[])
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
LineCount target_line = 0;
|
||||||
Vector<StringView> files;
|
Vector<StringView> files;
|
||||||
for (size_t i = 0; i < parser.positional_count(); ++i)
|
for (auto& name : parser)
|
||||||
files.emplace_back(parser[i]);
|
{
|
||||||
|
if (not name.empty() and name[0_byte] == '+')
|
||||||
|
{
|
||||||
|
if (auto line = str_to_int_ifp(name.substr(1_byte)))
|
||||||
|
{
|
||||||
|
target_line = *line - 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
files.emplace_back(name);
|
||||||
|
}
|
||||||
|
|
||||||
StringView session = parser.get_switch("s").value_or(StringView{});
|
StringView session = parser.get_switch("s").value_or(StringView{});
|
||||||
try
|
try
|
||||||
|
@ -743,7 +759,7 @@ int main(int argc, char* argv[])
|
||||||
(bool)parser.get_switch("n"),
|
(bool)parser.get_switch("n"),
|
||||||
(bool)parser.get_switch("d"),
|
(bool)parser.get_switch("d"),
|
||||||
(bool)parser.get_switch("u"),
|
(bool)parser.get_switch("u"),
|
||||||
files);
|
files, target_line);
|
||||||
}
|
}
|
||||||
catch (convert_to_client_mode& convert)
|
catch (convert_to_client_mode& convert)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue
Block a user