History
- 어디든 나타나는 태그 자동완성을 꺼야 한다.
- 아. 둠이맥스에서 태그를 기본으로 넣어두니 그걸 초기화 해버는 것.
- string-inflection 문자열 변환 - 대문자 카멜 케밥 케이스
- #이맥스 #용어집: §ten 패키지
2025 태그 자동완성의 저주를 풀다
해결 방법 아래가 끝.
;;;; overide completion-at-point-functions nil
;; Global Value (tags-completion-at-point-function)
(setq-default completion-at-point-functions nil)
보관 이게 문제다.
로그
2025-03-04 W09
@user 이맥스에서 complete-tag를 활용하는 방법은? completion-at-point에서 제외하는 방법?
@assistant 이맥스에서 =complete-tag=를 활용하는 방법에 대한 정보는 제공되지 않았지만, =completion-at-point=에서 특정 기능을 제외하는 방법에 대해 설명할 수 있습니다.
completion-at-point에서 기능 제외하기
completion-at-point=는 이맥스의 주요 모드에서 =C-M-i
또는 M-TAB
키로 호출되는 명령어로, 현재 커서 위치의 심볼을 완성합니다. 이 명령어는 =completion-at-point-functions=라는 훅 변수를 사용하여 완성 후보를 생성합니다. 특정 기능을 제외하려면 이 훅 변수에서 해당 기능을 제공하는 함수를 제거해야 합니다.
예시: 특정 함수 제거
;; completion-at-point-functions에서 특정 함수 제거
(defun remove-function-from-completion-at-point (func)
(setq completion-at-point-functions
(delq func completion-at-point-functions)))
;; 예를 들어, 특정 함수 'my-completion-function'을 제거하려면
(remove-function-from-completion-at-point 'my-completion-function)
이 코드는 completion-at-point-functions
리스트에서 특정 함수를 제거하여 해당 기능이 완성 후보에 포함되지 않도록 합니다.
completion-at-point-functions 사용법
이 훅 변수는 함수의 리스트로 구성되며, 각 함수는 completion-at-point
명령어가 호출될 때 순차적으로 실행됩니다. 첫 번째로 =nil=이 아닌 값을 반환하는 함수가 완성 후보를 제공합니다. 따라서 특정 기능을 제외하려면 해당 기능을 제공하는 함수가 =nil=을 반환하도록 하거나, 훅 변수에서 해당 함수를 제거해야 합니다[2][4].
Citations: [1] https://phrimm136.github.io/post/2020/05/emacs-conversion-guide-4/ [2] https://www.gnu.org/software/emacs/manual/html_node/elisp/Completion-in-Buffers.html [3] https://semadi.tistory.com/41 [4] https://www.gnu.org/software/emacs/manual/html_node/emacs/Symbol-Completion.html [5] https://notmuchmail.org/emacstips/
@user etags 패키지에 대해서 알려줘.
@assistant *etags 패키지
etags는 이맥스에서 사용하는 태그 생성 도구로, 다양한 프로그래밍 언어의 소스 및 헤더 파일에서 심볼 정보를 추출하여 TAGS 파일을 생성합니다. 이 TAGS 파일은 이맥스에서 심볼을 찾아가거나 참조하는 데 사용됩니다.
주요 기능
- TAGS 파일 생성:
etags
명령어를 사용하여 C, C++, Java, Python 등 여러 언어의 소스 파일에서 심볼 정보를 추출하여 TAGS 파일을 만듭니다. - 심볼 탐색: 이맥스에서
M-.
키를 사용하여 TAGS 파일에 등록된 심볼로 이동할 수 있습니다. - 다양한 언어 지원: etags는 20개 이상의 프로그래밍 언어를 지원합니다.
사용법
-
TAGS 파일 생성:
find . -name "*.[ch]" -print | xargs etags -a
또는 이맥스 내에서:
M-x compile RET etags *.c *.h RET
-
심볼 탐색:
M-.
: 심볼로 이동M-*
: 이전 위치로 돌아가기
etags는 코드 탐색 및 관리에 유용한 도구로, 특히 대규모 프로젝트에서 코드의 구조를 파악하는 데 도움을 줍니다.
Citations: [1] https://semadi.tistory.com/34 [2] https://en.wikipedia.org/wiki/Ctags [3] https://ftp.gnu.org/old-gnu/Manuals/emacs-lisp-intro/html_node/etags.html [4] https://jeongmin.github.io/2017/11/09/emacs/emacs-package/ [5] https://www.44bits.io/ko/post/managing-emacs-configuration-with-cask
@assistant xref와 etags를 연동하여 사용하는 이유는 이맥스에서 코드 탐색과 관리를 효율적으로 수행하기 위해서입니다. xref는 이맥스 25 이후 버전에서 도입된 코드 탐색 기능으로, 심볼의 정의나 참조를 쉽게 찾을 수 있도록 해줍니다. etags는 코드의 심볼을 색인화하여 빠르게 탐색할 수 있는 TAGS 파일을 생성하는 도구입니다.
@user xref와 etags를 연동하여 사용하는 이유는?
xref와 etags의 연동 이유
-
효율적인 코드 탐색:
- xref: 이맥스 내에서 코드의 심볼을 쉽게 탐색하고, 정의나 참조를 찾을 수 있는 기능을 제공합니다. xref는 기본적으로 TAGS 파일을 사용하지 않지만, etags와 함께 사용하면 더 강력한 코드 탐색이 가능합니다.
- etags: TAGS 파일을 생성하여 코드의 심볼을 색인화합니다. 이 파일을 xref와 함께 사용하면 코드의 구조를 빠르게 파악하고, 특정 심볼의 정의나 참조를 쉽게 찾을 수 있습니다.
-
대규모 프로젝트 관리:
- 대규모 프로젝트에서는 코드의 복잡성이 높아지며, 특정 함수나 변수의 정의를 찾는 것이 어려울 수 있습니다. xref와 etags를 함께 사용하면 이러한 문제를 해결할 수 있습니다.
-
유연한 설정:
- xref는 기본적으로 TAGS 파일을 사용하지 않지만, etags와 함께 사용하면 TAGS 파일을 기반으로 코드 탐색을 수행할 수 있습니다. 이는 사용자가 자신의 환경에 맞게 설정할 수 있는 유연성을 제공합니다.
사용 방법
-
TAGS 파일 생성:
find . -name "*.[ch]" -print | xargs etags -a
또는 이맥스 내에서:
M-x compile RET etags *.c *.h RET
-
xref 사용:
M-.
: 심볼로 이동M-*
: 이전 위치로 돌아가기
-
xref와 etags 연동: xref는 기본적으로 TAGS 파일을 사용하지 않지만, etags가 생성한 TAGS 파일을 xref가 사용하도록 설정할 수 있습니다. 이를 위해서는 이맥스의 설정 파일에서
xref-backend-functions
변수를 조정하여 etags의 TAGS 파일을 사용하도록 할 수 있습니다.(setq xref-backend-functions '(xref-etags-backend))
이렇게 xref와 etags를 함께 사용하면 코드 탐색과 관리가 더 효율적으로 이루어질 수 있습니다.
Citations: