2011-09-26 6 views
7

isearch/search-replace /를 코드 (주석 또는 문자열에 없음)에서만 사용하고 싶습니다.Emacs에서는 코드 영역에서만 어떻게 조작 (검색) 할 수 있습니까?

일반적인 문제 일 수 있으므로 이미 어떤 패키지에서이 문제를 해결해야합니까?

기존 패키지가 없다면, 글꼴 및 주석을 기반으로 숨겨진 문자열과 주석이 트릭을 수행하는 부 모드를 생각하고 있습니다. 하나 있습니까?

+0

을 [여기에서 관련 논의가있어 (http://thread.gmane.org/gmane .emacs.devel/129755)을 emacs-devel에 설치하십시오. 외관상으로는 문제는 당신이 그 부분을 숨길 수있다, 그러나 보충은 그것을 고려하지 않으며 숨겨 지은 부분에있는 그것의 일을 역시한다. – Tom

+0

또한 여기 : http://groups.google.com/group/gnu.emacs.help/browse_thread/thread/757fb08373f9fbf8 –

답변

0

네, 맞습니다. HideShow 마이너 모드를 사용하면 텍스트 블록, 특히 여러 줄 주석을 숨기거나 표시 할 수 있습니다.

숨기기/표시 주석은 표준 패키지의 일부가 아니지만 wiki 페이지에서 트릭을 수행하는 코드를 찾을 수 있습니다.

그런 다음 isearch 명령은 숨겨진 주석을 고려하지 않습니다.

HOWEVER : replace는 숨겨진 블록을 포함하여 전체 버퍼에서 작동합니다.

+0

이맥스 23.2로 시도해보고 일부 자바 코드를 숨기고 검색 치환으로 숨겨진 블록의 내용을 다음과 같이 수정했습니다. 글쎄, 그건 그 질문에 대한 답이 아니야. – Tom

+0

예, 바꾸기는 전체 버퍼에서 작동합니다. 그러나 isearch는 숨겨진 블록을 조사하지 않습니다. –

0

체크 아웃 narrowing.

+0

아, 그 질문에서 "코드"라는 단어를 놓쳤습니다. 글쎄, 좁히기가 너무 끔찍하기 때문에, 뻔뻔스럽게 뻔뻔스럽게 여기에 답을 남겨주세요. 어쩌면 당신은 좁히기를 사용할 수 있고 일부 elisp와 함께 구문 표가 트릭을 수행합니다. –

+0

좁히는 문제는 버퍼를 인접한 블록으로 만 좁힐 수 있습니다. 이맥스가 여러 영역을 좁히도록 지원한다면 아주 좋을 것입니다. – Tom

2

Icicles search에는 여러 가지 방법이 있습니다. 여기에 두 가지이다 : 주석에게 (옵션 icicle-ignore-comments-flag를) 무시

  • 검색 "일"(예를 들어 defun의, sexp의, XML 요소 등). 즉, 선택한 코드 세그먼트를 검색 컨텍스트로 사용하지만 코드 내의 주석 또는 주석 내의 코드는 무시하십시오.

  • 의견의 complement을 검색하십시오. 예를 들어, 검색 영역을 문자 영역의 보완으로 정의하고, 문자 영역은 font-lock-comment-face 또는 얼굴 font-lock-comment-delimiter-face (주석 외부의 모든 코드 검색)을 의미합니다.

검색 컨텍스트를 정의한 후 텍스트를 입력하면 점진적으로 컨텍스트를 필터링 할 수 있습니다. 그리고 당신은 replace을 요구에 맞게 할 수 있습니다.

0

(질문 : Icicles --- 위의 other answer 참조).

는 다음 중 하나를 사용하여, 그 isearch 기능을 검색한다 컨텍스트를 정의 할 수 있습니다

  • regexp와 일치되어야한다.
  • 주어진 텍스트 또는 오버레이 속성 --- 검색 콘텍스트의 속성 (예 : 특정 '면'값 또는 값들의 조합)
  • 주어진 이멕스 THING (sexp, defun는,리스트를 문자 영역은, 문자열, 설명 등) --- 검색 컨텍스트는 주어진 THING 유형의 텍스트 영역입니다. -contexts :

는 또한 보완를 검색 할 수있는 검색 컨텍스트를 정의 가졌어요.C-M-~을 사용하여 Isearch에서 언제든지 컨텍스트 및 비 컨텍스트 검색간에 전환 할 수 있습니다.

검색 할 때 기본적으로 검색되지 않는 영역은 약간 희미 해 검색 가능한 영역이 눈에 띄게됩니다.

를 들어

isearch 기능과 상황에 검색이 두 라이브러리가 필요합니다

+0

여기에 주어진 파일 옆에 전체 icicle-stuff를로드 할 위치는 무엇입니까? https://github.com/emacsmirror/icicles/archive/master.zip –

+0

@ AndreasRöhler : 차가워 요를 다운로드하는 방법은 여러 가지가 있습니다. 그들은 [여기] (http://www.emacswiki.org/emacs/Icicles_-_Libraries)에 설명되어 있습니다. 예를 들어, [MELPA] (http://melpa.milkbox.net/)에서 고드름을 얻을 수 있습니다. (그러나 여기에 언급 된 Isearch + 파일은 Icicles와는 별개입니다.) – Drew

관련 문제