2013-03-01から1ヶ月間の記事一覧

C++ でてけとーな暗号化/復号化

C++

排他的論理和を使用したてきとーな暗号化。 [ソース] #include <algorithm> struct ango{ explicit ango(int key) : key(key){} template<typename Range> Range operator ()(Range range) const{ typedef typename std::iterator_traits<decltype(std::begin(range))>::value_type value_type; auto result = std::mo</decltype(std::begin(range))></typename></algorithm>…

Vim でバッファ番号から開かれているタブ番号を取得する

vim

某所で少し話が出てたので書いてみた。 [ソース] function! GetBufnr2Tabnr(bufnr) let result = [] for tabnr in range(1, tabpagenr("$")) for bufnr in tabpagebuflist(tabnr) if bufnr == a:bufnr call add(result, tabnr) endif endfor endfor return r…

textobj-multiblock つくった

vim

この記事は Vim Advent Calendar 2012 119日目の記事になります。 まだまだ参加者は募集していますよ! [概要] textobj で特定の範囲(括弧)を選択する場合 i( や i{、i" なんかを使用します。 これをいちいち使い分けえるのが煩わしかったので ( にも { に…

Inheriting constructor を使って Variadic Templates 対応版 Boost.Fusion vector

そういえば、Inheriting constructor 実装されたし簡単になりそうだよなーってことで書いてみた。 [ソース] #include <boost/fusion/include/make_vector.hpp> #include <boost/fusion/include/io.hpp> #include <boost/fusion/include/at_c.hpp> #include <iostream> template<typename base> struct inheriting_constructor : base { using base::base; }; temp…</typename></iostream></boost/fusion/include/at_c.hpp></boost/fusion/include/io.hpp></boost/fusion/include/make_vector.hpp>

unite.vim の候補の表示のさせ方いろいろ

vim

unite.vim の候補の表示のさせ方がいろいろとあるのでまとめ。 [短縮表示] デフォルトではこの表示形式になります。 ただし、unite-source 側で multi-line が設定されている場合はその限りではありません。 (e.g. unite-line :Unite mapping [複数行表示] …

unite-quickfix を更新した

vim

去年からゴニョゴニョといじっている unite-quickfix なんですがいい加減放置しているのもあれなので master に merge しました。 結構ガッツリと変更したので使用している方はご注意を。 [更新内容] 実装追加 clang ライクなハイライトを実装 デフォルトは…

unite.vim で並び順を変更する

vim

unite.vim で出力される順番を変更したい場合、unite-filter を使用します。 例えば、unite-file を候補の文字数の長さ順にする場合は " 第三引数に並び順を設定する call unite#custom_source('file', 'sorters', "sorter_length") という風に設定します。 …

submode#enter_with でエラーになった話

vim

submode.vim で次のような設定をしたら call submode#enter_with('itunes_volume_up', 'n', 's', '<Space>iu', ':call itunes#volume_up(g:itunes_volume)<CR>') E474: 無効な引数です というようなエラーを吐き出した。 設定自体は間違ってないんだけどなー、と思いつ</cr></space>…

vim-itunes に音量調整する機能を pull request した

vim

lingr で 「submode.vim で itunes の音量調整が出来れば便利よねー」 みたいな話をしていたので vim-itunes に音量調整機能を実装して pull request して merge された。 わたしは Windows のみ実装していたんだけど merge した後に ryutorion さんが Mac …

Vim とスマホ(Android)でメモをとる

vim

この記事は Vim Advent Calendar 2012 112日目の記事になります。 今回は Vim 成分はやや少なめ。 これが最後の記事にならないといいですね。 さて、わたしはよく qfixhowm を利用して Vim 上でメモを取っているのですが、これをスマホ(Android)から参照し…

Vim Advent Calendar 2012 に参加したい方へ

vim

今更なんですがちょっとまとめ。 [これから参加しようと思っている方へ] 初めて参加される方は Vim Advent Calendar 2012 の ATND への登録をお願いします。 Twitter で発言しただけでは何もしないのであしからず。 最近は2回目をやっている方も多いですが、…

名前空間で user-defined literals を定義する

C++

名前空間で user-defined literals を定義した場合、そのリテラルを使用する時は using、もしくは using namespace をしておく必要があります。 [ソース] #include <string> #include <iostream> namespace hoge{ std::string operator "" _s(char const* c_str, std::size_t l</iostream></string>…

watchdogs.vim で hook/shebang/enable をデフォルトで無効にした

vim

昨日書いていたこれですが、有効になっていた場合の方が困る事が多いと思ったのでデフォルトで無効にしました。

watchdogs.vim で hook/shebang/enable を無効にする方法

vim

ここら辺でちょっと話が出ていたので書いておきます。 watchdogs.vim でのみ quickrun.vim の hook 等を有効・無効にしたい場合は g:quickrun_config.watchdogs/_ に設定します。 " watchdogs_checker/_ に watchdogs.vim で有効になる設定をする let g:quic…

explicit でキャスト演算子の暗黙の型変換を抑制する

C++

C++ ではキャスト演算子(operator T)を使用することで型から型へ暗黙の型変換を行うことが出来ます。 struct X{ constexpr operator int() const{ return value; } int value; }; constexpr X x{42}; static_assert(x == 42, ""); constexpr int n = x; こ…

正規表現を user-defined literals

C++

正規表現がリテラルで定義出来れば便利だろうか。 [ソース] #include <boost/regex.hpp> #include <string> boost::regex operator "" _r(char const* c_str, std::size_t len){ return boost::regex(c_str); } int main(){ std::string str = "12-34-56"; boost::smatch what; boost:</string></boost/regex.hpp>…

quickrun.vim で make する

vim

この記事は Vim Advent Calendar 2012 106日目の記事になります。 もうすぐ煩悩の数に追いつきそうですね。 元ネタ:unite-buildとrepomanでebuild quickrun.vim でもやってみた。 って事で簡単に quickrun.vim でも make を試してみました。 と、言っても基…

正規表現を raw string literals で定義

C++

Boost.Regex 等で特殊表現を定義する場合に \ を使用するんですが、エスケープシーケンスを回避する為に \\ と既述する必要があります。 boost::regex r("^\\s*\\d+\\-\\d+\\s*$"); assert( boost::regex_match("12-34", r)); assert( boost::regex_match(" …

clang_complete に定義ジャンプの機能が実装されたぽい

最近知ったんですが、clang_complete に定義へジャンプする機能が実装された(されはじめた)ぽいです。 ジャンプしたい名前にカーソルを合わせて で定義へと飛ぶことが出来ます。 で、わたしの環境でも軽く試してみたんですが、動作するケースもあれば動作…

Vim で一番上にハイライトをさせる

vim

特定の文字をハイライトさせたい場合、次のようなシンタックスを設定すると思います。 " hoge を Error でハイライトする syntax match Hoge /hoge/ highlight link Hoge Error 上記のような設定の場合、hoge がハイライトされるのですが、文字列やコメント…

Visual Studio 2010 の std::wstring::length が正しい値を返さなかった

C++

激しくはまってしまったので覚書。 さて、std::wstring::length は本来であれば文字列の文字数を返します。 std::wstring(L"mado").length(); // => 4 std::wstring(L"ほむ").length(); // => 2 gcc と clang は問題なく文字数を返して来ました。 しかし、な…

quickrun.vim について語る

vim

この記事は Vim Advent Calendar 2012 101日目の記事になります。 お陰様で100日目を迎えることが出来ました。 Vim Girl ちゃんかわいいよ Vim Girl ちゃん。 参加者はまだまだ募集中なのでとっておきのネタやプラグインなんかを紹介してみるといいと思いま…

PStade.Oven hetero

昨日の記事のコメントで教えて頂いたので覚書。 PStade.Oven に tuple から任意の型の range へと変換する関数が用意されているらしいので使ってみた。 [ソース] #include <pstade/oven/hetero.hpp> #include <boost/tuple/tuple.hpp> #include <boost/any.hpp> #include <iostream> #include <string> struct shape{ virtual void draw() = 0;</string></iostream></boost/any.hpp></boost/tuple/tuple.hpp></pstade/oven/hetero.hpp>…

Boost.Fusion のシーケンスに動的にアクセスする

さて、Boost.Fusion のシーケンスの要素にアクセスする場合、次のようにコンパイル時定数を用いてアクセスする必要があります。 auto v = f::make_vector(42, std::string("homu"), 3.14f, std::string("mado")); constexpr int index0 = 0; int n = f::get<index0>(</index0>…

submode.vim を利用して huerotation.vim の調整を行う

vim

カラースキームを360倍使うためのスクリプト - vim-jp unite.vimでカラースキームの色相を変化させる - mfumiの日記 submode.vim を使えば便利かなーと思ったので練習がてらちょっと書いてみました。 submode.vim に関しては下記のサイトが参考になります。 …

unite.vim について語る

vim

この記事は Vim Advent Calendar 2012 97日目の記事になります。 記念すべき 100日目まであとすこし!!って事で今回は unite.vim について書いてみました。 unite.vim とはなんぞや。 という人は結構いると思うので主観バリバリですが unite.vim について説…

Uniform Initialization と std::initializer_list

C++

前回の C++読書会で読んだ C++11: A cheat sheet―Alex Sinyakov に書かれていたので覚書。 さて、C++11 で追加された Uniform Initialization なのですが、次のように auto を使用した場合、{} と () では定義される型が変わってしまいます。 // C++11: A ch…

第11回 C++オンライン読書会を行いました。

C++

お陰様でほそぼそとですが、なんとか続けています。 5月に開催される C++Now 2013 まで続けれるといいですね。 第11回 C++オンライン読書会 - boostjp [次回] 日時:04/06(土) 20:00〜 資料:atomic Weapons The C++ Memory Model and Modern Hardware

unite.vim と neosnippet に最近追加してもらった機能

vim

最近 unite.vim と neosnippet にいくつか機能を追加してもらったので紹介でも。 最近といっても書き溜めてたのでそうでもないですが…。 [-wrap オプション] :Unite コマンドに -wrap オプションを渡すことでテキストがウィンドウからはみ出た場合にテキスト…

Vim script の getbufvar() 等にデフォルト値が設定出来るようになった

vim

ちょっと前なんですが vim-jp/issues で作業されていた内容が 7.3.831 で取り込まれました。 getbufvar(), getwinvar(), gettabvar()にデフォルト値を指定できるようにしたい - vim-jp/issues 最新版の KaoriYa Vim でも使用することが出来ます。 (と、いう…