Daily Log 2011/05/03

今天完成了twilc的filter display部分,添加了三个filter:mention(黄色),RT(红色分行)和URL(蓝色),效果如下:
clit filter display

不过这张图里面urxvt的配色没调,显示效果有点囧_,=||

filter机制的实现主要使用到C函数指针,

typedef struct filter{
    char *pattern;
    char *(*get_pattern_end)(char *);
    void (*before_filter)(WINDOW *);
    void (*after_filter)(WINDOW *);
} display_filter;

这里pattern是该filter的特征字符串(比如mention是”@”, URL就是”http://”),get_pattern_end用于返回该filter的显示效果生效的终止位置,before_filter和after_filter函数配合使用开启和关闭显示效果。
下面是mention filter的实现:

void before_mention(WINDOW *win){
    init_pair(1, COLOR_YELLOW, COLOR_BLACK);
    wattron(win,COLOR_PAIR(1));
}
void after_mention(WINDOW *win){
    wattroff(win, COLOR_PAIR(1));
}
char *get_mention_end(char *begin){
    if((*begin) != '@')
        return 0;
    char *p = begin + 1;
    int x = *p;
    while(x != '�' && ((x>='a' && x<='z')||(x>='A' && x<='Z')
           || (x >= '0' && x <= '9')|| x=='_'))
         x = *(++p);
     return p;
}

这样要增加filter的话就比较方便了。

struct filter *mention_filter = malloc(sizeof(struct filter));                
mention_filter->pattern = "@";
mention_filter->get_pattern_end = get_mention_end;
mention_filter->before_filter = before_mention;
mention_filter->after_filter = after_mention;

另外昨天注册了SegmentFault,貌似是推友做的StackOverflow的中文版本,感觉还不错。试着用GAS回答了一下猫猫姑娘提的用各种编程语言写HelloWorld的问题才发现GAS几乎都忘光了_,=
再PS,Gnome3进Arch的extra了,上两张图:
gnome3
gnome3



Posted from Beijing, Beijing, China.

If you enjoyed this post, make sure you subscribe to my RSS feed!
  1. 咦,居然是C,不是Python么

  2. @wayne
    一直就是C阿…

  3. 要有头像啊头像啊

  4. @Tim喵
    无视无理要求~

  5. 居然是C的…

  6. @pipitu
    其实可以显示头像的阿啦兔兔

  7. 我也想试试 Gnome 3 了.

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>