elisp

pyhon-modeのインストールと設定

1 概要

python-modeはPythonプログラムを編集、デバッグ、開発するEmacsのメジャーモードです。

2 環境

文書作成時のOS,ソフトウェアのバージョンは以下のとうりです。

OS:Debian buster(testing)
Emacs:25.2.2
pyhton3.7:3.7.0-1
python-mode:6.2.3-1

3 インストール

apt-get install python-mode

4 設定

4.1 python-mode

autoloadの設定は’/etc/emacs/site-start.d/50python-mode.el’でされているので各自の設定は不要です。

4.2 doctest-mode

autoloadの設定は’/etc/emacs/site-start.d/50python-mode.el’でされているので各自の設定は不要です。

4.3 company-pycomplete

補完入力はcompanyを使っているので

‘/usr/share/emacs/site-lisp/python-mode/completion/company-pycomplete.el’のCommentaryを参考に

(add-hook 'python-mode-hook
          '(lambda()
             (setq company-backends '((company-pycomplete)))
             )
          )

のように設定しました。

これは、python-modeのときだけ、companyのバックエンドをcompany-pycompleteに変更します。

4.4 pycomplete.py

‘/usr/share/pyshared/pycomplete.py’は

if sys.version_info[0] >= 3: # Python 3
    import io
else: # Python 2
    import StringIO

のように、Pythonのバージョンをチェックします。

よって、以下のようにして、自分が使うpythonのバージョンを最新の3.7にしました。

cd ~/bin
ln -s python3 python
ln -s /usr/bin/python3.7 python3

これは、’.bashrc’に

if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

のような設定をしているため、’~/bin/python’をシステムの’/usr/bin/python’より優先してくれます。

5 カスタマイズ

5.1 python-mode

5.1.1 py-highlight-error-source-p

カスタマイズ変数’py-highlight-error-source-p(Default:nil)’を’t’に変更しました。

When py-execute-… commands raise an error, respective code in source-buffer will be highlighted. Default is nil.
M-x `py-remove-overlays-at-point’ removes that highlighting.

5.1.2 py-company-pycomplete-p

カスタマイズ変数’py-company-pycomplete-p(Default:nil)’をtに変更しました。

Load company-pycomplete stuff. Default is nil

5.1.3 py-tab-indents-region-p

カスタマイズ変数’py-tab-indents-region-p(Default:nil)’をtに変更しました。

When `t’ and first TAB doesn’t shift, indent-region is called.

5.1.4 py-verbose-p

カスタマイズ変数’py-verbose-p(Default:nil)’をtに変更しました。

If functions should report results.

シンタックスチェッカーflycheckのインストールと設定

1 概要

各種プログラミング言語の文法チェッカーflycheckをインストールし設定します。

2 インストール環境とソフトウェアのバージョン

文書作成時のOS,ソフトウェアのバージョンは以下のとうりです。

OS:Debian buster(testing)
Emacs:25.2.2
elpa-flycheck:31-1

3 flycheck

3.1 インストール

flycheckはelpa-flycheckというパッケージになっているのでこれをインストールします。また、ドキュメントflycheck-docもインストールします。

apt-get install elpa-flycheck flycheck-doc

3.2 設定

‘/usr/share/emacs/site-lisp/elpa-src/flycheck-31/flycheck.el’ のSetup欄より

設定ファイルに

(add-hook 'after-init-hook #'global-flycheck-mode)

と書きます。

また、’/usr/share/doc/elpa-flycheck/html/user/installation.html’にはuse-packageを使った設定が書いてあります。

(use-package flycheck
  :ensure t
  :init (global-flycheck-mode))

と書きます。

どちらか一方を書けばよいです。

あとは、’/usr/share/doc/elpa-flycheck/html/languages.html’を見ながら各言語に必要なソフトを入れていきます。

4 Go言語

例としてGo言語のflycheckの設定をしてみます。

具体的には’/usr/share/doc/elpa-flycheck/html/languages.html’のGo言語の欄の1〜3のgo-gofmt、go-golint、go-vetを設定します。

コマンド’gofmt’,’go vet’はgolang-goパッケージをインストールしたときに一緒に入っています。別途golintをインストールします。

apt-get install golint

3欄’go-vet’はカスタマイズ変数flycheck-go-vet-print-functions、flycheck-go-vet-shadow、flycheck-go-build-tagsでカスタマイズできます。

しかし、すべてデフォルトのnil(無効)でよかったので設定ファイルに追加の設定はしていません。

use-packageのインストールと設定

1 概要

use-packageは.emacsを簡単にするelispパッケージです。

2 インストール環境とソフトウェアのバージョン

文書作成時のOS,ソフトウェアのバージョンは以下のとうりです。

OS:Debian buster(testing)
Emacs:25.2.2
elpa-use-package:2.3+repack-2

3 インストール

Debianでは’elpa-use-package’というパッケージになっているので、これをインストールします。

apt-get install elpa-use-package

4 設定

設定ファイルに

(require 'use-package)

と書きます。

パッケージシステムpackage.elの設定(2018年版)

1 インストール環境とソフトウェアのバージョン

文書作成時のOS,ソフトウェアのバージョンは以下のとうりです。

OS:Debian buster(testing)
Emacs:25.2.2
package.el:1.1.0

2 設定

package.elはEmacs24から同梱されているので設定のみ書きます。

(require 'package)

;;; Add package-archives
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t)

;; Initialize
(package-initialize)

3 参考リンク

melpa.elをインストールしたりシンボリックリンクを作成する必要がなくなってます。

使用方法のみ参考にしてください。

パッケージシステムの設定 | Emacsのelispインストール・設定・使い方

補完入力フレームワークCompanyのインストールと設定

1 概要

CompanyはEmacsのテキスト補完入力フレームワークです。

2 インストール環境とソフトウェアのバージョン

OS:Debian buster(testing)
Emacs:25.2.2
company.el:0.9.6

3 インストール

Debianではelpa-companyというパッケージになっているので、それをインストールします。

apt-get install elpa-company

4 設定

まず、設定ファイルには

(require 'company)

と書きます。

すべてのモードでcompany.elを有効にする場合は

(global-company-mode)

と書き、特定のモードだけ有効にする場合は

(add-hook 'python-mode-hook 'company-mode)

のように書きます。例はpython-modeで有効にする場合です。

5 キーバインディング

候補表示中の主なキー設定です。

  • M-n:次の候補選択
  • M-p:前の候補選択
  • C-g:候補選択中止
  • RET:候補選択
  • F1, C-h:docを別バッファに表示
  • C-w:定義場所を表示
  • C-s:候補検索
  • C-M-s:候補フィルタリング
  • [tab]:共通するprefixを挿入

6 カスタマイズ

次の候補選択は’C-n’で、前の候補選択は’C-p’で選びたいのと’C-h’は<backspace>にしているので

(define-key company-active-map (kbd "M-n") nil)
(define-key company-active-map (kbd "M-p") nil)
(define-key company-active-map (kbd "C-n") 'company-select-next)
(define-key company-active-map (kbd "C-p") 'company-select-previous)
(define-key company-active-map (kbd "C-h") nil)

とカスタマイズしました。

7 参考URL

emacsの補完用パッケージcompany-mode

 

変更ごとに再インデントするマイナーモード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")