ardggy's blog

Esc - Meta - Alt - Ctrl - Shift

repeat.el とウィンドウ幅の調整

ウィンドウ幅の調整コマンドは C-x }, C-x {, C-x ^ に割り当てられていて、連続的に押下するには不便なキーバインドになっている。

ネットを見るといろいろ対策はあって、インタラクティブに調整できるようなコマンドをつくったり、必要なときにキーボードマクロを定義するような回避策があった (C-x e e e ... で連続的にコマンドを発行できる) 。

いろいろ試したけど、自分は標準ライブラリの repeat.el を使って調整するようにした。 特別楽になったというわけじゃないけど、コマンド同士をうまく連携できている感じがしてよい。

なお、オリジナルの C-x zC-z (suspend-frame) とかぶりやすいので、C-c . にバインドした。Vim のドットリピートのマネである。

タイトルバーをモダンな感じにする

モダンな見た目になって大変よいです。

(when (eq window-system 'ns)
  (add-to-list 'default-frame-alist '(ns-transparent-titlebar . t))
  (add-to-list 'default-frame-alist '(ns-appearance . dark)))

すぐに適用したい場合は *scratch* なり M-: なりで

(set-frame-parameter nil 'ns-transparent-titlebar t)
(set-frame-parameter nil 'ns-appearance 'dark)

とするとよいと思います。

f:id:ardggy:20181012133826p:plain

フォーカスがあたったときの入力ソースを英数にする

Emacs にフォーカスがあたったときに日本語入力になっていて、M-x あたりを入力すると大変イライラする。

であれば、フォーカスがあたったときに、英数キー (キーコード102) を入力するような何かを実行すればいい。

こういうときは Applescript で調べるとだいたい解決するわけで、下のようなフックができた。

(when (eq system-type 'darwin)
  (add-hook 'focus-in-hook 'ns-input-source-us)
  (add-hook 'after-init-hook 'ns-input-source-us)

  (defun ns-input-source-us ()
    (interactive)
    (shell-command-to-string "osascript -e 'tell application \"System Events\" to key code 102'")))

shell-command で実行するとエコーエリアがうるさいので shell-command-to-string にしてある。