最新情報

2014年9月15日Emacs
emacs highlight-defined.el : 【ミス撲滅】Emacs Lispのソースコードで既知のシンボルに色をつける | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット, emacs lisp プログラミング, emacs lisp font-lock, emacs lisp 色付け
2014年9月14日Emacs
emacs hookify.el : ファイル保存後やコマンド実行後などに自動的に実行するアクションを即席で設定する!バッファローカルフックを設定・解除するコマンド | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方
2014年9月13日Emacs
emacs wgrep.el : *grep*や*ag*バッファを編集してその結果をファイルに反映させる凄技 | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット
2014年9月13日メルマガ
絶好調を自動的に作り出す技術!
2014年9月12日Emacs
emacs ag.el : the silver search(ag)の素晴しいインターフェース | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

emacs highlight-defined.el : 【ミス撲滅】Emacs Lispのソースコードで既知のシンボルに色をつける | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット, emacs lisp プログラミング, emacs lisp font-lock, emacs lisp 色付け

パッケージ名 highlight-defined
概要(原文) Syntax highlighting of known Elisp symbols
リポジトリ MELPA
取得先 https://github.com/Fanael/highlight-defined
バージョン 20140914.1401
関連記事 package:highlight-defined

highlight-defined.el は、定義されている
Emacs Lispシンボルをハイライトするものです。

これにより未定義シンボルをミスタイプで
うっかり使ってしまうことを防げます。

文字色のカスタマイズは
M-x customize-group highlight-defined
で行ってください。

20140915092906.png
Fig1: ビフォー

20140915092521.png
Fig1: アフター

highlight-defined インストール

このパッケージはmelpaにあるので パッケージの初期設定 を行ってください。

M-x package-refresh-contents
M-x package-install highlight-defined

タグ

emacs hookify.el : ファイル保存後やコマンド実行後などに自動的に実行するアクションを即席で設定する!バッファローカルフックを設定・解除するコマンド | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方

パッケージ名 hookify
概要(原文) Interactive commands to create temporary hooks
リポジトリ MELPA
取得先 https://github.com/Silex/hookify
バージョン 20140912.804
関連記事 package:hookify

hookify.el は、 バッファローカルなフック
手軽に設定するコマンドです。

ソースコードはめちゃくちゃ短いです。

実質10行程度なので仕組みが気になるならば、
M-x find-function hookifyで読んでみるとよいです。

使い方は M-x hookify を実行します。

そしてフック名とそこで実行するLisp式を入力します。

たったこれだけで一時的に使えるフックが定義できます。

フックを解除するにはC-u M-x hookify→フック名→Lisp式で、
そのLisp式のフックを解除します。

そのときはM-pで履歴からたどってください。

ある程度Emacsに慣れている人がステップアップするにはおすすめです。

hookify インストール

このパッケージはmelpaにあるので パッケージの初期設定 を行ってください。

M-x package-refresh-contents
M-x package-install hookify

使用例

after-save-hook で保存後にシェルコマンドを実行したりとか、
post-command-hook でデバッグに利用するのが便利です。

ファイルを保存した後に nginxを再起動 するには、

M-x hookify after-save-hook RET
  (shell-command "systemctl restart nginx")

ファイルを保存した後に ~/backup.txt に バックアップ するには、

M-x hookify after-save-hook RET
  (copy-file (buffer-file-name) "~/backup.txt")

タグ

2014/09/14 | コメント/トラックバック(0) |

カテゴリー:Emacs

emacs wgrep.el : *grep*や*ag*バッファを編集してその結果をファイルに反映させる凄技 | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット

パッケージ名 wgrep
概要(原文) Writable grep buffer and apply the changes to files
リポジトリ MELPA
取得先 https://github.com/mhayashi1120/Emacs-wgrep
バージョン 20140420.446
関連記事 package:wgrep package:ag package:wdired package:helm

wgrep.el は、 M-x grepM-x ag の結果を編集して
その結果をファイルに反映させるものです。

これで複数のファイルにわたる置換も楽勝でできます。

wdired はdiredの編集結果をファイル名に反映させるように、
wgrep はgrepの編集結果をファイル内容に反映させます。

使い方は簡単です。

  1. M-x grep
  2. eでwgrep-modeにする
  3. *grep*バッファを編集する
  4. C-c C-c (C-x C-s)でファイルに反映!

C-c C-kで編集を破棄します。

この設定では*grep*編集後にファイルに反映させたら即保存しています。

パッケージwgrepには、 wgrep-ag.elwgrep-pt.el
wgrep-ack.elwgrep-helm.el も同梱されているので、
M-x ag の結果なども編集できます。

wgrep インストール

このパッケージはmelpaにあるので パッケージの初期設定 を行ってください。

M-x package-refresh-contents
M-x package-install wgrep

設定 140913054041.wgrep.el(以下のコードと同一)

;;; eでwgrepモードにする
(setf wgrep-enable-key "e")
;;; wgrep終了時にバッファを保存
(setq wgrep-auto-save-buffer t)
;;; read-only bufferにも変更を適用する
(setq wgrep-change-readonly-file t)

実行方法

$ wget http://rubikitch.com/f/140913054041.wgrep.el
$ emacs -Q -f package-initialize -l 140913054041.wgrep.el

20140913054555.png
Fig1: wgrepで編集(反映直前)

タグ

2014/09/13 | コメント/トラックバック(0) |

カテゴリー:Emacs

絶好調を自動的に作り出す技術!

今日のメルマガは、あなたの眠っている力を引き出す内容です。

今回の内容を頭に入れて実践することで、
仕事の効率が数倍になり、早く仕事を終えられて、
帰宅時間が早まり自分の自由時間が増えることになります。

自然と言動も変わってくるので、他人からの評価も変わります。

さらに家族サービスができるようになって
パートナーとの関係性もよくなります。

最近、僕は脳科学にハマっているのですが、
脳の仕組みについて学んでいくといろいろ
おもしろいことが見えてきます。

org習慣仕事術もまさしく脳科学の話題でしたが、
今回も脳にかかわってくる話です。

仕事の調子はどう?

あなたは日々楽しく生きていますか?

機嫌のいい状態で仕事していますか?

おそらく、大半の人は

「あーしんどい…」
「はやく週末こないかな…」
「楽しくないな…」
「めんどい…」
「うざい…」

とかのネガティブな感情なのではないでしょうか?

そして、仕事帰りの酒に頼ったり
してるのではないでしょうか?

心がネガティブな状態のとき、
仕事はうまく進んでいるのでしょうか?

それについてはほぼ全員がNoと答えるでしょう。

でも、たまにだけど絶好調で気分がノリノリで
テンション上がっていて頭がさえているとき、
そんなときはいつもだと時間がかかる仕事も
あっという間に終わらせられたのではないでしょうか?

いつもだと時間がかかるのに
今日はやたら早く仕事が終わった…

その違いをメルマガで徹底解剖します!

そして、なるべく調子のいいような状態に
自分自身を持って行けるようにする方法を伝授します。

Emacsさんもそのために協力してくれます。

タグ

2014/09/13 | コメント/トラックバック(0) |

カテゴリー:メルマガ

emacs ag.el : the silver search(ag)の素晴しいインターフェース | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方

パッケージ名 ag
概要(原文) A front-end for ag (‘the silver searcher’), the C ack replacement.
リポジトリ MELPA
取得先 https://github.com/Wilfred/ag.el
バージョン 20140910.1444
関連記事 package:ag

ag.elは超高速grepのagのEmacsインターフェースです。

以下のコマンドが用意されています。

  • M-x ag
  • M-x ag-files
  • M-x ag-regexp
  • M-x ag-project
  • M-x ag-project-files
  • M-x ag-project-regexp
  • M-x ag-dired
  • M-x ag-dired-regexp
  • M-x ag-project-dired
  • M-x ag-project-dired-regexp

これらはautoloadされているので、設定は不要です。

M-x agは検索文字列(正規表現ではない)とディレクトリを入力してag検索します。

デフォルトの検索文字列は賢く判定してくれます。

  • regionが指定してあるときはregionの文字列
  • それ以外は現在位置のシンボル

projectがついたコマンドは、検索ディレクトリを
現在の プロジェクト ディレクトリにします。

ag.elにおいてのプロジェクトとは、 git / svn / hg
ルートディレクトリがデフォルトになっていますが、
ag-project-root-function を変更することでより賢くできます。

filesがついたコマンドでは検索対象のファイル名の正規表現を指定できます。

regexpがついたコマンドは文字列検索ではなくて
Perl準拠の正規表現(PCRE)検索となります。

diredがついたコマンドは、 M-x find-dired 似のファイル名検索です。

ですが、バージョン管理システムで無視されるファイル名は表示しません。

また、 projectile.el と連携することができ、
*C-c p s s*でag-regexpが使えます。

ag-wgrep.el と併用することで、 wgrep.el による
ag検索結果の編集ができます。

ag インストール

このパッケージはmelpaにあるので パッケージの初期設定 を行ってください。

M-x package-refresh-contents
M-x package-install ag

タグ

2014/09/12 | コメント/トラックバック(0) |

カテゴリー:Emacs

emacs owdriver.el : 3分割以上でも大丈夫!other-window系のコマンドを蹴っ飛ばせ!ウィンドウを切り替えなしに操作するッ!! | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方

パッケージ名 owdriver
概要(原文) Quickly perform various actions on other windows
リポジトリ MELPA
サイト http://tinyurl.com/mlg9qxc
取得先 https://github.com/aki2o/owdriver
バージョン 20140910.646
関連記事 package:owdriver

これは便利!

通常のEmacsでは3分割以上ウィンドウを分割していると、
一気に操作性が悪くなっていました。

というのは、 scroll-other-window などのother-window系コマンドは
すぐ隣のウィンドウを操作するものでしかないからです。

3分割されているとき、隣の隣のウィンドウを直接操作するコマンドはありません。

この問題は owdriver.el (Other Window Driver) が解決してくれます。

そのうち紹介しますが、連続するプレフィクスキーを
省略できる smartrep.el のうまい活用例です。

2分割であってもわざわざ C-x o (other-window) で操作するウィンドウを
選択する必要がないので、導入する価値は十分にあります。

プレフィクスキー( owdriver-prefix-key )をうまく設定しておけば、
other-window系コマンドは用済み になってしまいます。

それくらいやばい破壊力を持っています!!

owdriver インストール

このパッケージはmelpaにあるので パッケージの初期設定 を行ってください。

M-x package-refresh-contents
M-x package-install owdriver

設定 140911110001.owdriver.el(以下のコードと同一)

(require 'owdriver)
(global-unset-key (kbd "M-o"))
(setq owdriver-prefix-key "M-o")
(owdriver-config-default)
;;; これを入れておくことでM-o M-oで対象ウィンドウを選択できる
(owdriver-add-keymap owdriver-prefix-key 'owdriver-next-window)
(owdriver-mode 1)

実行方法

$ wget http://rubikitch.com/f/140911110001.owdriver.el
$ emacs -Q -f package-initialize -l 140911110001.owdriver.el

M-oをsmartrepのプレフィクスキーにしておけば、
M-oを押した後は隣のウィンドウをあたかも
選択したかのように操作できます。

たとえばM-oの後にC-vやM-vでスクロールできるし、
C-f/C-b/C-n/C-pでカーソル移動などもできます。

3分割以上のときにM-oをたて続けに押せば、
対象ウィンドウを切り替えられます。

他ウィンドウの操作を終わるにはC-gかC-qです。

操作しているウィンドウを選択して終了するにはC-RETです。

コマンドを追加する

現時点での owdriver-config-default の定義はこうなっています。

(defun owdriver-config-default ()
  "Do the recommended configuration."
  ;; Own command
  (owdriver-add-keymap "C-o"        'owdriver-next-window)
  (owdriver-add-keymap "C-S-o"      'owdriver-previous-window)
  (owdriver-add-keymap "<C-return>" 'owdriver-focus-window)
  (owdriver-add-keymap "C-q"        'owdriver-quit)
  ;; Basic command
  (owdriver-define-command scroll-up               t)
  (owdriver-define-command scroll-up-command       t)
  (owdriver-define-command scroll-down             t)
  (owdriver-define-command scroll-down-command     t)
  (owdriver-define-command scroll-left             t (scroll-left 10 t))
  (owdriver-define-command scroll-right            t (scroll-right 10 t))
  (owdriver-define-command next-line               t)
  (owdriver-define-command previous-line           t)
  (owdriver-define-command forward-char            t)
  (owdriver-define-command forward-word            t)
  (owdriver-define-command backward-char           t)
  (owdriver-define-command backward-word           t)
  (owdriver-define-command move-beginning-of-line  t)
  (owdriver-define-command move-end-of-line        t)
  (owdriver-define-command beginning-of-buffer     t)
  (owdriver-define-command end-of-buffer           t)
  (owdriver-define-command isearch-forward         t (isearch-forward))
  (owdriver-define-command isearch-backward        t (isearch-backward))
  (owdriver-define-command set-mark-command        t)
  (owdriver-define-command kill-ring-save          t (call-interactively 'kill-ring-save) (deactivate-mark))
  ;; Third party command
  (owdriver-define-command pophint:do t (pophint:do :not-switch-window t))
  (owdriver-define-command inertias-up t)
  (owdriver-define-command inertias-down t)
  )

owdriver-add-keymap でowdriverコマンドを追加します。

owdriver-define-command でowdriver用コマンドを定義します。

owdriver-define-command は、 owdriver-add-keymap の機能を含んでいます。

たとえば、

(owdriver-define-command scroll-up-command       t)

は、scroll-up-command (C-v) のowdriver版
(owdriver-do-scroll-up-command) を定義しています。

第2引数にtを指定していることでキーマップに追加し、
M-o C-vと操作できるようになります。

ときたまowdriver版コマンドは、
元のコマンドを実行するだけではすまされないこともあります。

そのときのために、第3引数以降に任意のフォームを記述できるようになっています。

(owdriver-define-command kill-ring-save          t
  (call-interactively 'kill-ring-save) (deactivate-mark))

は、owdriver版では

(progn
  (call-interactively 'kill-ring-save) (deactivate-mark))

を実行するように定義されます。

タグ

2014/09/11 | コメント/トラックバック(0) |

カテゴリー:Emacs

emacs bind-key.el : define-keyを直接書くのは時代遅れ!Emacsの重鎮が行っているスタイリッシュキー割り当て管理術! | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方

パッケージ名 bind-key
概要(原文) A simple way to manage personal keybindings
リポジトリ MELPA
取得先 https://github.com/jwiegley/use-package
バージョン 20140620.1343
関連記事 package:bind-key package:use-package

John Wiegley氏謹製 bind-key.el はキー割り当ての
設定関数 define-key を完全に置き換えます。

昨日紹介したuse-package.el の内部で使われています。

これを使うことで以下のメリットがあります。

  • 移行がすごい簡単
  • 短くなる
  • kbd によるEmacs記法が使える(bind-key)
  • 個人用に割り当てたキーを列挙できる( M-x describe-personal-keybindings )
  • 複数のキーをまとめて割り当てられる(bind-keys)
  • メジャーモード・マイナーモードによらない最優先のキーバインドを定義できる(bind-key*, bind-keys*)

難しいことはすべてbind-key.elが請け負ってくれるのが嬉しいです。

bind-key インストール

このパッケージはmelpaにあるので パッケージの初期設定 を行ってください。

M-x package-refresh-contents
M-x package-install bind-key

bind-key vs define-key(global-set-key)

では、対比してみましょう。

(global-set-key (kbd "C-c x") 'my-ctrl-c-x-command)
↓
(bind-key "C-c x" 'my-ctrl-c-x-command)

(define-key some-other-mode-map (kbd "C-c x") 'my-ctrl-c-x-command)
↓
(bind-key "C-c x" 'my-ctrl-c-x-command some-other-mode-map)

複数のキーをまとめて登録する

重複もこんな感じで回避!

(define-key dired-mode-map "o" 'dired-omit-mode)
(define-key dired-mode-map "a" 'some-other-mode-map)
↓
(bind-keys :map dired-mode-map
           ("o" . dired-omit-mode)
           ("a" . some-custom-dired-function))

メジャーモード・マイナーモードに依存しないで常に同じキーに割り当てる

仮にC-tにother-windowを割り当てたとすると、
diredだとC-tがプレフィクスキーになってしまい
other-windowが動いてくれません。

このような場合、モードによる上書きよりも
優先度が高いようにする必要があります。

この設定を書くのは minor-mode-map-alist だの
minor-mode-overriding-map-alist だの
emulation-mode-map-alists だの
とてもややこしい問題になってきます。

そんな場合bind-key/bind-keysの代わりに
bind-key* や bind-keys* を使えば解決です。

(bind-key* "C-t" 'other-window)

bind-key/bind-keysで割り当てたキーバインドをリストする

M-x describe-personal-keybindings
bind-keyなどで個人的に割り当てたキーバインドを
表示してくれます。

たとえば、以下の設定の場合、

(require 'bind-key)
(bind-key "C-x C-f" 'ffap)
(bind-key "C-c f" 'find-file)
(bind-key* "C-t" 'other-window)

このように表示されます。

Key name  Command         Comments
--------- --------------- ---------------------
C-t       `other-window'  was `transpose-chars'

C-c f     `find-file'

C-x C-f   `ffap'          was `find-file'

他の設定と合わせたい

続きはuse-package.elで!

use-package を使っていれば、自動的に
M-x describe-personal-keybindingsも使えます。

タグ

2014/09/10 | コメント/トラックバック(0) |

カテゴリー:Emacs

emacs use-package.el : Emacsの世界的権威が行っている最先端ラクラクinit.el整理術 | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方

パッケージ名 use-package
概要(原文) A use-package declaration for simplifying your .emacs
リポジトリ MELPA
取得先 https://github.com/jwiegley/use-package
バージョン 20140908.806
関連記事 package:use-package package:bind-key

use-package マクロは、emacsのパッケージ設定を
劇的に簡潔にして読みやすくするマクロです。

以下の定番の記述がすごいすっきり書けるようになります。

  • load-path
  • キー割り当て
  • autoload
  • auto-mode-alist
  • interpreter-mode-alist
  • パッケージ読み込み前に行う処理
  • パッケージ読み込み後に行う処理
  • Emacsがアイドル状態に行う処理
  • 一時的な設定の無効化

特にキー割り当てに関しては bind-key.el により
とてもすっきり記述できます。

作者はEmacs界の重鎮John Wiegley氏であり
彼は様々なプロジェクトに関わっています。

  • EmacsWiki
  • magit
  • eshell (標準添付)
  • org-mode (標準添付)
  • pcomplete.el (標準添付)
  • align.el (標準添付)
  • remember.el (標準添付)
  • isearchb.el (標準添付)

などなど、有名どころが多いです。

彼の名前が出てきたら安心してしまう僕がいるようです(笑)

use-package インストール

このパッケージはmelpaにあるので パッケージの初期設定 を行ってください。

M-x package-refresh-contents
M-x package-install use-package

使い方

README.mdにいろいろ書いてあるのですが、
マクロなので、説明を読むよりも macroexpand
展開結果を読む方が理解しやすいです。

(package-initialize)
(require 'use-package)
(use-package パッケージ名
  キーワード 引数
  キーワード 引数
  ...)

requireの代わりにする

use-packageの一番シンプルな使い方は、
そのままrequireの代わりにすることです。

(use-package ruby-mode)

macroexpandすると…

(macroexpand '(use-package ruby-mode))
↓
(progn nil
       (eval-when-compile
         (when
             (bound-and-true-p byte-compile-current-file)
           (with-demoted-errors
             (require 'ruby-mode nil t))))
       (if
           (and t t)
           (use-package-with-elapsed-timer "Loading package ruby-mode"
             (if
                 (not
                  (require 'ruby-mode nil t))
                 (message "Could not load package %s" "ruby-mode")
               nil nil nil t))))

progn の方を見てください。

eval-when-compile のくだりは、init.elをバイトコンパイルするときに
ruby-modeをrequireすることで正しくコンパイルされるための記述です。

実行時には関係ないので無視してください。

(require 'ruby-mode nil t)

は読み込みが失敗したらnilを返します。

よって、読み込みに失敗したときにメッセージが出るようになります。

複数のマシンでinit.elを共有していて、
インストールされていないパッケージがあったら
そのままその設定は使われないだけです。

:load-path: load-pathを指定する

パッケージ管轄外のEmacs Lispを使う際は
load-path を設定する必要がありますが、
:load-path キーワードを使えば一発です。

~/.emacs.d/ ( user-emacs-directory ) からの相対パスが指定できます。

(use-package ess-site
  :load-path "site-lisp/ess/lisp/"))


(progn nil
       (add-to-list 'load-path "/r/.emacs.d/site-lisp/ess/lisp/")
       (eval-when-compile
         (when
             (bound-and-true-p byte-compile-current-file)
           (with-demoted-errors
             (require 'ess-site nil t))))
       (if
           (and t t)
           (use-package-with-elapsed-timer "Loading package ess-site"
             (if
                 (not
                  (require 'ess-site nil t))
                 (message "Could not load package %s" "ess-site")
               nil nil nil t))))

:bind : コマンドをglobal-mapに割り当てる

use-package.elは bind-key.el を内部で使っていて、
キー割り当てを簡単に記述できるようになっています。

たとえば、 ace-jump-modeace-jump-line-mode
キーに割り当てる設定はこうです。

(use-package ace-jump-mode
  :bind (("C-." . ace-jump-mode)
         ("C-," . ace-jump-line-mode)))

これをmacroexpandすると…

(progn nil
       (eval-when-compile
         (when
             (bound-and-true-p byte-compile-current-file)
           (with-demoted-errors
             (require 'ace-jump-mode nil t))))
       (when t nil
             (autoload #'ace-jump-mode "ace-jump-mode" nil t)
             (autoload #'ace-jump-line-mode "ace-jump-mode" nil t)
             (progn nil
                    (bind-key "C-." 'ace-jump-mode)
                    (bind-key "C-," 'ace-jump-line-mode))
             nil t))

ここでやってることは、 autoload の設定と
bind-key によるキー割り当ての設定です。

このようにbindで設定されたコマンドはすべてautoloadされます。

つまりC-.やC-,が押されるまで ace-jump-mode.el が
読み込まれないので起動が早くなります。

しかも、煩わしいautoloadの記述とは無縁になります!

なお、メジャーモードやマイナーモードのキーマップを設定するための
専用の記法は現在のところ用意されていないようです。

:config と bind-keys で指定してください。

:commands : キーに割り当てないコマンドもautoloadする

:bind で設定したコマンドはautoloadされますが、
キーに割り当てないコマンドは:commandsでautoload設定します。

(use-package ace-jump-mode
  :commands (ace-jump-mode ace-jump-line-mode))


(progn nil
       (eval-when-compile
         (when
             (bound-and-true-p byte-compile-current-file)
           (with-demoted-errors
             (require 'ace-jump-mode nil t))))
       (when t nil
             (autoload #'ace-jump-line-mode "ace-jump-mode" nil t)
             (autoload #'ace-jump-mode "ace-jump-mode" nil t)
             nil nil t))

:init : パッケージが読み込まれる前に設定を行う

:initキーワードを使えば、パッケージが読み込まれる前にコードを実行します。

(use-package ace-jump-mode
      :commands ace-jump-mode
      :init
      (progn (bind-key "C-." 'ace-jump-mode)))

上の設定ではprognは不要ですが、
複文を指定するときに必要になるので
わざと入れています。

これをmacroexpandすると

(progn nil
       (eval-when-compile
         (when
             (bound-and-true-p byte-compile-current-file)
           (with-demoted-errors
             (require 'ace-jump-mode nil t))))
       (when t nil
             (autoload #'ace-jump-mode "ace-jump-mode" nil t)
             (progn
               (bind-key "C-." 'ace-jump-mode))
             nil t))

あらゆる記述が:init を使って書けることがわかります。

:config : パッケージが読み込まれた後に設定を行う

:configは:initと似ていますが、
パッケージが読み込まれた後にコードを実行します。

(use-package ace-jump-mode
      :bind ("C-." . ace-jump-mode)
      :config
      (progn (message "Yay, ace-jump-mode was actually loaded!")))


(progn nil
       (eval-when-compile
         (when
             (bound-and-true-p byte-compile-current-file)
           (with-demoted-errors
             (require 'ace-jump-mode nil t))))
       (when t nil
             (autoload #'ace-jump-mode "ace-jump-mode" nil t)
             (progn nil
                    (bind-key "C-." 'ace-jump-mode))
             (eval-after-load 'ace-jump-mode
               `(,(lambda nil
                    (if t
                        (use-package-with-elapsed-timer "Configuring package ace-jump-mode"
                          (progn
                            (message "Yay, ace-jump-mode was actually loaded!")))))))
             t))

その証拠に eval-after-load が使われています。

なお、 use-package-with-elapsed-timer は一定時間(デフォルト0.01秒)以上
ロードに時間がかかったときかつ変数 use-package-verbose がtのときに
メッセージを表示するマクロです。

:initと:configは共存できます。

(use-package haskell-mode
  :commands haskell-mode
  :init
  (add-to-list 'auto-mode-alist '("\\.l?hs$" . haskell-mode))
  :config
  (progn
    (use-package inf-haskell)
    (use-package hs-lint)))


(progn nil
       (eval-when-compile
         (when
             (bound-and-true-p byte-compile-current-file)
           (with-demoted-errors
             (require 'haskell-mode nil t))))
       (when t nil
             (autoload #'haskell-mode "haskell-mode" nil t)
             (add-to-list 'auto-mode-alist
                          '("\\.l?hs$" . haskell-mode))
             (eval-after-load 'haskell-mode
               `(,(lambda nil
                    (if t
                        (use-package-with-elapsed-timer "Configuring package haskell-mode"
                          (progn
                            (use-package inf-haskell)
                            (use-package hs-lint)))))))
             t))

add-to-listの後にeval-after-load→use-packageが
続いていることからも明らかです。

:mode, :interpreter : auto-mode-alistとinterpreter-mode-alistの設定を行う

:modeでファイル名の正規表現を指定すれば
auto-mode-alist へ登録されます。

:interpreterでインタプリタ名を指定すれば
interpreter-mode-alist へ登録されます。

(use-package ruby-mode
  :mode "\\.rb\\'"
  :interpreter "ruby")


(progn nil
       (eval-when-compile
         (when
             (bound-and-true-p byte-compile-current-file)
           (with-demoted-errors
             (require 'ruby-mode nil t))))
       (when t nil
             (autoload #'ruby-mode "ruby-mode" nil t)
             (autoload #'ruby-mode "ruby-mode" nil t)
             (progn
               (progn nil
                      (add-to-list 'auto-mode-alist
                                   '("\\.rb\\'" . ruby-mode)))
               (add-to-list 'interpreter-mode-alist
                            '("ruby" . ruby-mode)))
             nil t))

ruby-mode.elはメジャーモード名とファイル名が一致していたので
上記のように簡単な記述になりましたが、必ずしもそうではありません。

python-modeはpython.elにて登録されているので、
pythonにおける設定はこうなります。

(use-package python
  :mode ("\\.py\\'" . python-mode)
  :interpreter ("python" . python-mode))


(progn nil
       (eval-when-compile
         (when
             (bound-and-true-p byte-compile-current-file)
           (with-demoted-errors
             (require 'python nil t))))
       (when t nil
             (autoload #'python-mode "python" nil t)
             (autoload #'python-mode "python" nil t)
             (progn
               (progn nil
                      (add-to-list 'auto-mode-alist
                                   '("\\.py\\'" . python-mode)))
               (add-to-list 'interpreter-mode-alist
                            '("python" . python-mode)))
             nil t))

メジャーモードのキーを設定する

メジャーモードのキーを設定するには、
use-package使用時にすでに使えるマクロ
bind-keys を使えば簡潔です。

C-c C-iにimenu、C-c M-sにxmpを割り当てる例です。

(use-package ruby-mode
  :config
  (bind-keys :map ruby-mode-map
             ("C-c C-i" . imenu)
             ("C-c M-s" . xmp)))

:idle : Emacsが暇なときに実行させる

:idleは:initや:configと似ていますが、
Emacsがアイドル状態になったときに実行されます。

とはいえ、:idleで指定されたコードにエラーが起きた際、
問題解決が困難になるのでおすすめはしません。

(use-package pabbrev
  :commands global-pabbrev-mode
  :idle (global-pabbrev-mode)
  :idle-priority 3)


(progn nil
       (eval-when-compile
         (when
             (bound-and-true-p byte-compile-current-file)
           (with-demoted-errors
             (require 'pabbrev nil t))))
       (when t nil
             (autoload #'global-pabbrev-mode "pabbrev" nil t)
             (progn
               (require 'use-package)
               (use-package-init-on-idle
                (lambda nil
                  (global-pabbrev-mode))
                3)
               nil)
             nil t))

:disabled: 設定を一時的に無効にする

:disbledを指定すれば、この設定は無効化されます。

(use-package ess-site
  :disabled t
  :commands REST)

macroexpandしてもnilになるだけです。

タグ

emacs dired-details.el : diredでファイル名以外を非表示にする!dired-toggle.elと合わせよう | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット

パッケージ名 dired-details
概要(原文) make file details hide-able in dired
リポジトリ MELPA
取得先 http://www.emacswiki.org/dired-details.el
バージョン 20130824.1158
関連記事 package:dired-details package:dired-toggle package:dired

diredでファイルのみを見たいときにパーミッションなどの情報があると
横幅をとってしまって本当に邪魔ですよね。

そこでdired-details.elの出番です。

元の表示に戻すには「)」を、隠すには「(」を押します。

dired-toggle.el と組み合わせるといい感じになります。

dired-toggle.elは設定なしで使えるので、
合わせてインストールしておきましょう。

dired-details インストール

このパッケージはmelpaにあるので パッケージの初期設定 を行ってください。

M-x package-refresh-contents
M-x package-install dired-details

設定 140908062937.el(以下のコードと同一)

(require 'dired-details)
(dired-details-install)
(setq dired-details-hidden-string "")
(setq dired-details-hide-link-targets nil)

(defadvice find-dired-sentinel (after dired-details (proc state) activate)
  "find-diredでもdired-detailsを使えるようにする"
  (ignore-errors
    (with-current-buffer (process-buffer proc)
      (dired-details-activate))))

実行方法

$ wget http://rubikitch.com/f/140908062937.el
$ emacs -Q -f package-initialize -l 140908062937.el

20140908063515.png
Fig1: M-x dired-toggleと併用!

タグ

2014/09/08 | コメント/トラックバック(0) |

カテゴリー:Emacs

emacs dired-toggle.el : ウィンドウの左側にdiredを設置して右側でファイルを開くようにする | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット

パッケージ名 dired-toggle
概要(原文) provide a simple way to toggle dired buffer for current directory
リポジトリ MELPA
取得先 https://github.com/fasheng/dired-toggle
バージョン 20131023.110
関連記事 package:dired-toggle package:dired package:dired-details

M-x dired-toggle を実行すると、
ウィンドウの左側に小さい幅の dired をポップアップします。

そして、その状態でRETを押すと右側でファイルを開きます。

qを押せば終了します。

手軽に導入できるので試しに使ってみるとよいでしょう。

dired-details.el と組み合わせると幸せになれます。

20140908062440.png
Fig1: 左側にdired!

dired-toggle インストール

このパッケージはmelpaにあるので パッケージの初期設定 を行ってください。

M-x package-refresh-contents
M-x package-install dired-toggle

タグ

2014/09/08 | コメント/トラックバック(0) |

カテゴリー:Emacs

このページの先頭へ