空白一つにこだわりたい

区分
Emacs
報告者

こんにちは、chibaです。
ネタがないので今回もEmacs lispの小ネタです。
文字列やS式をだらだら編集し、最後に空白一つ区切りで整形しようとしたときなのですが、間に改行が挟まっていると、just-one-spaceがきかないので、kill-lineしたりして調整することになります。

"foo
   bar
      baz"
=>
"foo bar baz"

自分はこれが非常にもどかしかったので、just-one-spaceを拡張したものを作成してみました。
といっても、just-one-spaceのソースが空白とタブしか飛していなかったので改行も加えただけです。

(defun just-one-space-to-next-sexp (&optional n)
  (interactive "*p")
  (let ((orig-pos (point)))
    (skip-chars-backward " \t\n")
    (constrain-to-field nil orig-pos)
    (dotimes (i (or n 1))
      (if (or (= (following-char) ?\s))
	  (forward-char 1)
	(insert ?\s)))
    (delete-region
     (point)
     (progn
       (skip-chars-forward " \t\n")
       (constrain-to-field nil orig-pos t)))))
;; キーバインド例
(define-key  global-map [(meta shift ?\s)] 'just-one-space-to-next-sexp)

これで、すぱっと隣りに揃えられるので気持良いです。
リージョンやリストの中身を処理してくれる関数もあったら便利かもしれません。

トップページに戻る

技師部隊からの
お知らせ

【求人】エンジニア募集しています。

本頁の来客数
八十七万千百七十六名以上(計測停止中)

メンバー一覧

アクトインディ技師部隊員名簿

アクトインディ技師部元隊員

アクトインディへ

カテゴリー

アクトインディ

aaaa