GNUEmacsManual:F
Emacs와 Mac OS / GNUstep(Emacs and Mac OS / GNUstep)
이번 절에서는 GNU/Linux 또는 다른 운영 체제나 native window system 이 지원되는 Mac OS X 에서 GNUstep 라이브러리와 함께 빌드된 Emacs를 사용하는 특이한 사례를 설명한다. Mac OS X 에서 Emacs는 window system 지원 없이, 또는 X11 을 지원하여, 또는 Cocoa 인터페이스를 지원하여 빌드할 수 있으며, 이번 절은 Cocoa build 에만 적용된다. 이는 10.4 이하 버전의 Mac OS X 는 지원하지 않는다.
역사적, 기술적인 이유로 Emacs는 "Cocoa" 또는 "Mac OS X" 대신 내부적으로 '
' 이란 용어를 사용하는데, 가령 이번 절에 설명된 명령어와 변수 대부분은 '
' 의 약어인 '
' 로 시작된다. NeXTstep은 1980년대에 NeXT 가 발매한 애플리케이션 인터페이스로, Cocoa는 직계 자손(direct descendant)에 해당한다. Cocoa 외에 다른 NeXTstep-style 시스템이자 무료 소프트웨어인 GNUstep도 있다. 이 시점부터 Emacs GNUstep 지원은 알파 상태지만 (504 페이지의 F.4절 [GNUstep 지원(GNUstep Support)] 참고) 향후에 개선할 수 있길 희망한다.
Mac OS와 GNUstep에서 기본적인 Emacs 사용(Basic Emacs usage under Mac OS and GNUstep)
기본적으로 alt 와 ⌥ Option 키는 Meta 와 동일하다. Mac 의 ⌘ Cmd 키는 Super 와 동일하고, Emacs는 다른 Mac / GNUstep 애플리케이션을 흉내내는 수식키를 이용해 키 바인딩 집합을 제공한다(503 페이지의 F.3절 [Mac / GNUstep Events] 참고). 이러한 바인딩은 평소대로 변경하면 된다(428 페이지의 33.3절 [키 바인딩(Key Bindings)] 참고).
변수는 오른쪽 alt 와 ⌥ Option 키의 동작을 제어한다. 이 키들은 값이 left(기본값)일 경우 왼쪽 키처럼 동작한다.
,
,
,
, 또는
의 값이 그러한 키들을 수식키처럼 작동하게 만드는데, 가령
로 주어지는 값은
와 동일한 키를 의미하고,
값은 Emacs 에게 그들을 무시하라고 말한다.
S-Mouse-1 은 Mouse-3 (
)과 마찬가지로 영역을 클릭 위치로 조정하고, S-Mouse-1 의 일반적 동작과 달리 기본 겉모습을 변경하기 위한 메뉴를 팝업하지 않는다(78 페이지의 11.11절 [텍스트 크기조정(Text Scale)] 참고). 이러한 변경으로 인해 Emacs 는 다른 Mac / GNUstep 애플리케이션에서 실행되는 것과 비슷하게 작동하게 된다.
메뉴를 이용하거나 Cmd-o 와 Cmd-S 바인딩을 이용해 파일 열기 또는 저장하기를 실행하면 Emacs는 파일명을 읽기 위해 그래픽 파일 대화창을 사용한다. 하지만 C-x C-f 와 같이 일반 Emacs 키 시퀀스를 사용할 경우 Emacs는 미니버퍼를 이용해 파일명을 읽는다.
GNUstep 의 X-windows 환경에서 X 일차 선택 영역으로 텍스트를 전달하기 위해선 C-w 또는 M-w 를 사용하는 대신 Cmd-c 를 사용해야 하는데, 그렇지 않으면 Emacs 는 "클립보드(clipboard)" 선택을 사용할 것이다. 마찬가지로 Cmd-y(C-y 대신)는 킬 링(
) 또는 클립보드가 아니라 X 일차 선택 영역으로부터 붙여넣기(yank)를 실행한다.
환경 변수의 Grabbing(Grabbing environment variables)
LaTeX 또는 man을 포함해 Emacs 에서 실행되는 많은 프로그램들은 환경 변수의 설정에 의존한다. 셸로부터 Emacs 를 시작하였다면 이러한 환경 변수들을 자동으로 상속할 것이고, 그 하위프로세스들은 그로부터 상속받을 것이다. 하지만 Emacs 가 Finder 로부터 시작되었다면 어떠한 셸의 자손(descendant)도 아니기 때문에 환경 변수가 설정되지 않으므로 Emacs 가 시작하는 하위프로세스는 Emacs 가 셸에서 시작할 때와 다르게 행동할 것이다.
PATH 와 MANPATH 변수들의 경우 Mac OS X 10.5 이상 버전에서는
파일과
디렉터리를 이용해 PATH 를 시스템 전반에 걸쳐 설정하는 방법이 권장된다.
Mac / GNUstep 맞춤화(Mac / GNUstep Customization)
Nextstep 포트에 특정적인 맞춤화 옵션이 몇 가지 있다. 예를 들어 이러한 옵션들은 수식키와 전체 화면 동작 등에 영향을 미친다. 그러한 옵션을 모두 확인하려면 M-x customize-group RET ns RET 를 사용한다.
폰트 및 색상 패널(Font and Color Panels)
표준 Mac / GNUstep 폰트 및 색상 패널은 Lisp 명령어를 통해 접근할 수 있다. Font Panel 은 M-x ns-popup-font-panel 을 이용해 접근할 수 있다. 이는 가장 최근에 사용하거나 클릭한 프레임에서 기본 폰트를 설정할 것이다.
M-x ns-popup-color-panel 을 이용해 색상 패널을 가져와 변경하고자 하는 Emacs 겉모습 위로 원하는 색상을 드래그할 수 있다. 일반 드래그는 전경색을 수정할 것이다. 시프트를 누른 상태에서 드래그를 실행하면 배경색이 수정될 것이다. 설정을 파기(discard)하려면 새 프레임을 생성하고 수정된 프레임을 닫아라.
이 컨텍스트에서 M-x list-faces-display 를 이용하면 모든 겉모습의 목록이 표시되므로 유용하다.
Mac OS X 10.5 이상 버전에서 Emacs는 기본적으로 Core Text 기반의 폰트 백엔드를 사용한다. 그보다 오래된 폰트 스타일을 선호한다면 Emacs가 시작되기 전에 명령행에서 아래의 내용을 입력한다.
% defaults write org.gnu.Emacs FontBackend ns
Mac OS / GNUstep에서 윈도잉 시스템 이벤트(Windowing System Events under Mac OS / GNUstep)
Nextstep 애플리케이션은 X에서 상응하는 것을 찾을 수 없는 특수 이벤트를 많이 수신한다. 이러한 이벤트들은 특별히 "키(keys)"로서 전송되고, 어떠한 키누름(keystrokes) 시퀀스에도 일치하지 않는다. 이러한 이벤트의 목록은 다음과 같다.
이 이벤트는 다른 Nextstep 애플리케이션이 Emacs에게 파일을 열도록 요청 시 발생한다. 일반적으로는 Finder 애플리케이션에서 사용자가 파일을 더블 클릭하여 발생한다. 기본적으로 Emacs는 새 프레임을 열어 그 안에서 파일을 방문함으로써 (
) 이 이벤트에 응답한다. 한 가지 예외로, 선택된 버퍼가
버퍼일 경우 Emacs 는 선택된 프레임에서 파일을 방문한다.<\ br>Emacs 가
이벤트에 응답하는 방법을 변경하려면
변수를 변경하면 된다. 기본값 '
' 가 방금 설명한 동작이다. 값이
일 경우, 항상 새 프레임에서 파일을 방문함을 의미한다.
값은 항상 기존 프레임에서 파일을 방문하는 것을 뜻한다.
이 이벤트는 다른 애플리케이션이 Emacs 에게 임시 파일을 열도록 요청할 때 발생한다. 기본적으로
이벤트를 발생시켜 처리되는데, 그 결과는 위에 설명한 것과 동일하다.
ProjectBuilder 와 gdb 를 포함한 일부 애플리케이션은 특정 파일뿐만 아니라 파일 내 특정 라인이나 라인의 시퀀스를 요청하기도 한다. Emacs는 파일을 열어 요청한 라인을 강조하여 이러한 요청을 처리한다(
).
이 이벤트는 사용자가 다른 애플리케이션의 파일을 Emacs 프레임으로 드래그할 때 발생한다. 드래그된 모든 파일의 내용을 현재 버퍼로 삽입하는 것을 기본 동작으로 한다(
). 드래그된 파일 목록은
변수에 보관된다.
이 이벤트는 사용자가 색상 웰(color well) (또는 다른 소스로부터)의 색상을 Emacs 버퍼로 드래그할 때 발생한다. 색상을 드래그한 목적지 영역의 전경색을 수정하는 것을 기본 동작으로 한다(
). ⇧ Shift 수식키를 이용해 해당 이벤트를 발행한 경우 Emacs 는 배경색을 대신 변경한다(
). 드래그된 색상명은
변수에 보관된다.
이 이벤트는 사용자가 Nextstep 폰트 패널에서 색상을 선택할 때 발생한다(Cmd-t 를 이용해 열 수도 있다). 선택된 프레임의 폰트를 조정하는 것을 기본 동작으로 한다(
). 선택된 폰트의 이름과 크기는 각각
와
변수에 보관된다.
이 이벤트는 사용자가 로그아웃을 하였는데 Emacs가 여전히 실행 중이거나 애플리케이션 메뉴에서 'Quit Emacs'를 선택할 때 발생한다. 파일을 방문하는 모든 버퍼를 저장하는 것을 기본 동작으로 한다.
Emacs 는 이름이 '
' 로 시작하고 서비스명으로 끝나는 명령어 집합을 통해 Nextstep 서비스를 사용하도록 허용하기도 한다. M-x ns-service-TAB 를 입력하면 이러한 명령어 목록을 확인할 수 있다. 이러한 함수들은 마크된 텍스트를 대상으로 작동(텍스트를 결과물로 대체하여)하거나 문자열 인자를 취하여 결과를 문자열로서 리턴한다. 임의의 문자열을 임의의 서비스로 전달하여 결과를 다시 수신하기 위해 Lisp 함수인
를 이용하는 방법도 있다. 새로 이용 가능한 서비스로 접근하려면 Emacs를 재시작할 필요가 있음을 명심한다.
GNUstep 지원(GNUstep Support)
GNUstep에서 Emacs를 빌드하고 실행할 수는 있지만 아직도 강조해야 할 문제들이 남아 있다. 관심이 있는 개발자들은 emacs-devel@gnu.org 로 연락을 취하길 바란다.