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 /*