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 件のコメント:
コメントを投稿