Describe Emacs/lisp환경구성하기 here Lispì„ ê³µë¶€í•˜ë©´ì„œ cmdì°½ì˜ REPL환경ì—서 ì½”ë”©ì€ ì—시 ìž‘ì€ ê·œëª¨ì˜ í…ŒìŠ¤íŠ¸ë§Œ ìš©ì´í•˜ê¸°ì—, 귀찮아서 ë¯¸ë¤„ë’€ë˜ Emacsì—서 lispí™˜ê²½ì„ êµ¬ì„±í•˜ê¸°ë¡œ ê²°ì •. 윈ë„ìš°ì—서 í™˜ê²½ì„ êµ¬ì¶•í•´ì•¼ í–ˆê¸°ì— ê³¼ì •ì´ ë„ˆë¬´ ê³ ë‹¬íŽê³ , 온갖 ì‚½ì§ˆì„ ë‹¤í•˜ë‹¤ê°€ 허무하게 ì°¿ì€ ë°©ë²•ì´ ìžˆê¸°ì— ì‚½ì§ˆì˜ ì—¬ì •ì„ ê¸°ë¡ìœ¼ë¡œ ë‚¨ê¸°ê³ ìž íŽ˜ì´ì§€ë¥¼ ë§Œë“니다. ------------------ ------------------ = 첫번째 ì—¬ì • = í˜„ì œ ë‚˜ì˜ emacs는 cygwin emacs와 gnu emacs ë‘개를 쓰는ë°(어짜피 .emacs ì„¤ì •íŒŒì¼ì€ ê³µìœ í•´ë„ ë¬¸ì œ ì—†ìŒ!) emacsì—서 lisp í”„ë¡œê·¸ëž˜ë° í™˜ê²½ì„ ì›í™œí•˜ê²Œ 세팅해줄 emacs 모드가 í•„ìš”í–ˆê¸°ì— êµ¬ê¸€ë§ì„ 통해 찿아보았다. ê·¸ ê²°ê³¼ 보통 ì‚¬ëžŒë“¤ì´ êµ¬ì„±í•˜ê¸°ë¡œëŠ” emacs + slime(emacs interative lisp mode) + sbcl(steel bank common lisp)ì„ ì“°ê¸°ì— ë‚˜ë„ clispì„ ì“°ë˜ì°¨ì— ì´ êµ¬ì„±ì„ íƒí•˜ì˜€ë‹¤. ìš°ì„ HOME í™˜ê²½ë³€ìˆ˜ì— ì„¸íŒ…í•´ë‘” ìœ„ì¹˜ì— ë”°ë¡œ í´ë”하나를 만들어서 다운 ë°›ì€ slimeì˜ ì••ì¶•ì„ í’€ì—ˆë‹¤. 순진한것, ì´ë•Œê¹Œì§€ë§Œí•´ë„ ëª¨ë“ ê²Œ 탄탄대로로 ì§„í–‰ë 줄 알았겟지.. 하지만 ë¹„ê·¹ì˜ ì‹œìž‘ì€ ì´ë•Œë¶€í„° 시작ë¬ë‹¤. = ë‘번째 ì—¬ì • = 맨처ìŒì— ì°¸ê³ í•œ 사ì´íŠ¸ëŠ” 구글 ê·¸ë£¹ìŠ¤ì— lispì„ ì¢‹ì•„í•˜ëŠ” ì‚¬ëžŒë“¤ì˜ ëª¨ìž„?ì—서 번ì—한건지 ë§Œë“ ê±´ì§€ 모를 ê¸€ì„ ì°¸ê³ í•´ì„œ 조금씩 í™˜ê²½ì„ êµ¬ì¶•í•˜ì—¿ë‹¤.([http://lisp-korea.wikispaces.com/IDE+for+Lisp]) ì´ ì‚¬ì´íЏì—서 설명한대로 slimeì˜ path를 ì„¤ì •í•˜ê³ , sbcl.exeì˜ ê²½ë¡œë¥¼ ì„¤ì •í•œë’¤ì— emacs를 실행시키ìž, {{{ (add-to-list 'load-path "c:/lisp/slime/") (setq inferior-lisp-program "c:/lisp/sbcl/sbcl.exe") (require 'slime) (slime-setup '(slime-fancy slime-fuzzy slime-c-p-c)) (setq slime-net-coding-system 'utf-8-unix) }}} 그랬ë”니 ì´ê²Œ ì™ ê±¸ ì´ìƒí•œì˜¤ë¥˜ê°€ 뜬다?! >>Spawning child process: invalid argument. ì´ê²Œ 무슨 ì†Œë¦°ê³ í•˜ë©° 요모조모 살펴ë´ë„ ë„무지 ëª¨ë¥´ê² ì–´ì„œ 다시 구글ë§ì„ 하ìž, ìƒë‹¹ížˆ ìœ ëª…í•œ? 오류ì¸ê°€ë³´ë‹¤ 나와 ê°™ì€ ì¦ì„¸ë¥¼ 호소하는 ì—¬ëŸ¬ì‚¬ëžŒë“¤ì´ ë™ë™ ì‹ ìŒì„ ì•“ì€ í”ì ë“¤ì´ ì—¬ê¸°ì €ê¸° ë³´ì¸ë‹¤. ì¼ë‹¨ ì‹ ë¢°ì„±ì´ ê°€ìž¥ë†’ì€ stack overflow 사ì´íŠ¸ì˜ ë§í¬ë¡œ 들어가서 ë‚´ìš©ì„ í™•ì¸í•´ë³´ë‹ˆ...ìŒ.. 무슨ë§ì¸ì§€ ëª¨ë¥´ê² ë‹¤. í•´ì„ë„ í•´ì„ì´ê±°ë‹ˆì™€, ë‚´ê°€ ê²ªê³ ìžˆëŠ” ë¬¸ì œì™€ëŠ” 약간 ë§¥ë½ì„ 달리하는것같아 다른 ë§í¬ë¡œ 들어가 찿아본다. ì´ëŸ¬ê¸°ë¥¼ 몇번 반복후 ì´ê±° 심ìƒì¹˜ì•ŠìŒì„ ëŠë¼ê³ 머리가 아파온다. solutionì„ ì°¿ì•˜ë‹¤ëŠ” ì‚¬ëžŒì€ ë”± 2ëª…ì„ ë³´ì•˜ë‹¤. ê·¸ë¦¬ê³ ì´ëŠ” ëª¨ë‘ í™˜ê²½ë³€ìˆ˜ ë¬¸ì œë¼ê³ ë§í•´ì˜¤ê³ ê°ê° 다른 í•´ê²°ì±…ì„ ì œì‹œí•œë‹¤. 둘다 시ë„í•´ë³´ê³ ì‹¤íŒ¨í•˜ì—¬ ì¢Œì ˆì— ë¹ ì§„ë‹¤. ì•„....ì´ í•´ê²°ì±…ì„ ì œì‹œí•œ ì‚¬ëžŒë“¤ë„ ë§¤ìš° stressful problem ì´ë¼ì„œ 다른사람ì—게 ë„ì›€ì´ ë 까 ê³µìœ í•œê±°ë¼ëŠ”ë°, ë˜ì§ˆì•ŠëŠ”ë‹¤. ê°€ìŠ´ì´ ë‹µë‹µí•˜ì—¬ 그냥 다른ì¼ì„ 하는걸 ê²°ì •í•œë‹¤. = 세번째 ì—¬ì • = ì•„ì¹¨ì— ì¼ì–´ë‚˜ìžë§ˆìž ì–´ì œ 골머리ì©ížŒ ì´ë…€ì„ì„ í˜¼ì내주기위해 다시 컴퓨터를 붙잡았다. 마ìŒì„ 차분히 ê°€ë¼ì•‰ížˆê³ ì–´ì œ ì–»ì€ ì‹¤ë§ˆë¦¬ë¥¼ ë– ì˜¬ë ¤ë³¸ë‹¤. ìŒ.. 환경변수가 ë¬¸ì œë¼ëŠ”ê±°ì§€... 그럼 ì´ë¥¼ 키워드로 넣어서 다르게 검색해보ìž. 새ë¡ê²Œ 나온 페ì´ì§€ê°€ 범람하듯 ìŸì•„진다. ì‰ í›ê³ ìžˆëŠ”ë° ë¬¸ëœ© ëˆˆì— ë„는 페ì´ì§€ê°€ ë³´ì¸ë‹¤.([http://lists.common-lisp.net/pipermail/slime-devel/2008-May/007331.html]) ì´ëŸ´ìˆ˜ê°€ ë‚˜ì˜ ì¦ìƒê³¼ 100%ì¼ì¹˜í•œë‹¤. í¥ë¶„ì„ ê°€ë¼ì•‰ížˆê³ 차분하게 ë³´ëŠ”ë° ë¬¸ì œëŠ” 다름아닌 아래와 ê°™ìŒì„ 발견했다. * ìµœê·¼ì— ì˜¬ë¼ì˜¨ sbcl 1.0.13ë²„ì ¼ë¶€í„°ëŠ” ì„¤ì¹˜í• ë•Œ 환경변수 SBCL_HOME(ì´ê²Œ ì´ë©•스가 ì°¸ê³ í•˜ëŠ” sbclì˜ ì„¤ì¹˜ëœ ìœ„ì¹˜ì¸ê²ƒê°™ë‹¤.)ê³¼ Pathê°€ 시스템(os) ìž¬ì‹œìž‘ì„ í•˜ì§€ 않으면 ì¸ì‹ë˜ì§€(propagated)않는다. * í˜¹ì€ ë‹¹ì‹ ì´ .emacs(í˜¹ì€ init.el) ì„¤ì •íŒŒì¼ì— path를 잘못 ìž…ë ¥í–ˆì„ìˆ˜ë„ ìžˆë‹¤. 예를들어 만약 ë‹¹ì‹ ì´ (setq inferior-lisp-program "C:/Program Files/Steel Bank Common Lisp/1.0.13/sbcl.exe") ì´ëŸ°ì‹ìœ¼ë¡œ ìž…ë ¥í–ˆë‹¤ë©´, ë˜ì§€ 않는다..(왜?!?!? ã… ã…œ) ê³ ë¡œ ë‹¹ì‹ ì€ (setq inferior-lisp-program "sbcl")ê³¼ê°™ì´ ìž…ë ¥í•´ì•¼í•œë‹¤. 허허 허탈했다... ìž¬ì‹œìž‘ì´ í•„ìš”í•˜ë©´ sbclì„¤ì¹˜í• ë•Œ 재시작여부를 물어보는 sequenceê°€ í•„ 수로 들어가야하지 않는가? 왜 ì—†ì£ ? ì™œì£ ? ã…Žã…Ž.... 허탈했지만, ì¼ë‹¨ 한시ë¼ë„ 빨리 lisp ì½”ë”©ì„ ì‹œìž‘í•´ë³´ê³ ì‹¶ì—ˆê¸°ì— ìœ„ì˜ ì¡°ì–¸ëŒ€ë¡œ ì§„í–‰. ìž¬ì‹œìž‘ì„ í•œí›„ 다시 실행해보니 ëœë‹¤.. 허허... ë¯¸ì¹ ë…¸ë¦‡ì´êµ°. -------------------- -------------------- = ê²° = ì—¬ì •ì€ ì´ê²ƒìœ¼ë¡œ ë마친다. 혹시 lispì„ ê³µë¶€í•˜ëŠ” ë° emacs를 ì“°ê³ ì‹¶ì–´ì„œ(딱히 emacsë§ê³ 다른 현실ì 으로 쓸 lispì „ìš© IDEê°€ ìžˆëŠ”ê²ƒì€ ì•„ë‹ˆì§€ë§Œ..) 해매는 zeropagerê°€ 있다면, 그래서 우연히 ì œë¡œ 위키를 검색하게 ë˜ì–´ ë„ì›€ì´ ëœë‹¤ë©´(ë¬¼ë¡ êµ¬ê¸€ë§ì´ ì„ í–‰ë˜ê² 지만) ì´ì œ 마ìŒì„ íŽ¸ížˆí•˜ê³ lispì˜ ì„¸ê³„ë¡œ ë¹ ì ¸ë³´ìž.