Mercurial > vim
comparison src/sign.c @ 26424:f6ca4276c4cc v8.2.3743
patch 8.2.3743: ":sign" can add a highlight group without a name
Commit: https://github.com/vim/vim/commit/5e18ccc60bdddc4aa39ab039f1a7c918f29e67ce
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Dec 5 13:02:50 2021 +0000
patch 8.2.3743: ":sign" can add a highlight group without a name
Problem: ":sign" can add a highlight group without a name.
Solution: Give an error if the group name is missing. (closes https://github.com/vim/vim/issues/9280)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 05 Dec 2021 14:15:03 +0100 |
parents | 365e7f083f02 |
children | 99a512bd8423 |
comparison
equal
deleted
inserted
replaced
26423:2f222239640f | 26424:f6ca4276c4cc |
---|---|
1293 # endif | 1293 # endif |
1294 | 1294 |
1295 return lnum; | 1295 return lnum; |
1296 } | 1296 } |
1297 | 1297 |
1298 static int | |
1299 check_empty_group(size_t len, char *name) | |
1300 { | |
1301 if (len == 0) | |
1302 { | |
1303 semsg(_(e_group_name_missing_for_str), name); | |
1304 return FAIL; | |
1305 } | |
1306 return OK; | |
1307 } | |
1308 | |
1298 /* | 1309 /* |
1299 * ":sign define {name} ..." command | 1310 * ":sign define {name} ..." command |
1300 */ | 1311 */ |
1301 static void | 1312 static void |
1302 sign_define_cmd(char_u *sign_name, char_u *cmdline) | 1313 sign_define_cmd(char_u *sign_name, char_u *cmdline) |
1328 text = vim_strnsave(arg, p - arg); | 1339 text = vim_strnsave(arg, p - arg); |
1329 } | 1340 } |
1330 else if (STRNCMP(arg, "linehl=", 7) == 0) | 1341 else if (STRNCMP(arg, "linehl=", 7) == 0) |
1331 { | 1342 { |
1332 arg += 7; | 1343 arg += 7; |
1344 if (check_empty_group(p - arg, "linehl") == FAIL) | |
1345 { | |
1346 failed = TRUE; | |
1347 break; | |
1348 } | |
1333 linehl = vim_strnsave(arg, p - arg); | 1349 linehl = vim_strnsave(arg, p - arg); |
1334 } | 1350 } |
1335 else if (STRNCMP(arg, "texthl=", 7) == 0) | 1351 else if (STRNCMP(arg, "texthl=", 7) == 0) |
1336 { | 1352 { |
1337 arg += 7; | 1353 arg += 7; |
1354 if (check_empty_group(p - arg, "texthl") == FAIL) | |
1355 { | |
1356 failed = TRUE; | |
1357 break; | |
1358 } | |
1338 texthl = vim_strnsave(arg, p - arg); | 1359 texthl = vim_strnsave(arg, p - arg); |
1339 } | 1360 } |
1340 else if (STRNCMP(arg, "culhl=", 6) == 0) | 1361 else if (STRNCMP(arg, "culhl=", 6) == 0) |
1341 { | 1362 { |
1342 arg += 6; | 1363 arg += 6; |
1364 if (check_empty_group(p - arg, "culhl") == FAIL) | |
1365 { | |
1366 failed = TRUE; | |
1367 break; | |
1368 } | |
1343 culhl = vim_strnsave(arg, p - arg); | 1369 culhl = vim_strnsave(arg, p - arg); |
1344 } | 1370 } |
1345 else | 1371 else |
1346 { | 1372 { |
1347 semsg(_(e_invarg2), arg); | 1373 semsg(_(e_invarg2), arg); |