elisp

変更ごとに再インデントするマイナーモードaggressive-indent-mode

aggressive-indent-modeはコードを常にインデントし続けるマイナーモードです。

コードをelectric-indent-modeより信頼できるようにしながら、変更ごとに再インデントします。

インストールする環境

OS:Debian testing(Buster) Emacsのバージョン:24.5.1 パッケージ名:elpa-aggressive-indent

elpa-aggressive-indentのインストール

Debianではelpa-aggressive-indentという名前になっていますので、これをインストールします。

# apt install elpa-aggressive-indent

elpa-aggressive-indentの設定

まず’.emacs’に以下のように書きます。

(require 'aggressive-indent)

明示的に設定する場合

特定のモードでアクティブにする場合は以下のように書きます。

(add-hook 'emacs-lisp-mode-hook #'aggressive-indent-mode)

これはEmacs Lispモードに設定するコードです。

すべてのモードで設定する場合

すべてのモードでアクティブにする場合は以下のように書きます。

(global-aggressive-indent-mode 1)

その中で例外的に適用したくないモードは例外として明示する必要があります。

(add-to-list 'aggressive-indent-excluded-modes 'html-mode)

Debian testing(Buster)でelpa-ace-linkをインストールし設定する

elpa-ace-linkとは

バッファ内のリンクをタブではなく、アルファベットで選べるようにしてくれます。

サポートしているモードは,以下のとおりです。

  • Info-mode
  • help-mode
  • org-mode
  • eww-mode
  • gnus-article-mode
  • Custom-mode
  • woman-mode
  • goto-address-mode

elpa-ace-linkのインストール

# apt install elpa-ace-link

elpa-ace-linkの設定

‘.emacs’に

(require 'ace-link)
(ace-link-setup-default)

と書きます。

これで

`Info-mode`、`help-mode`、`woman-mode`、`eww-mode`、`compilation-mode`、`custom-mode-map`で’o’キーを押すと、リンクを示すアルファベットが現れます。

 

Infoバッファで’o’キーを押したところです。

org-modeの設定

org-modeは追加で設定しなければなりません。

(define-key org-mode-map (kbd "M-o") 'ace-link-org)

これで、’M-o’でリンクが表示されます。

さらに、’gnus-article-mode’などの設定例が、’/usr/share/doc/elpa-ace-link/README.md’に書いてあるので参考にしてみるとよいでしょう。

Debian testing(Buster)でelpa-js2-modeをインストールし設定する

elpa-js2-modeとは

Javascript プログラムを編集するEmacsのモード’js2-mode’を提供します。

elpa-js2-modeのインストール

# apt install elpa-js2-mode

elpa-js2-modeの設定

‘/usr/share/emacs/site-lisp/elpa-src/js2-mode-20170116/js2-mode-autoloads.el’により、オートロードの設定やファイルの関連付けはされています。

多くのカスタマイズオプションがあります。

そのため、同じディレクトリにある’js2-mode.el’に書いてあるように、カスタマイズするときは’M-x customize-group RET js2-mode RET’でした方がよいです。

Debian testing(Buster)でhaml-elispをインストールし設定する

haml-elispとは

Hamlマークアップ言語のためのEmacs Lisp モードです。

haml-elispのインストール

# apt install haml-elisp 

このコマンドにより、依存関係にあるソフトも同時にインストールされます。

haml-elispの設定

‘/etc/emacs/site-start.d/50haml-elisp.el’には、オートロードの設定が書いてあるので

‘.emacs’にはファイルの関連づけの設定だけを書きます。

  • 50haml-elisp.elの内容
(autoload 'haml-mode "haml-mode"
  "Major mode for editing haml-mode files." t)
  • .emacsに追加する内容
(add-to-list 'auto-mode-alist '("\\.haml\\'" . haml-mode))

Debian testing(Buster)でelpa-highlight-indentationをインストールし設定する

elpa-highlight-indentationとは

Emacsのバッファでインデントレベルをハイライトしてくれるマイナーモードです。

このパッケージは2つのマイナーモードを提供しています。

  • highlight-indentation-mode

インデントレベルごとにガイドを表示します。

  • highlight-indentation-current-column-mode

ポイントを含んでいるラインと同じレベルにインデントされた他のラインを示すガイドを表示します。

elpa-highlight-indentationのインストール

# apt install elpa-highlight-indentation

elpa-highlight-indentationの設定

Python-modeに設定するには、以下のコードを’.emacs’に書きます。

(require 'highlight-indentation)
(add-hook 'python-mode-hook 'highlight-indentation-current-column-mode)

highlight-indentation-modeとhighlight-indentation-current-column-modeのどちらがよいかは自分で試して決めるとよいでしょう。

私は、表示のうるさくなかった’highlight-indentation-current-column-mode’を設定しました。

また、デフォルトでは、ハイライトの色が黒だったので、薄い黄色にしました。

(set-face-background 'highlight-indentation-current-column-face "#e3e3d3")

Debian testing(Buster)でocp-indentをインストールし設定する

ocp-indentとは

emacsとvimのためのOCamlのインデントツールです。

ocp-indentのインストール

# apt install ocp-indent

ocp-indentの設定

.emacsに

(load-file "/usr/share/emacs/site-lisp/ocp-indent.el")

と書きます。

設定ファイルは’~/.ocp/ocp-indent.conf’に置きます。

設定ファイルの定義を上書きしたい場合は、現在のディレクトリに’.ocp-indent’ファイルを置きます。

また、コマンドラインオプションは設定ファイルの値を上書きします。

Debian testing(Buster)でdevelock-elをインストールし設定する

develock-elとは

Emacsで開発する人のための追加のフォントロックキーワードです。

develockはマイナーモードで、ファイルバッファの不必要なホワイトスペース、長い行などを教えてくれます。

対応しているモードは

  • Lisp modes
  • ChangeLog mode
  • Texinfo mode
  • C modes
  • OCaml modes
  • Coq mode
  • LaTeX mode
  • Java mode
  • Jde-mode
  • CPerl mode
  • Perl mode
  • HTML modes
  • some Mail modes

develock-elのインストール

# apt install develock-el

develock-elの設定

‘/etc/emacs/site-start.d/50develock-el.el’に

(cond ((featurep 'xemacs)
       (require 'develock)
       ;; `turn-on-develock' is equivalent to `turn-on-font-lock',
       ;;  except that it does not highlight the startup screen.
       (add-hook 'lisp-interaction-mode-hook 'turn-on-develock)
       (add-hook 'mail-setup-hook 'turn-on-font-lock))
      ((>= emacs-major-version 20)
       (require 'develock)
       (global-font-lock-mode 1))))

と、書かれているので特に設定する必要はありません。

Wanderlustの設定

‘/usr/share/emacs/site-lisp/develock-el/develock.el’に書いてあるfont-lockをサポートしていないWanderlustのドラフトモードでDevelockを使う設定です。

以下のコードを’.wl’ファイルに書きます。

(require 'develock)
(require 'message)

(setq wl-highlight-body-too nil)

(defadvice wl-highlight-headers (around dont-highlight-draft
                                        (&optional for-draft) activate)
  "Don't highlight draft buffers."
  (or for-draft ad-do-it))

(defun wl-draft-setup-develock ()
  "Function used to setup to use Develock in `wl-draft-mode'."
  (if (featurep 'xemacs)
      (put 'wl-draft-mode 'font-lock-defaults
           '(message-font-lock-keywords t))
    (make-local-variable 'font-lock-defaults)
    (setq font-lock-defaults '(message-font-lock-keywords t t)))
  (turn-on-font-lock))

(add-hook 'wl-mail-setup-hook 'wl-draft-setup-develock)

(setq develock-max-column-plist
      (plist-put develock-max-column-plist 'wl-draft-mode t))

(let ((elem (copy-sequence (assq 'message-mode develock-keywords-alist))))
  (setcar elem 'wl-draft-mode)
  (setq develock-keywords-alist
        (cons elem (delq (assq 'wl-draft-mode develock-keywords-alist)
                         develock-keywords-alist))))

‘/usr/share/emacs/site-lisp/develock-el/develock.el’には他にもMew,Ediff,Texinfo用の設定が書いてあります。

あと、各メジャーモードごと個別にDevelockモードを有効にする設定も書いてあるので参照してみるとよいでしょう。

パッケージ「elpa-beacon」のインストールと設定

 

これは何?

highlight the cursor whenever the window scrolls Whenever
the window scrolls a light will shine on top of your
cursor so you know where it is.

 

環境

 

  • OS:Debian (stretch)
  • Emacs:24.5.1
  • elpa-beacon:1.3.2-1

 

インストール

# apt-get install elpa-beacon

 

設定

文章系のバッファを開いた時には自動的にbeacon-modeをonにします。

(let ((function #'(lambda ()
  (beacon-mode 1)
  )))
  (dolist (hook '(find-file-hooks
  ;; ...
  mail-setup-hook
  message-setup-hook))
  (add-hook hook function)))

バッファメニュー on Emacs24

Ibufferとは

IbufferはBufferMenuにかわるDiredと同じようにバッファを操作できる モードです. Ibufferにはハイライトしたりさまざまなレイアウトにする機能があります. Emacs24の一部です.

.emacsの設定

(global-set-key (kbd “C-x C-b”) ‘ibuffer)
(autoload ‘ibuffer “ibuffer” “List buffers.” t)

アスタリスクで始まるバッファを隠す

私は設定していませんが,アスタリスクで始まるバッファを隠すことができます.

(require ‘ibuf-ext)
(add-to-list ‘ibuffer-never-show-predicates “^\\*”)

フィルターグループの設定

フィルターの設定をすることで,バッファをグループ化できます.

(setq ibuffer-saved-filter-groups
‘((“home”
(“emacs-config” (or (filename . “.emacs.d”)
(filename . “emacs-config”)))
(“tsutomuonoda.com” (filename . “tsutomuonoda”))
(“Org” (or (mode . org-mode)
(filename . “OrgMode”)))
(“Mail”
(or
(mode . wl-folder-mode)
(mode . wl-summary-mode)
(mode . wl-draft-mode)
(mode . mew-summary-mode)
(mode . mew-draft-mode)
))
(“R” (or
(mode . ess-mode)
(filename . “EssMode”)))
(“LaTeX”
(or
(mode . latex-mode)
(filename . “LaTeXMode”)))
(“Text” (name . “.txt”))
(“Programming”
(or
(mode . c-mode)
(mode . perl-mode)
(mode . python-mode)
(mode . emacs-lisp-mode)
;; etc
))
(“Web Dev” (or (mode . html-mode)
(mode . css-mode)))
(“Dired” (mode . dired-mode))
(“Egg” (name . “\*Egg”))
(“Help” (or (name . “\*Help\*”)
(name . “\*Apropos\*”)
(name . “\*info\*”))))))

その他の有益なオプション

空のフィルターグループを隠す

(setq ibuffer-show-empty-filter-groups nil)

自動でバッファリストをアップデートする

これは,フックの中に入れています.

(ibuffer-auto-mode 1)

フック

(add-hook ‘ibuffer-mode-hook
‘(lambda ()
(ibuffer-auto-mode 1)
(ibuffer-switch-to-saved-filter-groups “home”)))