macでimagemagickとcocoaが有効になったemacsを使う
結論から言うと, emacs-plusを使うと良い
macでemacsをcocoa上で動かしたい時, homebrewではbrew cask install emacs
のようにインストールする.
しかしこれだとimagemagickが有効になっていない.
imagemagickが有効化は以下のコマンドで調べられる.
(image-type-available-p 'imagemagick)
markdown-modeの
markdown-max-image-sizeを使いたかったのだが, これが
imagemagick必須だった
ので,
brew cask
経由で入れたemacsでは有効にならなかった.
mac上で簡単にimagemagickとcocoaが有効なemacsを使うには, emacs-plusを使うと良い
brew tap d12frosted/emacs-plus brew install emacs-plus --with-imagemagick@6 --without-spacemacs-icon
--without-spacemacs-icon
は, とくにspacemacsを使っているわけでないのでつけてみた.
emojifyを使ってemacsで絵文字を表示する😺
emacsで絵文字を表示するにはemacs-emojifyを入れると良い.
use-packageを使って, こんな感じで設定
(use-package emojify :ensure t :if (display-graphic-p) :hook (after-init . global-emojify-mode) :bind ("C-x e" . 'emojify-insert-emoji) )
絵文字を挿入するときはemojify-insert-emoji
を呼び出すと良い.
プログラミング言語系のモードだと, コメントと文字列の中だけ表示されるらしい
emacsからcatkin buildを走らせる
emacs編集中に, ターミナルに移動することなくcatkin buildを走らせられると便利.
(defun ros-catkin-make (dir) "Run catkin_make command in DIR." (interactive (list default-directory)) ;; clear compilation buffer first not to occupy memory space. (if (get-buffer "*catkin_make*") (kill-buffer "*catkin_make*")) (let* ((default-directory dir) (compilation-buffer-name-function (lambda (major-mode-name) "*catkin_make*"))) (compile "catkin bt --no-status")) (switch-to-buffer-other-window (get-buffer-create "*catkin_make*")) )
具体的には編集中のbufferのディレクトリに対して, catkin build --this
を走らせている.
適当にC-x C-m
とかに割り当てる.
(global-set-key (kbd "C-x C-m") 'ros-catkin-make)
emacs-slackでShift+Enter, Ctrl+Enterをメッセージ内改行にする
keyboard macroの最中はhelmを使わない
個人的にC-s
での検索に通常のisearch-forward
ではなく,
helm-swoop
を利用している.
しかしこうすると, keyboard macroを入力している間にhelmが走り、これがどうやら後ほどkeyboard macroを再生するときに問題があるようだ.
keyboard macroを記録中かどうかはdefining-kbd-macro
という変数を見ればわかるようだ. また, keyboard macroの実行中はexecuting-kdb-macro
を見ればわかる.
defining-kbd-macro
がt
のときはisearch-forward
を利用するようにする.
;; (global-set-key (kbd "C-s") 'helm-swoop) (defun my-search-forward () "Customized search function to use helm-swoop except for in defining keyboard macro." (interactive) (if (or defining-kbd-macro executing-kbd-macro) (isearch-forward) (helm-swoop))) (global-set-key (kbd "C-s") 'my-search-forward)
同様のkeyboard macroが有効かに応じて挙動を切り替える設定は他の色々なものに利用できるはず.
emacs 26で入ったdisplay-line-numbersを利用する
emacsで左側に行数を表示するlinum-modeは重いことで有名だった。 軽くするためにはいろいろと設定しなくてはいけなかった.
しかし, emacs26でついに行数表示のネイティブ実装であるdiplay-line-numbers-modeが実装された.
(if (version<= "26.0.50" emacs-version) (global-display-line-numbers-mode))
個人的にはemacs -nw
で起動したときに行数表示の色が見にくかったので以下のようにしている
(if (version<= "26.0.50" emacs-version) (progn (global-display-line-numbers-mode) (defun display-line-numbers-color-on-after-init (frame) "Hook function executed after FRAME is generated." (unless (display-graphic-p frame) (set-face-background 'line-number (plist-get base16-solarized-dark-colors :base01)))) (add-hook 'after-make-frame-functions (lambda (frame) (display-line-numbers-color-on-after-init frame))) ))
web-modeでeslintをflycheck経由で使う
flycheck-add-mode
で設定する
(flycheck-add-mode 'javascript-eslint 'web-mode)
eslintの設定で, eslint-plugin-htmlが必要なので、その設定を忘れないようにする.
module.exports = { ... "plugins": [ "html", ], ... }