夜空日和 [出張版]

星を見上げながら、今日を語ってみようか

 

スポンサーサイト


Category: スポンサー広告   Tags: ---
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[c++][vim] quickrunでコンパイルオプション追加


Category: 技術   Tags: ---
vim-quickrun hookの続編。

c++でコンパイルする場合、ライブラリ指定が必要となる場合があります。
#pragmaと似たように、スクリプトにライブラリ指定が書ければなーと。

今回は、次のような感じにしました。
/* QuickRun: cmdopt << -Wall : */
/* QuickRun: runner = system : */
「<<」は設定の追加、「=」は設定の変更としています。
これの場合、cmdoptには設定を追加、runnerはsystemに変更・・・となるはずです。



""" after/ftplugin/cpp.vim

let s:save_cpo = &cpo
set cpo&vim

""" add compile options {{{
let s:hook = {
\   "name": "cpp_add_compile_options",
\   "kind": "hook",
\   "config": {
\     "enable": 0,
\   },
\ }

function! Trim(str)
  return matchlist(a:str, '^\s*\(.\{-}\)\s*$')[1]
endfunction

function! s:hook.on_normalized(session, context)
  if self.config.enable
    " get options
    for line in readfile(a:session.config.srcfile, 0, 3)
      if line =~? 'QuickRun:.*:'
        let str = Trim(matchlist(line, 'QuickRun:\(.*\):')[1])
        if str =~ '<<'
          " add config
          let opts = split(str, '<<')
          if len(opts) != 2
            continue
          endif

          let a:session.config[Trim(opts[0])] .= " ".Trim(opts[1])
        elseif str=~ '='
          " change config
          let opts = split(str, '=')
          if len(opts) != 2
            continue
          endif

          let a:session.config[Trim(opts[0])] = Trim(opts[1])
        endif
      end
    endfor
  endif
endfunction

call quickrun#module#register(s:hook, 1)
unlet s:hook
""" }}}

let &cpo = s:save_cpo
unlet s:save_cpo

"" quickrun
let g:quickrun_config.cpp['hook/cpp_add_compile_options/enable'] = 1

runnerを変更するために、hookイベントはon_normalizedになっています。(今後変更されるかも?)
cmdoptにコマンド置換を使用した場合、vimprocでコンパイルが上手くできない現象が発生しています。
ここでは、runnerをshellに変更することで、この問題から逃げてます。

※ (10/18追記) vimprocのバグフィックスで修正されました。Shougoさんありがとう!

これで、快適なquickrunコンパイル生活が始まります。
スポンサーサイト


Comments

Leave a Comment



08 2017
SUN MON TUE WED THU FRI SAT
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -

07

09


 
プロフィール

ひでたそ

Author:ひでたそ
Comment:
現役大学生で天文好き。
今日もどこかで、上を見ながら歩いています。

 
 
 
最新トラックバック
 
 
検索フォーム
 
 
 
ブロとも申請フォーム
 
QRコード
QRコード
 

Archive   RSS   Login

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。