2015-05-01から1ヶ月間の記事一覧

Ruby でオレオレ Outputter を定義する

出力時に $stdout に設定したクラスの #write メソッドが呼び出されるのでそこに処理を定義してカスタマイズすることができるみたい。 [コード] class CountOutputter def initialize count = 1, output = STDOUT @outputter = STDOUT @count = count end # …

Ruby で無名クラスを定義する

class ではなくて Class.new から定義すればよいみたい。 [コード] # Class.new でクラスを定義 # メソッドはブロック内で定義する X = Class.new { def self.name "X" end def func puts "homu" end } puts X.name x = X.new x.func def twice a, b a + b e…

Ruby の %w{} 記法

ので覚書程度に。 Ruby で文字列の配列を定義したい場合、%w{} という記法を利用するとより簡潔に配列を定義する事ができます。 # 各配列の要素をスペースで区切る data = %w{homu mami mado} p data # => ["homu", "mami", "mado"] こんな感じで簡単に定義…

Thor で外部コマンドのオプションを help で出力する

次のように外部で定義したコマンドの help を表示したかったんですが、これだとオプションの desc が出力されませんでした。 require "thor" class Echo < Thor::Group class_option :name, desc: "name=[NAME]" def output puts options[:name] end end cla…

Ruby の Thor で run コマンドを定義したかった

次のコードのように Thor で run コマンドを定義したかったんですがエラーになりました。 require "thor" class MyCLI < Thor desc "", "" def run puts "run" end end MyCLI.start ["run"] # error: `is_thor_reserved_word?': "run" is a Thor reserved wo…

Ruby で標準出力を取得する

Ruby で標準出力された値を取得したかったんですが、次のように実現できました。 コード require "stringio" def func p (1..10).select{ |it| it % 2 == 0 } end # 標準出力先を指定 $stdout = StringIO.new # 標準出力があるメソッドの呼び出し func func …

lexima.vim と Ruby の組み合わせでハマった

Vim

以前、lexima.vim からオムニ補完を呼び出す設定を行ないました。 で、これを元に文字列内では補完しないように call lexima#add_rule({ \ "char" : '.', "input" : '.', "filetype" : "ruby", "syntax" : "String" \}) みたいな設定を追加しました。 しかし…

wandbox に Vim script を追加してもらった

Wandbox に Vim script 追加しました: http://t.co/W7KimXPJWi— めるぽん(三十路ぽん) (@melponn) 2015, 5月 24 追加してもらいました。 便利。 ちなみに Lingr にはすでに wandbox-bot があったりするのでそれ経由で Lingr から Vim script を叩くこともで…

unite-boost-online-doc の依存関係を見なおした

Vim

unite-boost-online-doc に pull request が着てたんですが、その時にコードを見なおしていたらいろいろとアレな感じだったのでちょっと改良。 とりあえず、webapi.vim と open-browser.vim に依存しないようにしてみました。 こういう黎明期につくったプラ…

over.vim に visual mode のハイライトを実装してみた

Vim

結構前に要望が着てたんですが、無理やり実装してみました。 visual mode から over.vim を起動するとその範囲がハイライトされた状態になります。 不具合があれば issues 等で教えてもらえると助かります。

lexima.vim で ignore を設定できるようなヘルパ関数を書いてみた

Vim

lexima.vim で特定の条件で補完をしてほしくない場合は次のように設定する必要があります。 " (| を入力した時に () の補完を行う call lexima#add_rule({'char': '(', 'input_after': ')'}) " ただし、以下の場合は補完しない " |) の場合は補完しない call…

Ruby の module 内で include したかった

多分基本的なことなのだろうけどハマったので覚書。 さて、Ruby の module を書いている時に次のように include してメソッドにアクセスしたかったのですがこれだとうまく動作しませんでした。 module X def funcX :homu end module_function :funcX end mod…

lexima.vim でオムニ補完の呼び出し

Vim

オムニ補完は neocomplete.vim 経由で自動補完していたんですが、いまいち挙動が好みではなかったので lexima.vim 経由で自動補完してみることに。 とりあえず、Ruby は以下のような感じに。 " . で補完 call lexima#add_rule({ \ "at" : '\S\%#', \ "char" …

vim-textobj-xbrackets を拡張する

Vim

今まで雑に使っていたのでもうちょっと使い込んでみようかといろいろと試してみました。 vim-textobj-xbrackets については以下の記事を参照してください。 あにゃログ - textobj-xbrackets.vim マッチする iskeyword を拡張する textobj-xbrackets では iys…

jedi.vim を更新したら動作しなくなったので

Vim

調べてみたら submodule の更新も必要になったみたい。 submodule を更新するには jedi.vim のインストールディレクトリに移動して、 $ git submodule update --init を実行すればおkです。

lexima.vim の優先順位でハマった

Vim

"" の補完をしようと次のような設定を行ったのですが、うまく動作しなかったので覚書。 " 1." を入力したら "|" と補完される call lexima#add_rule({"at" : '\%#', "char" : '"', "input_after" : '"'}) " 2.ただし、文字列内で " を入力した場合は補完し…

surroud.vim で任意のタグで囲む

Vim

元ネタ 選択範囲の両端にfoldingのタグ{{{ と}}}をレベルつきで追加するvimscriptを書きたいのだけれども、ゼロからもりもりと書くか、それともコーディングを楽にする要素があるかを探すべきかで1週間ほど固まっている。 #vim— 竹田 (@takets) 2015, 5月 1…

Vm で特定の条件でのみ <C-a> でインクリメントしないようにする

Vim

元ネタ vim使っててインクリメント/デクリメントしようとして、たまにCTRL + aで減少して、CTRL + xで増加することがあってなんでかなー、って思ってたら"id-2"みたいなときなのに気づいた。-2って認識してるのね。— Tomotaka Sakuma (@tmtk75) 2015, 5月 13…

lexima.vim で自動補完を行う

Vim

ふと、こういうことにも利用できるんじゃないかと思ってやってみました。 とりあえず、ファイル補完を呼び出すのを書いてみた。 コード " . .. \w の直後に / を入力したらファイル補完を実行するようにする call lexima#add_rule({ \ 'at' : '\(\w\|\.\)\%#…

Ruby の flickraw を使って Flickr から特定のアカウントの画像を取得する

Flickr からとあるアカウントの画像を取得したかったのでやってみた。 Flickr には Web API があるんですが flickraw という gem 使えば Ruby から簡単に画像の取得できるので今回はそれを使用することに。 $ gem install flickraw また Flickr API を使用す…

C++14: Single quotation mark as digit separator

C++

数値リテラルの任意の位置にシングルクオート(') を記述する事ができるようになる機能です。 巨大な数値を定義する場合に区切りとして使用する事ができます。 [Example] // 数値が大きい場合 ' をつけて可読性を上げる auto n = 512'3981'9652; // Binary li…

unite.vim の i の挙動が変わってしまったので

Vim

以前は i でインサートモードに入るとプロンプトの位置にカーソルが移動するような挙動だったのですが、最近仕様が変わってしまったらしくてカーソルが移動しなくなってしまいました。 @pink_bangbi オプションはないです。文字列を入力するとプロンプトの行…

codic.vim にファイルキャッシング実装してみた

Vim

関連 : codic-vim プラグイン KaoriYa codic.vim は便利なのですが初回起動時のキャッシングがちょっと時間がかかります。 この影響であんまり活用してなかったんですが、キャッシュしたデータをメモリではなくてファイルに書き込むことで起動が高速になるよ…

lexima.vim で文字列リテラル内で " を入力したら \" になるような設定

Vim

多分こういう使い方が健全なんだなーと思う。 call lexima#add_rule({'at': '\%#', 'char': '"', 'input': '\"', 'syntax' : 'String'}) ただし、" 以外にも ' を文字列リテラルとして扱うような言語の場合は ' 間でも \" と挿入されてしまうのでそこら辺を…

lexima.vim でデフォルトの設定をすべて削除する

Vim

@pink_bangbi タイミングありました。(ソース見て思い出した)。ひとまず、call lexima#clear_rules() するとすべてのルールが無効化 (削除) されます。一時的に無効化する、という機能は今のところ無いです— こはま (@c0hama) 2015, 5月 7 とのこと。 ただし…

vim-smartinput から lexima.vim に乗り換えた

Vim

追記 設定が smartinput のままになってたのを修正 vim-smartinput 使っていたんですが、一部の syntax で設定を無効にするような事ができなかったので試しに lexima.vim を使ったらうまく動作したのでこっちに乗り換えることに。 設定方法は多少違うけど vi…

最近めちゃくちゃ便利になった Vim の dot repeat の設定

Vim

最近…というか asterisk.vim を使い始めた頃に(いまさら)dot repeat にはまっていたりします。 例えば、asterisk.vim を利用すると <Plug>(asterisk-z*)cgn というキー入力で 『カーソル下の単語を変更し、dot repeat で次の単語も同じ変更をする』 という事がで</plug>…

4月ぐらいから一部でバグっていた over.vim の問題を修正した

Vim

関連:Strange substitute behaviour · Issue #43 · osyo-manga/vim-over · GitHub 4月ぐらいから over.vim で入力する度に置換後の文字がどんどん増えていくというバグがありました。 このバグ、怪しいところの目星はついていたんですが、手元で再現できな…

smartinput.vim を入れてみた

Vim

重い腰を上げて今まで食わず嫌いだった smartinput.vim 入れてみた。 kana/vim-smartinput 対応する括弧等を入力する生活に疲れた(Vim 編) - TIM Labs 入れてみて少し試してみたんですがやっぱりどーしてもデフォルトの設定だと誤爆が多すぎてストレスが爆発…

最近 vim-gitgutter が気にってる

Vim

いまさらですが最近 vim-gitgutter を使い始めました。 vim-gitgutter を入れるとこんな感じで git の差分を sign で表示してくれるようになります。 左側に + などが表示される やはり視覚的な情報はわかりやすくてよいですね。 パフォーマンスも気にならな…