Google-code-prettify

2022/04/16

Emacsにしてみた

 ずっとVim派でしたが、思うところあって(することがないので)Emacsを勉強することにしました。


 

 Emacsは27.2、環境はPlamo Linuxをget_pkginfo -aで2022/04/15時点で最新にしたものです。

 やったことで悩んだのは、

・起動時にエラーになる問題の対応

・twittering-modeを使用できるようにする

くらいでしょうか。


・起動時にエラーになる問題の対応

古いテンプレートを使用しているためか、私の環境では起動時にエラーが発生しました。

--debug-initを付けてEmacsを起動すると下記のように表示されます。

Debugger entered--Lisp error: (void-function set-default-font)
  (set-default-font "Noto Sans Mono-8")
  (progn (set-default-font "Noto Sans Mono-8") (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0208 '("Migu 2M" . "iso10646-1")) (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0212 '("Migu 2M" . "iso10646-1")))
  (if (>= emacs-major-version 23) (progn (set-default-font "Noto Sans Mono-8") (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0208 '("Migu 2M" . "iso10646-1")) (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0212 '("Migu 2M" . "iso10646-1"))))
  (progn (global-font-lock-mode 1) (if (>= emacs-major-version 21) (progn (blink-cursor-mode nil) (menu-bar-mode 1) (mouse-wheel-mode) (setq initial-frame-alist (append (list))) (set-frame-size (selected-frame) 97 30))) (if (>= emacs-major-version 23) (progn (set-default-font "Noto Sans Mono-8") (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0208 '("Migu 2M" . "iso10646-1")) (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0212 '("Migu 2M" . "iso10646-1")))))
  (if window-system (progn (global-font-lock-mode 1) (if (>= emacs-major-version 21) (progn (blink-cursor-mode nil) (menu-bar-mode 1) (mouse-wheel-mode) (setq initial-frame-alist (append (list))) (set-frame-size (selected-frame) 97 30))) (if (>= emacs-major-version 23) (progn (set-default-font "Noto Sans Mono-8") (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0208 '("Migu 2M" . "iso10646-1")) (set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0212 '("Migu 2M" . "iso10646-1"))))) (progn (global-font-lock-mode 1)))
  eval-buffer(#<buffer  *load*-942743> nil "/home/takahiro/.emacs.d/site-start.d/look.el" nil t)  ; Reading at buffer position 2422
  load-with-code-conversion("/home/takahiro/.emacs.d/site-start.d/look.el" "/home/takahiro/.emacs.d/site-start.d/look.el" nil nil)
  load("/home/takahiro/.emacs.d/site-start.d/look")
  (while files (load (car files)) (setq files (cdr files)))
  (let* ((dir "~/.emacs.d/site-start.d") (el-suffix "\\.el\\'") (files (mapcar #'(lambda (path) (replace-regexp-in-string el-suffix "" path)) (directory-files dir t el-suffix)))) (while files (load (car files)) (setq files (cdr files))))
  eval-buffer(#<buffer  *load*> nil "/home/takahiro/.emacs.d/init.el" nil t)  ; Reading at buffer position 316
  load-with-code-conversion("/home/takahiro/.emacs.d/init.el" "/home/takahiro/.emacs.d/init.el" t t)
  load("/home/takahiro/.emacs.d/init" noerror nomessage)
  startup--load-user-init-file(#f(compiled-function () #<bytecode 0x32fe55>) #f(compiled-function () #<bytecode 0x32fe6d>) t)
  command-line()
  normal-top-level()

~/.emacs.d/site-start.d/look.elの下記の部分をコメントアウトするとエラーが出なくなりました。

     ;;; Emacs23 以上の設定 (TrueType/OpenType フォントの使用)
;;      (if (>= emacs-major-version 23)
;;          (progn
;;        (set-default-font "Noto Sans Mono-8")
;;        (set-fontset-font
;;         (frame-parameter nil 'font)
;;         'japanese-jisx0208
;;         '("Migu 2M" . "iso10646-1"))
;;        (set-fontset-font
;;         (frame-parameter nil 'font)
;;         'japanese-jisx0212
;;         '("Migu 2M" . "iso10646-1"))
;;            ;; Ascii フォントと日本語フォントの幅を調整する
;;;        (setq face-font-rescale-alist
;;;          '((".*Migu.*" . 1.3)
;;;            (".*VL ゴシック.*" . 1.3)
;;;            ("-cdac$" . 1.3)))
;;        )) ; Emacs23 以上の設定


・twittering-modeを使用できるようにする

github(https://github.com/hayamiz/twittering-mode)から取得し、
~/.emacs.d/package/
以下にgit cloneしました。このあたりはEmacs初心者なのでどこに入れれば良いのか分かりません。適当です。

~/.emacs.d/init.elには下記の記述をしました。
 
;;twittering-mode
(add-to-list 'load-path "~/.emacs.d/package/twittering-mode/")
(require 'twittering-mode)
(setq twittering-use-master-password t)
(defalias 'epa--decode-coding-string 'decode-coding-string)
(setq twittering-icon-mode t)

(setq twittering-use-master-password t)と記述するとPINではなくマスターパスワードを入力して起動できるようになるのですが、twittering-modeが起動しなくなります。
 
そこで、
(defalias 'epa--decode-coding-string 'decode-coding-string)

と記述することにより起動するようになりました。廃止された関数を使っているのかな。 


あと、マスターパスワードの入力がターミナルからになっているため、例えば多くのウィンドウマネージャーのAlt + F2でアプリ起動ダイアログ(?)が開きますが、これを使用してEmacsをウィンドウモードで起動するとパスワードを聞かれずにエラーになってしまいます。

xfce4-terminalからEmacsをウィンドウモードで起動するとxfce4-terminalにパスワード入力画面が表示されます。

これは、~/.gnupg/gpg-agent.confに下記の記述をすることで、GUIのパスワード入力ダイアログにして対応しました。

pinentry-program        /usr/bin/pinentry-gtk-2

この記述をした後、Xを終了してさらにログアウトし、再度ログインしてstartxした後に有効になりました。

多分何かのプロセスを再起動すれば良かったのかと思います。

0 件のコメント: