Quantcast
Channel: ごりゅご.com » howm
Viewing all articles
Browse latest Browse all 8

Carbon Emacs用 .emacs 2008年7月版

$
0
0

.emacsの記事が思ったより多くの人が見てくれているみたいなので、現在の.emacsを改めて公開してみる。

主な変更点

  • 新たにChangeLog Memo dsvn を使い始めるようになった。
  • highlight-completionの代わりにmcompleteを使うようになった。
  • migemoめちゃくちゃ便利なんだけど、なんか入れたら英語が検索できなくなったんだけど…(調査中)

最近は仕事でもMacを使うようになったので、EmacsとMeadowで両方色々いじってみるという面倒なことが無くなり非常に便利。

エディタは完全にEmacsしか使わないようになった。が、ファインダーからドラッグ&ドロップでファイル開いてるへたれです。

追記:

オレオレ.emacs最新版をGithubに上げました。

http://github.com/goryugo/my-dot-files/tree/master/.emacs.el

;;migemo 英語が検索できなくなったぞ?
;; (setq migemo-command "migemo"
;;       migemo-options '("-t" "emacs"  "-i" "\a"))
;; (setenv "RUBYLIB" "/Applications/Emacs.app/Contents/Resources/lib/ruby/site_ruby/")
;; (require 'migemo)
;;elisp load-path
(setq load-path
(append
(list
(expand-file-name "~/site-lisp/")
)
load-path))
;;Chamgelog Memo
(setq user-full-name "USERNAME")
(setq user-mail-address "MAIL")
(autoload 'clmemo "clmemo" "ChangeLog memo mode." t)
;; あなたの ChangeLog メモファイルへのパス
(setq clmemo-file-name "~/howm/clmemo.txt")
;; 好きなキーへバインド
(global-set-key "\C-xM" 'clmemo)
;;changelogタイトル補完
(setq clmemo-title-list '("log" "idea" "perl" "unix" "shell"))
(setq clmemo-time-string-with-weekday 't)
;;;;;;;;;;;;;;;;;;;;
;;テスト中の機能
;;;;;;;;;;;;;;;;;;;;
;;dsvn
(autoload 'svn-status "dsvn" "Run `svn status'." t)
(autoload 'svn-update "dsvn" "Run `svn update'." t)
;;ミニバッファで M-x 時のインクリメンタル補完
(require 'mcomplete)
;さらによく使うヒストリを優先させる
(load "mcomplete-history")
(turn-on-mcomplete-mode)
;;ファイルを開く時に,カーソルキーだけで,ファイルを選択
;;カーソル上下で従来のヒストリ。ctrl+P,ctrl+nでファイル名補完
(require 'cycle-mini)
(define-key minibuffer-local-map [up] 'previous-history-element)
(define-key minibuffer-local-completion-map [up] 'previous-history-element)
(define-key minibuffer-local-must-match-map [up] 'previous-history-element)
(define-key minibuffer-local-ns-map [up] 'previous-history-element)
(define-key minibuffer-local-ns-map [down] 'next-history-element)
(define-key minibuffer-local-map [down] 'next-history-element)
(define-key minibuffer-local-completion-map [down] 'next-history-element)
(define-key minibuffer-local-must-match-map [down] 'next-history-element)
;;;;;;;;;;;;;;;;;;;;
;; mode毎の設定
;;;;;;;;;;;;;;;;;;;;
;;; yaml-mode
(require 'yaml-mode)
(add-to-list 'auto-mode-alist '("\\.\\(yml\\|yaml\\)\\'" . yaml-mode))
;;CSS-mode
(autoload 'css-mode "css-mode")
(setq auto-mode-alist
(cons '("\\.css\\'" . css-mode) auto-mode-alist))
;;Javascript-mode
(add-to-list 'auto-mode-alist (cons  "\\.\\(js\\|as\\|json\\|jsn\\)\\'" 'js2-mode))
(autoload 'js2-mode "js2" nil t)
(setq js-indent-level 2)
;; cperl mode
(autoload 'cperl-mode "cperl-mode" "alternate mode for editing Perl programs" t)
(setq auto-mode-alist
(append '(("\\.\\([pP][Plm]\\|al\\|cgi\\|t\\)$" . cperl-mode))  auto-mode-alist ))
(setq interpreter-mode-alist (append interpreter-mode-alist
'(("miniperl" . cperl-mode))))
(add-hook 'cperl-mode-hook
(lambda ()
))
;;simple hatena mode
(require 'simple-hatena-mode)
(setq simple-hatena-default-id "goryugo")
;;;;;;;;;;;;;;;;;;;;
;;その他設定
;;;;;;;;;;;;;;;;;;;;
;;font
(if (eq window-system 'mac)
(progn
(require 'carbon-font)
(fixed-width-set-fontset "hiramaru" 12)))
;; メニューバーの消去
(tool-bar-mode -1)
;; 初期フレームの設定
(setq default-frame-alist
(append (list '(width . 110)
'(height . 63)
'(top . 0)
'(left . 0))
default-frame-alist))
;;C-hをバックスペースに
(global-set-key "\C-h" 'delete-backward-char)
;; 括弧の対応をハイライト.
(show-paren-mode 1)
;; BS で選択範囲を消す
(delete-selection-mode 1)
;;ビープ音を消す
(setq ring-bell-function 'ignore)
;;カラーテーマ
(require 'color-theme)
(color-theme-initialize)
(color-theme-deep-blue)
;;リージョン色づけ
(setq transient-mark-mode t)
;;カーソルでのリージョン選択
(pc-selection-mode)
;;一行カット
(setq kill-whole-line t)
;;モードラインにカーソルがある位置の文字数を表示
(column-number-mode 1)
;;;;;;;;;;;;;;;;;;;;
;;howm
;;;;;;;;;;;;;;;;;;;;
(setq howm-menu-lang 'ja)
(global-set-key "\C-c,," 'howm-menu)
(mapc
(lambda (f)
(autoload f
"howm" "Hitori Otegaru Wiki Modoki" t))
'(howm-menu howm-list-all howm-list-recent
howm-list-grep howm-create
howm-keyword-to-kill-ring))
;; リンクを TAB で辿る
(eval-after-load "howm-mode"
'(progn
(define-key howm-mode-map [tab] 'action-lock-goto-next-link)
(define-key howm-mode-map [(meta tab)] 'action-lock-goto-previous-link)))
;; 「最近のメモ」一覧時にタイトル表示
(setq howm-list-recent-title t)
;; 全メモ一覧時にタイトル表示
(setq howm-list-all-title t)
;; メニューを 2 時間キャッシュ
(setq howm-menu-expiry-hours 2)
;; howm の時は auto-fill で
;;(add-hook 'howm-mode-on-hook 'auto-fill-mode)
;; RET でファイルを開く際, 一覧バッファを消す
;; C-u RET なら残る
(setq howm-view-summary-persistent nil)
;; メニューの予定表の表示範囲
;; 10 日前から
(setq howm-menu-schedule-days-before 10)
;; 3 日後まで
(setq howm-menu-schedule-days 3)
;; howm のファイル名
;; 1 メモ 1 ファイル (デフォルト)
(setq howm-file-name-format "%Y/%m/%Y-%m-%d-%H%M%S.howm")
;; 検索しないファイルの正規表現
(setq
howm-excluded-file-regexp
"/\\.#\\|[~#]$\\|\\.bak$\\|/CVS/\\|\\.doc$\\|\\.pdf$\\|\\.ppt$\\|\\.xls$")
;; いちいち消すのも面倒なので
;; 内容が 0 ならファイルごと削除する
(if (not (memq 'delete-file-if-no-contents after-save-hook))
(setq after-save-hook
(cons 'delete-file-if-no-contents after-save-hook)))
(defun delete-file-if-no-contents ()
(when (and
(buffer-file-name (current-buffer))
(string-match "\\.howm" (buffer-file-name (current-buffer)))
(= (point-min) (point-max)))
(delete-file
(buffer-file-name (current-buffer)))))
;; http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?SaveAndKillBuffer
;; C-cC-c で保存してバッファをキルする
(defun my-save-and-kill-buffer ()
(interactive)
(when (and
(buffer-file-name)
(string-match "\\.howm"
(buffer-file-name)))
(save-buffer)
(kill-buffer nil)))
(eval-after-load "howm"
'(progn
(define-key howm-mode-map
"\C-c\C-c" 'my-save-and-kill-buffer)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;バッファの切り替え
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defvar my-ignore-blst             ; 移動の際に無視するバッファのリスト
'("*Help*" "*Compile-Log*" "*Mew completions*" "*Completions*"
"*Shell Command Output*" "*Apropos*" "*Buffer List*" "*GNU Emacs*"
".howm-keys" "*Messages*" "*SimpleHatena*" ".howm-history"))
(defvar my-visible-blst nil)       ; 移動開始時の buffer list を保存
(defvar my-bslen 15)               ; buffer list 中の buffer name の最大長
(defvar my-blist-display-time 10)   ; buffer list の表示時間
(defface my-cbface                 ; buffer list 中で current buffer を示す face
'((t (:foreground "wheat" :underline t))) nil)
(defun my-visible-buffers (blst)
(if (eq blst nil) '()
(let ((bufn (buffer-name (car blst))))
(if (or (= (aref bufn 0) ? ) (member bufn my-ignore-blst))
;; ミニバッファと無視するバッファには移動しない
(my-visible-buffers (cdr blst))
(cons (car blst) (my-visible-buffers (cdr blst)))))))
(defun my-show-buffer-list (prompt spliter)
(let* ((len (string-width prompt))
(str (mapconcat
(lambda (buf)
(let ((bs (copy-sequence (buffer-name buf))))
(when (> (string-width bs) my-bslen) ;; 切り詰め 
(setq bs (concat (substring bs 0 (- my-bslen 2)) "..")))
(setq len (+ len (string-width (concat bs spliter))))
(when (eq buf (current-buffer)) ;; 現在のバッファは強調表示
(put-text-property 0 (length bs) 'face 'my-cbface bs))
(cond ((>= len (frame-width)) ;; frame 幅で適宜改行
(setq len (+ (string-width (concat prompt bs spliter))))
(concat "\n" (make-string (string-width prompt) ? ) bs))
(t bs))))
my-visible-blst spliter)))
(let (message-log-max)
(message "%s" (concat prompt str))
(when (sit-for my-blist-display-time) (message nil)))))
(defun my-operate-buffer (pos)
(unless (window-minibuffer-p (selected-window));; ミニバッファ以外で
(unless (eq last-command 'my-operate-buffer)
;; 直前にバッファを切り替えてなければバッファリストを更新
(setq my-visible-blst (my-visible-buffers (buffer-list))))
(let* ((blst (if pos my-visible-blst (reverse my-visible-blst))))
(switch-to-buffer (or (cadr (memq (current-buffer) blst)) (car blst))))
(my-show-buffer-list (if pos "[-->] " "[<--] ") (if pos " > "  " < " )))
(setq this-command 'my-operate-buffer))
(global-set-key [?\C-,] (lambda () (interactive) (my-operate-buffer nil)))
(global-set-key [?\C-.] (lambda () (interactive) (my-operate-buffer t)))

Viewing all articles
Browse latest Browse all 8

Trending Articles