2

运行 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
4

1 回答 1

2

我认为 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
于 2011-06-11T01:18:02.277 回答