2017-04-20 5 views
1

이렇게 매크로를 작성하고 싶습니다.이맥스 매크로 : 함수 이름인지 확인하십시오.

A_ret A_function_name (A_param ap) 
{ 
A_sentence; 
} 

emacs에서 매크로를 수행 한 후 함수 이름에 A가 있으면 B로 변경하십시오.

A_ret B_function_name (A_param ap) 
{ 
A_sentence; 
} 

매크로 정의에서 함수 이름에 'A'가 표시되는지 어떻게 확인할 수 있습니까?

+1

나는 당신이 무엇을 요구하고 있는지 말할 수 없다. 첫째, "매크로"를 구현하기 위해 무엇을 사용하고 있습니까? (n.b.는 이맥스에 대한 좋은 용어는 아니며, lisp 매크로와 키보드 매크로를 모두 제공합니다. 어느 쪽도 어느 쪽이 여러분에게 말하고 있는지는 알 수 없습니다). 둘째로, "함수명에 있다면 A에서 B로 바꿔라."라는 말은 무엇을 의미 하는가? 나는 그 문장을 이해하지 못한다. 이 문맥에서 "매크로를 수행"하는 것이 실제로 의미하는 것은 무엇입니까? "그것"은 무엇입니까? – phils

답변

0

현재 기호에 조건부 인 키보드 매크로를 쓸 수 없습니다. C-x q을 입력하면 키보드 매크로가 일시 중지되고 이맥스가 진행 여부를 묻게됩니다 (Y 또는 N). 당신이 함수 이름을 많이 교체하려는 경우

, 나는 C-M-% (M-x query-replace-regexp)는 검색을 수행하는 데 사용하는 정규 표현식으로 대체하거나 너무 복잡 경우, 다음 키보드 매크로 M-s o (M-x occur)를 사용하는 것 A_\(\s_\|\sw\)+ (에 대한 모든 일치 항목을 찾으려면 (\sw은 단어 문자이고 \s_은 밑줄을 포함한 기호 문자입니다 (_).

는 키보드 매크로 occur를 사용하려면, 나는

M-s o A_\(\s_\|\sw\)+ RET [occur] 
RET [exit-minibuffer] 
C-x ([kmacro-start-macro] 
C-x ` [next-error] 
C-x [kbd-macro-query] 
M-d [kill-word] 
B_ [self-insert-command] 
C-x) [kmacro-end-query] 
C-x e [kmacro-call-query] 
C-x e [kmacro-call-query] 
C-x e [kmacro-call-query] 
... 

솔직히 말해서, 나는 C-x q를 사용하지 않는 것입니다. 대신 실행을 위해 C-x e을 사용하고 실행하지 않고 다음 경기로 건너 뛰고 싶다면``C-x '``를 사용합니다.

M-s o A_\(\s_\|\sw\)+ RET [occur] 
C-x ` [next-error] 
C-x ([kmacro-start-macro] 
M-d [kill-word] 
B_ [self-insert-command] 
C-x e [kmacro-call-query] 
C-x e [kmacro-call-query] 
... 
C-x ` [next-error] 

하지만 그건 나야.