カーソル位置の単語を色分けする為にCOLOR.CFGに登録するマクロ(たぶん5.0限定)
// keywords:.cという行を追加する。
// keywords:.c keywords:.hのように書く。以下設定例
:M AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Message-Id: <.2003527125.72428800.156994365.163875535> Subject: Cプログラム areaw(use=1;rgb="0x008040";atr=0): /* */ rear(use=1;rgb="0x008040";atr=0): // // keywords:.c keywords:.h ←この行を追加 words(use=1;rgb="0x008000";atr=1): asm auto break ←この行に単語が登録されていく <mh>
wz.key
AddKeywordToColorCfg = ^KM
#define BUF_SIZE (1024*10) #define AUTO_RELOAD 1 mchar *chop(mchar *s) { mchar *p = s + strlen(s) - 1; while(s <= p && *p <= 20) *p-- = '\0'; return s; } //## カーソル位置のキーワードをkeywordにセットする。戻り値はキーワードが存在すればTRUE、 //## なければFALSEを返す。 BOOL txGetCurrentKeyword(TX *text, txstr keyword) { setundispex; right; leftword; getword(keyword); setdispex; return strcmp(chop((mchar*)keyword), "") != 0; } main { txstr keyword; if(!getcurrentkeyword(keyword) || isspace(keyword[0]) || !isalpha(keyword[0])) { keyword = ""; if(!inputstr("キーワードの登録", keyword) && strcmp(keyword, "")==0) return; } // information("KEYWORD:%s", keyword); txstr fn; pathFullConfig(fn, "color.cfg"); txstr sw; sprintf(sw, "^//.*keywords:%s", pathGetExt(text->szfilename)); TX *colortext = textopen(fn); if(txSearchEx(colortext, sw, SEARCH_REWZ | SEARCH_NOSENSECASE)) { mchar *p, *buf = malloc(BUF_SIZE); if( txNextPara(colortext) && txGetParaRearEx(colortext, buf, BUF_SIZE) && (p = strchr(buf, ':'))) { p++; strcat(p, " "); if(strstr(p, " " + keyword + " ") == 0) { txJumpParaEnd(colortext); txInsertf(colortext, " %s", keyword); if(txSave(colortext)) { statprintf("キーワード\"%s\"を登録しました。", keyword); if(AUTO_RELOAD) { if(text->fEdit) save; uireopeninternal; } } else attention("ファイルの保存に失敗しました\n%s", fn); txClose(colortext); } } free(buf); } else { attention( "単語の登録箇所が指定されていません。" "COLOR.CFGの挿入箇所の一行上に\n" "// keywords:%s\nと記述してください。", pathGetExt(text->szfilename)); } textclose(colortext); }
この記事は役に立ちましたか?