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

[TIP] Emacs와 Qt Creator 연동?

emacs 2010. 3. 25. 12:03 by manywaypark
Windows에서는,
Qt Creator에서 Tools > Options... > Environment > General 선택 후
External Editor: path\to\emacsclientw.exe -n +%l:%c %f
로 설정하고,
현재 파일을 emacs에서 편집하고자 한다면, Edit > Advanced > Open in External Editor (Alt+V, Alt+I) 하면 된다.

몇몇 참고 사항:
emacsclientw.exe --help 는 emacs의 명령행 옵션을 알려준다.
Qt의 External Editor 설정 오른쪽의 물음표(?)를 누르면 외부 편집기 실행시 대치가능한 변수를의 목록을 볼 수 있다.

2011-06-13: Qt Creator 2.2(현재 최신)에서는, Tools > Options... > Environment > External Tools 선택 후 text 선택후 Add 버튼을 누른 후 적당한 이름(Edit in THE Editor) 입력한 다음,
Description: Opens the current file in Emacs
Executable: /path/to/runemacs.exe
Arguments: +%{CurrentDocument:Row}:%{CurrentDocument:Column} "%{CurrentDocument:FilePath}"
Working Directory:  %{CurrentDocument:Path}
로 설정.

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

M-` or F10


happy hackin'

[TIP] 쓸만한 win32용 emacs

emacs 2009. 3. 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

2011-06-13 추가: GNU emacs 설치 설명 http://www.cmc.edu/facultysites/math/FacMember/ALee/emacs/emacs.html
2012-01-18 추가: Caps Lock을 Ctrl로 만들기
                        (윈도에서는 영구적으로 없애는 방법이 제일 나은 듯하다).

2013-02-20 추가: http://vgoulet.act.ulaval.ca/en/emacs/ (ESS 및 몇몇 패키지들 미리 추가된 Windows, OSX 용 커스텀 배포판)

2013-04-14 추가: 우연찮게 상기 본문의 C-kanji가 발생하는 경우를 특정할 수 있게되었다. 새 노트북에서 shift+space로 한영전환을 하려고 키보드 설정을 키보드 종류3으로 변경했더니 그전에는 생기지 않았던 C-kanji 문제가 생겼다 (emacs는 cygwin에 포함되어 있는 것(emacs-w32)으로 상기본문과는 상관없는 버전이다. 아마 모든 상황에서 발생하는 듯하다).  

happy hackin'


version info:
os:
Windows XP (on Fujitsu Lifebook U1010)
emacs:
This is GNU Emacs 22.1.1 (i386-mingw-nt5.1.2600)
 of 2007-06-02 on RELEASE
distel:
revision 64


Distel을  make (base)로 설치시에 다음과 같은 오류가 나면서 멈추었다.

emacs -batch -f batch-byte-compile elisp/erlext.el
Cannot open load file: korea-util
make: *** [elisp/erlext.elc] Error 127

emacs 쪽에서 byte compile을 하다가 오류가 난거 같았는데, Makefile을 보니 좀 복잡했다.
그냥 혹시나 하는 마음에 앵무새짓거리 한번...
C:\home\hacking\erlang\distel>emacs -batch -f batch-byte-compile elisp/erlext.el

Loading subst-jis...
Loading subst-big5...
Loading subst-gb2312...
Loading subst-ksc...
Loading cl-extra...
Wrote c:/home/hacking/erlang/distel/elisp/erlext.elc

잉? 된건가?
C:\home\hacking\erlang\distel>make
make: Nothing to be done for `base'.

된거군!
(이유가 궁금하긴 하지만, Windows에서 일어난 일이므로 신경끈다.  ^^)

happy hackin'

문제: 보통 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'
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.

2017-03-22 포트번호 지정(default 22번이 아닐 때):
C-x C-f /ssh:test@host#2222:/tmp
ref: https://www.emacswiki.org/emacs/TrampMode#toc28


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'

2012-12-15:
상기 자동 완성 기능(nxml-complete)은 M-TAB으로 변경 되었다.
http://lists.gnu.org/archive/html/bug-gnu-emacs/2012-03/msg00696.html
http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6776

예전 스타일로 쓰고 싶다면 ~/.emacs에 다음과 같은 내용을 추가하자.
;; nxml mode key binding(old style): complete w/ C-return
(add-hook 'nxml-mode-hook
          '(lambda ()
             (define-key nxml-mode-map [C-return] 'nxml-complete)))


slime 설치, 한글 출력

함수형 언어/Lisp 2007. 3. 21. 14:53 by manywaypark
slime은 emacs를 환상적인 lisp IDE로 변신시켜준다.
cvs로 최신 소스를 받거나, 안정버전을 다운로드 한다(최신 개발 소스는 가끔 불안정한 경우도 있다).

~/.emacs에 추가할 내용(밑줄 부분은 자신의 설정에 맞게 변경):
;;; for slime
(setq inferior-lisp-program "/usr/bin/sbcl")
(add-to-list 'load-path "~/hacking/lisp/slime-2.0")
(require 'slime)
(slime-setup)
;;; for utf-8 coding system.
(set-language-environment "UTF-8")
(setq slime-net-coding-system 'utf-8-unix)
상단부는 slime 설정이고 하단부는 utf-8 관련 설정인데, utf-8 관련 설정을 하지 않으면 한글을 출력하려 할 때 다음과 같은 에러 메시지를 뿌리며 정상적인 실행이 안된다.
;;; (format t "한글")
Coding system iso-latin-1-unix not suitable for "00005a(:emacs-rex (swank:listener-eval \"(format t \\\"한글\\\")
\") \"COMMON-LISP-USER\" :repl-thread 8)

이제 남은 것은 M-x slime!!

happy hackin'

관련링크: slime home,cliki slime tips
1 2 
분류 전체보기 (306)
잡담 (20)
함수형 언어 (65)
emacs (16)
java (18)
tips & tricks (154)
사랑 (1)
가사 (0)
독서 (4)
mobile (6)
비함수형 언어 (2)

공지사항

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

03-28 15:58