読者です 読者をやめる 読者になる 読者になる

by shigemk2

当面は技術的なことしか書かない

快適Emacs Lisp生活を目指して #kansai_emacs

kansai_emacs #5

快適Emacs Lisp生活とは

  • 括弧を楽に入力したい

(((((.)))))

  • 定型コードを楽に入力したい

paredit.el

  • 括弧の対応を崩さず編集
  • 対応する括弧も削除
  • 慣れればすごく便利らしいよ

慣れれば…

でも思い通りに編集できない
(後ろの括弧を消しただけなのに前のやつも消された)
イマイチparedit.elは便利じゃない

flex-autopair.el

  • 一般的な括弧の自動挿入
    • 閉じ括弧も自動挿入
  • 括弧の対応は人力でお願いします。
  • 動きをモード毎にカスタマイズ可能
    • c-mode #includeのあとだけ<>とか。

lisp系では

  • 開き括弧の前に空白
  • S式を囲う
    • pareditからパクった
    • acp.elや、electric-pair-modeからもいろいろパクった
(if)
(if (and (func2) (func))
    )
(let (()))
`()

以上の動作をspace抜きで出来る

定型コードの入力編

(defun
  (interactive)
  ...
  )

たぶん大御所はyasnippet

忘れる問題

1. 何を登録したのか忘れる

  • 似たもの (defun defvar)
  • 環境 (会社 or 自宅)

2. どの省略形で発動するかを忘れる

  • 短いほうがうれしいけど
  • 展開後が違うと忘れる
  • 括弧は不要?必要?
    • 括弧が二重に展開
    • 括弧がない

auto-completeと設定追加

  • 省略形は元のシンボル名
  • 途中まで打てば候補が出る
  • 括弧がないときだけ括弧を挿入
;; 括弧が足りない
defun ()
  "thisandthat"
  (interactive)
  (let (var1)
    (setq var1 some)
    )

この状態でdefunと打つと、defunが括弧つきで出てくる

設定は後日公開予定

0.2秒以内で括弧をつけるかつけないか設定したい
→待っていればよい

Cとかだと括弧をつけると自動的に改行されるようにも
してみたい。

インストールは
(auto-install-from-url "https://raw.github.com/uk-ar/flex-autopair/master/flex-autopair.el")

でいいですよ。

括弧の自動挿入の挙動をオレオレ設定できるflex-autopair.elで夢を叶える - むしゃくしゃしてやった