아래 코드를 사용하여에 바인딩 yf/replace-or-delete-pair
합니다 M-D
.
사용법 : point on을 사용 하면 (
히트 M-D [
하고 ()
쌍이 쌍이됩니다 []
. M-D RET
대신 맞으면 쌍이 제거됩니다.
이 코드는 구문 테이블을 사용합니다. 즉, 일부 쌍의 경우 닫기 구문 분석기를 직접 지정해야합니다. HTML 모드에서 예를 들면, ()
로 대체 될 수있다 <>
쳐서 M-D <
. 그러나 많은 모드 <>
에서 인식되는 쌍이 M-D <
아니며 "<를 닫는 방법을 모르겠습니다"라고 표시됩니다. 그런 다음을 입력하면됩니다 >
.
(defun yf/replace-or-delete-pair (open)
"Replace pair at point by OPEN and its corresponding closing character.
The closing character is lookup in the syntax table or asked to
the user if not found."
(interactive
(list
(read-char
(format "Replacing pair %c%c by (or hit RET to delete pair):"
(char-after)
(save-excursion
(forward-sexp 1)
(char-before))))))
(if (memq open '(?\n ?\r))
(delete-pair)
(let ((close (cdr (aref (syntax-table) open))))
(when (not close)
(setq close
(read-char
(format "Don't know how to close character %s (#%d) ; please provide a closing character: "
(single-key-description open 'no-angles)
open))))
(yf/replace-pair open close))))
(defun yf/replace-pair (open close)
"Replace pair at point by respective chars OPEN and CLOSE.
If CLOSE is nil, lookup the syntax table. If that fails, signal
an error."
(let ((close (or close
(cdr-safe (aref (syntax-table) open))
(error "No matching closing char for character %s (#%d)"
(single-key-description open t)
open)))
(parens-require-spaces))
(insert-pair 1 open close))
(delete-pair)
(backward-char 1))
\bigl(...\bigr)
를 들어 다음과 같이 변경 될 수 있다면 흥미로울 것입니다\Bigl(...\Bigr)
.