- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2024-01-22T00:07:15+09:00","","")
#author("2024-01-22T00:08:49+09:00","","")
#topicpath
///////////////////////////////////////////////////////////////////////////////
* 目次 [#n1d49368]
#contents();
////////////////////////////////////////////////////////////////////////////////
* python 開発環境 [#n0ecd234]
- emacs 上での python 開発環境としては以下を導入することが出来る。
-- lint
-- フォーマッタ
- また、 emacs では python コードを編集するための python-mode があるので、これが起動するときのフック ''python-mode-hook'' に引っ掛けて動作するようにしていく。
////////////////////////////////////////////////////////////////////////////////
* 環境構築 [#q342595b]
//==============================================================================
** lint の設定(flycheck を使用) [#z01db224]
+ flycheck の導入
-- flycheck が導入済みであれば、flycheck のみで静的解析が実行される為、他に特に設定は必要ない。
-- flycheck が導入済みであれば、flycheck のみで静的解析が実行される為、他に特に設定は必要ない。(別途手動インストールなどした pylint を flycheck で使うようにしたければ、そのように設定することもできる)
-- debian パッケージを導入する場合は、 ''elpa-flycheck'' をインストールする。
-- 又は、開発リポジトリを取ってきて、宜しく配置する(但し、依存するリポジトリも取ってくる必要がある):
https://github.com/flycheck/flycheck.git
https://github.com/magnars/dash.el.git
https://git.savannah.gnu.org/git/emacs/elpa.git
+ flycheck を設定する
-- ディストリビューションのパッケージを導入する場合、特にすることはない筈。
-- 手動でリポジトリを取ってきた場合の設定例は以下の通り:
(setq load-path (cons (expand-file-name "~/.emacs.d/site-lisp/elpa/packages/company") load-path)) ; depended: dash
(setq load-path (cons (expand-file-name "~/.emacs.d/site-lisp/dash") load-path))
(setq load-path (cons (expand-file-name "~/.emacs.d/site-lisp/flycheck") load-path)) ; flycheck
(require 'flycheck)
;; エラーをツールチップ表示する
(with-eval-after-load 'flycheck
(flycheck-pos-tip-mode))
(add-hook 'after-init-hook #'global-flycheck-mode)
//==============================================================================
** formatter の設定 [#cd0de45d]
- pytohn フォーマッタは幾つかあるが、ここでは、以下を前提とした環境構築を行う。
-- autopep8 --- フォーマッタ
-- isort --- import 文の妥当性を解析する
//------------------------------------------------------------------------------
*** autopep8 の導入 [#j5a38d10]
- emacs には py-autopep8.el があるので導入する。
-- debian パッケージを導入する場合は ''elpa-py-autopep8''
-- 手動でリポジトリを取得する場合は
https://github.com/fujimisakari/py-autopep8.el.git
//------------------------------------------------------------------------------
*** isort の導入 [#o91f34b7]
- emacs には py-isort.el があるので導入する。
-- debian パッケージの場合は ''elpa-py-isort'' を導入する。
-- 手動でリポジトリを取得する場合は
https://github.com/paetzke/py-isort.el.git
//------------------------------------------------------------------------------
*** autopep8 と isort の設定 [#c8ae4823]
+ python-mode 固有の設定になるので、ひとまとめにした設定ファイル ''python-mode.conf.el'' を作る。
;;; python-mode.conf.el --- settings for python-mode
;;; Commentary:
;;; see also: https://qiita.com/fujimisakari/items/74e32eddb78dff4be585
;;; Code:
(setq python-mode-hook
#'(lambda ()
(if (which-function-mode nil) (which-function-mode)) ; ; 現在の関数名をモードラインに表示
;; formatter
(require 'py-autopep8.conf)
;; clang-format.conf.el で設定したキーに合わせておく
(define-key python-mode-map (kbd "C-c i") 'py-autopep8-region) ; 選択リジョン内のコード整形
(define-key python-mode-map (kbd "C-c u") 'py-autopep8) ; バッファ全体のコード整形
;; import 文を適切な順序に自動で sort する
(require 'py-isort.conf)
;; linter
;; (when (expand-file-name "pylint") ; システム上に pylint があるときだけ
;; ;; flycheck で使う linter の設定
;; ;; flycheck では勝手に linter を探してくれるらしく、パスの通ってない
;; ;; ところに置かれている物を使うのでない限り、以下の linter を指定する設定は不要な模様
;; ; (setq flycheck-python-pylint-executable "pylint") ; for flycheck
;; ; (setq flycheck-python-flake8-executable "flake8") ; for flycheck
;; ; (setq flycheck-python-mypy-executable "mypy") ; for flycheck
;; )
)
)
(provide 'python-mode.conf)
;;; python-mode.conf.el ends here
+ これを、${HOME}/.emacs.d/init.el 等から適当に呼ぶようにする。
; python-mode 関係の設定
(require 'python-mode.conf)