E D R , A S I H C RSS

Emacs

TextEditor ์ž…๋‹ˆ๋‹ค. vim๊ณผ CrimsonEditor ์™€ ๊ฐ™์€ ๋ชฉ์ ์œผ๋กœ ์“ฐ์ž…๋‹ˆ๋‹ค.

vim์—์„œ๋Š” ๊ธฐ๋ณธ ๋ชจ๋“œ๊ฐ€ ํ•ญ์ƒ ํŽธ์ง‘ ๋ชจ๋“œ์ด๊ณ  ์“ธ์ˆ˜์žˆ๋Š” mode๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ๋Š” ๋ฐ˜๋ฉด์—, emacs์—์„œ๋Š” ์ฃผ ๋ชจ๋“œ์™€ ๋ถ€ ๋ชจ๋“œ๋ฅผ ์ž…๋ง›์— ๋งž๊ฒŒ ๋ฐ”๊พธ์–ด ์“ธ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์šฉ์ž๋Š” text-mode๋ผ๋Š” ํ…์ŠคํŠธ ๋ฌธ์„œ๋ฅผ ํŽธ์ง‘ํ•˜๊ณ  ์ž‘์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ์ฃผ ๋ชจ๋“œ๋ฅผ ์“ฐ๋ฉด์„œ, ๊ธ€์ž์˜ ์ƒ‰์„ ๋ฐ”๊ฟ”์ฃผ๊ฑฐ๋‚˜ ๋“ค์—ฌ์“ฐ๊ธฐ ๋‚ด์–ด์“ฐ๊ธฐ๋“ฑ์„ ์‚ฌ์šฉ์ž ์ •์˜๋Œ€๋กœ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ถ€ ๋ชจ๋“œ๋ฅผ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


  • ํ‰์†Œ์— ๋„ˆ๋ฌด IDE์— ์˜์กดํ•œ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด์„œ ๋ฒ”์šฉ์ ์ธ TextEditor๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ž๋Š” ๊ฒฐ์‹ฌ์„ ํ•˜๊ณ  ์“ฐ๋Š”๋ฐ ์–ด๋ ค์› ๋˜ ์‚ฌํ•ญ์„ ๊ธฐ๋กํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
    • emacs ๋ฅผ ์˜ค๋žซ๋™์•ˆ ์จ์˜จ ์ž…์žฅ์—์„œ IDE ์ •๋„๋Š” ์˜์กดํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค. OS ์˜์กด์„ ๋ฒ—์–ด๋‚˜๋Š”๊ฒŒ ๋” ์ค‘์š”ํ•œ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • Download๋Š” ์—ฌ๊ธฐ์„œ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์œˆ๋„์šฐ์ฆˆ ์šฉ์ด๋ผ ๋ฒ„์ „์ด ์•ฝ๊ฐ„ ๋‚ฎ๋„ค์š”.
๋ฐ›์•„์„œ ์••์ถ•์„ ํ’€๊ณ  ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์œ„ ํด๋”์ค‘์— bin ํด๋”๊ฐ€ ์žˆ๋Š”๋ฐ ๊ทธ ์•ˆ์— ์žˆ๋Š” ์‹คํ–‰ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ตœ์†Œ mac ๊ฐ€๋Šฅํ•œ ubuntu ์—์„œ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์ •์‹ ๊ฑด๊ฐ•์— ์ข‹์Šต๋‹ˆ๋‹ค. ecb, cedet ๋“ฑ์„ ์ปค๋งจ๋“œ ํ•œ๋ฒˆ์— ์„ค์น˜ ํ•˜๋А๋ƒ, ์—ฌ๋Ÿฌ๋ฒˆ ๊ฑฐ์ณ์„œ ์„ค์น˜ํ•˜๋А๋ƒ๋Š” ํ•˜๋Š˜๊ณผ ๋•… ์ฐจ์ด์ž…๋‹ˆ๋‹ค. ์œˆ๋„์šฐ๋Š” ๊ฐœ๋ฐœ์ž์˜ OS ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค

Emacs Mode

Major Mode

Minor Mode

Tramp

  • emacs ํ™˜๊ฒฝ ๊ทธ๋Œ€๋กœ remote/ssh/docker/sudo ๋“ฑ์„ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.
    • emacs ๋Š” dired mode ๋Š” ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•˜๊ณ  browse ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, tramp ๋ฅผ ํ™œ์šฉํ•˜์—ฌ remote ๋ฅผ local ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • shell-mode ์™€๋„ ์ž˜ ๊ฒฐํ•ฉํ•˜์—ฌ remote ์— ์‰˜๋กœ ๋ฐ”๋กœ ๋–จ์–ด์งˆ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์˜›๋‚ ๋ถ€ํ„ฐ multi-hop ์ ‘์†๋„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ssh ์„ค์ •์ด ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค
  • tramp ๋กœ sudo ์‚ฌ์šฉํ•˜๊ธฐ : M-x-f /sudo::/etc/
  • tramp ๋กœ ssh ์‚ฌ์šฉํ•˜๊ธฐ : M-x-f /ssh:you@remotehost|sudo:remotehost:/path/to/file


Python ์‚ฌ์šฉํ•˜๊ธฐ

์ด๋ฅผ ์œ„ํ•ด ๋จผ์ € PythonMode๋ฅผ Downloadํ•ฉ๋‹ˆ๋‹ค.
๋ฌผ๋ก  Python์ด ์ด๋ฏธ ์„ค์น˜๋˜์–ด์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Python์„ Emacs์—์„œ ์“ฐ๋ ค๋‹ˆ๊นŒ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •ํ•˜๋Š”๋ฐ ํ•œ ๋ฒˆ ์‚ฝ์งˆํ•˜๊ณ  ๊ฒฝ๋กœ ์žก์•„์ฃผ๋Š”๋ฐ ๋˜ ์‚ฝ์งˆ ํ–ˆ์Šต๋‹ˆ๋‹ค.

Emacs๋Š” HOME ์ด๋ผ๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ์‚ฌ์šฉ์ž ์„ค์ • ํŒŒ์ผ์ธ .emacs(์ด๋ฆ„ ์•ž์— ์  ํ•˜๋‚˜ ์žˆ์Šต๋‹ˆ๋‹ค.)ํŒŒ์ผ์„ ์ฝ์–ด๋“ค์ž…๋‹ˆ๋‹ค. ์ด ํ™˜๊ฒฝ๋ณ€์ˆ˜์—๋Š” ๊ฒฝ๋กœ๊ฐ€ ๋“ค์–ด๊ฐ€๋Š”๋ฐ ๊ทธ ๊ฒฝ๋กœ์— ์‚ฌ์šฉ์ž ์„ค์ • ํŒŒ์ผ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ œ์–ดํŒ->์‹œ์Šคํ…œ->๊ณ ๊ธ‰->ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์•ˆ์— HOME์ด๋ผ๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ๊ทธ ๊ฒฝ๋กœ ๋ฐ‘์— .emacs๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. .emacs ํŒŒ์ผ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งŒ๋“ญ๋‹ˆ๋‹ค.
 (autoload 'python-mode "python-mode" "Python Mode." t)
 (add-to-list 'auto-mode-alist '("\.py\'" . python-mode))
 (add-to-list 'interpreter-mode-alist '("python" . python-mode))

๊ฒฝ๋กœ ์žก์•„์ฃผ๊ธฐ๋Š” ์ˆœ์ „ํžˆ ์ฃผ๋ณ€์ง€์‹์ด ๋ถ€์กฑํ•œ ํƒ“์ด์—ˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ด์„  ํด๋”๊ฐ€ ์œˆ๋„์šฐ ํ™˜๊ฒฝ๋ณ€์ˆ˜์ธ PATH์— ๋“ฑ๋ก๋˜์ง€ ์•Š์•„์„œ ๊ทธ๋žฌ์Šต๋‹ˆ๋‹ค. ์ด ์—ญ์‹œ ์ œ์–ดํŒ->์‹œ์Šคํ…œ->๊ณ ๊ธ‰->ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์•ˆ์—์„œ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.emacs

  • ์ด๋งฅ์Šค ์„ค์ • ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž์˜ HOME ๋””๋ ‰ํ† ๋ฆฌ ๋ฐ‘์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • Emacs ์ฒ˜์Œ ์„ค์น˜ ์‹œ์—๋Š” ํ•ด๋‹น ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿด ๋•Œ๋Š” ๋‹นํ™ฉํ•˜์ง€ ๋งˆ์‹œ๊ณ  HOME ๋””๋ ‰ํ† ๋ฆฌ ๋ฐ‘์— .emacs๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • GNU Emacs ์‚ฌ์šฉ์‹œ Windows 7 ํ™˜๊ฒฝ์—์„œ c:\Users\UserName\AppData\Roaming ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
    • .emacs ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ํŽธ์ง‘ํ•  ํ•„์š”๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ์—๋Š” C-x-f ~/.emacs๋กœ ํ•ด ์ฃผ๋ฉด Windows ํ™˜๊ฒฝ์—์„œ๋„ ์•Œ์•„์„œ HOME ๋””๋ ‰ํ† ๋ฆฌ ๋ฐ‘์— ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.
  • ntemacs ์—์„œ๋Š” C:\Documents and Settings\UserName\Application Data ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

.emacs.d

  • Emacs์—์„œ ๋ฐ›๋Š” ๋ช‡๋ช‡ ํŒŒ์ผ๋“ค์ด ๋‹ค์šด๋˜๋„๋ก ์ง€์ •๋œ ๋””๋ ‰ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค.
  • ์ฃผ๋กœ Emacs Wiki์—์„œ ๋ฐ›์€ ํŒŒ์ผ๋“ค์ด๋‚˜ ๋‹ค์–‘ํ•œ .el ํŒŒ์ผ๋“ค์„ ๋„ฃ๋Š” ๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ELPA์—์„œ ๋ฐ›์€ ํŒŒ์ผ๋“ค๋„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด์ชฝ์œผ๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

emacs์˜ ์œ ์šฉํ•œ ํ™•์žฅ ๊ธฐ๋Šฅ

ELPA

  • Emacs Package Manager
  • Emacs์˜ ํ™•์žฅ ๊ธฐ๋Šฅ์€ .el(Emacs Lisp ํ™•์žฅ์ž) ํŒŒ์ผ์„ ์ฝ์–ด์˜ค๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค. ๋”ฐ๋ผ์„œ .el ํŒŒ์ผ๋งŒ ์žˆ์œผ๋ฉด ํ™•์žฅ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ELPA ์ด์ „๊นŒ์ง€๋Š” ํ†ต์ผ๋œ .el ํŒŒ์ผ์˜ ๋ฐฐํฌ ๋ฐฉ๋ฒ•์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ์ง์ ‘ ํŒŒ์ผ์„ (EmacsWiki๋‚˜ github์ด๋‚˜ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ) ๋‹ค์šด๋ฐ›์•„์•ผ ํ•˜๋Š” ๋ถˆํŽธํ•จ์„ ๊ฐ์ˆ˜ํ•ด์•ผ ํ–ˆ๋‹ค. ELPA๋Š” ์ด๋Ÿฌํ•œ ํฉ์–ด์ง„ ํŒŒ์ผ(= ํ™•์žฅ ๊ธฐ๋Šฅ)๋“ค์„ ํ†ตํ•ฉํ•ด์„œ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.
  • ์„ค์น˜
    • Emacs ๋ฒ„์ „ 24 ์ดํ›„๋ถ€ํ„ฐ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํฌํ•จ๋˜์–ด ์žˆ์Œ.
    • Emacs 23๊นŒ์ง€
      • package.el์„ ์ปดํ“จํ„ฐ์— ์ €์žฅํ•œ๋‹ค. ์ €์žฅ ์œ„์น˜๋Š” ์•„๋ฌด ๊ณณ์ด๋‚˜ ์ƒ๊ด€ ์—†์ง€๋งŒ ๋˜๋„๋ก์ด๋ฉด HOME ๋””๋ ‰ํ† ๋ฆฌ์— .emacs.d ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ทธ ์•ˆ์— ๋„ฃ์–ด ์ฃผ๋„๋ก ํ•˜์ž.
      • .emacs ํŒŒ์ผ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ ๋Š”๋‹ค.

(load-file "~/.emacs.d/package.el")

(require 'package)

; Add package-archives
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t)
(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))

; Initialize
(package-initialize)
  • ์‚ฌ์šฉ๋ฒ•
    • M-x package-list-packages๋กœ ๋‹ค์šด ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” Package list๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Œ.
    • ํ•ด๋‹น ํŒจํ‚ค์ง€ ์ค„์—์„œ i(install)๋กœ ์„ค์น˜ํ•  ํŒจํ‚ค์ง€์˜ ์„ ํƒ, d(delete)๋กœ ์ง€์šธ ํŒจํ‚ค์ง€ ์„ ํƒ, x(execute)๋กœ ์„ ํƒ๋œ ์ž‘์—…๋“ค ์‹คํ–‰.
    • ๊ฐ•์ œ ์‚ญ์ œ : d -> e(ํ˜น์€ x)๋กœ ํ•ด๋‹น ํŒจํ‚ค์ง€๋ฅผ ์ง€์šธ ์ˆ˜ ์žˆ๊ธด ํ•œ๋ฐ ์ œ๋Œ€๋กœ ์ง€์›Œ์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข€ ์žˆ๋‹ค(...). ๊ทธ๋Ÿด ๊ฒฝ์šฐ๋Š” ํ•ด๋‹น ํŒŒ์ผ์ด ELPA์˜ ํด๋” ์•ˆ์— ๋“ค์–ด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ~/.emacs.d/elpa์— ๋“ค์–ด๊ฐ€์„œ ํ•ด๋‹น ํŒจํ‚ค์ง€์˜ ํด๋”๋ฅผ ์ง€์›Œ๋ฒ„๋ฆฌ๋ฉด ๋œ๋‹ค. ๊ทธ ํ›„ Emacs๋ฅผ ๋‹ค์‹œ ๊ธฐ๋™ํ•ด์„œ M-x package-list-packages๋ฅผ ๋ณด๋ฉด ํ•ด๋‹น ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜ ํ•ญ๋ชฉ์—์„œ ์ง€์›Œ์ง„ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.
  • ์ถ”์ฒœ ํŒจํ‚ค์ง€ : Anything or helm, auto-complete, tabbar, ecb, yasnippet

CEDET

CEDET์ด๋ž€?
collection of emacs development tool์˜ ์•ฝ์ž๋กœ์„œ, makeํŒŒ์ผ์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ automakeํŒŒ์ผ ๊ตฌ์„ฑ์— ๋„์›€์„ ์ฃผ๊ณ , compileํ•˜๊ธฐ ์‰ฝ๋„๋ก ๋„์™€์ฃผ๋Š” ๋“ฑ, emacsํ™˜๊ฒฝ์„ ๋”์šฑ ํ’์„ฑํ•˜๊ฒŒํ•˜๋Š”๋ฐ ๋„์›€์„ ์ฃผ๋Š” ํ™•์žฅ ๊ธฐ๋Šฅ์ด๋‹ค.

์„ค์ •(์„ค์น˜)๋ฐฉ๋ฒ•
  1. cedet github์— ๋“ค์–ด๊ฐ€์„œ ์••์ถ•ํŒŒ์ผ์„ ๋ฐ›๋Š”๋‹ค.(http://sourceforge.net/projects/cedet/)
  2. cedet์••์ถ•์„ .emacs.dํด๋” ํ˜น์€ ์›ํ•˜๋Š” ๊ณณ์— ํ‘ผ๋‹ค.
  3. cedet์••์ถ•์„ ํ‘ผ๊ณณ์— ์ ‘๊ทผํ•˜์—ฌ $make ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋นŒ๋“œ ์‹œ์ผœ์ค€๋‹ค.
  4. emacs ์„ค์ • ํŒŒ์ผ์ธ .emacs ํ˜น์€ init.el ํŒŒ์ผ์— ์„ค์น˜ํ•œ cedet์„ ๋กœ๋“œํ•˜๊ธฐ์œ„ํ•œ elisp์ฝ”๋“œ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์จ์ค€๋‹ค.

;; Load CEDET
;; 'warning: cedet-called-interactively-p called with 0 arguments, but requires 1' error repairing
(setq byte-compile-warnings nil)
;; See cedet/common/cedet.info for configuration
(load-file "~/cedet.elํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์จ๋„ฃ๋Š”๋‹ค. cedet์••์ถ•์„ ํ‘ผ ํด๋”์•ˆ์˜ common์— cedet.el์ด ์žˆ๋‹ค.")

;; Enable EDE (Project Management) features
(global-ede-mode 1)

;; *This enalbes the database and idle repasitiory
(semantic-load-enable-minimum-features)
์ฐธ๊ณ #1. lisp์ฝ”๋“œ์—์„œ ;;๋Š” ์ฃผ์„์ด๋‹ค.
์ฐธ๊ณ #2. lisp์ฝ”๋“œ์ค‘์—์„œ load file ํ•˜๋Š” ๋ถ€๋ถ„์„ ๋‚˜๊ฐ™์€ ๊ฒฝ์šฐ๋Š”(load-file "~/.emacs.d/cedet/common/cedet.el")๊ณผ ๊ฐ™์ด ์ ์—ˆ๋‹ค. ๊ฒฝ๋กœ์˜ ~/๋Š” ๋‚˜๋Š” ์œˆ๋„์šฐ์—์„œ cygwin์„ ํ†ตํ•ด์„œ emacs๋ฅผ ์“ฐ๊ณ  ์žˆ์–ด์„œ ํ™˜๊ฒฝ๋ณ€์ˆ˜ HOME์˜ ๊ฒฝ๋กœ๋ฅผ ์ €๋ ‡๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
์ฐธ๊ณ #3. lisp ์ฝ”๋“œ์˜ (setq byte-compile-warning nil)์€ ์ด ์ฝ”๋“œ ๋ฐ”๋กœ ์œ„์˜ ์ฃผ์„์— ํ•ด๋‹นํ•˜๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ์„œ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ ์ž‘์„ฑํ•œ ์ฝ”๋“œ์ด๋‹ค. ํ˜น์‹œ ์ด ์ฝ”๋“œ๋กœ ์ธํ•ด ๋‹ค๋ฅธ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ํ•œ๋‹ค๋ฉด, ์ด๋ฅผ ์ง€์šฐ๊ฑฐ๋‚˜ ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ฐฟ๊ธธ ๋ฐ”๋ž€๋‹ค.ใ… ใ…œ


ECB

ECB๋ž€?
emacs code browser์˜ ์•ฝ์ž๋กœ์„œ, ํ”„๋กœ์ ํŠธ ํŒŒ์ผ management๋‚˜, ๋””๋ ‰ํ† ๋ฆฌ management๋“ฑ์„ ๋„์™€์ฃผ๋Š” ํ™•์žฅ ๊ธฐ๋Šฅ์ด๋‹ค.

์„ค์ •(์„ค์น˜)๋ฐฉ๋ฒ•
  1. ecb ์„ค์น˜์ „์— ์šฐ์„  cedet์„ค์น˜๊ฐ€ ์šฐ์„ ๋˜์–ด์•ผํ•œ๋‹ค. cedet์€ ์ด ๊ธ€์„ ์“ด ์‹œ์ ์— 1.1 ๋Œ€์˜ ๋ฒ„์ ผ์ด ์ตœ์‹  ๋ฒ„์ ผ์ด๋‹ค. cedet์„ค์น˜๋Š” cedet์„ ์„ค๋ช…ํ•ด๋‘” ๋ถ€๋ถ„์—์„œ ์ฐธ์กฐํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค. (์ฐธ๊ณ ๋กœ emacs 23๋ถ€ํ„ฐ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ CEDET์ด ์„ค์น˜๋˜์–ด์žˆ๋‹ค.)
  2. ํ˜„์ œ emacs์˜ ์ตœ์‹ ๋ฒ„์ ผ์€ 24.*๋Œ€์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๋ฒ„์ ผ๋Œ€์˜ emacs๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ cedet์ด ์„ค์น˜๋˜์–ด์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์ด cedet์˜ ๋ฒ„์ ผ๊ณผ ecb์˜ ๋ฒ„์ ผ ์‚ฌ์ด์— ๋ฒ„๊ทธ๋•Œ๋ฌธ์— ecb ํ™˜๊ฒฝ์„ค์ •์„ ํ•˜๋ คํ•˜๋ฉด ์–ด๋ ค์›€์ด ๋งŽ๋‹ค. ์—ด์‹ฌํžˆ ์‚ฝ์งˆํ•ด์„œ ์•Œ์•„๋ณธ ๊ฒฐ๊ณผ ์–ด๋–ค ์™ธ๊ตญ ์‹ ์‚ฌ๋ถ„์ด ๋ฒ„๊ทธ fixํ›„ reportํ•˜๊ธฐ์ „์— ๋ฐ˜์˜์ด ๋Šฆ์„๊ฒƒ๊ฐ™๊ธฐ์— ๋ฏธ๋ฆฌ github์— ์˜ฌ๋ ค๋‘์‹  ์ˆ˜์ • ๋ฒ„์ „์ด ์žˆ๋‹ค.(https://github.com/alexott/ecb/) ์—ฌ๊ธฐ์—์„œ ecb์˜ ์••์ถ•ํŒŒ์ผ์„ ๋ฐ›๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘์„ ํ•œ๋‹ค.
  3. ๋ฐ›์€ ์••์ถ•ํŒŒ์ผ์„ .emacs.d ํด๋” ํ˜น์€ ์›ํ•˜๋Š” ๊ณณ์— ์••์ถ•์„ ํ‘ผ๋‹ค.
  4. emacs ์„ค์ •ํŒŒ์ผ์ธ .emacs ํ˜น์€ init.el์— ๋‹ค์Œ๊ณผ๊ฐ™์€ elisp ์ฝ”๋“œ๋ฅผ ์ ๋Š”๋‹ค.

;;ECB Load
(add-to-list 'load-path "ecb์••์ถ•์„ ํ‘ผ ํด๋” ๊ฒฝ๋กœ๋ฅผ ์ ์Šต๋‹ˆ๋‹ค.")
(load-file "ecb.el์˜ ํŒŒ์ผ๊ฒฝ๋กœ๋ฅผ ์ ์Šต๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ecb ์••์ถ•์„ ํ‘ผ ํด๋” ์•ˆ์— ์ž‡์Šต๋‹ˆ๋‹ค.")
(require 'ecb)

์ฐธ๊ณ #1. ๋‚˜๊ฐ™์€ ๊ฒฝ์šฐ, ๊ฒฝ๋กœ๋ฅผ ์จ๋„ฃ๋Š” ๋ถ€๋ถ„์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜์—ฟ๋‹ค.
(add-to-list 'load-path "~/.emacs.d/ecb-master")
(load-file "~/.emacs.d/ecb-master/ecb.el")

ELPA ์„ค์น˜์‹œ ์„ค์น˜ ๋ฐฉ๋ฒ•
  • ์„ค์น˜
    • M-x package-list-packages
    • C-s ecb
      • ํ•ด๋‹น ๋ผ์ธ์—์„œ i ๋ˆ„๋ฅธ ํ›„ x
  • .emacs ์„ค์ •

(require 'cl)
(require 'ecb)

tabbar plugin

์†Œ์ŠคํŒŒ์ผ์˜ tabbar๋ฅผ ์“ฐ๊ธฐ์œ„ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด๋‹ค.

emacs wiki์— tabbar ๋ผ๊ณ  ๊ฒ€์ƒ‰ํ•˜๋ฉด ์†Œ์Šค๊ฐ€ ์ œ๊ณต๋œ๋‹ค.

emacs ์„ค์ •ํŒŒ์ผ์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— ์†Œ์Šค๋ฅผ ๋ณต์‚ฌํ•ด์„œ tabbar.el์ด๋ผ๊ณ  ์†Œ์ŠคํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์ €์žฅํ•œ๋‹ค.

emacs ์„ค์ •ํŒŒ์ผ์ธ .emacs ํ˜น์€ init.el์— ๋‹ค์Œ๊ณผ๊ฐ™์ด ์ด์–ด๋ถ™์ด๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
;;Tabbar plugin load
(require 'tabbar)
(tabbar-mode t)
(global-set-key [(control shift tab)]'tabbar-backward)
(global-set-key [(control tab)]'tabbar-forward)

highline plugin

์ปค์„œ๊ฐ€ ์œ„์น˜ํ•œ ์ค„์˜ ์ƒ‰์„ ๋‹ฌ๋ฆฌํ•˜์—ฌ ์ง€๊ธˆ ์ž‘์—…ํ•˜๋Š” ๋ถ€๋ถ„์„ ๋šœ๋ ทํžˆ ๋ณด์—ฌ์ฃผ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์ด๋‹ค.

emacs wiki์— highline ์ด๋ผ๊ณ  ๊ฒ€์ƒ‰ํ•˜๋ฉด ์†Œ์Šค๊ฐ€ ์ œ๊ณต๋œ๋‹ค.

emacs ์„ค์ •ํŒŒ์ผ์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— ์†Œ์Šค๋ฅผ ๋ณต์‚ฌํ•ด์„œ highline.el์ด๋ผ๊ณ  ์†Œ์ŠคํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์ €์žฅํ•œ๋‹ค.

emacs ์„ค์ •ํŒŒ์ผ์ธ .emacs ํ˜น์€ init.el์— ๋‹ค์Œ๊ณผ๊ฐ™์ด ์ด์–ด๋ถ™์ด๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
;;Highline plugin load
(require 'highline)
(global-highline-mode t)

color-theme plugin

emacs ๋ฐฐ๊ฒฝ์ƒ‰, ๊ธ€์ž์ƒ‰ theme๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์ด๋‹ค.

emacs wiki์— color-theme ๋ผ๊ณ  ๊ฒ€์ƒ‰ํ•˜๋ฉด ์••์ถ•ํŒŒ์ผ์ด ์ œ๊ณต๋œ๋‹ค.

emacs ์„ค์ •ํŒŒ์ผ์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— color-theme์••์ถ•ํŒŒ์ผ์˜ ์••์ถ•์„ ํ‘ผ๋‹ค.

emacs ์„ค์ •ํŒŒ์ผ์ธ .emacs ํ˜น์€ init.el์— ๋‹ค์Œ๊ณผ๊ฐ™์ด ์ด์–ด๋ถ™์ด๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
;;Color Theme plugin load
(add-to-list 'load-path "color theme ํด๋” ๊ฒฝ๋กœ๋ฅผ ์ ์–ด์ค€๋‹ค.")
(require 'color-theme)
(eval-after-load "color-theme"
  '(progn
     (color-theme-initialize)
     (color-theme-hober)))


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:12
Processing time 0.0123 sec