프레임이 분할되는 것을 어떻게 차단할 수 있습니까?


16

현재 저는 루비와 rspec을 사용합니다. 컴파일 버퍼를 보여주는 다른 모니터에 별도의 프레임이 있다는 아이디어가 정말 좋습니다. 현재 설정은 '실제 작업을 수행하는'코드 '프레임과 rspec 결과를 볼 수있는'테스트 결과 '프레임을 사용합니다.

문제는 '테스트 결과'프레임에서 일부 컴파일 오류 또는 파일을 열려고하면 해당 프레임 에서 창이 분할 된다는 것 입니다. 내가 정말로하고 싶은 것은 '코드'프레임에서 여는 것입니다.

이미 옵션을 사용하고 있습니다 display-buffer-reuse-frames. 나는 또한 컴파일 결과 창을 설정 dedicated하려고했지만 emacs가 새 창을 열려고 할 때마다 새로운 프레임이 생성됩니다 (Helm을 사용하면 특히 끔찍합니다).

이것을 달성하는 쉬운 방법이 있습니까?


1
emacs를 IDE로 사용하면 버퍼가 제자리에 "고정"되어 쉽게 지금부터 같은 위치에 나타날 수 있다면 훨씬 편리 할 것입니다. emacs를 사용할 때 가장 그리워하는 Visual Studio 기능 중 하나는 창을 분할, 고정, 고정, 숨기거나 조작하는 간단하고 직관적 인 방법입니다.
nispio

1
네. 나는 또한 대 배경에서 왔으며, 이맥스가 깨끗하고 버튼이없는 헛소리 인터페이스가 대부분 더 좋다고 생각하지만 이것도 그리워합니다.
Renan Ranelli

@nispio VS를 사용하지 않으므로 "pin"의 의미를 지정할 수 있습니다. 이맥스 프레임은 일반적으로 독점적이며 상호 작용하지 않는 한 변경되지 않습니다.
Vamsi

@vamsi : VS는 프레임의 상단 / 하단 / 측면에 부착 할 수있는 작은 창을 많이 사용하거나 팝업하여 새 프레임을 만들 수 있습니다. 프레임 가장자리에 창을 고정하고 자동 숨기기로 설정할 수 있습니다. 예를 들어, 컴파일 출력 창은 컴파일이 시작될 때 맨 아래부터 마술처럼 나타나고 컴파일이 끝나 자마자 다시 숨 깁니다. 창을 자동 숨기기하지 않으려면 창을 제자리에 고정한 다음 참조가 끝나면 다시 고정 해제 할 수 있습니다.
nispio

@nispio 알겠습니다. popwin.elMELPA에서 팝업 컴파일을 사용 하고 눌릴 때까지 지속되는 버퍼를 도와줍니다 C-g. 풀 타임이 필요한 경우 다른 창에서 전환하면됩니다. 나는 이맥스 때문에 창문 고정에 대해 생각하지 않았다 split-windows-sensibly.
Vamsi

답변:


9

버퍼를 표시 할 위치를 선택 display-buffer-alist하는 방법을 결정하는 600 파운드 고릴라를 구성해야합니다 display-buffer. display-buffer-reuse-frames새로운 emacsen 에서는 더 이상 사용되지 않습니다. 다음은 여러분을 안내해야하는 구성입니다 (emacs 24.3에서 가장 중요).

;; all buffers, try to reuse windows across all frames
(add-to-list 'display-buffer-alist
           '(".*". (display-buffer-reuse-window .
                                  ((reusable-frames . t)))))

;; except for compilation buffers where you want new and dedicated frames when necessary
(add-to-list 'display-buffer-alist
         '("^\\*Compile-Log\\*". ((display-buffer-reuse-window
                                   display-buffer-pop-up-frame) .
                                  ((reusable-frames . t)
                                  (inhibit-same-window . t)))))

보시다시피 정규 표현식을 사용하여 컴파일 로그 버퍼와 일치시킵니다. 의 문서는 display-buffer당신에게 무슨 일이 일어나고 있는지에 대한 아이디어를 제공해야합니다. 이 문서가 여러분이 읽게 될 가장 즐거운 문서가 아니라는 사실을 직시합니다. 컴파일 로그 정규 표현식이 일반 정규 표현식보다 먼저 일치하도록 순차적으로 추가했습니다. 정규식을 필요에 맞게 조정하십시오.

편집 어떤 프레임을 분리 할 수 ​​없도록하려면 M-: (set-frame-parameter nil 'unsplittable t)해당 특정 프레임에서 평가할 수 있습니다 . FRAMEelisp에서 nil을 필수 로 바꾸십시오. 이 두 설정 사이에서 해당 프레임에서 파일을 특별히 찾지 않는 한 컴파일 프레임을 배타적으로 만들어야합니다.


문제는 항상 새로운 프레임을 열고 싶지 않다는 것입니다. 내가 원하는 것은 항상 'test'프레임에 표시되어야하는 'compilation-log'버퍼를 제외하고 모든 창을 'code'프레임으로 제한하는 것입니다. 모든 새 창을 기본 '코드'프레임으로 리디렉션하는 방법을 찾을 수 없습니다. 어쩌면 나는 질문에서 충분히 명확하지 않았다 = (
Renan Ranelli

기존 프레임이없는 경우에만 컴파일 로그의 새 프레임 만 열어야합니다. 무슨 일인지 말해 줄래? 프레임을 분리 할 수 ​​없게 만드는 방법에 대한 편집을 참조하십시오.
Vamsi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.