Emacs

まっさら環境でとりあえず elget を使う

自分向けのメモです。Linux 向け。とりあえず以下で良さそう。

install git curl global texinfo fzf silversearcher-ag hunspell cmake libgnutls28-dev 
mkdir devel Dropbox && cd ~/Dropbox/emacs.d/setup && bash ./setup.sh
cd ~/Dropbox/emacs.d/bin/ && bash el-get.sh -s

で、次を .emacs に書き込む。

(when (require 'elget-setup nil t)
  (my-elget-setup)
  (el-get-bundle "takaxp/moom") ;; package for testing
  (el-get 'sync))

簡易的な試験をしたいだけならこれでヨシ

line-spacing を制御する

line-spacing は、行間を制御する変数です。バッファローカルな変数なので、ミニバッファも含めて、各バッファの行間を個別に制御できます。

これまでは起動時に (set-default 'line-spacing 0.3) としていましたが、 bs.el に関連した改良を進めるうちに、 (message "1\n2") で作られるミニバッファの改行において、行間を制御するのが困難なことがわかりました。

C-g した場所をブックマークする

isearch した後に C-g してしまう癖がどうも抜けず、その度にカーソル位置が初期化されて困っていました。正解は、 RET の押下で isearch-exit を呼び出すことですが、なかなか慣れません。

リンクの内容をeldocで表示

eldoc の機能を用いてカーソル下のリンクをエコーエリアに出す設定です。意外と簡単にできました。

(with-eval-after-load "org"
  (add-hook 'org-mode-hook #'my-load-echo-org-link)

  (defun my-echo-org-link ()
    (when (org-in-regexp org-link-bracket-re 1)
      (let ((link "Link:")
            (msg (org-link-unescape (match-string-no-properties 1))))
        (put-text-property 0 (length link) 'face 'minibuffer-prompt link)
        (eldoc-message (format "%s %s" link msg)))))

  ;; これはダメな例
  ;; (defun my-load-echo-org-link ()
  ;;   (setq-local eldoc-documentation-function #'my-echo-org-link))
  ;; こちらが正しい実装
  (defun my-load-echo-org-link ()
    (add-function :before-until (local 'eldoc-documentation-function)
                  #'my-echo-org-link)))

なお、 org-eldoc と併用する場合、 eldoc-documentation-function が専有されてしまうので、次のように advice して回避します。

init.el の読み込みを計測(3)

自宅の主端末を新調したので、init.el の読み込み時間を計測し直しました。2011年モデルから2018年モデルへのジャンプです。

Table 1: init.el 読み込みシーケンスの時間計測
CUI[ms] GUI[ms]
startup 2.63 2.01
core 0.80 0.98
point 0.03 0.05
editing 0.34 0.33
presentation 1.51 1.29
media 0.10 0.04
history 0.25 0.24
development 0.33 0.33
Org Mode 0.0 0.0
frame and window 0.67 0.74
font 0.26 0.27
utility 0.44 0.43

合計値をこれまでの計測(init.el の読み込みを計測init.el の読み込みを計測(2))と比較すると、数値が一桁変わっています。前回との比較では、CUIとGUIと共に半分程度に減少しており「やはり最新の端末は速いな」と感心するばかりです。

Emacs 26.3 has been released

Emacs 26.3 がリリースされました。 RC1 の公開から1週間の正式版公開です。

メンテナンスリリースなので大きな機能追加は無しですが、新元号の令和対応が入っています。なので、今回のリリースは、日本のために出されたようなものです(言い過ぎ

company-mode に移行する

長らく愛用してきた auto-comple ですが、メンテナンスモードに入ったという知らせを受けましたので、 company に移行することにしました。

最近は el-get でもパッケージ管理をしているので、早速以下を追加してインストールです。ヘルプ表示が非標準らしいので company-quickhelp も追加します。

init.el の読み込みを計測(2)

init.el をドラスティックに変更して、元々 postpone.el 用に括り出していた設定と Org Mode に関する設定を、それぞれファイル化して init.el から分離してみました。計測した時間をみるとわかりますが、かなりの効果が得られました。