Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit1bc3bbe

Browse files
committed
refactor(autocmds): separate command from desc
1 parent793496a commit1bc3bbe

File tree

2 files changed

+69
-41
lines changed

2 files changed

+69
-41
lines changed

‎src/nvim/autocmd.c‎

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,16 @@ static void aupat_show(AutoPat *ap, event_T event, int previous_group)
190190
if (got_int) {
191191
return;
192192
}
193-
msg_outtrans((char_u*)aucmd_exec_to_string(ac,ac->exec));
193+
194+
char*exec_to_string=aucmd_exec_to_string(ac,ac->exec);
195+
if (ac->desc!=NULL) {
196+
size_tmsglen=100;
197+
char*msg= (char*)xmallocz(msglen);
198+
snprintf(msg,msglen,"%s [%s]",exec_to_string,ac->desc);
199+
msg_outtrans((char_u*)msg);
200+
}else {
201+
msg_outtrans((char_u*)exec_to_string);
202+
}
194203
if (p_verbose>0) {
195204
last_set_msg(ac->script_ctx);
196205
}
@@ -1137,8 +1146,6 @@ int autocmd_register(int64_t id, event_T event, char *pat, int patlen, int group
11371146
// perhaps: <lua>DESCRIPTION or similar
11381147
if (desc!=NULL) {
11391148
ac->desc=xstrdup(desc);
1140-
}else {
1141-
ac->desc=aucmd_exec_default_desc(aucmd);
11421149
}
11431150

11441151
returnOK;
@@ -2465,45 +2472,44 @@ bool autocmd_delete_id(int64_t id)
24652472
// ===========================================================================
24662473
// AucmdExecutable Functions
24672474
// ===========================================================================
2468-
char*aucmd_exec_default_desc(AucmdExecutableacc)
2475+
2476+
/// Generate a string description of a callback
2477+
staticchar*aucmd_callback_to_string(Callbackcb)
24692478
{
2479+
// NOTE: this function probably belongs in a helper
24702480
size_tmsglen=100;
2481+
char*msg= (char*)xmallocz(msglen);
24712482

2472-
switch (acc.type) {
2473-
caseCALLABLE_CB:
2474-
switch (acc.callable.cb.type) {
2475-
casekCallbackLua: {
2476-
char*msg= (char*)xmallocz(msglen);
2477-
snprintf(msg,msglen,"<Lua function %d>",acc.callable.cb.data.luaref);
2478-
returnmsg;
2479-
}
2480-
casekCallbackFuncref: {
2481-
// TODO(tjdevries): Is this enough space for this?
2482-
char*msg= (char*)xmallocz(msglen);
2483-
snprintf(msg,msglen,"<vim function: %s>",acc.callable.cb.data.funcref);
2484-
returnmsg;
2485-
}
2486-
casekCallbackPartial: {
2487-
char*msg= (char*)xmallocz(msglen);
2488-
snprintf(msg,msglen,"<vim partial: %s>",acc.callable.cb.data.partial->pt_name);
2489-
returnmsg;
2490-
}
2491-
default:
2492-
returnNULL;
2493-
}
2483+
switch (cb.type) {
2484+
casekCallbackLua: {
2485+
snprintf(msg,msglen,"<Lua function %d>",cb.data.luaref);
2486+
break;
2487+
}
2488+
casekCallbackFuncref: {
2489+
// TODO(tjdevries): Is this enough space for this?
2490+
snprintf(msg,msglen,"<vim function: %s>",cb.data.funcref);
2491+
break;
2492+
}
2493+
casekCallbackPartial: {
2494+
snprintf(msg,msglen,"<vim partial: %s>",cb.data.partial->pt_name);
2495+
break;
2496+
}
24942497
default:
2495-
returnNULL;
2498+
return"";
24962499
}
2500+
returnmsg;
24972501
}
24982502

2503+
/// Generate a string description for the command/callback of an autocmd
24992504
char*aucmd_exec_to_string(AutoCmd*ac,AucmdExecutableacc)
25002505
FUNC_ATTR_PURE
25012506
{
25022507
switch (acc.type) {
25032508
caseCALLABLE_EX:
25042509
returnacc.callable.cmd;
2505-
caseCALLABLE_CB:
2506-
returnac->desc;
2510+
caseCALLABLE_CB: {
2511+
returnaucmd_callback_to_string(acc.callable.cb);
2512+
}
25072513
caseCALLABLE_NONE:
25082514
return"This is not possible";
25092515
}

‎test/functional/api/autocmd_spec.lua‎

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -119,13 +119,33 @@ describe('autocmd api', function()
119119

120120
describe('desc',function()
121121
it('can add description to one autocmd',function()
122+
localcmd="echo 'Should Not Have Errored'"
123+
localdesc="Can show description"
122124
meths.create_autocmd("BufReadPost", {
123125
pattern="*.py",
124-
command="echo 'Should Not Have Errored'",
125-
desc="Can show description",
126+
command=cmd,
127+
desc=desc,
126128
})
127129

128-
eq("Can show description",meths.get_autocmds {event="BufReadPost"}[1].desc)
130+
eq(desc,meths.get_autocmds {event="BufReadPost"}[1].desc)
131+
eq(cmd,meths.get_autocmds {event="BufReadPost"}[1].command)
132+
end)
133+
134+
it('can add description to one autocmd that uses a callback',function()
135+
localdesc='Can show description'
136+
meths.set_var('desc',desc)
137+
138+
exec_lua([[
139+
local callback = function() print 'Should Not Have Errored' end
140+
vim.api.nvim_create_autocmd("BufReadPost", {
141+
pattern = "*.py",
142+
callback = callback,
143+
desc = vim.g.desc,
144+
})
145+
]])
146+
147+
eq(desc,meths.get_autocmds({event='BufReadPost'})[1].desc)
148+
matches('<Lua function %d>',meths.get_autocmds({event='BufReadPost'})[1].command)
129149
end)
130150

131151
it('can add description to multiple autocmd',function()
@@ -169,15 +189,17 @@ describe('autocmd api', function()
169189
]]
170190

171191
meths.exec_autocmds("User", {pattern="Test"})
172-
eq({{
173-
buflocal=false,
174-
command='A test autocommand',
175-
desc='A test autocommand',
176-
event='User',
177-
id=1,
178-
once=false,
179-
pattern='Test',
180-
}},meths.get_autocmds({event="User",pattern="Test"}))
192+
193+
localaus=meths.get_autocmds({event='User',pattern='Test'})
194+
localfirst=aus[1]
195+
eq(first.buflocal,false)
196+
eq(first.desc,'A test autocommand')
197+
eq(first.event,'User')
198+
matches("<Lua function %d>",first.command)
199+
eq(first.id,1)
200+
eq(first.once,false)
201+
eq(first.pattern,'Test')
202+
181203
meths.set_var("some_condition",true)
182204
meths.exec_autocmds("User", {pattern="Test"})
183205
eq({},meths.get_autocmds({event="User",pattern="Test"}))

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp