运行 Android 的 layoutopt 工具时使用什么 vim 错误格式?(所以你可以在 Vim 的 quickfix 窗口中加载结果。)
示例 layoutopt 输出:
res/layout/main.xml
31:31 Use an android:layout_height of 0dip instead of fill_parent for better performance
运行 Android 的 layoutopt 工具时使用什么 vim 错误格式?(所以你可以在 Vim 的 quickfix 窗口中加载结果。)
示例 layoutopt 输出:
res/layout/main.xml
31:31 Use an android:layout_height of 0dip instead of fill_parent for better performance
我认为 31:31 表示从第 31 行到第 31 行。所以我们可以忽略第二个数字(因为 quickfix 中没有范围)。
将以下内容放入~/.vim/after/ftplugin/android-layout.vim
" Set the error format. Output is on multiple lines, so we use %P to push the
" filename onto the stack and %Q to pop it off. There are two kinds of errors
" I've seen: regular ones (begin with \t) and fatal ones.
"
" efm=Read the filename
" ,regular errors
" ,fatal errors
" ,forget the filename
setlocal efm=%-P%f
\,\ %l:%*[0-9]\ %m
\,[Fatal\ Error]\ :%l:%*[0-9]:\ %m
\,%-Q
" For some reason, I can't set layoutopt as the makeprg -- it never outputs
" anything when run from vim, but it works fine from a terminal or from vim's
" :!
setlocal makeprg=make\ layoutopt
这是相应的makefile(把它放在你的项目根目录中——所以LAYOUTS路径是有效的)。
LAYOUTOPT = $(HOME)/data/code/android/android-sdk-linux_86/tools/layoutopt
LAYOUTS = res/layout/*.xml
layoutopt: $(LAYOUTS)
$(LAYOUTOPT) $(LAYOUTS)
.PHONY: layoutopt
旁注:您可以使用它来自动调用您的 ftplugin(而不是创建 xml 文件类型的子类型):
au BufRead,BufNewFile *.xml if match(expand('%:p'), '/res/layout/', 0) >= 0 | runtime ftplugin/android-layout.vim | endif