Mercurial > vim
comparison src/sign.c @ 26434:f612c41cfd94 v8.2.3748
patch 8.2.3748: giving an error for an empty sign argument breaks a plugin
Commit: https://github.com/vim/vim/commit/e5710a02cb78c2a0a868ea55740835c78ddecbb4
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Dec 5 19:10:04 2021 +0000
patch 8.2.3748: giving an error for an empty sign argument breaks a plugin
Problem: Giving an error for an empty sign argument breaks a plugin.
Solution: Do not give an error.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 05 Dec 2021 20:15:03 +0100 |
parents | 99a512bd8423 |
children | 84d60deb8f82 |
comparison
equal
deleted
inserted
replaced
26433:6d49ab05b0e9 | 26434:f612c41cfd94 |
---|---|
1308 # endif | 1308 # endif |
1309 | 1309 |
1310 return lnum; | 1310 return lnum; |
1311 } | 1311 } |
1312 | 1312 |
1313 static int | |
1314 check_empty_group(size_t len, char *name) | |
1315 { | |
1316 if (len == 0) | |
1317 { | |
1318 semsg(_(e_group_name_missing_for_str), name); | |
1319 return FAIL; | |
1320 } | |
1321 return OK; | |
1322 } | |
1323 | |
1324 /* | 1313 /* |
1325 * ":sign define {name} ..." command | 1314 * ":sign define {name} ..." command |
1326 */ | 1315 */ |
1327 static void | 1316 static void |
1328 sign_define_cmd(char_u *sign_name, char_u *cmdline) | 1317 sign_define_cmd(char_u *sign_name, char_u *cmdline) |
1333 char_u *text = NULL; | 1322 char_u *text = NULL; |
1334 char_u *linehl = NULL; | 1323 char_u *linehl = NULL; |
1335 char_u *texthl = NULL; | 1324 char_u *texthl = NULL; |
1336 char_u *culhl = NULL; | 1325 char_u *culhl = NULL; |
1337 int failed = FALSE; | 1326 int failed = FALSE; |
1338 sign_T *sp_prev; | |
1339 int exists; | |
1340 | |
1341 exists = sign_find(sign_name, &sp_prev) != NULL; | |
1342 | 1327 |
1343 // set values for a defined sign. | 1328 // set values for a defined sign. |
1344 for (;;) | 1329 for (;;) |
1345 { | 1330 { |
1346 arg = skipwhite(p); | 1331 arg = skipwhite(p); |
1358 text = vim_strnsave(arg, p - arg); | 1343 text = vim_strnsave(arg, p - arg); |
1359 } | 1344 } |
1360 else if (STRNCMP(arg, "linehl=", 7) == 0) | 1345 else if (STRNCMP(arg, "linehl=", 7) == 0) |
1361 { | 1346 { |
1362 arg += 7; | 1347 arg += 7; |
1363 if (!exists && check_empty_group(p - arg, "linehl") == FAIL) | |
1364 { | |
1365 failed = TRUE; | |
1366 break; | |
1367 } | |
1368 linehl = vim_strnsave(arg, p - arg); | 1348 linehl = vim_strnsave(arg, p - arg); |
1369 } | 1349 } |
1370 else if (STRNCMP(arg, "texthl=", 7) == 0) | 1350 else if (STRNCMP(arg, "texthl=", 7) == 0) |
1371 { | 1351 { |
1372 arg += 7; | 1352 arg += 7; |
1373 if (!exists && check_empty_group(p - arg, "texthl") == FAIL) | |
1374 { | |
1375 failed = TRUE; | |
1376 break; | |
1377 } | |
1378 texthl = vim_strnsave(arg, p - arg); | 1353 texthl = vim_strnsave(arg, p - arg); |
1379 } | 1354 } |
1380 else if (STRNCMP(arg, "culhl=", 6) == 0) | 1355 else if (STRNCMP(arg, "culhl=", 6) == 0) |
1381 { | 1356 { |
1382 arg += 6; | 1357 arg += 6; |
1383 if (!exists && check_empty_group(p - arg, "culhl") == FAIL) | |
1384 { | |
1385 failed = TRUE; | |
1386 break; | |
1387 } | |
1388 culhl = vim_strnsave(arg, p - arg); | 1358 culhl = vim_strnsave(arg, p - arg); |
1389 } | 1359 } |
1390 else | 1360 else |
1391 { | 1361 { |
1392 semsg(_(e_invarg2), arg); | 1362 semsg(_(e_invarg2), arg); |