2013-01-01から1年間の記事一覧

2013年につくった36個の Vimプラグインまとめ

vim

今年も残すところあと僅か!と、いうところで Vim の内部エラーを踏んでしまい必死になって再現方法を探していましたがわたしは元気です。 と、いう事で今年作成した Vim プラグインのまとめです。 ちなみに去年つくったプラグインの一覧はこちらになります…

来年も使いたい Vim プラグインランキング2013

vim

この記事は Vim Advent Calendar 2013 30日目の記事になります。 早くも2回目の記事になりますが、まだまだ参加者は募集しています。 興味のある方はぜひ!参加しましょう!! Vim Advent Calendar 2013 さて、今回の記事なのですが、以下が元ネタになります…

来年1月11日(土)21時から第2回 Vimプラグイン読書会を行います

vim

以前も予告していましたが、来年1月11日(土)に第2回 Vimプラグイン読書会を行います。 [概要] 日時:2014年1月11日21時〜 読むもの:clever-f.vim 場所:Lingr の Vim部屋 clever-f.vim は使ったことないので当日使ってみてからコード読んでみようかなーと…

Vim Advent Calendar 2013 で2回目以降の参加者の募集を開始しました

vim

そろそろスケジュールがなくなってきたので Vim Advent Calendar 2013 の2回目以降の参加者の募集を開始しました。 2回目の記事を書きたい方は以下のどちらかの手段で参加の表明をお願いします。 どちらか片方だけで構いません。 @osyo_memo まで参加の旨を…

年末 vimrc大掃除イベント in 2013

vim

去年の年末にも行ったのですが今年もやりたいと思います。 例によって特に人が集まってなにかするわけではなくて各々で黙々と作業する形になると思います。 [概要] 目的:1年間お世話になった vimrc に感謝を込めて大掃除を行う 内容:自分の vimrc を掃除し…

neosnippet.vim に :NeoSnippetClearMarkers コマンドが追加された

vim

neosnippet.vim に :NeoSnippetClearMarkers というコマンドが追加されました。 これはスニペットのマーカー()を削除するコマンドです。 例えば、InserLeave 時に呼び出せば insert mode から抜けた時に自動的にマーカーを消すことができます。 augroup te…

wandbox.vim のエラー結果を unite.vim で出力する

vim

さて、wandbox.vim ではエラー時に quickfix へと出力が行われます。 しかし、unite.vim を使用しているのであれば quickfix よりも unite.vim へと出力したいですよね。 quickfix よりも unite.vim を使用した方が絞り込みが容易に行え、何より拡張性が高い…

Python で実行時間の計測する

Python で実行時間を計測する場合 timeit を使用するのがよいのかな。 [ソース] # -*- coding: utf-8 -* import timeit def test(): "-".join(str(n) for n in range(100)) # number で呼び出し回数を指定 print timeit.timeit('"-".join(str(n) for n in ra…

Vim script で end 系のコマンドを :execute できない理由

vim

Lingr の Vim 部屋で次のようなコードが投げられました。 http://lingr.com/room/vim/archives/2013/12/22#message-17893985 let g:queue = range(9) command! WHILE while !empty(g:queue) command! END endwhile " echo g:queue WHILE echo remove(g:queue…

const auto p = &x; でハマった

C++

次のように const auto でポインタを受け取った場合にちとハマったので覚書。 [ソース] #include <iostream> struct X{ void print(){ std::cout << "X::print();" << std::endl; std::cout << value << std::endl; } void print() const{ std::cout << "X::print() co</iostream>…

C++ (fork) Advent Calendar 2013 : C++ で型推論を活用する

C++

この記事は C++ (fork) Advent Calendar 2013 の 21日目の記事になります。 なんとなく書きたいことがあったので突発的に登録したんですが、周りが割りとガチで戦々恐々としています。 そんな C++ (fork) Advent Calendar 2013 ですが、今回は軽めの記事にな…

C++14 の Single quotation mark as digit separator を使ってみた

そういえば、Clang で既に実装されていたなーと思って試してみました。 [ソース] #include <iostream> int main(){ // 任意の場所で ' をおける int n = 1'000'000; int m = 1'23'456'7; std::cout << n << std::endl; std::cout << m << std::endl; // 10進数以外も i</iostream>…

C++ Advent Calendar 2013 前編 - Vim で C++ のコーディングを行う

この記事は C++ Advent Calendar 2013 の 19日目の前編の記事になります。 本記事は 2011 年に書いた Vim で C++ のコーディングを行うなら知っておきたい10のこと の 2013 年版になります。 2013 年版といいつつ全然 10個じゃないんですが…。 えー Vim 本体…

C++ Advent Calendar 2013 後編 - 構文解析ツールとして Clang を使用してみる

この記事は C++ Advent Calendar 2013 の 19日目の後編の記事になります。 さて、Clang なのですが C++er では知らない人はいないと思います。 Clang とは LLVM をバックエンドとした C++ のコンパイラです。 最近では Clang が C++14 の機能を全て実装して…

unite-output の引数でスペースをエスケープしない方法

vim

知らなかったので覚書。 unite-output に渡す引数内でスペースを記述する場合 \ でエスケープする必要がある。 " スペースは \ でエスケープ Unite output:echo\ "homu\ mami\ mado" しかし、これは : をスペースの代替とする事ができる。 " スペースのかわ…

vim-startify を unite.vim で代替してみる

vim

元ネタ:Vimmerなら2013年中に試しておきたい海外産Vim plugin 8選 上記の記事で起動時にいろいろと表示する vim-startify というプラグインが紹介されているのですが 『それ unite.vim でできるよ!』 と思ったのでやってみました。 [表示するもの] 直前に…

marching.vim に wandbox を使用したコード補完の実装を追加してみた

何かと話題の wandbox なのですが、その wandbox の API を利用したコード補完の実装を marching.vim に追加してみました。 Vim から wandbox へ補完を行うコードを投げ、wandbox 側でコード補完の処理を行ってもらう事によりローカルに Clang の環境がなく…

Vimプラグイン読書会を行いました

vim

宣伝していた通り、昨日 Vim プラグイン読書会を行いました。 目的:プラグイン構成について学ぶ 日時:12月14日21:00〜 読んだもの junkfile.vim vim-visualstar ログ:http://lingr.com/room/vim/archives/2013/12/14#message-17822662 参加者 DeaR cohama…

本日 21時から Vimプラグイン読書会を行います

vim

以前、予告したとおり本日の21時から Vimプラグイン読書会を行います。 以下、再掲。 目的:プラグインの基本的な構成や作り方について学ぶ 日時:12月14日21時〜 読むもの:junkfile.vim 場所:Lingr の Vim部屋 備考:thinca さんによる解説付き Vim プラ…

Boost.Predef つかってみた

リリース前から気になっていたんですが、すっかり忘れていたので簡単に試してみました。 [ソース] #include <boost/config.hpp> #include <boost/predef.h> #include <iostream> int main(){ std::cout << BOOST_COMPILER << std::endl; #if BOOST_OS_WINDOWS std::cout << "OS is Windows." << std::endl</iostream></boost/predef.h></boost/config.hpp>…

Vim から wandbox の API を叩いてみた

vim

何かと話題の wandbox ですが API を使ってみたかったのでとりあえず Vim から叩いてみました。 webapi.vim を使用して以下のような感じに。 [ソース] function! s:wandbox_compile(code) let post_code = '{ \ "code": "' . a:code . '", \ "options": "war…

Vim から libclang のバージョンを取得する

覚書。 とりあえず、手元の環境では libcall() で取得する事は可能でした。 echo libcall("libclang", "clang_getClangVersion", "") " => clang version 3.5 他の環境でも動作するかな。

over.vim の :OverCommandLine に初期テキストを渡せるようにした

vim

前々から実装しようと思っていたのですが要望があったので over.vim の :OverCommandLine に初期テキストを渡せるようにしました。 " "hoge" が入力された状態で開始する :OverCommandLine hoge

Vim Advent Calendar 2013 のトップ絵を書いてもらいました

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…

12月14日(土)21時から 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…

Vim で :source % した場合にのみ処理されるコードを記述する

vim

プラグインを作っている時に「ちょっと開発中のコード埋め込みたいなー」って場合にほしいと思っていたので書いてみました。 Lignr の Vim 部屋で t9md さんのアドバイスもらって以下のような感じになりました。 if expand("%:p") == expand("<sfile>:p") echo "sou</sfile>…

Vim でオレオレ gf を書いた

vim

Vim の gf はカーソル下のファイルを開けたりして便利なのですが、Ruby の require で使用した場合、ファイルではなくてディレクトリが開かれてしまうので、ついカッとなってオレオレ gf 書いた。 function! s:open_cmd(file_cmd, dir_cmd, file) if filerea…

reanimate.vim の reanimate_message イベントを削除した

vim

reanimate_message は元々、確認メッセージやエラー内容の出力などを行う為のイベントだったのですが、別々に制御した方がよさそうだったので、分割しました。 確認メッセージは reanimate_confirm で、エラー内容の出力は reanimate_error で行います。 " …

Vim のオレオレ :tab drop を gift.vim で書きなおしてみた

vim

以前書いた、これを gift.vim を使用して書きなおしてみた。 function! s:to_fullpath(filename) let name = substitute(fnamemodify(a:filename, ":p"), '\', '/', "g") if filereadable(name) return name else return a:filename endif endfunction funct…

Vim で &path に gems のパスを追加する

vim

stargate.vim ではバッファの &path を使用してインクルードするファイルを参照しています。 Ruby で stargate.vim を使用する際に gems からも参照して欲しかったので &path に gems のパスを追加するようにしてみました。 function! s:ruby() if has("ruby…