May 2007アーカイブ

最近なにやら .emacs の perl の設定を晒してる人が多いので僕の晒しておくことにする。っといっても自分でゼロから書いた elisp はなくて、ほとんどが漁って拾って来た設定だったりします。ところどころ誰のを拾ったか書いてあったり、最近書かれてた設定に変えてあったりはするんですが、それは愛嬌ってことで。

;;; ================================================================ ;;;
;;;                   Perl Programming Settings                      ;;;
;;; ================================================================ ;;;

(autoload 'perl-mode "cperl-mode"
          "alternate mode for editing Perl programs" t)
(setq cperl-auto-newline t)
(setq cperl-indent-parens-as-block t)
(setq cperl-close-paren-offset -4)
(setq cperl-indent-level 4)
(setq cperl-label-offset -4)
(setq cperl-continued-statement-offset 4)
(setq cperl-highlight-variables-indiscriminately t)
(add-to-list 'interpreter-mode-alist '("perl" . cperl-mode))
(setq auto-mode-alist (cons '("\\.\\(p[lm]\\|f?cgi\\|t\\)$" . cperl-mode) auto-mode-alist))
(add-hook 'cperl-mode-hook
          (lambda ()
            (set-face-italic-p 'cperl-hash-face nil)
            (global-set-key "\C-cp" 'cperl-check-syntax) ; Syntax Check
            (global-set-key "\C-ct" 'perltidy-region) ; perltidy
            (global-set-key "\C-c\C-t" 'perltidy-defun)
            (global-set-key "\C-c\C-ct" 'perltidy-buffer)
            (global-set-key "\M-p" 'cperl-perldoc) ; perldoc
            (local-set-key "\C-c\C-m" 'cperl-view-module-src-at-point) ; perldoc -m
            (global-set-key "\C-c\C-cc" 'perl-eval) ; リージョンを実行
            (local-set-key "\C-c\C-cp" 'cperl-prove) ; テストを実行
            (require 'perlplus)
            (define-key cperl-mode-map "\M-," 'perlplus-complete-symbol) ; 関数&シンボル補完
            (perlplus-setup)
            (require 'perl-debug)
            (perl-debug-set-coding-system)
            (define-key cperl-mode-map "\C-cd" 'perl-debug-lint)
            (define-key cperl-mode-map "\C-c\C-d" 'perl-debug) ; デバッガの起動
            (local-set-key "\C-j" (lambda () (interactive)(insert "->"))) ; powered by hiboma
            (local-set-key "\M-j" (lambda () (interactive)(insert "=>")))
            ))

;;; Perl Debug の設定
(autoload 'perl-debug "perl-debug" nil t)
(autoload 'perl-debug-lint "perl-debug" nil t)

;;; perltidy-region powered by typester
(defun perltidy-region ()
  "Run perltidy on the current region."
  (interactive)
  (save-excursion
    (shell-command-on-region (point) (mark) "perltidy -q" nil t)))
(defun perltidy-defun ()
  "Run perltidy on the current defun."
  (interactive)
  (save-excursion (mark-defun)
  (perltidy-region)))
(defun perltidy-buffer ()
  "Run perltidy on the current buffer."
  (interactive)
  (save-excursion (mark-whole-buffer)
  (perltidy-region)))

;;; perldoc -m
(defun cperl-view-module-src-at-point (module)
  "Visit perl module's source file"
  (interactive
  (list (let* ((default-entry (or (cperl-word-at-point) ""))
  (input (read-string
  (format "View perl module's source%s: "
  (if (string= default-entry "")""
  (format " (default %s)" default-entry))))))
  (if (string= input "")
  (if (string= default-entry "")
  (error "No Perl module given")default-entry)input))))
  (let ((file (substring (shell-command-to-string(concat "perldoc -m " module))0 -1)))
  (if (string-match "No module found for" file)
  (error file)
  (view-file-other-window file)))
)

;;; テストを実行 by PBP
(defun cperl-prove ()
  "Run the current test."
  (interactive)
  (save-excursion
  (shell-command (concat "prove -vl "
  (shell-quote-argument (buffer-file-name)))))
)

;;; リージョン内のコードを実行する by PBP
(defun perl-eval (beg end)
  "Run selected region as Perl code"
  (interactive "r")
  (save-excursion
  (shell-command-on-region beg end "perl"))
)

;;; mode-compile
(autoload 'mode-compile "mode-compile"
 "Command to compile current buffer file based on the major mode" t)
(global-set-key "\C-cc" 'mode-compile)
;(global-set-key "\C-c\C-c" 'mode-compile)
(autoload 'mode-compile-kill "mode-compile"
 "Command to kill a compilation launched by `mode-compile'" t)
(global-set-key "\C-ck" 'mode-compile-kill)
(global-set-key "\C-cn" 'next-error) ;; エラー箇所に飛ぶ
;;; 質問してこないように
(setq mode-compile-always-save-buffer-p t)
(setq mode-compile-never-edit-command-p t)
(setq mode-compile-expert-p t)
(setq mode-compile-reading-time 0)
;;; コンパイルウィンドウサイズ
(setq compilation-window-height 10)

コード書いている途中で実行する時は mode-compile で実行して確認とかしてます。今のところ特に不満点とかはないのですが、Hacker な人は関数補完とかしているのか気になります。

あとは今までまったく使っていないので動的略語展開(abbrev)とかを覚えたいなぁと。(出来る人達はこれで色々補完しているんだろうなぁって勝手に予想してるんですが)

キーバインドはも少し考える余地があるんだけど、面倒臭くて変更する気にならない。僕は\M より \C の方が押しやすい気がするのでほとんど \C になってるw

SummerWind - Macに入れているアプリケーションをみて僕も自分の入れているアプリケーションを吊るしてみる。Mac 買い替えた時にこのリストが役にたつかも(HDD 移行すれば済みそうだけど僕の PPC なんでちゃんと出来るか不安)

GUI アプリケーション

  • Adium - Chat をするために使用
  • Adobe Illustrator CS2 - あまり使う機会がない
  • Adobe Photoshop CS2 - 画像処理とかアイコンを作ったり
  • Airfoil - Air Tunes に音を飛ばす為に
  • AppDelete - アプリケーション削除ツール
  • BonEcho - Firefox の爆速版
  • Camino - メインブラウザ
  • Carbon Emacs - エディタ以上OS未満
  • coconutBattery - ノートだからバッテリチェック用に
  • Colloquy - IRC に顔を出すために仕様
  • CotEditor - 気の利いたエディタ、ちょこっとした作業用
  • CronniX - cron を GUI で触れる、今は使ってない
  • Dashcode - DashBoard Widget を GUI で作る SDK
  • Firefox - ある意味開発環境
  • Google Notifier - メールチェックに必須
  • Growl - 訳あって今は OFF
  • iTerm - 256 color で使えるターミナル
  • Linotype FontExplorer X - フォント管理ソフト
  • Macromedia Dreamweaver - 数回しか起動した事がない
  • Macromedia Flash - そのうち覚えるために入れてる
  • Microsoft Office - たまにエクセルやワードの書類をもらう事があるので
  • OnyX - メンテナンスソフト。一ヶ月に一回ぐらい起動させる
  • OmniWeb - Safari ベースのブラウザ
  • Opera - 確認用
  • Paparazzi! - フル画面のスクリーンショットを撮るために
  • Quicksilver - 高機能ランチャー、未だ使いこなせず
  • SafariStand - Safari が便利になる
  • Shiira - Safari ベースのブラウザ
  • Skype - なんでか入ってた
  • SMARTReporter - HDD 状態監視ソフト
  • sshfs - sshfs の GUI 版
  • TerminalColors - Terminal.app の色を変えるのに
  • Transmit3 - 割と気に入っている FTP ソフト、SFTP が使える
  • UNO - Aqua の GUI をかっこ良くする
  • VirtueDesktops - 仮想デスクトップソフト、ないとデスクトップが汚れる
  • Xcode - Mac を Unix として使うために必須

こう見ると以外とアプリケーション自体が少ないかも。特に動画用のソフトとか使わないし、WebApp はブラウザ経由で使うので特にアプリ自体を入れていないってのがあるかな。個人的には高機能エディタ skEdit が欲しいんだけどまだ買ってない。

あとアーカイブとかは普段は標準の BOMA で足りるし、コマンドラインで操作してやればいいのでアプリケーションはいらないかな。

最近のコメント