htmlcomplete#CompleteTags 的 bug
来源:互联网 发布:8848 m3手机备份数据 编辑:程序博客网 时间:2024/06/09 22:49
今天又在玩 vim 自動完成時發現的,網路上也有找到一點點情報,不過資料實在很少,我花了不少時間測試找出會發生問題的狀況,這個 bug 是在使用autocomplpop時,游標放到 class=" or id=" 這兩個字串後會有錯誤訊息 (line 304,E121: Undefined variable :classlines)。網路上找到有人回報給 acp.vim 作者,日本那邊也有人hack acp.vim 來避開這個問題,不過其實問題不在 autocomplpop,而是 vim 內的 htmlcomplete 的問題,這個 function 位置在 $VIMRUNTIME/autoload/htmlcomplete.vim ,上次更新是 2006 年了,之後回報 bug 會不會有人修還不知道XD。
這個錯誤訊息的發生條件其實很特別,首先 html 的 omnifunc 要設成 htmlcomplete#CompleteTags,就是說你的 vimrc 裡面應該會有一行長成
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
再來你正在編輯的 html 文件裡面要有 <link rel="stylesheet" /> 這種外連 CSS 檔案的標籤,而關鍵是 href 指到的位置沒有一個可以用的檔案(不存在、無權限讀取都可),然後接下來你在 class=" 或是 id=" 的位置裡面執行了 omni complete (<C-x>, <C-o>) ,當然如果有裝autocomplpop的話,這時就會自動幫你跑(2.7 版以後),錯誤訊息也就會自動冒出。
問題發生的原因是,這個 html 自動完成函式會去檢查你的 CSS ,包括外連的檔案,去裡面把 class name, id name 抽出送回作自動完成的選項,不過他有一個動作應該是要檔案可讀才要跑的,卻放到 if 的外面,所以只要把它移過去就好了,錯誤那行 code 是 310 行:
308 endif309 " We gathered classes definitions from all external files310 let classes += classlines
把它移到 308 行的 endif 前面就好了:
308 " We gathered classes definitions from all external files309 let classes += classlines310 endif
- htmlcomplete#CompleteTags 的 bug
- htmlcomplete#CompleteTags 报错, classlines未找到
- 不是bug的bug?
- jspsmartupload 不算bug的bug
- 【bug】RandomAccessFile的读取bug
- OO的bug,C++的bug,还是编译器的bug?
- OO的bug,C++的bug,还是编译器的bug?
- OO的bug,C++的bug,还是编译器的bug?
- OO的bug,C++的bug,还是编译器的bug?
- OO的bug,C++的bug,还是编译器的bug?
- OO的bug,C++的bug,还是编译器的bug?
- OO的bug,C++的bug,还是编译器的bug?
- OO的bug,C++的bug,还是编译器的bug?
- CSDN后台一个不是BUG的BUG。。。
- 各种BUG管理工具BUG的状态。
- 合理的制造bug,及查找bug
- 解Bug之路-Druid的Bug
- 该死的Bug。
- 得到下拉框的值 赋给另外一个下拉框
- 基于MysqlConnector/C++的数据库连接池的实现
- 利用JMX的Notifications监听GC
- ssh-keygen的使用方法(无密码访问)
- 互联网人才如何做好职业规划
- htmlcomplete#CompleteTags 的 bug
- hdoj1022 Train Problem I ( stack )
- 《程序员》 -- 技术团队新官上任之中层篇
- linux MySQL-server-5.5.34-1.el6.i686.rpm安装
- Stripes视图框架简介
- Weblogic异常
- T-SQL查询进阶--流程控制语句
- C语言的保留字
- 4.15 link、unlink函数-创建和删除硬链接