コンマを項目区切り記号として使用して、マークされた領域内の項目を逆にする小さな関数を作成しました。関数コードは次のとおりです。
(defun reverse-list (beg end)
"Reverses a list in-place, where comma ',' is the list item separator."
(interactive "r")
(if (region-active-p)
(let ((region-list (reverse (split-string (region-as-string) ","))))
(kill-region beg end)
(loop for s in region-list do (progn
(insert (chomp s))
(insert ", ")))
(delete-char -2))
(message "Error: No region selected!")))
wherechomp
は、文字列から先頭/末尾の空白をregion-as-string
取り除き、領域を文字列として生成します。
この機能は非常に便利ですが、その場でセパレーターを選択できると便利です。私が探している動作は次のとおりです。
- ユニバーサル引数なしで呼び出された場合は、コンマをアイテム区切りとして使用します
- ユニバーサル引数 (
C-u
) で呼び出された場合、ユーザーに (複数文字の可能性がある) 区切り文字列を入力するように求めます。
私はこれを達成しようとしましたが、成功していません。お手伝いいただけると助かります!
前もってありがとう、
エレマキル