emacs 設定の見通しが悪い。
emacsのパッケージ管理は、el-get + init-loader を使ってきた。 昔の設定も残っているし、色々とゴミが貯まっていて見通しが悪い。 コメントなんかも中途半端だし、読み返すと理解できないヤツも多々ある。
で、整理しようと手をつけてはみたが、ファイルが40ほどあるので、 チョットした修正なら問題ないが、整合性とかを確認しながらの作業は、 記憶力が怪しい自分には辛いし、遅々として進まない。
で、思い切ってバージョンアップをやってみた(無謀だった)。
主に参考にさせていただいたのは、 package.el + use-package で落ち着いた - YAMAGUCHI::weblog 、 use-packageで可読性の高いinit.elを書く - Qiita 、そして 色々探しているうちに見付けた、 Emacs の設定 と GitHub - uwabami/emacs: Emacs の設定ファイル群 。 org-mode で管理できるのを知ったのが結構大きい。
package.el + use-package + org-mode
おおまかな設定方法は、init.el で、package.el と use-package の 設定をして、まず org を読み込む。 その後 org-babel-load で、 各種設定を babel-mode で記述した org ファイルから .el を作成させて、読み込む。 org-babel-load の処理時間はかかるが、org ファイルの更新が無いと、skip される。あってるかな?
他の先人達を探したが、org-mode自体の設定ばかりヒットして、 肝心な「パッケージの管理」に関する情報がなかな見付からない。 見付けたのは、これくらい。
結構昔からこのような管理方法はあるみたい。 org-install が obsolete なので、こいつが含まれてる情報は少し古いのかもしれない。 (obsolete だと知ったのは、結構あとになってから)
use-package の使い方は沢山ヒットするので、 これまでの el-get の設定と比較しながら作業すれば、 間違いとかが減らせるだろうという期待もあった。
以下が init.el 。 正しいかは不明。いまのところ大丈夫そう。 site-start.d 下に config.org を置いて、init-loader の読み込み順に追記、 動作確認しがら作業。 8割ほどは作業が終了したはず。 さすが org-mode のアウトライン機能は便利。 残りは使いながらか。バイトコンパイルはさせたいかも。
[update 201903]
;;; init.el -- my emacs settings.
;;; Commentary:
; use packages version.
;;; Code:
;; Emacs GC settings
; https://github.com/jethrokuan/.emacs.d/blob/master/config.org#org-mode-for-note-taking
; 2018-08-29
;(setq gc-cons-threshold 50000000)
; https://zzamboni.org/post/my-emacs-configuration-with-commentary/
;(setq gc-cons-threshold (* 1024 1024 1024))
; 2019-03
;; https://www.reddit.com/r/emacs/comments/3kqt6e/2_easy_little_known_steps_to_speed_up_emacs_start/
;; huge impact to profile-dotemacs results; GC takes up a lot of init time
(setq gc-cons-threshold most-positive-fixnum)
;; reset gc-cons-threshold
;; idle timer suggested by vermiculus
(run-with-idle-timer
10 nil
(lambda ()
(setq gc-cons-threshold (car (get 'gc-cons-threshold 'standard-value)))
(message "gc-cons-threshold restored to %S" gc-cons-threshold)))
;;; Begin initialization
(setq inhibit-startup-message t)
(setq initial-scratch-message "")
;;; Set up package
(require 'package)
(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/") t)
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t)
(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t)
;;(add-to-list 'package-archives '("marmalade" . "https://marmalade-repo.org/packages/") t)
(package-initialize)
; load-prefer-newer は Emacs >= 24.4
(customize-set-variable 'load-prefer-newer t)
(unless (package-installed-p 'use-package)
(package-refresh-contents)
(package-install 'use-package))
(eval-when-compile
(require 'use-package))
;; (require 'bind-key) ;; not use
(use-package org
:pin "org")
;; (defvar org-startup-dir (concat user-emacs-directory "site-start.d/"))
;; (org-babel-load-file (expand-file-name "config.org" org-startup-dir))
;; change 201901
;(setq exec-path (parse-colon-path (getenv "PATH")))
; ==exec-path== exec-directory が含まれないので変更。
(dolist (path (reverse (split-string (getenv "PATH") ":")))
(add-to-list 'exec-path path))
(require 'server) ;; autoloadされてないので必要らしい
(unless (server-running-p) ;; 起動している server があるかのチェック
(server-start)
)
;
(setq custom-file "~/.emacs.d/custom.el")
;;; Load org
(use-package org :ensure t
:pin "org")
(defvar org-startup-dir (concat user-emacs-directory "site-start.d/"))
;;; Load the config
(org-babel-load-file (expand-file-name "config.org" org-startup-dir))
(load custom-file)
(put 'upcase-region 'disabled nil)
;;; init.el ends hear
なぜか起動時間が3割ほど早くなった。 el-get を使ってた時の間違った設定が減ったためだろう。 随分と時間を使ったが、期待通りの成果?なのかも。
設定用の org ファイルは、ひとつに纏めたので 30004000行を越える。必要なのは半分以下。
ちょこっとした修正には大きすぎるので、落ち着いたら、また分割するかも。
[20180413]やっと落ち着いたみたい。
[20190903]serverをこちらに移したり、pathの設定方法を変更したり。
0 件のコメント:
コメントを投稿