2012年9月24日月曜日

tab・space混じりのコードにキレてくれるemacs

ぐぐって出たものを見つつ、設定を書きました。
他の方に見てもらうコードは、混じってたら絶対まずいです。tabかspaceだけでインデントしないと怒られます。

ぐぐって出てくる方はtab派じゃなくspace派が多かったので、
tab派向けに、あんまりtabが目立たない、spaceと混じった時だけ怒るような感じにしてみました。

参考にしたもの: http://murakan.cocolog-nifty.com/blog/2009/01/emacs-tips-b314.html

;;======================================;;
;; tab, full-space escape               ;;
;;======================================;;
(defface my-face-r-1 '((t (:background "gray15"))) nil)
(defface my-face-b-1 '((t (:background "red"))) nil)
(defface my-face-b-2 '((t (:foreground "gray20" :underline t))) nil)
(defface my-face-u-1 '((t (:foreground "red" :underline t))) nil)
(defvar my-face-r-1 'my-face-r-1)
(defvar my-face-b-1 'my-face-b-1)
(defvar my-face-b-2 'my-face-b-2)
(defvar my-face-u-1 'my-face-u-1)
(defadvice font-lock-mode (before my-font-lock-mode())
  (font-lock-add-keywords
   major-mode
   '(
     ("\t" 0 my-face-b-2 append)
     (" " 0 my-face-u-1 append)
     ("[ \t]+$" 0 my-face-b-1 append)
     (" [\r]*\n" 0 my-face-r-1 append)
     ("\t+ +" 0 my-face-b-1 append)
     )))
(ad-enable-advice 'font-lock-mode 'before 'my-font-lock-mode)
(ad-activate 'font-lock-mode)

2012年9月23日日曜日

gitのレポジトリ作る手順をわさーっと出す

gitrepo-assist.rb
#!/usr/bin/env ruby

REMOTE_USER = "username"
REMOTE_HOST = "myhost.example.jp"
REMOTE_GIT_PATH = "/home/#{REMOTE_USER}/git" 

project = ARGV.shift || File.basename(Dir.pwd)

puts [
      #remote login
      "ssh #{REMOTE_USER}@#{REMOTE_HOST}",
      "cd #{REMOTE_GIT_PATH}",
      "mkdir #{project}.git",
      "cd #{project}.git",
      "git --bare init",
      "exit",

      #local repository
      "git init",
      "git add .",
      "git commit -m 'first commit'",

      #push
      "git remote add origin ssh://#{REMOTE_USER}@#{REMOTE_HOST}#{REMOTE_GIT_PATH}/#{project}.git",
      "git push origin master"
]

自分の持ってるリモートサーバー情報と、リモートレポジトリを置く場所を書いておくと、

  1. リモートログインして、
  2. リモートレポジトリつくって、
  3. ローカルレポジトリつくって、
  4. 現在あるファイルを全部コミットして、
  5. origin登録して、
  6. 最初のpush
までの手順をざーっと出してくれる。(共有用ではなく個人開発用のレポジトリになる)

ハードコーディングやめなよとか、手順もほぼべた書きっておいおい…とか色々アレですが、
これを書き終わる頃にはもう手順頭に入っちゃったので、これを使う機会はもうない、ってところが何より寂しいですね、うん。

CPANのコードが読みたくなったら

perbrew + cpanm環境を使っている場合、インストールしたCPANモジュールはすべてホームディレクトリ以下にある。

具体的に言うと~/.cpanm/work以下のどこか。ただしよくわかんない数字のディレクトリで分類されている。
また、CPANモジュールのディレクトリ名は、AAA::BB::CというモジュールだったらAAA-BB-CC-<ヴァージョン>となっている。

以上をふまえて。例えばPath::Classモジュールを探し出したい時は、

% ls ~/.cpanm/work/*/Path-Class*
.cpanm/work/1348323865.9574/Path-Class-0.26.tar.gz

.cpanm/work/1348323865.9574/Path-Class-0.26:
Build  Changes  LICENSE  META.yml MYMETA.yml README  _build  dist.ini lib
Build.PL INSTALL  MANIFEST MYMETA.json Makefile.PL SIGNATURE blib  f.pl  t

こんなかんじ。

本当に実際のコードを読みたいだけなんやー! というときは、~/.cpanm/work/*/Path-Class*/libってしたほうが手っ取り早いかも。

追記:
まぁきっと探せばそういうのあるよなぁと思ってましたが、cpanm --look Path::Classで完璧でした。(子shellが立ち上がって、モジュールのディレクトリをうろうろできる。)
この状態でemacs libとか叩けばよい。うぅ。