2013-01-20 5 views
1

이 메일 링리스트 message은 복수 단어 약어에 대해 표시되지만 은 여전히 ​​확장 기능을 사용할 수 없습니다. "AGW"작품 후 공간을 눌러다중 단어 약식 확장

"agw"   0 "a great whale" 
"a g w"   0 "a great whale" 

아니라 "사 용 w"

나는이 두 약어를 정의합니다. 그러나 (abbrev-expansion "a g w")이라면 올바른 확장이 반환됩니다.

질문은 이맥스가 한 단어 경계를 넘어서 뒤로 검색하도록하는 방법입니까?

네, yasnippet이 존재하며이를 사용하지만 약어가 더 매끄 럽습니다 (예 : "1/2"가 유니 코드 절반으로 바뀌면 공백을 누릅니다). 또한 구문 테이블을 변경하고 싶지 않습니다.

답변

0

SPACE는 자체를 삽입하기 전에 확장 할 지점 전에 약어를 찾습니다. `backward-word '를 사용하는데, 이전 공간에서 멈출 것이다. 따라서 SPACE는 축약어 내의 공백을 확장 할 수 없습니다.

0

Andreas가 설명했듯이 기본적으로 약어는 "단어 구성 요소"인 문자와 단어 구성 요소가 아닌 "문자"로 구성되어 있기 때문에 작동하지 않습니다. 주어진 테이블에 대해 (abbrev-table-put <table> :regexp <regexp>)과 같은이 규칙을 변경할 수 있습니다. "\\<\\(\\w+:?\\)\\W*"과 같은 정규 표현식은 기본 동작을 거의 재현합니다.

이제는 "agw"와 "agw"가 일치하지만 "dawg"의 "agw"와 일치하지 않아야하고 "ag agw"와 일치해야하는 정규식이 필요합니다. 조금 까다 롭습니다. 한 가지 방법은 정규 표현식을 (concat "\\<" (regexp-opt '("agw" "a g w")) "\\W*")으로 정의하는 것입니다.이 작업은 상당히 간단하지만 약자를 추가 할 때마다 정규 표현식을 변경해야한다는 단점이 있습니다.