2017年 7月 の投稿一覧

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の変換表をまとめる。

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

これは何?

Emacs extension that provide Emacs Lisp code navigation elpa-elisp-slime-nav is an extension, that provides equivalents off ‘find-tag’ and ‘pop-tag’ functions for Emacs Lisp code, allowing one to navigate to definition/declaration of function, variable or macro.

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

  • OS:Debian(stretch)
  • Emacs:24.5.1
  • elpa-elisp-slime-nav:0.9-1

インストール

# apt-get install elpa-elisp-slime-nav

設定

(require 'elisp-slime-nav) ;; optional if installed via package.el
(dolist (hook '(emacs-lisp-mode-hook ielm-mode-hook))
  (add-hook hook 'turn-on-elisp-slime-nav-mode))

パッケージ「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)))