manywaypark's Blog
개발, 검색, 함수

GUI 버전을 많이 써서 그런지 매번 까먹는다. 잊지말자!!

M-` or F10


happy hackin'
이올린에 북마크하기(0) 이올린에 추천하기(0)

[TIP] 쓸만한 win32용 emacs

emacs 2009/03/11 09:25 by manywaypark
http://ourcomments.org/cgi-bin/emacsw32-dl-latest.pl

최신의 패치된 것을 받아서 깔면 win32에서도 웬만한 작업은 가능해진다.
(물론 입맛에 맞게하려면 좀 귀찮은 작업을 해 주어야겠지만...)

한가지 문제는,
C-SPC로 영역 선택하는 기능이 이상하게 동작하지 않았다.
<C-kanji> is undefined

일본 자판으로 인식된건가? 여하튼 다음을 ~/.emacs에 추가하면 해결 된다.
(global-set-key [C-kanji] 'set-mark-command)

참고: http://66.232.145.162/tc/68

happy hackin'
이올린에 북마크하기(0) 이올린에 추천하기(0)

[emacs/org-mode] 반복되는 항목?

emacs 2009/03/05 14:27 by manywaypark
매주, 매달, 매년 반복되는 항목은 어떻게 관리할까?
항목 밑에 SCHEDULED, DEADLINE 뒤에으로 표시되는 날짜필드(보통 <YYYY-mm-dd>형식)의 끝 부분에 +duration_num(d|w|m|y) 형태의 반복지시(repeater)를 덧붙이면 된다.
즉, 다음과 같은 형식이다.
* 국경일
** 삼일절
   SCHEDULED: <2009-03-01 Sun +1y>
day, week, month, year의 접미어를 쓸 수 있다.
M-x org-agenda를 입력한후 스크롤해서 내년으로 가보면 삼일절 항목이 스케줄에 표시되는 것을 볼 수 있을 것이다.

주간회의 같은 항목은 +1w를 써주면 매주 반복된다.

또한, TODO 항목의 경우 DONE으로 설정하기위해 C-c, C-t 를 누르면 항목 아래쪽에 -State "DONE"과 timestamp가 찍히고 자동으로 원래 SCHEDULEDDEADLINE으로 설정된 시각에 반복기간만큼의 시간이 더해져서 TODO 상태가 유지된다.
편리하지 않은가?

역시 편집기는 emacs - one and only.

참고: Using dates and times in Emacs org-mode

happy hackin'
이올린에 북마크하기(0) 이올린에 추천하기(0)
~/.Xdefaults file:
Emacs.FontBackend: xft
Xft.dpi: 96
Xft.hinting: None
Emacs.font:UnTaza-16

$ xrdb -merge ~/.Xdefaults

emacs-snapshot 에서만 동작을 확인했음.

happy hackin'
이올린에 북마크하기(0) 이올린에 추천하기(0)
문제: 보통 M-x shell을 써서 실행시킨 emacs shell에서는 다음과 같은 메시지와 함께 screen을 실행할 수 없다.
"Clear screen capability required."

해결: 그냥 shell말고 ansi shell(terminal)을 실행시키면 된다.
M-x ansi-term RET /bin/bash RET screen

ansi-term에서는 키바인딩이 shell과 달리 원래 bash의 바인딩이다. 즉, M-을 썼던 곳에 C-를 써야한다는 말이다.

문제: emacs에서 ansi-term을 실행시킨 후 ssh 등으로 원격 접속 한 다음 기존에 실행시켜 두었던 screen에 붙으려(attach) 할때 다음과 같은 메시지가 나오면서 제대로 실행 되지 않는다.
"Cannot find terminfo entry for 'eterm-color'."

해결: default 위치에 eterm-color 파일을 생성해준다.
sudo mkdir /usr/share/terminfo/e
sudo cp /usr/share/terminfo/E/Eterm-color /usr/share/terminfo/e/eterm-color

(Ubuntu에서는 /usr/share/terminfo/에 다른 것들은 다 소문자 인데 이상하게 e만 대문자로 되어있다. 내 경우에는 local에서 실행할 때는 잘 되었지만, ansi-term내에서 다른 박스로 접속후에 screen을 쓰려고 했을 때 eterm-color를 못찾는다는 메시지가 나오면서 제대로 실행되지 않았다.)

보너스: 다음 내용을 ~/.screenrc에 추가해보자.
shell -${SHELL}
caption always "%{= kc}%H (system load: %l)%-21=%{= .m}%Y.%m.%d(%D) %0c"

line #1: screen이 실행될 때 기본 shell 설정(~/.bash_profile 등)을 읽어들인다.
line #2: screen 화면에서 유용한 정보들(호스트 이름, 시스템 부하상태, 시간)을 표시한다.

참고:
http://www.omgili.com/newsgroups/gnu/emacs/help/mailman5350118812963732220help-gnu-emacsgnuorg.html
http://www.emacswiki.org/cgi-bin/wiki/GnuScreen
http://www.softpanorama.org/Utilities/Screen/screenrc_examples.shtml

happy hackin'
이올린에 북마크하기(0) 이올린에 추천하기(0)
tramp를 쓰면 간단히 해결된다.
TRAMP는 "Transparent Remote (file) Access, Multiple Protocol"의 줄임말이다.
.emacs에 다음 내용을 추가한다.

(require 'tramp)
(setq tramp-default-method "scp")


파일을 열때 (C-x C-f) 입력형식:
/host:path/to/file


원격 파일을 편집하는 도중에 M-x shell을 해보라. 원격지의 shell이 뜬다. 이게 아마도 file을 괄호친 이유일까?

언제봐도 emacs는 간결하고 아름답다.

2008-11-10 약간의 응용(로컬 파일을 루트 권한으로 다시 열기)
C-x C-f /sudo::/path/to/file RET

KLDP에 내가 답변으로 올렸던 글인데... 매번 까먹는다. 이놈의 건망증이란... Orz.


참고: Tramp: Remote File Editing in Emacs

happy hackin'
이올린에 북마크하기(0) 이올린에 추천하기(0)
TAG emacs, Remote
emacs의 nxml-mode를 사용하면, emacs에서 xml 파일들을 쉽게 편집할 수 있다.
nxml은 내부적으로 validation에 relaxng라는 xml schema 표기 형식을 사용하는데, docbook이나 xhtml같은 널리 쓰이는 문서형식에 대해서는 /usr/share/emacs/site-lisp/nxml-mode/schema/ 디렉토리에 *.rnc 파일들이 준비되어 있어서 쓰는데 별 문제가 없다. 그런데, custom dtd나 schema를 쓰려면 어떻게 해야할까?
trang을 사용해서 변환하면 된다.
$ trang /path/to/custom.dtd /path/to/custom.rnc
emacs의 메뉴에서 XML > Set Schema > File... 선택후 /path/to/custom.rnc를 입력하면 즉시 편집중인 문서의 validation을 실행하고 결과를 상태표시줄에 표시한다.
에러 있는 부분은 빨간 밑줄이 쳐지며, <C-c C-n>으로 에러있는 곳으로 바로 움직일 수도 있다.
유용한 편집 팁을 하나만 더 소개하자면, 마크업 부분 입력(eg, <do) 후에 <C-return>을 눌러보자. schema 상에서 그곳에 삽입을 허용하는 do로 시작하는 tag들이 예쁘게 줄을 선다 (문맥감지 자동완성 기능이라 맘대로 명명했다).

James Clark에게 경의를...

happy hackin'

이올린에 북마크하기(0) 이올린에 추천하기(0)
얼마전에 emacs를 21에서 22으로 버전업을 했는데, 미니 버퍼에서의 자동 완성 기능이 동작하지 않았다.
M-x 후에 몇 글자 입력하고 tab을 눌렀을 때 분명히 자동완성이 존재하는 문자열임에도 불구하고 "No completions of blabla~~"라고 표시되며 동작하지 않았다.
검색을 해도 쉽게 나오진 않았는데, 해결법은 의외로 간단했다. 참고
.emacs 파일에서 다음과 같은 라인을 찾아서
;; find a line like this in .emacs
(define-key minibuffer-local-map [tab] 'comint-dynamic-complete)
다음과 같이 바꾼다.
;; replace the line with this line
(define-key minibuffer-local-map "\t" 'comint-dynamic-complete)

emacs 새 버전의 reader의 구현이나 설정이 "[tab]" 같은 형태의 입력을 못 받아들이는 듯하다.

happy hackin'
이올린에 북마크하기(0) 이올린에 추천하기(0)
1 
분류 전체보기 (93)
잡담 (17)
함수형 언어 (30)
emacs (8)
java (13)
tips & tricks (21)
사랑 (0)
가사 (0)