Mercurial > vim
comparison src/ex_cmds.c @ 1828:cfccbe492612 v7.2.126
updated for version 7.2-126
author | vimboss |
---|---|
date | Tue, 24 Feb 2009 03:30:14 +0000 |
parents | f0c598082dff |
children | 954947a70580 |
comparison
equal
deleted
inserted
replaced
1827:0e4c64dfc611 | 1828:cfccbe492612 |
---|---|
6539 | 6539 |
6540 static sign_T *first_sign = NULL; | 6540 static sign_T *first_sign = NULL; |
6541 static int last_sign_typenr = MAX_TYPENR; /* is decremented */ | 6541 static int last_sign_typenr = MAX_TYPENR; /* is decremented */ |
6542 | 6542 |
6543 static void sign_list_defined __ARGS((sign_T *sp)); | 6543 static void sign_list_defined __ARGS((sign_T *sp)); |
6544 static void sign_undefine __ARGS((sign_T *sp, sign_T *sp_prev)); | |
6544 | 6545 |
6545 /* | 6546 /* |
6546 * ":sign" command | 6547 * ":sign" command |
6547 */ | 6548 */ |
6548 void | 6549 void |
6747 EMSG2(_("E155: Unknown sign: %s"), arg); | 6748 EMSG2(_("E155: Unknown sign: %s"), arg); |
6748 else if (idx == SIGNCMD_LIST) | 6749 else if (idx == SIGNCMD_LIST) |
6749 /* ":sign list {name}" */ | 6750 /* ":sign list {name}" */ |
6750 sign_list_defined(sp); | 6751 sign_list_defined(sp); |
6751 else | 6752 else |
6752 { | |
6753 /* ":sign undefine {name}" */ | 6753 /* ":sign undefine {name}" */ |
6754 vim_free(sp->sn_name); | 6754 sign_undefine(sp, sp_prev); |
6755 vim_free(sp->sn_icon); | |
6756 #ifdef FEAT_SIGN_ICONS | |
6757 if (sp->sn_image != NULL) | |
6758 { | |
6759 out_flush(); | |
6760 gui_mch_destroy_sign(sp->sn_image); | |
6761 } | |
6762 #endif | |
6763 vim_free(sp->sn_text); | |
6764 if (sp_prev == NULL) | |
6765 first_sign = sp->sn_next; | |
6766 else | |
6767 sp_prev->sn_next = sp->sn_next; | |
6768 vim_free(sp); | |
6769 } | |
6770 } | 6755 } |
6771 } | 6756 } |
6772 else | 6757 else |
6773 { | 6758 { |
6774 int id = -1; | 6759 int id = -1; |
7013 msg_puts(p); | 6998 msg_puts(p); |
7014 } | 6999 } |
7015 } | 7000 } |
7016 | 7001 |
7017 /* | 7002 /* |
7003 * Undefine a sign and free its memory. | |
7004 */ | |
7005 static void | |
7006 sign_undefine(sp, sp_prev) | |
7007 sign_T *sp; | |
7008 sign_T *sp_prev; | |
7009 { | |
7010 vim_free(sp->sn_name); | |
7011 vim_free(sp->sn_icon); | |
7012 #ifdef FEAT_SIGN_ICONS | |
7013 if (sp->sn_image != NULL) | |
7014 { | |
7015 out_flush(); | |
7016 gui_mch_destroy_sign(sp->sn_image); | |
7017 } | |
7018 #endif | |
7019 vim_free(sp->sn_text); | |
7020 if (sp_prev == NULL) | |
7021 first_sign = sp->sn_next; | |
7022 else | |
7023 sp_prev->sn_next = sp->sn_next; | |
7024 vim_free(sp); | |
7025 } | |
7026 | |
7027 /* | |
7018 * Get highlighting attribute for sign "typenr". | 7028 * Get highlighting attribute for sign "typenr". |
7019 * If "line" is TRUE: line highl, if FALSE: text highl. | 7029 * If "line" is TRUE: line highl, if FALSE: text highl. |
7020 */ | 7030 */ |
7021 int | 7031 int |
7022 sign_get_attr(typenr, line) | 7032 sign_get_attr(typenr, line) |
7085 for (sp = first_sign; sp != NULL; sp = sp->sn_next) | 7095 for (sp = first_sign; sp != NULL; sp = sp->sn_next) |
7086 if (sp->sn_typenr == typenr) | 7096 if (sp->sn_typenr == typenr) |
7087 return sp->sn_name; | 7097 return sp->sn_name; |
7088 return (char_u *)_("[Deleted]"); | 7098 return (char_u *)_("[Deleted]"); |
7089 } | 7099 } |
7100 | |
7101 #if defined(EXITFREE) || defined(PROTO) | |
7102 /* | |
7103 * Undefine/free all signs. | |
7104 */ | |
7105 void | |
7106 free_signs() | |
7107 { | |
7108 while (first_sign != NULL) | |
7109 sign_undefine(first_sign, NULL); | |
7110 } | |
7111 #endif | |
7090 | 7112 |
7091 #endif | 7113 #endif |
7092 | 7114 |
7093 #if defined(FEAT_GUI) || defined(FEAT_CLIENTSERVER) || defined(PROTO) | 7115 #if defined(FEAT_GUI) || defined(FEAT_CLIENTSERVER) || defined(PROTO) |
7094 /* | 7116 /* |