2012年06月19日

左手の小指を守るためにsticky-control.el を導入してみた。

いつもいつも左手の小指を酷使しているので これからはそこをほぼ使わないようにするために 前回の記事では skk-sticky-key を設定したのですが、 今回はさらにcontrolを使わずに済むように sticky-control.el を導入してみました。

まず、インストールから。

http://www.cs.toronto.edu/~ryanjohn/sticky-control.el

に落ちているので

M-x auto-install-from-url

で、urlとして上記のurlを投入。

んで、普通に使う分には

(require 'sticky-control)

して

M-x sticky-control-mode

を実行したら使えるようになる。 んだけども、こいつがデフォルトで使うキーが"j"なので なんかどうにも使いづらい。

他の推奨キーもあって、それが"v"なんだけども こいつでもやっぱり使いづらい。

F1 v

で describe-variables を見たくてもそこのvで何かのっとられて 妙な動きをしやがるので非常によろしくない。

というかアルファベットから使わなくてもいいだろって思うので

(sticky-control-set-key 'sticky-control-key 44)

しておく。

こうすると C-x が ,x で入力できたり C-g が ,g で入力できたり C-c が ,c で入力できたり C-s が ,s で入力できたり C-r が ,r で入力できたりするんだけども C-j を入力するために ,j では入力できないあたりとか不便。

なので

(setq sticky-control-shortcuts
      '((?c . "\C-c")
        (?g . "\C-g")
        (?k . "\C-k")
        (?a . "\C-a")
        (?e . "\C-e")
        (?n . "\C-n")
        (?o . "\C-o")
        (?p . "\C-p")
        (?j . "\C-j")
        (?f . "\C-f")
        (?b . "\C-b")
        (?x . "\C-x")
        (?r . "\C-r")
        (?s . "\C-s")))

とか設定しておく。 こうするとまあ、,を先に書くだけで色々とcontrolキーを押した感じになって そこそこ幸せな感じ。 fとかbとかは連続で入力しがちなのでいらない気もしてきたけど。

あと、本当は

(59 . (kbd "C-;"))

も紛れこませたかったけど 作りのせいかそういう記号系はどうやらだめっぽい。 まあそういう感じで対応してないやつでも

",,;"とか入力したらC-;で入力しているのと同じことになるので ま、これでいいかなって感じ。

ただ、;と,をstickyなキーに設定しているから今度は右手がなんか忙しいような……。 ここらあたりも考えないといかないかも。

posted by 麦汁 at 20:30 | Comment(0) | TrackBack(0) | emacs | このブログの読者になる | 更新情報をチェックする

2012年06月17日

暇だったからddskkの設定いじった

今日も見事にやる気が足りないので とりあえず少しでも幸せになれるようにということで SKKの設定を弄ることにした。

まずはこんなのを置いている

(add-hook 'skk-load-hook
          (lambda ()
            ;; コード中では自動的に英字にする。
            (require 'context-skk)

            ;; 半角で入力したい文字
            (setq skk-rom-kana-rule-list
                  (nconc skk-rom-kana-rule-list
                         '((";" nil nil)
                           (":" nil nil)
                           ("?" nil nil)
                           ("!" nil nil))))))

skkが読み込まれた時に実行されるhookですね。 context-skk-modeってのを有効にして ";", ":", "?", "!" が半角で入力されるように設定。

context-skk-mode ってのは プログラムファイルのコード部分で「かな」とかになってた場合に 自動的に英字入力モードに戻してくれる地味に便利な子。 何も考えないでコードを書けるから地味に強力。

その後に

(require 'skk-autoloads)
(when (require 'skk nil t)
  (global-set-key "\C-\\" 'skk-mode))

こんなのを書いている。 skkをrequireしてその時にC-\をskk-mode起動のコマンドにしているのだけども なんかskk-autoloadsもあるし変な気はするな。まいっか。 C-\をskk起動にしているのは、 dired-xとコマンドが重複するっぽいので一時的な対策。

それから動的補完機能を有効にしてみた。

; 動的自動補完機能
(setq skk-dcomp-activate t)

これを導入すると、予測変換的な機能が使えるようになる。

それから閉括弧の自動入力機能を有効にしてみた

; 閉じ括弧の自動入力
(setq skk-auto-insert-paren t)

"「"を入力したら自動的に"」"まで入力してくれて便利。

それから左手の小指を守るために

; ";"をsticky shiftに用いることにする
(setq skk-sticky-key ";")

を設定してみた。

これをすると ";" を押したら"▽"が表示されて、 まあ変換開始位置の指定をしている感じになる。 ";" じゃあない方がいいかもしれないけどまずはこれで。

それから送り仮名の問題。 「おおく」を変換しようとした時に 「大く」が先に変換候補に出るとすごくうっとーしいので

; 見出し語と送り仮名がマッチした候補を優先して表示
(setq skk-henkan-strict-okuri-precedence t)

を設定。 skk-henkan-okuri-strictly という変数もあるのだけども 個人辞書の送りありエントリが充実していれば、 標準の設定よりも候補が絞り込まれるので変換効率がアップしますが、 さもなければ、すぐに辞書登録モードに入ってしまうため逆に不便になります。 ということなので緩い方にしておいた。

それから、変換候補の絞り込みに使えるskk-hintを有効化。 で、そのデフォルトのキーがskk-sticky-keyと重複するのでその対策として こっちは代わりに":"をそのキーにしておく。

(require 'skk-hint)
(setq skk-hint-start-char 58)

58ってのが":"のASCIIコードね。最初は":"を指定してハマった。

それから、注釈を表示するように設定

(setq skk-show-annotation t)

辞書内に注釈があればそれが勝手に表示されるし、 無かった場合にはTABを押すとなんとWikipediaから注釈を拾ってくるぞ! インターネットばんじゃーい。

後は一応ようやく学習機能を有効化してみたけど ちゃんと動いているかはよくわかんね。

;; 学習機能
(require 'skk-study)

んで、辞書をAquaSKKと共有するために

;; AquaSKKの辞書をつかうようにする
(if (eq window-system 'mac)
    (progn
      (setq skk-large-jisyo (expand-file-name "~/Library/Application Support/AquaSKK/SKK-JISYO.L"))
      (setq mac-pass-control-to-system nil)))

なんてのも放り込んでいる。

今回設定した中ではsticky-keyと閉じ括弧補完と動的補完と注釈機能が 小指に優しかったり入力減らしたり注釈面白そうだったりで今すぐ幸せになれそうな感じ。

なんか他にこれをやったら幸せになれそうって設定あったら誰か教えてください><

タグ:Emacs ddskk
posted by 麦汁 at 23:20 | Comment(0) | TrackBack(0) | emacs | このブログの読者になる | 更新情報をチェックする

2012年06月04日

Ruby1.9時代のcode metrics toolは Cane か Tailor かな?

最近久々にRails触ってて、 そろそろプロジェクトが大きくなってきたので じゃあそろそろコードのmetricとか計測しようか、という気分になりました。

そこで、昔懐かし metric_fu などを導入しようとしようとしたら よくよく調べるとそろそろこいつはオワコンっぽい。

こいつが内部で使っているReek,Roodi,Flog,Flayあたりが どうやら ruby_parser を使ってるらしく、 そんでもってこいつがruby1.8しかparseしないということで 上記4つのツールが使えなくなっている。

まあ実はChurnとかrails_best_practicesとかは使えるので 全く無用という程でもないのですが、 僕が使いたかったあたりが使えないのが悲しいので ちょっと昨今のmetric計測ツールを調べてみた。

で、出て来たのが、CaneTailor。 あとは metric_abc というのもあるがこいつは今はメンテされてないようだし 出力も大雑把なので放置。

で、まずはCaneちゃんの説明から。

基本的なインストール方法、使い方はとっても簡単。

毎度おなじみGemfileに

gem "cane"

して

$ bundle install

ら普通に入るし、

$ cane

したら普通に計測できる。

$ cane

Methods exceeded maximum allowed ABC complexity (1):

  app/controllers/items_controller.rb  ItemsController > index  18

Lines violated style requirements (1):

  app/controllers/items_controller.rb:54              Line is >80 characters (86)

Classes are not documented (2):
  app/controllers/items_controller.rb:1        ItemsController
  app/models/item.rb:3                             Item

で、とりあえず "Line is >80 characters (86)" とか 80文字制限なんてだるいわーって僕はここで .cane というファイルを作ってその中に

--style-measure 120

とか書いておく。

こうしておくと、"Line is >120 characters (126)" みたいな感じに 横幅120文字オーバーの行だけ引っ掛けるようになる感じ。

ま、簡単なコードのチェックをやってくれる感じ。

次、Tailorちゃん。

こいつもインストール方法も使い方も同じ感じ。 みんな大好きGemfileに

gem "tailor"

して

$ bundle install

で普通に入る。

動かす時は

$ tailor app/**/*.rb

で動く感じ。(app/**/*.rb なのはRails前提のため)

で、結果はこんな感じになる。

% tailor app/**/*.rb
#------------------------------------------------------------------------------#
# File:
#   app/controllers/items_controller.rb
#
# File Set:
#   default
#
# Problems:
#  1.
#    * position:  54:86
#    * property:  max_line_length
#    * message:   Line is 86 chars long, but should be 80.
#  2.
#    * position:  55:84
#    * property:  max_line_length
#    * message:   Line is 84 chars long, but should be 80.
#  3.
#    * position:  58:84
#    * property:  max_line_length
#    * message:   Line is 84 chars long, but should be 80.
#  4.
#    * position:  68:86
#    * property:  max_line_length
#    * message:   Line is 86 chars long, but should be 80.
#  5.
#    * position:  72:84
#    * property:  max_line_length
#    * message:   Line is 84 chars long, but should be 80.
#
#------------------------------------------------------------------------------#
#------------------------------------------------------------------------------#
#                           Tailor Summary                                     |
#------------------------------------------------------------------------------#
#   File                                                               | Probs |
#------------------------------------------------------------------------------#
# app/controllers/application_controller.rb                            |     0 |
# app/controllers/items_controller.rb                                  |     5 |
# app/helpers/application_helper.rb                                    |     0 |
# app/models/item.rb                                                   |     0 |
#------------------------------------------------------------------------------#
#   Error                                                              |     5 |
#------------------------------------------------------------------------------#
#   TOTAL                                                              |     5 |
#------------------------------------------------------------------------------#

こういうノリになる。 こいつもまた .tailor ってファイルに設定を書けるんだけども、 その前にちょっと待った!

$ tailor --create-config

を叩こう! 設定ファイルの雛形を作ってくれるぞ!

.tailor が出力されたら適当に好きなように編集しよう。 個人的にはやはり style.max_line_length は 120 とでもしてた方が気分がよろしい。 100 でもいいけど。

それから、Tailorの方は自分でもRuleを追加できるぜ! みたいなことを書いているので みんなで有用なRuleを作っていってみんなで幸せになろう。

で、とりあえず自分で調べたらこんな感じなんだけども 上に挙げてみた Churn, rails_best_practices, cane, tailor 以外で何かいいのがあったら教えてください。 特に、重複したコードを検出するようなの欲しいですう。

タグ:ruby Rails Metric
posted by 麦汁 at 00:19 | Comment(0) | TrackBack(0) | ruby | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。