ReWrite of Clickable.vim

Vim
Rykka at 2014/10/08

本文地址:http://rykka.me/rewrite_of_clickable.vim.html

国庆这几天在京城逛了逛,跟同学聚了聚,看了看书,解决了租房问题。 不过主要工作还是将 clickable.vim 进行了重写。

Clickable.vim

功能简介:

主要的功能是将 Vim 里匹配特定样式(Pattern)的文字 转化为可点击对象(Clickable Object), 并赋予语法高亮(Syntax Highlighting)。

当进行点击时,可根据上下文(Context)触发不同的动作。

观众:说人话!

Me:让vim里的文本可以点击!

重写原因:

之前写的版本基本是直接将 Riv.vim 里的相关代码复制了过去。 因此只有基本的功能,没有任何可扩展性。

而这次我想让它拥有强大的可扩展性, 因此在 Vim 里利用 dict 以及 vim 的 dict function 实现了一个简单的 Class/Object 的模组。

结构:

▾ after/
  ▾ plugin/
      clickable.vim
▾ autoload/
  ▾ clickable/
      class.vim
      config.vim
      highlight.vim
      pattern.vim
      syntax.vim
      test.vim
      util.vim
    clickable.vim
  README.rst

其中

plugin/clickalbe.vim 在载入每个新文件时进行加载

autoload/clickable.vim 设置了初始化函数。

autoload/clickable/ 里是主要模块。

  1. class.vim 这是最主要的模块,可能需要进一步分解。

    实现了一个简单的Class/Object Model, 定义了Class函数以生成类。

    定义了Basic, Syntax, File, Link 几个Clickable类, 分别指单独的一类可点击对象。 其拥有validate(), trigger(), tooltip()乃至 highlight()属性

    定义了 ConfigQue 类,其包含一个Clickable object 的队列 对不同的文件类型使用。 拥有 autocmd(), mapping() 等属性。

  2. config.vim 定义了一些普通的config, 比如http链接, file链接

    定制特定的config时可以参考

  3. highlight.vim/syntax.vim/pattern.vim/util.vim 基本的相关函数

  4. test.vim 测试模块

还需要做的工作:

  1. 加载clickable的config file。 可能需要实现一个加载模块的方法(require), 或者简单的维系一个 global dict
  2. 写更多的config file, 比如针对 less/express/angular等
  3. 写文档(README/help doc/etc...)

好吧,fix其中几个bug还是很花时间的,那么今天就到这。

全文完。