GNUEmacsManual:18

From 흡혈양파의 번역工房
Jump to: navigation, search
프레임과 그래픽 디스플레이

프레임과 그래픽 디스플레이

Emacs는 X Windows System과 같은 그래픽 디스플레이에서 시작되면 그래픽 시스템 수준의 "창"을 차지한다. 본 매뉴얼에서는 이것을 프레임이라 부르고, "창"은 버퍼를 표시하는 데에 사용되는 프레임 부분을 지칭하도록 하겠다. 버퍼는 처음에 하나의 창을 포함하지만 다중 창으로 나눌 수 있다(156 페이지의 17장 [창] 참고). 프레임은 보통 메뉴 바, 툴 바, 에코 영역을 포함한다.


추가 프레임을 생성할 수도 있다(166 페이지의 18.6절 [프레임 생성하기] 참고). 동일한 Emacs 세션에서 생성된 모든 프레임은 기본 버퍼 및 기타 데이터에 대해 동일한 접근성을 가진다. 예를 들어 버퍼가 하나 이상의 프레임에 표시되고 있다면 하나의 프레임에서 해당 버퍼에 일어나는 모든 변경 사항은 다른 프레임에도 즉시 표시된다.


C-x C-c 를 입력하면 현재 디스플레이에 표시된 모든 프레임을 닫고, 다른 디스플레이에 열린 프레임이 없다면 Emacs 세션을 종료한다(15 페이지의 3.2절 [종료하기] 참고). 선택된 프레임만 닫으려면 C-x 5 0 을 입력한다(o가 아니라 0-숫자 이다.).


이번 장에서는 그래픽 디스플레이에 특정적인 Emacs 기능과 (특히 마우스 명령어) 다중 프레임을 관리하는 기능을 설명한다. 텍스트 터미널에서는 이러한 기능 중 다수가 이용 불가하다. 하지만 텍스트 터미널에서 다중 "프레임"을 생성하는 것은 가능하며, 그러한 프레임은 한 번에 하나씩 표시되어 전체 터미널 화면을 채운다(175 페이지의 18.19절 [창이 없는 터미널] 참고). 일부 텍스트 터미널에서는 마우스의 사용도 가능하다(GNU와 Unix 운영체제에서 이를 실행하는 방법은 176 페이지의 18.20절 [텍스트 전용 마우스] 참고, MS-DOS에서 실행 방법은 Specialized Emacs Features 의 "MS-DOS Mouse" 절을 참고). 메뉴는 모든 텍스트 터미널에서 지원된다.


편집을 위한 마우스 명령어

Mouse-1 사용자가 클릭하는 곳으로 포인트를 이동한다(
mouse-set-point
).


Drag-Mouse-1 선택된 텍스트 주변 영역을 드래그로 활성화하고, 일차 선택에 텍스트를 넣는다(
mouse-set-region
).


Mouse-2 사용자가 클릭하는 곳으로 포인트를 이동하고, 일차 선택의 내용을 그곳에 삽입한다(
mouse-yank-primary
).


Mouse-3 영역이 활성화되면 영역의 가까운 끝을 클릭 위치로 이동시킨다. 영역이 활성화되어 있지 않으면 포인트의 현재 값에 마크를 설정하고 클릭 위치에 포인트를 설정한다. 결과 영역은 킬 링에 저장하고, 두 번째로 클릭하면 제거한다(
mouse-save-then-kill
).


가장 기본적인 마우스 명령어는
mouse-set-point
로, 창의 텍스트 영역에서 왼쪽 마우스 버튼 Mouse-1 을 클릭하여 호출된다. 그러면 사용자가 클릭한 위치로 포인트가 이동한다. 해당 창이 선택된 창이 아니었다면 창이 선택된다.


보통은 사용자가 클릭한 프레임이 선택되어 있지 않은 프레임이라면 해당 프레임이 선택됨과 동시 창이 선택되고 커서가 설정된다. X Window System 에서는
x-mouse-click-focus-ignore-position
변수를
t
로 설정하여 이를 변경할 수 있다. 변경할 경우, 선택되지 않은 프레임을 처음으로 클릭하면 다른 일은 수행하지 않고 프레임을 선택하기만 하며, 두 번째로 클릭하면 창을 선택하여 커서 위치를 설정한다.


Mouse-1 을 누른 채로 마우스를 텍스트 위로 드래그래서 선택영역을 확장하면 해당 텍스트(
mouse-set-region
) 주변 영역을 활성화하여 사용자가 마우스 버튼을 누른 곳에는 마크를, 마우스를 해제한 곳에 포인트를 위치시킨다(45 페이지의 8장 [마크] 참고). 또한 영역 내 텍스트가 일차 선택이 된다(58 페이지의 9.3.2절 [일차 선택] 참고).


mouse-drag-copy-region
변수를
nil
이 아닌 값으로 변경할 경우 마우스를 드래그하여 선택 영역을 확장함으로써 텍스트를 kill ring 에 추가할 수도 있다. 기본값은
nil
이다.


창의 상단이나 하단에서 벗어나도록 마우스를 드래그시키면서 이동하면 마우스를 창으로 다시 가져올 때까지 창이 일정한 속도로 스크롤된다. 이를 통해 사용자는 화면에 들어맞지 않는 영역을 선택할 수 있다. 단계(step)별로 스크롤되는 행의 수는 마우스가 창 가장자리에서 얼마나 멀리 위치하는지에 따라 좌우되고,
mouse-scroll-min-lines
변수가 최소 단계의 크기를 명시한다.


중간 마우스 버튼 Mouse-2 를 클릭하면 사용자가 클릭한 위치로 포인트를 이동하여 일차 선택의 내용을 삽입한다(
mouse-yank-primary
). 58 페이지의 9.3.2절 [일차 선택]을 참고한다. 이러한 행위는 다른 X 애플리케이션과도 일관된다. 아니면 사용자가 클릭한 위치에 붙여넣기를 실행하도록 Mouse-2
mouse-yank-at-click
에 재바인딩을 할 수도 있다.


mouse-yank-at-point
변수를
nil
이 아닌 값으로 변경하면 Mouse-2 는 포인트를 이동시키지 않고 사용자가 어디를 클릭하든, 심지어 프레임의 어떤 창을 클릭하든 상관없이 포인트에 텍스트를 삽입한다. 이 변수는
mouse-yank-primary
mouse-yank-at-click
에 모두 영향을 미친다.


오른쪽 마우스 Mouse-3 을 클릭하면
mouse-save-then-kill
명령어가 실행된다. 이 명령어는 영역의 상태와 사용자가 클릭하는 위치에 따라 여러 가지 동작을 실행한다:
  • 활성화된 영역이 없을 때 Mouse-3 을 클릭하면 영역을 활성화하고, 포인트가 위치한 곳에 마크를, 클릭된 위치에 포인트를 위치시킨다.
  • 영역이 활성화되어 있을 때 Mouse-3 을 클릭하면 영역의 가까운 끝을 클릭된 위치로 이동시켜 조정한다. 조정된 영역의 텍스트는 킬 링으로 복사되고, 원본 영역의 텍스트가 이미 킬 링에 존재한다면 그것을 대체한다.
  • Mouse-1 을 두 번 또는 세 번 이용해 영역을 처음으로 명시하여 영역이 전체 단어나 행으로 구성되도록 정의된 경우 (164 페이지의 18.2절 [단어와 행 마우스] 참고) Mouse-3을 이용해 영역을 조정 시에도 전체 단어나 행별로 진행된다.
  • Mouse-3 을 동일한 위치에서 연속 두 번 사용하면 이미 선택된 영역을 제거한다. 따라서 마우스로 텍스트를 제거하는 가장 간단한 방법은 한쪽 끝에서 Mouse-1 을 클릭한 후 다른 끝에서 Mouse-3 을 클릭하는 방법이다. 버퍼에서 텍스트를 삭제하지 않고 킬 링으로 복사하기 위해서는 Mouse-3 을 한 번만 누르거나 Mouse-1 로 텍스트를 드래그한다. 그리고 나서 붙여넣기를 통해 다른 곳으로 복사한다.


mouse-save-then-kill
명령어 역시
mouse-drag-copy-region
(위에서 설명한) 변수를 따른다. 값이
nil
이 아닌 경우 명령어가 활성 영역을 설정하거나 조정할 때마다 영역 내 텍스트도 킬 링으로 추가된다. 최신 킬 링 엔트리가 동일한 방식으로 추가되면 새로운 엔트리를 만드는 대신 추가된 엔트리가 대체된다.


일반적인 마크 비활성화 방법 외에도 사용자는 위에서 설명한 마우스 명령어를 이용해 영역을 설정할 때마다 시프트를 이용하지 않은 커서 움직임 명령어를 잇따라 사용하면 마크를 비활성화시킬 수 있을 것이다. 49 페이지의 8.6절 [시프트 선택]을 참고한다.


마우스는 스크롤에 사용할 수 있는 "휠"을 갖고 있다. Emacs는 대부분의 그래픽 디스플레이에서 마우스 휠을 이용한 창 스크롤 지원을 기본값으로 한다. 이 기능을 토글하려면 M-x mouse-wheel-mode 를 이용한다.
mouse-wheel-follow-mouse
mouse-wheel-scroll-amount
변수는 어디에 그리고 얼마나 많은 버퍼를 스크롤할 것인지 결정한다.
mouse-wheel-progressive-speed
변수는 스크롤 속도와 마우스 휠을 움직이는 속도가 상관되는지 여부를 결정한다.


단어와 행에 대한 마우스 명령어

이러한 Mouse-1 의 변형체들은 한 번에 전체 단어나 행을 선택한다. Emacs는 킬 링으로 복사되는 선택된 텍스트 주변의 영역을 활성화한다.


Double-Mouse-1 사용자가 클릭하는 단어 주변의 텍스트를 선택한다.

"심볼" 구문(예: C 모드에서는 밑줄)으로 된 문자를 더블 클릭하면 해당 문자를 둘러싼 심볼을 선택한다. 닫힌 또는 열린 괄호 구문이 있는 문자를 더블 클릭하면 해당 문자가 시작되거나 끝나는 parenthetical grouping(괄호로 제시된 그루핑)를 선택한다. 문자열 구분 구문(예: C에서 작은 따옴표 또는 큰 따옴표)이 있는 문자를 더블 클릭하면 문자열 상수를 선택한다(Emacs는 발견법을 이용해 해당 문자가 시작에 있는지 아니면 끝에 있는지 알아낸다).


Double-Drag-Mouse-1 사용자가 드래그하는 텍스트를 전체 단어 형태로 선택한다.


Triple-Mouse-1 사용자가 클릭하는 행을 선택한다.


Triple-Drag-Mouse-1 사용자가 드래그하는 텍스트를 전체 행 형태로 선택한다.


마우스로 참조 따라가기

일부 Emacs 버퍼는 버퍼 또는 하이퍼링크를 포함하는데, 이는 활성화가 되고 나면 (예: 클릭을 통해) 어떠한 행동을 실행하는 (예: 참조 따라가기) 텍스트 조각들이다. 보통 버튼의 텍스트에 밑줄이 쳐져 있거나 주위에 상자가 그려져 시각적으로 강조된다. 마우스를 버튼 위로 이동시키면 마우스 커서 모양이 변하고 버튼에 불이 들어온다.
mouse-highlight
변수를
nil
로 변경하면 Emacs는 강조를 비활성화한다.


포인트를 버튼으로 올려 RET 를 입력하거나 버튼에서 Mouse-1 또는 Mouse-2 를 클릭하면 버튼이 활성화된다. 예를 들어 Dired 버퍼에서는 각 파일명이 버튼으로 되어 있으므로 그것을 활성화하면 Emacs가 해당 파일을 방문하게 된다(315 페이지의 27장 [Dired] 참고).
*Compilation*
버퍼에서는 각 오류 메시지가 버튼으로 되어 있고, 버튼을 활성화하면 해당 오류에 대한 소스 코드를 방문한다(261 페이지의 24.1절 [컴파일] 참고).


버튼에서 Mouse-1 을 클릭하면 보통은 버튼을 활성화하지만 마우스 버튼을 일정 시간 누르고 있다가 해제하면 (특히 450 밀리초 이상) Emacs는 버튼을 활성화하지 않고 사용자가 클릭한 위치로 포인트를 이동시킨다. 이 방법을 통해 사용자는 마우스를 이용해 버튼을 활성화하지 않고 포인트를 버튼 위로 이동시킬 수 있다. 마우스를 버튼 위로 드래그하면 영역을 설정하는 행위를 갖게 되므로 버튼이 활성화되지 않는다.


Mouse-1 이 버튼에 어떻게 적용되는지는
mouse-1-click-follows-link
변수를 맞춤화하여 변경할 수 있다. 값이 양의 정수일 경우에는 버튼 활성화를 취소하기 위해 마우스 버튼을 얼마나 오래 누르고 있어야 하는지를 결정하는데, 기본값은 앞의 단락에서 설명한 바와 같이 450 이다. 값이
nil
일 경우 Mouse-1 은 사용자가 클릭한 곳으로 포인트를 설정하기만 하고 버튼을 활성화하지는 않는다. 값이
double
이면 더블 클릭을 해야만 버튼이 활성화되고 한 번 클릭하면 포인트를 설정할 뿐이다.


보통은 버튼에서 Mouse-1 을 사용하면 선택되지 않은 창이라 하더라도 버튼을 활성화한다.
mouse-1-click-in-non-selected-windows
변수를
nil
로 변경하면, 선택되지 않은 창에서 버튼에 Mouse-1 을 클릭 시 마우스를 활성화하지 않고 포인트를 클릭된 위치로 이동시켜 그 창을 선택한다.


메뉴에 대한 마우스 클릭

CTRLSHIFT 수식키를 이용해 마우스를 몇 번 클릭하면 메뉴를 가져온다.


C-Mouse-1 버퍼를 선택하기 위한 메뉴다.

MSB ("mouse select buffer") 전역적 부 모드는 이 메뉴를 더 깔끔하고 맞춤화 가능하게 만든다. 155 페이지의16.7.3절 [버퍼 메뉴]를 참고한다.


C-Mouse-2 해당 메뉴는 faces와 다른 텍스트 속성을 연구하고 설정하기 위한 엔트리를 포함한다(설정은 주로 enriched 텍스트를 편집할 때 유용하다; 230 페이지의 22.13절 [Enriched 텍스트] 참고).


C-Mouse-3 모드 특정적인 메뉴다. 대부분 모드에서는 Menu-bar 모드가 켜져 있는데 이 메뉴는 모드 특정적인 메뉴바 메뉴들을 모두 합친 것과 동일한 항목을 갖는다. 일부 모드는 이 버튼에 대해 다른 메뉴를 명시한다. Menu Bar가 꺼져 있으면 이 메뉴는 모드 특정적인 항목뿐 아니라 메뉴 바에 존재할 법한 모든 항목을 포함하여 사용자가 메뉴 바를 표시할 필요 없이 접근할 수 있도록 한다.


S-Mouse-1 창 버퍼 내에 기본 face를 변경하기 위한 메뉴다. 78 페이지의 11.11절 [텍스트 크기조정]을 참고한다.


일부 그래픽 애플리케이션은 모드 특정적 메뉴에 Mouse-3 을 사용한다. Emacs에서 그러한 메뉴를 불러오는 데에
mouse-save-then-kill
명령어를 실행하는 대신 Mouse-3 을 선호하는 경우 다음 행을 init 파일로 추가함으로써 Mouse-3 을 재바인딩한다(432 페이지의 33.3.6절 [Init 재바인딩] 참고).
(global-set-key [mouse-3] 'mouse-popup-menubar-stuff)



모드 행 마우스 명령어

창 모드 행에서 마우스 클릭을 이용해 창을 선택하고 조작할 수 있다.


모드 행의 일부 영역, 즉 버퍼명, 주 모드명, 부 모드명과 같은 영역들은 고유의 특수 마우스 바인딩을 갖고 있다. 이러한 영역들은 사용자가 그 위에서 마우스를 누르고 있으면 강조되어 특수 바인딩에 관한 정보가 표시될 것이다(174 페이지의 18.17절 [툴팁] 참고). 이번 절에 소개된 명령어들은 그러한 영역에 적용되지 않는다.


Mouse-1
모드 행에서 Mouse-1 을 클릭하면 그것이 속한 창을 선택한다. 모드 행에 Mouse-1 을 드래그하면 창을 이동할 수 있으므로 위와 아래의 창 높이를 변경할 수 있다. 이렇게 마우스로 높이를 변경하면 창을 삭제하는 것이 아니라 최소 높이보다 작은 창이 되는 것을 거부할 뿐이다.


Mouse-2
모드 행에서 Mouse-2 를 클릭하면 해당 창을 확장시켜 그 프레임을 채운다.


Mouse-3
모드 행에서 Mouse-3 을 클릭하면 그것이 속한 창을 삭제한다. 프레임이 하나의 창만 갖고 있다면 아무 일도 실행하지 않는다.


C-Mouse-2
모드 행에서 Mouse-2 를 클릭하면 해당 창을 나누어 클릭 위치를 기준으로 경계가 생기는 두 개의 창이 나란히 생긴다(156 페이지의 17.2절 [창 분할] 참고).


나아가 나란히 위치한 두 개의 모드 행 사이의 구분자에 Mouse-1 을 클릭하여 드래그하면 세로 경계선을 왼쪽이나 오른쪽으로 이동시킬 수 있다.


창의 크기조정은
window-resize-pixelwise
값의 영향을 받음을 주목하고 156 페이지의 17.2절 [창 분할]을 참고한다.


프레임 생성하기

접두 키 C-x 5C-x 4 와 동일하다. 각 C-x 4 명령어는 선택된 프레임에서 다른 창에 버퍼를 팝업시키는 반면 (158 페이지의 17.4절 [팝업 창] 참고) C-x 5 명령어는 다른 프레임을 사용한다. 기존에 시각화 또는 아이콘화("최소화")된 프레임이 요청한 버퍼를 이미 표시하고 있다면 해당 프레임이 커져 아이콘화가 취소되며 ("최소화 취소"), 그 외의 경우에는 현재 디스플레이 터미널에 새로운 프레임이 생성된다.


다양한 C-x 5 명령어들이 선택할 버퍼를 검색하거나 생성하는 방법에 차이를 보인다:

C-x 5 2 새 프레임을 생성한다(
make-frame-command
).


C-x 5 b bufname RET 다른 프레임에서 bufname 이란 버퍼를 선택한다. 이는
switch-to-buffer-other-frame
을 실행시킨다.


C-x 5 f filename RET filename 이란 파일을 방문하여 다른 프레임에서 해당 버퍼를 선택한다. 이는
find-file-other-frame
을 실행시킨다. 123 페이지의 15.2절 [방문하기]를 참고한다.


C-x 5 d directory RET 다른 프레임에서 directory 디렉터리에 대한 Dired 버퍼를 선택한다. 이는
dired-other-frame
을 실행시킨다. 315 페이지의 27장 [Dired]를 참고한다.


C-x 5 m 다른 프레임에서 메일 메시지 작성을 시작한다. 이는
mail-other-frame
을 실행시킨다. 이것은 C-x m 의 other-frame(다른 프레임을 이용하는) 변형체이다. 350 페이지의 29장 [메일 전송하기]를 참고한다.


C-x 5 . 다른 프레임에서 현재 태그 테이블 내 태그를 검색한다. 이는 M-. 의 다중 프레임 변형체인
find-tag-other-frame
을 실행시킨다. 299 페이지의 25.3절 [태그]를 참고한다.


C-x 5 r filename RET 읽기 전용 파일 filename 을 방문하고 다른 프레임에서 해당 버퍼를 선택한다. 이는
find-file-read-only-other-frame
을 실행시킨다. 123 페이지의 15.2절 [방문하기]를 참고한다.


프레임 매개변수를 명시함으로써 새로 생성된 프레임의 외관과 행위를 제어할 수 있다. 172 페이지의 18.11절 [프레임 매개변수]를 참고한다.


프레임 명령어

프레임을 삭제하고 프레임에서 작업하는 데에 사용되는 명령어는 다음과 같다:


C-x 5 0 선택된 프레임을 삭제한다(
delete-frame
). 하나의 프레임만 존재할 경우 오류를 보낸다.


C-z 선택된 Emacs 프레임을 최소화(또는 "아이콘화")한다(
suspend-frame
). 15 페이지의 3.2절 [종료하기]를 참고한다.


C-x 5 o 다른 프레임을 선택하여 raise 시킨다. 명령어를 반복하면 터미널 상의 모든 프레임을 순환한다.


C-x 5 1 현재 터미널 상에서 선택된 프레임을 제외한 모든 프레임을 삭제한다.


M-<F10> 현재 프레임의 최대화 상태를 토글한다. 프레임이 최대화되면 화면을 채운다.


<F11> 현재 프레임에 대한 전체 화면 모드를 토글한다. ("전체 화면"과 "최대화"의 차이는 보통 전자의 경우 창 관리자 꾸미기를 숨기고 Emacs 자체에 약간 더 많은 화면 공간을 제공한다는 데에 있다.)


몇몇 창 관리자를 이용하면
frame-resize-pixelwise
변수를
nil
이 아닌 값으로 맞춤화하여 프레임을 진정으로 "최대화" 시키거나 "전체 화면"으로 만들 수 있음을 명심한다. 이 변수를
nil
이 아닌 값으로 설정하면 일반적으로 행과 열의 정수 배수보다는 픽셀 해상도에서 프레임의 크기 조정을 허용한다.


C-x 5 0 (
delete-frame
) 명령어는 선택된 프레임을 삭제한다. 하지만 Emacs 세션에서 마지막 프레임의 삭제는 거부하는데, 사용자가 Emacs 세션과 상호작용하는 기능의 손실을 방지하기 위함이다. Emacs가 daemon으로 실행되면 (393 페이지의 31.5절 [Emacs 서버] 참고) 일반 대화형 프레임이 삭제된 후에도 항상 "가상 프레임"이 남아 있음을 주목한다. 이런 경우 C-x 5 0 을 이용하면 마지막 대화형 프레임을 삭제하고,
emacsclient
를 이용하면 Emacs 세션으로 다시 연결할 수 있다.


C-x 5 1 (
delete-other-frames
) 명령어는 현재 터미널 상에서 다른 모든 프레임을 삭제한다(이 터미널이란 그래픽 디스플레이 또는 텍스트 터미널을 지칭하는 것으로, 175 페이지의 18.19절 [Non-Window 터미널] 참고). Emacs 세션이 다른 그래픽 디스플레이 또는 텍스트 터미널에서 열려 있는 프레임을 갖고 있을 경우 그러한 프레임은 삭제되지 않는다.


C-x 5 o (other-frame) 명령어는 현재 터미널에서 다음 프레임을 선택한다. 마우스 커서가 위치한 프레임을 선택하는 (혹은 포커스를 주는) 창 관리자가 있는 X Window System 에서 Emacs 를 사용하는 경우
focus-follows-mouse
변수를 t로 변경하면 이 명령어를 적절하게 적용시킬 수 있다. 그리고 나서 C-x 5 o 를 호출하면 선택된 프레임으로 마우스 커서를 래핑할 것이다.


폰트

Emacs는 그래픽 디스플레이에 10 포인트 동일 공간 글꼴을 이용해 텍스트를 표시하는 것이 기본값이다. 그 외 다른 폰트를 명시하는 방법에는 여러 가지가 있다:

  • '
    Options
    ' 메뉴에서 '
    Set Default Font
    '를 클릭한다. 그리고 나면 기존의 모든 그래픽 프레임에서 선택된 폰트를 기본 폰트로 만든다. 향후 모든 세션에서 이 설정을 저장하려면 '
    Options
    ' 메뉴에서 '
    Save Options
    '를 클릭한다.
  • init 파일에 행을 추가하고
    default-frame-alist
    변수를 수정하여 다음과 같이 폰트 매개변수를 명시한다(172 페이지의 18.11절 [프레임 매개변수] 참고):
    (add-to-list 'default-frame-alist
    	     '(font . "DejaVu Sans Mono-10"))
    

    이는 해당 init 파일로 Emacs를 재시작한 이후에 생성된 모든 그래픽 프레임에서 해당 폰트를 기본 폰트로 만든다.
  • 다음과 같이 사용자의 X 자원 파일에 '
    emacs.font
    ' X 자원 설정을 추가한다:
    emacs.font: DejaVu Sans Mono-12
    

    X 자원 파일이 효과를 적용하려면 X 를 재시작하거나
    xrdb
    명령어를 사용해야 한다. 493 페이지의 D.1절 [자원]을 참고한다. X 자원 파일에서 폰트 이름에 인용 부호를 붙여선 안 된다.
  • GNOME 데스크톱에서 Emacs 를 실행 중이라면
    font-use-system-font
    변수를
    t
    로 설정하여 (기본값은
    nil
    이다) Emacs에게 기본 시스템 폰트를 사용하라고 알릴 수 있다. 이것을 적용하려면 Emacs는 Gconf 지원으로 컴파일되어야만 한다.
  • 명령어 행 옵션 '
    -fn
    ' (or '
    --font
    ')을 이용한다. 487 페이지의 C.6 [폰트 X]를 참고한다.


현재 사용 중인 폰트를 확인하는 데에는 C-u C-x = 명령어가 유용하다. 이는 포인트에 위치한 문자를 설명하고, 렌더링되는 폰트를 명명한다.


X에서는 네 가지 방법을 이용해 "폰트명"을 표현할 수 있다. 첫 번째는 Fontconfig 패턴을 이용하는 것이다. Fontconfig 패턴은 다음 형태를 가진다:

fontname[-fontsize][:namel=valuesl][:name2=values2]...


이 포맷에서는 괄호 안의 어떤 요소든 생략될 수 있다. 여기서 fontname은 폰트의 family name으로서 '
Monospace
' 또는 '
DejaVu Sans Mono
'를 예로 들 수 있고, fontsize 는 폰트의 point size 이며 (한 프린터의 포인트는 1/76 인치 정도다), '
name=values
' 엔트리는 폰트의 굵기나 기울기와 같은 설정을 명시한다. 각 values는 단일 값으로 되어 있거나 콤마로 구분된 값 목록이 될 수 있다. 또한 일부 속성 값은 한 가지 종류의 속성명으로만 유효하여 '
name=
' 부분이 생략될 수도 있다.


공통적인 폰트 속성 목록을 소개하겠다:

'slant'
'
italic
', '
oblique
', '
roman
' 중 하나.


'weight'
'
light
', '
medium
', '
demibold
', '
bold
', '
black
' 중 하나.


'style'
일부 폰트는 기울기와 굵기가 결합한 특수 스타일을 정의한다. 가령 '
Dejavu Sans
'는 기울기와 굵기 속성을 오버라이드하는 '
book
' 스타일을 정의한다.


'width'
'
condensed
', '
normal
', '
expanded
' 중 하나.


'spacing'
'
monospace
', '
proportional
', '
dual-width
', '
charcell
' 중 하나.


Fontconfig 패턴의 예를 소개하겠다:

Monospace
Monospace-12
Monospace-12:bold
DejaVu Sans Mono:bold:italic
Monospace-12:weight=bold:slant=italic


Fontconfig 패턴의 자세한 설명은 Fontconfig와 함께 배포되는 Fontconfig 매뉴얼을 참고하거나 http://fontconfig.org/fontconfig-user.html에서 온라인으로 이용 가능하다.


두 번째로 폰트를 명시하는 방법은 GTK 폰트 패턴을 이용하는 방법이다. 이는 다음과 같은 구문을 가지는데,

fontname [properties] [fontsize]


여기서 fontname 은 family name 이고, properties 는 공백으로 구분된 속성 값의 목록이며, fontsize 는 포인트 크기다. GTK 폰트 패턴에 대해 사용자가 명시할 수 있는 속성은 다음과 같다:

  • 기울기 속성: '
    Italic
    ', '
    Oblique
    ' 중 하나. 생략 시 기본(roman) 기울기를 의미한다.
  • 굵기 속성: '
    Bold
    ', '
    Book
    ', '
    Light
    ', '
    Medium
    ', '
    Semi-bold
    ', '
    Ultra-light
    ' 중 하나. 생략 시 '
    Medium
    ' 굵기를 의미한다.
  • 너비 속성: '
    Semi-Condensed
    ', '
    Condensed
    ' 중 하나. 생략 시 기본 너비가 사용된다.


GTK 폰트 패턴의 예를 몇 가지 소개하겠다:

Monospace 12
Monospace Bold Italic 12


폰트를 명시하는 세 번째 방법은 XLFD (X 논리적 폰트 설명)를 사용하는 것이다. 이는 X에서 폰트를 명시하는 전형적인 방법이다. 각 XLFD는 다음과 같이 대시로 구분된 14개로 숫자나 단어로 구성된다:

-misc-fixed-medium-r-semicondensed—13-*-*-*-c-60-iso8859-1


XLFD 에서 와일드카드 문자('
*
')는 어떠한 문자 시퀀스에도 (문자가 없는 경우도 포함) 일치시키고, '?'는 어떠한 단일 문자에도 일치시킨다. 하지만 매칭은 구현 의존적(implementation-dependent)이므로 와일드카드가 긴 이름에서 대시에 일치하게 되면 부정확할 수도 있다. 신뢰성 있는 결과를 위해 14개 대시를 모두 제공하고 필드 내에서만 와일드카드를 사용한다. 대, 소문자는 XLFD 에서 중요하지 않다. XLFD 에 대한 구문은 다음과 같다:
-maker-family-weight-slant-widthtype-style... 
...-pixels-height-horiz-vert-spacing-width-registry-encoding


엔트리는 다음의 의미를 갖는다:

maker
폰트 제조사의 이름.


family
폰트 family의 이름(예: '
courier
').


weight
폰트 굵기로, 주로 '
bold
', '
medium
', '
light
' 중 하나다. 일부 폰트명은 다른 값을 지원하기도 한다.


slant
폰트 기울기로, 보통 '
r
' (로만체), '
i
' (이탤릭체), '
o
' (기울임), '
ri
' (역 이탤릭체), '
ot
' (기타) 중 하나다. 일부 폰트 이름은 다른 값을 지원하기도 한다.


widthtype
폰트 너비로, 보통 '
normal
', '
condensed
', '
semicondensed
', '
extended
' 중 하나다. 일부 폰트 이름은 다른 값을 지원하기도 한다.


style
선택적 추가 스타일명. 주로 비어 있고 대부분의 XLFD는 이 때 한 열에 2개의 하이픈을 가진다.


pixels
픽셀로 된 폰트 높이.


height
프린터의 포인트 10분의 1로 측정된 화면에서의 폰트 높이. 폰트의 포인트 크기 x 10의 값이다. 주어진 세로 해상도에 대해 height와 pixels는 비례하므로 둘 중 하나를 명시하고 나머지 하나는 '*'로 명시하는 것이 흔하다.


horiz
폰트를 사용하도록 의도된 화면의 수평 해상도로, 인치별 픽셀로 되어 있다.


vert
폰트를 사용하도록 의도된 화면의 수직 해상도로, 인치별 픽셀로 되어 있다. 보통 시스템에서 폰트의 해상도는 화면의 오른쪽 값이므로 이것과 horiz에 대해 '
*
'를 명시하는 것이 일반적이다.


spacing
이것은 '
m
' (동일 간격 글꼴), '
p
' (비례), '
c
' (문자 셀) 중 하나이다.


width
평균 문자 너비에 10을 곱한 픽셀 값.


registry encoding
폰트가 묘사하는 X 폰트 문자 집합. (X 폰트 문자 집합은 Emacs 문자 집합과 동일하진 않지만 비슷하다.)
xfontsel
프로그램을 이용해 사용자의 선택을 확인할 수 있다. 보통 registry 에 '
iso8859
'를, encoding 에 '
1
'을 사용한다.


폰트를 명시하는 마지막 네 번째 방법은 "폰트 별명"을 사용하는 방법이다. 특정 폰트는 별명이 짧아 일반 폰트 명세 대신 사용할 수 있다. 가령 '
6x13
'은 아래와 동일하다.
-misc-fixed-medium-r-semicondensed—13-*-*-*-c-60-iso8859-1


X 에서 Emacs 는 두 가지 유형의 폰트를 인식하는데, Xft 와 Fontconfig 라이브러리에 의해 제공되는 클라이언트측 폰트, X 서버 자체에서 제공하는 서버측 폰트가 그것이다. 대부분의 클라이언트측 폰트는 안티얼라이징이나 서브픽셀 힌팅(subpixel hinting)과 같은 고급 폰트 기능을 지원하는 반면 서버측 폰트는 그렇지 않다. Fontconfig와 GTK 패턴은 클라이언트측 폰트에만 매칭한다.


고정된 너비의 기본 폰트, 즉 모든 문자가 동일한 너비를 가진 폰트를 사용하길 원할 경우도 있다. Xft 와 Fontconfig 폰트의 경우
fc-list
를 사용하면 이용 가능한 고정 너비 폰트가 열거된다.
fc-list :spacing=mono fc-list :spacing=charcell


서버측 X 폰트의 경우는
xlsfonts
프로그램으로 이용 가능한 고정 너비 폰트 목록을 열거할 수 있다:
xlsfonts -fn '*x*' | egrep "~[0-9]+x[0-9]+" 
xlsfonts -fn '*-*-*-*-*-*-*-*-*-*-*-m*' 
xlsfonts -fn '*-*-*-*-*-*-*-*-*-*-*-c*'


XLFD 의 spacing 필드에 '
m
' 또는 '
c
' 가 있는 폰트는 모두 고정 너비 폰트이다. 특정 폰트가 어떤 모습인지 확인하기 위해서는
xfd
명령어를 사용한다. 예를 들어,
xfd -fn 6x13


위와 같이 사용하면 '
6x13
' 전체 폰트를 표시한다.


Emacs 를 실행하는 동안 특정 유형의 텍스트나 (74 페이지의 11.8절 [Faces] 참고) 특정 프레임에 (172 페이지의 18.11절 [프레임 매개변수] 참고) 대한 폰트를 설정할 수도 있다.


스피드바 프레임

스피드바(speedbar)는 다른 프레임을 편리하게 탐색하거나 프레임에서 작업하는 특수 프레임이다. 스피드바가 있을 경우 이는 부착된 프레임(attached frame)이라고 불리는 특정 프레임과 항상 상관되며, 모든 스피드바 연산은 그 프레임에서 작동한다.


M-x speedbar 를 입력하면 스피드바를 생성하여 현재 프레임에 상관시킨다. 스피드바를 없애려면 M-x speedbar 를 다시 입력하거나 스피드바를 선택한 후 q 를 입력한다. (다른 Emacs 프레임과 마찬가지로 스피드바 프레임을 삭제할 수도 있다.) 스피드바와 다른 프레임을 상관시키고 싶다면 제거한 후에 해당 프레임으로부터 M-x speedbar 를 호출한다.


스피드바는 다양한 모드로 작동이 가능하다. 기본 모드는 File Display 모드로, 부착된 프레임의 선택된 창의 현재 디렉터리 내 파일을 행별로 하나의 파일씩 표시한다. 파일명을 클릭하면 부착된 프레임의 선택된 창에서 해당 파일을 방문하고, 디렉터리를 클릭하면 스피드바에 해당 디렉터리를 표시한다(164 페이지의 18.3절 [마우스 참조] 참고). 각 행은 상자, '
[+]
', '
<+>
' 중 하나를 갖기도 하는데, 이를 클릭하면 해당 항목의 내용을 확장시킨다. 디렉터리를 확장시키면 해당 디렉터리의 내용을 디렉터리 고유의 행 아래에 스피드바 디스플레이로 추가한다. 일반 파일을 확장시키면 해당 파일 내 태그 목록을 스피드바 디스플레이로 추가하고, 태그명을 클릭하면 부착된 프레임의 선택된 창에서 해당 태그로 점프한다. 파일이나 디렉터리가 확장되면 '
[+]
'는 '
[-]
'로 바뀌고, 그 상자를 클릭하면 내용은 숨긴 채 항목을 축소시킨다.


키보드를 이용해 스피드바를 탐색하는 방법도 있다. 포인트가 스피드바의 행에 위치할 때 RET 을 입력하는 행위는 현재 행의 항목을 클릭하는 것과 동일하므로 SPC 는 항목을 확장 또는 축소시킨다. U는 현재 디렉터리의 부모 디렉터리를 표시한다. 현재 행의 파일을 복사, 삭제 또는 재명명하기 위해서는 각각 C, D, R을 입력한다. 새 디렉터리는 M 을 입력하여 생성한다.


또 다른 다용도 스피드바 모드로 Buffer Display 모드가 있는데, 이 모드에서는 스피드바가 Emacs 버퍼의 목록을 표시한다. 이 모드로 전환하려면 스피드바에서 b 를 입력한다. File Display 모드로 돌아가려면 f 를 입력한다. 스피드바 창 어디서든 mouse-3 을 클릭하고 (또는 모드 행에서 mouse-1 을 클릭) 팝업 메뉴의 'Displays'를 선택하면 디스플레이 모드를 변경할 수도 있다.


Rmail 모드, Info, GUD를 포함해 일부 주 모드는 사용자를 위해 유용한 항목을 스피드바로 넣는 특별한 방법을 갖고 있다. 예를 들어 Rmail 모드에서 스피드바는 Rmail 파일 목록을 표시하고, 사용자가 '
<M>
' 상자를 클릭하면 다른 Rmail 로 현재 메시지를 이동이 가능하도록 해준다.


스피드바의 사용 및 프로그래밍에 관한 상세한 내용은 Speedbar Manual 을 참고한다.


다중 디스플레이

단일 Emacs는 하나 이상의 X 디스플레이에 알림을 제공한다. 먼저 Emacs 는
DISPLAY
환경 변수 또는 '
--display
' 옵션(480 페이지의 C.2절 [초기 옵션] 참고)을 통해 명시된 하나의 디스플레이만 사용한다. 또 다른 디스플레이로 연결하기 위해서는
make-frame-on-display
명령어를 사용한다:

M-x make-frame-on-display RET display RET display 디스플레이에 새 프레임을 생성한다.


단일 X 서버는 하나 이상의 화면을 처리할 수 있다. 하나의 서버에 속한 두 개의 화면에서 프레임을 열면 Emacs는 그들이 하나의 키보드를 공유함을 알고, 이러한 화면들로부터 도착하는 명령어는 모두 하나의 입력 스트림으로 취급한다.


여러 다른 X 서버에서 프레임을 열면 Emacs는 각 서버마다 구분된 입력 스트림을 만든다. 각 서버는 고유의 선택된 프레임을 갖는다. 사용자가 특정 X 서버에서 입력하는 명령어는 해당 서버의 선택된 프레임에 적용된다.


프레임 매개변수

default-frame-alist
변수에서 프레임 매개변수(frame parameters)의 기본 목록을 명시하면 모든 프레임의 기본 외관과 행위를 제어할 수 있다. 그 값은 매개변수 이름과 해당 매개변수에 대한 값을 명시하는 엔트리로 이루어진 목록이어야 한다. 이러한 엔트리는 Emacs가 첫 프레임을 포함해 새 프레임을 생성할 때마다 적용된다.


예를 들어 다음 행을 init 파일로 추가하면 (437 페이지의 33.4절 [Init 파일] 참고) 기본 프레임 너비를 90개 문자 열로, 기본 프레임 높이는 40개 문자 행으로, 기본 폰트는 '
Monospace-10
'으로 설정 가능하다:
(add-to-list 'default-frame-alist '(width . 90)) 
(add-to-list 'default-frame-alist '(height . 40)) 
(add-to-list 'default-frame-alist '(font . "Monospace-10"))


프레임 매개변수와 그 효과에 대한 목록은 The Emacs Lisp Reference Manual 의 "Frame Parameters" 절을 참고한다.


초기 프레임에만 적용되는 프레임 매개변수의 목록은
initial-frame-alist
변수를 맞춤화하여 명시할 수도 있다.


Emacs가 X 툴킷을 사용하도록 컴파일될 경우 색상과 폰트를 명시하는 프레임 매개변수는 메뉴와 메뉴 바에 영향을 미치지 않는데, 그 이유는 Emacs가 직접 그리는 것이 아니라 툴킷에 의해 그려지기 때문이다.


스크롤 바

그래픽 디스플레이에는 각 Emacs 창의 측면에 스크롤 바가 있다. 스크롤 바의 위, 아래를 Mouse-1 로 클릭하면 창이 한 번에 하나의 행만큼 스크롤된다. 스크롤 바의 내부 상자의 위 또는 아래에서 Mouse-1 을 클릭하면 각각 M-vC-v 처럼 창의 전체 높이에 가깝게 창을 스크롤한다(17 페이지의 4.2절 [포인트 이동하기] 참고). 내부 상자를 드래그하면 연속으로 스크롤된다.


Emacs가 X 툴킷 지원 없이 Windows System 에 컴파일될 경우 스크롤 바는 다르게 행동한다. 스크롤 바 어디서든 Mouse-1 을 클릭하면 C-v 처럼 순방향으로 스크롤하는 반면 Mouse-3 을 클릭하면 M-v 처럼 역방향으로 스크롤한다. 스크롤 바에서 Mouse-2 를 클릭하면 내부 상자를 위, 아래로 드래그하도록 해준다.


스크롤 바의 사용 여부를 토글하려면 M-x scroll-bar-mode 를 입력한다. 이 명령어는 앞으로 생성될 프레임을 포함해 모든 프레임에 적용된다. 선택된 프레임에 대해서만 스크롤 바를 토글하려면 M-x toggle-scroll-bar 명령어를 사용한다.


시작 시 스크롤 바의 사용을 제어하려면
scroll-bar-mode
변수를 맞춤화한다. 그 값은
right
(스크롤 바를 창의 오른쪽 면에 둔다),
left
(왼쪽에 둔다),
nil
(스크롤 바를 비활성화한다) 중 하나가 가능하다. X Window System, MS-Windows 또는 Mac OS 에서 GTK+ 지원으로 컴파일되었다면 Emacs는 스크롤 바는 오른쪽에 두고, GTK+ 지원 없이 X Window System 에서 컴파일된 경우 왼쪽에 두는 것이 기본값이다(X 애플리케이션에 대한 오랜 규칙에 따라).


스크롤 바를 활성화 또는 비활성화하기 위해 X 자원 '
verticalScrollBars
' 를 사용할 수도 있다(493 페이지의 D.1절 [자원] 참고). 스크롤 바 너비를 제어하려면
scroll-bar-width
프레임 매개변수를 변경한다(The Emacs Lisp Reference Manual의 "Frame Parameters" 절 참고).


X 에서 (GTK+ 또는 Motif를 이용해) Emacs 를 이용 중이라면
scroll-bar-adjust-thumb-portion
변수를 맞춤화하여 스크롤 바의 오버스크롤(overscrolling)을 제어할 수 있는데, 버퍼의 끝이 눈에 보일 때에도 thumb을 아래로 드래그하는 경우를 예로 들 수 있겠다. 값이
nil
이 아니면 버퍼의 끝이 표시될 때에도 스크롤 바를 아래로 드래그할 수 있고,
nil
일 경우 버퍼의 끝이 표시되면 thumb은 하단에 위치할 것이다. 전체 버퍼가 보이면 오버스크롤을 실행할 수 없다.


스크롤 바의 시각적 모양은
scroll-bar
face 로 제어된다.


드래그 앤 드롭

대부분 그래픽 데스크톱 환경에서는 Emacs가 드래그 앤 드롭 연산을 기본적으로 지원한다. 예를 들어, Emacs 프레임에 텍스트를 드롭하면 드롭된 위치에 텍스트를 삽입한다. 파일을 Emacs 프레임에 드롭하면 해당 파일을 방문한다. 특별한 경우지만 Dired 버퍼에 파일을 드롭하면 파일을 (파일이 비롯된 애플리케이션의 규칙에 따라) 해당 버퍼에 표시된 디렉터리로 이동시키거나 복사한다.


파일을 드롭하면 보통 사용자가 드롭하는 창의 파일로 방문한다. 그러한 경우 새 창에서 파일을 방문하길 선호한다면
dnd-open-file-other-window
변수를 맞춤화한다.


XDND 와 Motif 의 드래그 앤 드롭 프로토콜과 오래된 KDE 1.x 프로토콜이 현재 지원된다.


메뉴 바

M-x menu-bar-mode 를 이용하면 메뉴 바의 사용을 토글할 수 있다. 인자를 사용하지 않으면 이 명령어는 전역적 부 모드인 Menu Bar 모드를 토글한다. 인자를 사용 시, 인자가 양수이면 이 명령어는 Menu Bar 모드를 켜고, 인자가 양수가 아니면 모드를 끈다. 시작 시 메뉴 바의 사용을 제어하려면
menu-bar-mode
변수를 맞춤화한다.


전문적 사용자는 이것을 사용하면 텍스트에 이용 가능한 추가 행을 하나 더 만드는 텍스트 터미널에서는 메뉴 바를 꺼놓곤 한다. 메뉴 바가 꺼져 있더라도 팝업 메뉴를 지원하는 디스플레이에서 C-Mouse-3 을 이용해 내용 메뉴를 팝업할 수 있다. 165 페이지의 18.4절 [메뉴 마우스 클릭]을 참고한다.


메뉴 바를 이용해 명령어를 호출하는 방법에 관한 정보는 9 페이지의 1.4절 [메뉴 바]를 참고한다. 메뉴 바 메뉴의 시각적 모양을 맞춤화하는 방법은 493 페이지의 부록 D [X 자원]을 참고한다.


툴 바

그래픽 디스플레이에서 Emacs는 각 프레임 상단, 메뉴 바 바로 아래에 툴 바를 놓는다. 툴 바는 마우스로 클릭하여 다양한 명령어를 호출하는 아이콘으로 이루어진 행이다.


전역적 (기본) 툴 바는 일반 명령어를 포함한다. 몇몇 주 모드는 고유의 툴 바를 정의하는데, 그러한 주 모드를 가진 버퍼가 현재 버퍼가 될 때마다 모드의 툴 바는 전역적 툴 바를 대체한다.


툴 바의 사용을 토글하려면 M-x tool-bar-mode 를 입력한다. 이 명령어는 앞으로 생성될 프레임을 포함해 모든 프레임에 적용된다. 시작 시 툴 바의 사용을 제어하려면
tool-bar-mode
변수를 맞춤화한다.


Emacs 가 GTK+ 지원으로 컴파일되면 각 툴 바 항목은 이미지나 텍스트 라벨, 또는 둘 다로 구성된다. Emacs 는 Gnome 데스크톱의 툴 바 스타일 설정을 따르는 것이 기본값이고, 정의된 설정이 없을 경우 툴 바 항목을 이미지로만 표시한다. 특정 툴 바 스타일을 이용하려면
tool-bar-style
변수를 맞춤화한다.


tool-bar-position
프레임 매개변수를 이용해 GTK+ 툴 바에 대한 툴 바의 배치를 제어할 수도 있다. The Emacs Lisp Reference Manual 의 "Frame Parameters" 절을 참고한다.


대화상자 사용하기

대화상자는 사용자에게 예-아니오 질문이나 다른 특수 질문을 하기 위한 특별한 유형의 메뉴이다. 마우스를 이용해 질문으로 이어지는 명령어를 호출할 경우 다수의 Emacs 명령어들이 대화상자를 이용해 예-아니오 질문을 한다.


대화상자의 사용을 비활성화하려면
use-dialog-box
변수를
nil
로 변경한다. 이런 경우 Emacs는 에코 영역과 키보드 입력을 이용해 항상 예-아니오 프롬프트를 실행한다. 이 변수는 파일 선택 창의 사용 여부도 제어한다(하지만 모든 플랫폼에서 지원되는 것은 아니다).


파일 선택 창은 파일명을 요청하는 특별한 유형의 대화상자다. 여전히 다른 유형의 대화창을 원한다 하더라도 파일 선택 창의 사용을 금하려면
use-file-dialog
변수를 맞춤화한다. 이 변수는
use-dialog-box
를 이용해 모든 대화상자의 사용을 금한 경우에는 어떠한 효과도 없을 것이다.


Emacs가 GTK+ 지원으로 컴파일되었다면 GTK+ "file chooser(파일 선택자)" 대화창을 사용한다. Emacs는 이 대화창에 또 다른 토글 버튼을 추가하여 해당 대화창에 숨겨진 파일 (점으로 시작되는 파일) 표시의 활성화와 비활성화가 가능하도록 한다. 기본적으로 이 토글을 활성화하고 싶다면
x-gtk-show-hidden-files
변수를
t
로 변경한다. 또한 Emacs는 GTK+ 파일 선택자 대화창에 도움말 텍스트를 추가하는데, 도움말 텍스트를 비활성화하려면
x-gtk-file-dialog-help-text
변수를
nil
로 변경한다.


툴팁

툴팁은 현재 마우스 위치에 텍스트 정보를 표시하는 작은 창이다. 툴팁은 창에 중요한 텍스트 조각, 모드 행 또는 Emacs 프레임에서 툴 바 버튼이나 메뉴 항목과 같은 부분에 마우스를 이용할 때 pause가 발생하면 활성화된다.


툴팁의 사용은 M-x tooltip-mode 명령어를 이용해 토글할 수 있다. 툴팁 모드가 비활성화되면 도움말 텍스트가 에코 영역에 대신 표시된다. 시작 시 툴팁의 사용을 제어하려면
tooltip-mode
변수를 맞춤화한다.


tooltip-delay
변수들은 Emacs 가 툴팁을 표시하기까지 얼마나 오래 기다려야 하는지 명시한다. 툴팁 표시에 대한 추가 맞춤화 옵션은 M-x customize-group RET tooltip RET 을 사용한다.


Emacs가 GTK+ 지원으로 빌드되었다면 GTK+ 툴팁의 기본 모양을 이용해 GTK+를 통해 툴팁을 표시한다. 이를 비활성화하려면
x-gtk-use-system-tooltips
변수를
nil
로 변경한다.
nil
로 변경하거나 Emacs가 GTK+ 지원 없이 빌드된 경우, 대부분의 툴팁 텍스트 속성은
tooltip
face 와 X 자원에 의해 명시된다(493 페이지의 부록 D [X 자원]을 참고).


GUD 툴팁은 GUD로 프로그램을 디버깅할 때 변수의 값을 표시하는 특수 툴팁이다. 267 페이지의 24.6.2절 [디버거 연산]을 참고한다.


마우스 회피

그래픽 터미널에서는 마우스 포인터가 Emacs 프레임의 텍스트를 흐릿하게 만들 수도 있다. Emacs는 이 문제를 피하는 방법을 두 가지 제공한다.


첫째, Emacs는 포인터가 Emacs 프레임 안에 위치한 경우 사용자가 자체 삽입하는(self-inserting) 문자를 입력할 때마다 마우스 포인터를 숨기고, 마우스 포인터를 이동하면 다시 나타난다. 이 기능을 비활성화하려면
make-pointer-invisible
변수를
nil
로 설정한다.


둘째, 포인트로부터 마우스 포인터를 떨어뜨려 놓기 위해 Mouse Avoidance 모드라는 부 모드를 사용할 수 있다. Mouse Avoidance 모드를 사용하려면
mouse-avoidance-mode
변수를 맞춤화한다. 이 변수를 다양한 값으로 설정하면 마우스를 여러 방법으로 이동시킬 수 있다:


banish
어떤 키 누름에도 포인터를 프레임의 가장자리로 이동시킨다. 포인트가 사라질 때 어디로 갈 것인지 명시하도록
mouse-avoidance-banish-position
변수를 맞춤화할 수 있다.


exile
커서가 너무 가까워질 때에만 포인터를 사라지게 하고 커서가 비키면 돌아오도록 한다.


jump
커서가 포인터에 너무 가까워지면 포인터를 무작위 거리와 방향으로 옮긴다.


animate
jump
와 같지만 움직임 착시(illusion)를 위해 가는 길에 단계를 표시한다.


cat-and-mouse
animate
와 동일하다.


proteus
animate
와 같지만 마우스 포인터의 모양도 변경한다.


모드를 활성화하도록 M-x mouse-avoidance-mode 명령어를 사용하는 방법도 있다. 해당 명령어를 사용하면 Mouse Avoidance 모드가 마우스를 움직일 때마다 프레임도 raise한다.


창을 사용하지 않는 (Non-Window) 터미널

Emacs는 텍스트 터미널에서 한 번에 하나의 Emacs 프레임만 표시할 수 있다. 하지만 여전히 여러 개의 Emacs 프레임을 생성하여 전환할 수는 있다. 이러한 터미널에서 프레임을 전환하는 것은 여러 창 설정을 전환하는 것과 많이 비슷하다.


C-x 5 2 를 이용하면 새 프레임을 생성하여 전환하고, C-x 5 o 는 기존 프레임을 순환하며, C-x 5 0 은 현재 프레임을 삭제한다.


각 프레임에는 그것을 구별하는 숫자가 있다. 한 번에 하나의 프레임만 표시할 수 있는 터미널을 사용 중이라면 선택된 프레임의 번호 n 이 모드 행의 시작 근처에 '
Fn
' 형태로 나타난다.


'
Fn
'은 사실 프레임의 초기 이름이다. 원한다면 프레임에 더 의미 있는 이름을 부여하여 그 이름을 이용해 해당 프레임을 선택할 수도 있다. M-x set-frame-name RET name RET 명령어를 이용해 선택된 프레임에 대해 새 이름을 명시하고, M-x select-frame-by-name RET name RET 명령어를 이용해 프레임 이름으로 해당 프레임을 선택한다. 프레임이 선택되면 사용자가 명시한 이름이 모드 행에 표시될 것이다.


텍스트 터미널에서 마우스 사용하기

일부 텍스트 터미널은 터미널 창에 마우스 클릭을 지원한다.


xterm
과 호환되는 터미널 에뮬레이터(terminal emulator)에서 사용자는 M-x xterm-mouse-mode 를 이용해 Emacs 에게 마우스의 간단한 사용에 대한 통제권을 부여할 수 있는데, 기본적으로 수정되지 않은 단일 클릭만 지원된다. 그러한 클릭에 대한 일반
xterm
마우스 기능은 SHIFT 키를 누르면서 마우스 버튼을 누르면 여전히 이용할 수 있다. Xterm Mouse 모드는 전역적 부 모드이다(200 페이지의 20.2절 [부 모드] 참고). 명령어를 반복하면 모드가 다시 꺼진다.


GNU/Linux 의 콘솔에서는 M-x gpm-mouse-mode 를 이용해 마우스 지원을 활성화할 수 있다. 이것을 작동시키기 위해서는 시스템에 설치 및 실행 중인 gpm 서버가 있어야 한다.


MS-DOS 에서 마우스 지원에 관한 정보는 Specialized Emacs Features 의 "MS-DOS Mouse"절을 참고한다.


Notes