変更ごとに再インデントするマイナーモード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モードを有効にする設定も書いてあるので参照してみるとよいでしょう。

Emacsが自動作成するファイルの設定

Emacsが自動作成するファイルには、バックアップファイル、自動保存ファイル、自動保存リストファイル、ロックファイルと4種類のファイルがあります。

Gitなどのバージョン管理システムを利用している場合、ディレクトリごとに作成されるとうっとうしいのでこれらを保存しないか保存先を一カ所に変更する設定をします。

バックアップファイル

ファイルの最後に’~'(チルダ)が付いたファイルです。

(setq backup-directory-alist '((".*" . "~/.emacs_backup")))

上記の例では すべて(“.*”)のファイルを”~/.emacs_backup” ディレクトリに作成します。

一つ前のファイルだけでなく番号を付けて複数ファイルを保存したい場合は次のように設定します。

(setq version-control     t)
(setq kept-new-versions   5)
(setq kept-old-versions   1)
(setq delete-old-versions t)

‘kept-new-versions’は過去5ファイルは残すという設定で、’kept-old-versions’に1を設定すると一番古いファイルは残すという意味になります。

自動保存ファイル

ファイルの前後に’#'(シャープ)が付いたファイルです。

Emacsが異常終了した時に、復帰できたら助かるので自動保存ファイルは作成します。

(setq auto-save-file-name-transforms   '((".*" "~/tmp/" t)))

上記はすべてのファイル(“.*”)を “~/tmp” 以下に作成します。

自動保存リストファイル

ファイルの前に’.saves-xxxx’が付いたファイルです。

デフォルトでは’~/.emacs.d/auto-save-list’ディレクトリに作成されます。

作成の必要性がないので作成しないよう設定します。

(setq auto-save-list-file-prefix nil)

ロックファイル

ファイルの前に’.#’が付いたファイルです。

個人のパソコンを複数人で使うことはないので作成しないように設定します。

(setq create-lockfiles nil)

プログラミング向けフォント「Ricty Diminished」をDebian testing(Buster)環境にインストールしEmacs25に設定する

Ricty Diminishedとは

プログラミング用に最適化された、「Inconsolata」と「Circle M+ 1m」を基にしたフォントです。

その特徴は プログラミング用フォント Ricty Diminished によると、

  • ラテン文字には Inconsolata が適用されます。
  • それ以外の文字には Circle M+ 1m が適用されます。M+ M Type-1 の美しいグリフと Circle M+ 1m の判読性の高い和文文字 (半濁音など) が使用できます。
  • 半角文字と全角文字の横幅の比が 1:2 に調整されています。
  • 全角スペースが可視化されます。
  • いくつかの全角グリフが対応する半角グリフと差別化されています。
  • en ダッシュ、em ダッシュが破断線のようになります (LaTeX での入力ミス防止のため)。

Ricty Diminishedのインストール

Debian testing(Buster)では「fonts-ricty-diminished」というパッケージになっているので、これをインストールします。

# apt install fonts-ricty-diminished

Emacs25の設定

.emacsに以下のように書きます。判読性向上のため派生フォントである「Ricty Diminished Discord」を設定しています。

(set-face-attribute 'default nil
                    :family "Ricty Diminished Discord"
                    :height 200)
(set-fontset-font (frame-parameter nil 'font)
                  'japanese-jisx0208
                  (cons "Ricty Diminished Discord" "iso10646-1"))
(set-fontset-font (frame-parameter nil 'font)
                  'japanese-jisx0212
                  (cons "Ricty Diminished Discord" "iso10646-1"))
(set-fontset-font (frame-parameter nil 'font)
                  'katakana-jisx0201
                  (cons "Ricty Diminished Discord" "iso10646-1"))

パッケージ『elpa-yasnippet』のインストールと設定

これは何?

Emacsのためのテンプレートシステムです。

Template system for Emacs YASnippet (yet another snippet extension for Emacs) is a template system for Emacs. It allows you to type an abbreviation and automatically expand the abbreviation into function templates. . Bundled language templates includes: C, C++, C#, Perl, Python, Ruby, SQL, LaTeX, HTML, CSS and more.

 環境とソフトのバージョン

  • OS:Debian(stretch)
  • Emacs:24.5.1
  • elpa-yasnippet:0.11.0-2

 インストール

# apt-get install elpa-yasnippet

同時に『yasnippet-snippets』もインストールされます。

設定

(require 'yasnippet)
(yas-global-mode 1)

snippetsがインストールされている場所

‘/usr/share/yasnippet-snippets’

TODO

org-modeの変換表をまとめる。