From: Alexander Kornienko Date: Wed, 5 Sep 2012 12:11:13 +0000 (+0000) Subject: New clang-check vim integration script X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3d35a547584da3b4403552cfa9899e51ee3d8283;p=clang New clang-check vim integration script Summary: New clang-check vim integration with the 're-run the last invocation when executed from .h file' feature. Reviewers: klimek Reviewed By: klimek CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D35 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163211 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/docs/HowToSetupToolingForLLVM.html b/docs/HowToSetupToolingForLLVM.html index 493c8820fc..022ed9ce9c 100644 --- a/docs/HowToSetupToolingForLLVM.html +++ b/docs/HowToSetupToolingForLLVM.html @@ -77,12 +77,38 @@ $PATH. Try to run it on any .cpp file inside the LLVM source tree:

If you're using vim, it's convenient to have clang-check integrated. Put this into your .vimrc:

-  set makeprg=clang-check\ %
-  map <F5> :make<CR><CR>
+function! ClangCheckImpl(cmd)
+  if &autowrite | wall | endif
+  echo "Running " . a:cmd . " ..."
+  let l:output = system(a:cmd)
+  cexpr l:output
+  cwindow
+  let w:quickfix_title = a:cmd
+  if v:shell_error != 0
+    cc
+  endif
+  let g:clang_check_last_cmd = a:cmd
+endfunction
+
+function! ClangCheck()
+  let l:filename = expand('%')
+  if l:filename =~ '\.\(cpp\|cxx\|cc\|c\)$'
+    call ClangCheckImpl("clang-check " . l:filename)
+  elseif exists("g:clang_check_last_cmd")
+    call ClangCheckImpl(g:clang_check_last_cmd)
+  else
+    echo "Can't detect file's compilation arguments and no previous clang-check invocation!"
+  endif
+endfunction
+
+nmap <silent> <F5> :call ClangCheck()<CR><CR>
 
-

When editing C++ code, hit F5 to reparse the current buffer. The output will -go into the error window, which you can enable with :cope.

+

When editing a .cpp/.cxx/.cc/.c file, hit F5 to reparse the file. In case +the current file has a different extension (for example, .h), F5 will re-run +the last clang-check invocation made from this vim instance (if any). The +output will go into the error window, which is opened automatically when +clang-check finds errors, and can be re-opened with :cope.

Other clang-check options that can be useful when working with clang AST: