私は現在の単語や地域を操作する便利な機能をたくさん持っています、そして怠惰などのために。私はそれらをテンプレートから構築しました...
例えば
(defun lower-camelcase-at-point-or-region ()
"lowerCamelCaseTheCurrent dashed or snake_case word or any words in text selection."
(interactive)
(let (pos1 pos2 meat)
(if (and transient-mark-mode mark-active)
(setq pos1 (region-beginning)
pos2 (region-end))
(setq pos1 (car (bounds-of-thing-at-point 'symbol))
pos2 (cdr (bounds-of-thing-at-point 'symbol))))
(setq meat (s-lower-camel-case (buffer-substring-no-properties pos1 pos2)))
(delete-region pos1 pos2)
(insert meat)
)
)
事実上、これはこのラインを除いてすべてのボイラープレートです...
(setq meat (s-lower-camel-case (buffer-substring-no-properties pos1 pos2)))
s-lower-camel-case
バッファサブストリングを呼び出す場所。atポイントまたはリージョンのものを再利用したいのですが、どこにでも複製することはありません(それは愚かであり、維持するのが面倒だからです)。
だから私が本当に知りたいのは、EmacsLispで関数をカレーできるかということです。
私がこれを試したとき...
(defun do-stuff-on-point-or-region ()
"Do stuff."
(interactive)
(operate-on-point-or-region 's-lower-camel-case)
)
operate-on-point-or-region
として定義されている... :
(defun operate-on-point-or-region (fn)
"Pick the substring at point, or region
and replace it with the output of fn"
(let (pos1 pos2 meat)
(if (and transient-mark-mode mark-active)
(setq pos1 (region-beginning)
pos2 (region-end))
(setq pos1 (car (bounds-of-thing-at-point 'symbol))
pos2 (cdr (bounds-of-thing-at-point 'symbol))))
(setq meat (fn (buffer-substring-no-properties pos1 pos2)))
(delete-region pos1 pos2)
(insert meat)
)
)
私は得る:Symbol's function definition is void: fn
私は愚かなことにEmacsLispでカリー化が可能だと思っていますか?それとも私はそれを間違っているだけですか?