2014-08-01から1ヶ月間の記事一覧

Vim で RSS の取得

vim

ってできないのかなーと思ったら webapi.vim にすでにあった。 [ソース] let result = webapi#feed#parseURL("http://d.hatena.ne.jp/osyo-manga/rss") for item in result echo item.title endfor [出力] [vim]unite-github を非同期に対応させた [vim]watc…

unite-github を非同期に対応させた

vim

unite-github を非同期に対応させてみました。 表示するまで Vim をブロックしなくなります。 不具合等があれば Issues までお願いします。

watchdogs.vim に hdevtools を追加した

vim

そんな要望があったので追加してみました。 haskell で使用したい場合は次のように設定すると hdevtools が使用されます。 let g:quickrun_config = { \ "haskell/watchdogs_checker" : { \ "type" : "watchdogs_checker/hdevtools", \ }, \}

unite-vimpatches を非同期で読み込むようにしてみた

vim

してみました。 以前は unite-vimpatches を起動すると Web と通信を行うため Vim がブロックされましたが、その部分を非同期で処理するようにしてみました。 問題があれば Issues 等で教えてもらえると助かります。

unite-vimpatches の内容を Vim で読みこむようにしてみた

vim

以前作った unite-vimpatches ですが、ブラウザで開くのではなくて Vim で読みこむようなアクションを追加してみました。 次のように設定すれば Vim で内容を開くようになります。 call unite#custom#default_action("source/vimpatches/*", "openbuf") バッ…

Vim で bash の reverse-i-search のようなことを行う

vim

そんな話が Lingr の Vim 部屋で出ていたので。 " <C-r> で unite-history/command を起動 " 選択するとコマンドラインに選択したコマンドが挿入される " unite.vim と vim-unite-history が必要 cnoremap <C-r> :Unite history/command -start-insert -default-action</c-r></c-r>…

Vim script でリストの範囲にリストを代入する

vim

某 Lingr で話が出ていたので覚書。 let list = range(10) let list[3:6] = [-1, -2, -3, -4] echo list " => [0, 1, 2, -1, -2, -3, -4, 7, 8, 9] " :help E711 *E711* *E719* :let {var-name}[{idx1}:{idx2}] = {expr1} *E708* *E709* *E710* リスト|List|…

Vim から現在開いているファイルをコミットする

vim

ちょっと編集したファイルを毎回端末開いてコミットするのが手間だったので適当にラッパーコマンドを定義してみた。 " Commit {コミットメッセージ} command! -nargs=* Commit echo system("git commit " . expand("%:p") ." -m " . shellescape(<q-args>)) Commit {</q-args>…

Vim のシンタックスハイライトで他のシンタックスよりも優先してハイライトする

vim

毎回設定する度に忘れるので覚書。 書いたあとに書いたことすら忘れそうだけど さて、例えば、次のようなシンタックスハイライトを設定するとします。 " aaa を highlight Error でハイライト syntax match Error /aaa/ 上の設定を行うと こんな感じにハイラ…

unite.vim のプロンプトの位置による違い

vim

たまにハマる人がいるようなので簡単にまとめてみた。 候補順が逆 マークした後に上にカーソルが移動する -auto-resize になる(候補の数によって自動的にウィンドウの高さが変わる) また、下に split された場合は自動的にプロンプトが下に来ます。 プロン…

neosnippet.vim のマーカーを常に表示させる

vim

この間の Vimプラグイン読書会で話に出ていたので覚書。 さて、neosnippet.vim のマーカー(カーソルのジャンプ先)は syntax の conceal によって制御されています。 conceal を使用することでユーザ側が表示・非表示の制御を 'conceallevel' にて行うこと…

unite-quickfix をいろいろと改良した

vim

某所から突かれていろいろと直してました。 主に見た目的な部分を。 修正箇所は以下の通り。 表示形式をなるべく標準の quickfix に近づけた ハイライトの改良 w:quickfix_title を出力 yank アクションの対応(yy で候補のエラー内容をヤンク) 問題があれ…

neosnippet.vim でヤンクした HTML を Slim で展開する

vim

これの Slim 版。 [vimrc] " Html2Slim({slim}) " => {html} function! Html2Slim(html) if !executable("html2slim") return "" endif let input = tempname() call writefile(split(a:html, "\n"), input) let output = tempname() call system(printf("ht…

Vim script で html2slim のラッパー

vim

さて、html ファイルから slim ファイルへ変換したい場合、gem の html2slim が利用できます。 $ gem install html2slim $ html2slim input.html output.slim こんな感じで変換元の html ファイルと変換後の slim ファイルを指定します。 [Vim script でテキ…

Vimプラグイン読書会で neosnippet.vim のスニペット読んでます

vim

window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…

watchdogs.vim に flake8 を追加した

vim

watchdogs.vim に flake8 の設定を追加しました。 デフォルトでは pyflakes の方を優先して使用するようになっているので、pyflakes と flake8 の両方を入れている方は次のように設定してしている必要があります。 " filetype=python 時に使用するチェッカー…

任意の unite-source が使えるかどうかを判定する

vim

みたいなのが某 issues に飛んできたので簡単に調べてみた。 とりあえず、以下のようには判定できるぽい感じ。 let name = "file" echo index(keys(unite#variables#all_sources()), name) != -1 ソースコードから直接拾ってきただけなので他にそれっぽい関…

Vim で行継続の \ を削除して行結合を行う

vim

以前、任意の区切り文字を入力して行結合を行う jplus.vim というプラグインを作ったのですが、それに行継続の \ を削除して行結合を行う機能を実装してみました。 [プラグイン] osyo-manga/vim-jplus - github NeoBundle "osyo-manga/vim-jplus" [使い方] "…

Vim script で明示的に補完ウィンドウを呼び出す

vim

昨日、Lingr の Vim 部屋で出てきてたのですが Vim script の組み込み関数に complete() というのがあります。 :help complete() complete({startcol}, {matches}) *complete()* *E785* 挿入モード補完の候補を設定する。 挿入モードでのみ使用できる。CTRL-…

C++14 で名前付き引数

C++

標準ライブラリでできる範囲で書いてみました。 [ソース] #include <tuple> template<typename T, typename Uniq> struct holder{ T value; operator T(){ return value; } holder& operator =(T t){ value = t; return *this; } }; template<typename T, typename Uniq, typename ...Args> T get(holder<T, Uniq>, Args... args){ return std::get</t,></typename></typename></tuple>

std::unique のデフォルトのデリータ

C++

std::unique のデフォルトのデリータは何なのか調べてみたら次のように定義されているみたい。 template< class T, class Deleter = std::default_delete<T> > class unique_ptr; template < class T, class Deleter > class unique_ptr<T[],Deleter>; と、いうことでデフォ</t[],deleter></t>…

std::unique_ptr のデリータをあとから設定する

C++

と、いうのが Lingr の C++ 部屋に貼られていたので覚書。 [ソース] #include <memory> #include <functional> #include <iostream> int main(){ auto p = std::unique_ptr<int, std::function<void(int*)>>{ new int{42}, std::default_delete<int>{} }; // deleter を設定 p.get_deleter() = [](int* p){ std::cout << "call d</int></int,></iostream></functional></memory>…

std::unique_ptr のデリータをあとから設定する

C++

と、いうのが Lingr の C++ 部屋に貼られていたので覚書。 [ソース] #include <memory> #include <functional> #include <iostream> int main(){ auto p = std::unique_ptr<int, std::function<void(int*)>>{ new int{42}, std::default_delete<int>{} }; // deleter を設定 p.get_deleter() = [](int* p){ std::cout << "call d</int></int,></iostream></functional></memory>…

Boost 1.56.0 がリリース

Boost 1.56.0 がリリースされました。 boost Version 1.56.0 結構久しぶりのリリース。 Align と Type_Index の 2 つが新しいライブラリとして追加されました。 Align: Memory alignment functions, allocators, and adaptors, from Glen Fernandes. Type_In…

jedi.vim の自動補完で第一候補を選択肢ないようにする

某所で話題になって調べてみたんですが、以下の記事が参考になりました。 jedi.vim の popup_select_first が効かない - Memo これで動作するようになります。 ただ、jedi.vim 側の設定の仕組みがなんかおかしいような気がするのでもうちょい調べてみる必要…

Vim の complete-functions でハマった

vim

久しぶりに Vim の complete-functions を書いていたんですが、知らなかった仕様にはまったので覚書。 さて、Vim でオレオレコード補完処理を行いたい場合は 'completefunc' や 'omnifunc' などのオプションにコード補完関数を設定して実現します。 function…

Bugs Fixed in Visual Studio 2013 Update 3

C++

Bugs Fixed in Visual Studio 2013 Update 3 - Visual C++ Team Blog - Site Home - MSDN Blogs http://blogs.msdn.com/b/vcblog/archive/2014/08/04/bugs-fixed-in-visual-studio-2013-update-3.aspx 最近の Visual Studio 事情はよく知らないのだけれどだ…

C++ で簡単にアクセッサを書けるようにしたかったけど Non-static data members で auto が使えなくて死んだ

C++

class X{ int value_ = 42; public: auto value = accessor(this, &X::value_); }; みたいな感じで書きたかった。 [ソース] template<typename Class, typename T> struct accessor_impl{ Class* class_; T Class::* member; T operator ()() const{ return class_ ->* member; } void op</typename>…

brightest.vim にハイライトしない単語のパターンを設定できるようにした

vim

brightest.vim にハイライトしない単語のパターンを設定できるようにしました。 [プラグイン] osyo-manga/vim-brightest [使い方] " アンダーバーから始まる単語はハイライトしない let g:brightest#ignore_word_pattern = '^_\k\+'

移動する度にカーソル上の単語をハイライトする brightest.vim に特定のシンタックス上でハイライトしない機能を実装した

vim

先日公開した brightest.vim ですが、公開後に色々と意見もらって特定のシンタックス上だとハイライトしない機能を実装してみました。if とか for とかそういうシンタックスはハイライトしたくない場合に有効です。 [プラグイン] osyo-manga/vim-brightest […