'''Emacs Ruby-Mode''' ±è¿ë¿í([CN]) ÀÌ ¹®¼­´Â Emacs¿¡¼­ Ruby ÇÁ·Î±×·¡¹ÖÀ» Æí¸®ÇÏ°Ô Çϱâ À§ÇØ È¯°æ ¼³Á¤ÇÏ´Â ¹æ¹ý°ú °£´ÜÇÑ »ç¿ë¹ýÀ» ´Ù·ç°í ÀÖ´Ù. [[TableOfContents]] == Emacs Ruby ExtensionÀÇ ¼³Ä¡ == Emacs ¿¡µðÅÍ¿Í Emacs Ruby Extension(attachment:EmacsRubyExtension.zip )ÀÌ ÇÊ¿äÇÏ´Ù. (µ¿ºÀµÈ ¾ÐÃàÆÄÀÏ¿¡´Â ¼³Ä¡¿¡ ºÒÇÊ¿äÇÑ ÆÄÀÏÀ» etc·Î À̵¿ÇÏ¿´´Ù.) Ruby ¾ð¾î´Â ÇʼöÀûÀ¸·Î ¼³Ä¡ÇÒ ÇÊ¿ä´Â ¾øÀ¸³ª ¼³Ä¡ÇÏÁö ¾ÊÀ¸¸é Ruby ÇÁ·Î±×·¡¹ÖÀº ºÒ°¡´ÉÇÏ´Ù. === ¼³Ä¡ °æ·Î ã±â === Emacs Ruby ExtensionÀ» ¼³Ä¡ÇÒ °æ·Î¸¦ ã¾Æ¾ß ÇÑ´Ù. attachment:emacs.PNG À§ÀÇ È­¸éÀº Emacs¸¦ ½ÇÇà½ÃÅ°¸é óÀ½ ³ª¿À´Â È­¸éÀÌ´Ù. ÇÏ´Ü¿¡ *scratch*¶ó°í Ç¥½ÃµÇ¾î Àִµ¥ *scratch* ¹öÆÛ¶ó´Â ÀǹÌÀÌ´Ù. Emacs´Â ÇϳªÀÇ ÆíÁý ´ÜÀ§¸¦ ¹öÆÛ¶ó°í ºÎ¸¥´Ù. Emacs´Â load-Path º¯¼ö¿¡ µî·ÏµÈ ÁÖ¼Ò¿¡¼­ È®Àå ÆÄÀÏÀ» Àоî¿Â´Ù. Emacs Ruby ExtensionÀÇ ¼³Ä¡¸¦ À§ÇØ Load-Path¸¦ »ìÆ캸ÀÚ. {{{#!vim lisp load-path[*] }}} [*]°¡ Ä¿¼­¶ó¸é ±× À§Ä¡¿¡¼­ Ctrl Å°¿Í X¸¦ ´©¸£°í (ÀÌÇÏ C-X) Ctrl Å°¿Í E¸¦ ´©¸¥´Ù. (ÀÌÇÏ C-E) ÀÌÁ¦ºÎÅÍ C-X, C-E¿Í °°Àº ÇüÅ·Π°£·«È÷ ºÎ¸¦ °ÍÀÌ´Ù. ½ÇÇà °á°ú´Â ¾Æ·¡¿Í °°ÀÌ È­¸é ÇÏ´Ü¿¡ Ç¥½ÃµÈ´Ù. attachment:load-path.PNG ¿î¿µÃ¼Á¦³ª ¼¼Æÿ¡ µû¶ó Á¶±Ý¾¿ ´Ù¸£°Ô ³ªÅ¸³ª´Âµ¥ ÀÌ ¹®¼­¿¡¼­´Â "c:/Program Files/Emacs/emacs/site-lisp"¿¡ ¼³Ä¡ÇÒ °ÍÀÌ´Ù. ¾î¶² Æú´õ³ª ¼³Ä¡Çصµ »ó°ü¾øÁö¸¸ load-path º¯¼ö¿¡ Æ÷ÇÔµÈ °æ·ÎÀ̾î¾ß ÇÑ´Ù. ´Ù¸¥ °æ·Î¿¡ ¼³Ä¡¸¦ ¿øÇÏ´Â µ¶ÀÚ´Â EmacsInstallScript¸¦ ÂüÁ¶Ç϶ó. È­¸é ÇÏ´Ü¿¡ Ç¥½ÃµÇ¾î load-path º¯¼öÀÇ ³»¿ëÀ» »ìÆ캸±â Èûµé´Ù¸é C-X, B, *m, TAB, ENTER¸¦ ´­·¯¼­ ÀÚ¼¼ÇÏ°Ô È®ÀÎÇØ º¼ ¼ö ÀÖ´Ù. (´Ù½Ã *scratch* ¹öÆÛ·Î À̵¿Çϱâ À§Çؼ­ C-X, B, *s, TAB, ENTER¸¦ »ç¿ëÇÑ´Ù.) === Emacs Ruby Extension ÆÄÀÏ º¹»çÇϱâ === ÇØ´ç Æú´õ¿¡ Emacs Ruby Extension ÆÄÀϵéÀ» º¹»çÇÑ´Ù. ÀÌ ¹®¼­¿¡¼± "c:/Program Files/Emacs/emacs/site-lisp"¿¡ º¹Á¦Çϴµ¥ ÇØ´ç ÆÄÀÏÀÇ ÆÄÀϸíÀº ´ÙÀ½°ú °°´Ù. {{{#!vim lispinf-ruby.el inf-fuby.elc rubydb.el rubydb.elc ruby-electric.el ruby-electric.elc ruby-mode.el ruby-mode.elc }}} === ȯ°æ ¼³Á¤Çϱâ === ȯ°æ ¼³Á¤Çϱâ À§Çؼ­´Â .emacs ÆÄÀÏÀ» ¼öÁ¤ÇØ¾ß ÇÑ´Ù. C+X, C+F¸¦ ´­·¯ "ÆÄÀÏ ºÒ·¯¿À±â"¸¦ ÇÏÀÚ. {{{#!vim lisp Find file: C:\Documents and Settings\¿ì¸®Áý/[*] }}} [*]°¡ Ä¿¼­ À§Ä¡¶ó¸é "~/"¸¦ ÀÔ·ÂÇÏ°í {{{#!vim lisp Find file: C:\Documents and Settings\¿ì¸®Áý/~/ }}} TABÀ» ´©¸£ÀÚ. {{{#!vim lisp Find file: ~/ }}} .emacs¸¦ ÀÔ·ÂÇÏ°í {{{#!vim lisp Find file: ~/.emacs }}} ¿£Å͸¦ ´©¸¥´Ù. {{{#!vim lisp (require 'ruby-mode) (require 'rubydb) (require 'inf-ruby) (require 'ruby-electric) (setq auto-mode-alist (cons '("\.rb$" . ruby-mode) auto-mode-alist)) }}} À§ÀÇ Äڵ带 »ðÀÔÇÑ´Ù. »õ·Î¿î ÆÄÀÏÀ̶ó¸é ±×³É »ðÀÔÇÏ¸é µÇ°í ±âÁ¸ ÆÄÀÏÀÌ ÀÖ´Ù¸é Àû´çÈ÷ Ãß°¡ÇØÁÖÀÚ. (Á¦ÀÏ µÚ¿¡ Ãß°¡ÇÏ´Â °ÍÀÌ ¹«³­ÇÒ °ÍÀÌ´Ù.) Ãß°¡°¡ ¿Ï·á µÇ¾ú´Ù¸é C-X, C-S·Î ÀúÀåÇ϶ó. Emacs¸¦ ´Ù½Ã ½ÇÇàÇÏ°í´Â ¿¡·¯°¡ ³ªÁö ¾Ê±æ ±â¿øÇÏÀÚ. == ruby-modeÀÇ »ç¿ë == ruby-mode·Î ÀüȯÀº µÎ°¡Áö ¹æ¹ýÀ¸·Î ÇÒ ¼ö ÀÖ´Ù. 1. .rb È®ÀåÀÚÀÇ ÆÄÀÏ ¿­±â 1. M-X ruby-mode ÀüÀÚ´Â C-X, C-F·Î ÆÄÀÏÀ» ¿­¸é µÇ°í ÈÄÀÚ´Â ALT(MÀº ALTÅ°³ª ESC Å°¸¦ ´©¸£¸é µÈ´Ù.) Å°¿Í X¸¦ ´©¸£°í ruby-mode ¿£Å͸¦ ´­·¯¼­ ÀüȯÇÏ°Ô µÈ´Ù. ruby-mode´Â Àüü ŸÀÌÇÎ ÇÒ ÇÊ¿ä¾øÀÌ ruby¸¦ ÀÔ·ÂÇÏ°í tabÀ» ´©¸£¸é ÀÚµ¿¿Ï¼ºµÈ´Ù. === Hello Man === ÇϳªÀÇ ÇÁ·Î±×·¥À» ¸¸µé¸é¼­ ruby-mode¸¦ Á÷Á¢ »ç¿ëÇØ º¸ÀÚ. C-X, C-F¸¦ ÀÔ·ÂÇÏÀÚ. {{{#!vim lisp Find file: c:/Documents and Settings/¿ì¸®Áý/Application Data/[*] }}} /¸¦ ÀÔ·ÂÇÏ°í {{{#!vim lisp Find file: c:/Documents and Settings/¿ì¸®Áý/Application Data// }}} TABÀ» ´©¸¥´Ù. {{{#!vim lisp Find file: / }}} Çѹø¿¡ ·çÆ® µð·ºÅ丮·Î À̵¿ÇÏ´Â ¹æ¹ýÀÌ´Ù. ·çÆ® µð·ºÅ丮¿¡ helloMan.rb¶ó´Â ÆÄÀÏÀ» ¸¸µéÀÚ. Á¦´ë·Î ¼º°øÇß´Ù¸é ¾Æ·¡¿Í °°Àº È­¸éÀÌ ¶ã °ÍÀÌ´Ù. attachment:helloMan.PNG helloMan.rb¶ó´Â ÆÄÀÏ¸í ¿·¿¡ (Ruby)¶ó´Â ±ÛÀÚ°¡ º¸ÀδÙ. ÇöÀç ruby-mode·Î ÀÛµ¿ÇÏ°í ÀÖ´Ù´Â °ÍÀÌ´Ù. M-;¸¦ ÀÔ·ÂÇÏÀÚ. (À§¿¡ ¼³¸íÇßµí MÀº ALT Å°³ª ESC¸¦ ÀǹÌÇÑ´Ù. ALT¿Í ;¸¦ µ¿½Ã¿¡ ´©¸£¸é µÈ´Ù.) ÀÌ ¸í·ÉÀº ÁÖ¼®À» ÀÔ·ÂÇÏ´Â ¸í·É¾î´Ù. # ÀÌÈÄ¿¡ ¾Æ·¡ÀÇ ³»¿ëÀ» ÀÔ·ÂÇÏÀÚ. (¾ûÅ͸® ÁÖ¼®À̶ó´Â °ÍÀº ½Å°æ¾²Áö ¸»ÀÚ.) {{{#!vim # Ruby mode: Major mode for edting ruby scripts. TAB properly idents subexpressions of mult-line class, module, def, if, while, for, do, and case statements, taking nesting into account }}} ÁÖ¼®ÀÇ ±æÀÌ°¡ ³Ê¹« ±æ¾î¼­ º¸±â Èûµé¾î Á³À» °ÍÀÌ´Ù. Àû´çÇÑ À§Ä¡¿¡¼­ M-Q¸¦ ÀÔ·ÂÇÑ´Ù. attachment:comment.PNG ÀÚµ¿À¸·Î ÁÖ¼®ÀÇ ÇüÅ°¡ ¿©·¯ ÁÙ·Î Á¤¸®µÇ¾î ÀÖ´Ù. ÇÁ·Î±×·¥ ¾Õ ºÎºÐ¿¡ ±ä ÁÖ¼®À» ´Ù´Â °æ¿ì¿¡ ÀÌ·± ¹æ¹ýÀ¸·Î ÁÖ¼®À» ´Þ ¼ö ÀÖ´Ù. ÀÌÁ¦ ±â´Ù·Á¿Ô´ø HelloMan Ŭ·¡½º¸¦ ÀÛ¼ºÇغ¸ÀÚ. {{{#!vim # Ruby mode: Major mode for edting ruby scripts. TAB properly idents subexpressions of mult-line class, module, def, if, while, for, do, and case statements, taking nesting into account class HelloMan def sayHello }}} ¿©±â±îÁö ÀÔ·ÂÇغ» µ¶ÀÚ´Â ÀÚµ¿À¸·Î µé¿©¾²±â°¡ ¾ÈµÈ´Ù´Â °ÍÀ» ¹ß°ßÇßÀ» °ÍÀÌ´Ù. (¹°·Ð Ãֽſ¹ ¼öÀÛ¾÷ ¸Ó½ÅÀ¸·Î ÇØ°áÇÑ µ¶ÀÚµµ ÀÖÀ» °ÍÀÌ´Ù.) ³î¶ó°Å³ª ´çȲÇÒ ÇÊ¿ä¾ø´Ù. Ä¿¼­¸¦ ¿Å±âÁö ¸»°í TABÀ» ´©¸£ÀÚ. Emacs¿¡¼­ TABÀº ÇØ´ç ¶óÀÎÀ» ÀÚµ¿À¸·Î µé¿©¾²±â ÇÏ´Â ¸í·É¾îÀÌ´Ù. (´Ù¸¥ ¿¡µðÅÍ¿¡¼­ÀÇ TABÀÌ 4-8Ä­À» ¶ç¿ì´Â ¹®ÀÚ¸¦ »ðÀÔÇÏ´Â °Í°ú´Â Â÷ÀÌ°¡ ÀÖ´Ù.) {{{#!vim class HelloMan def sayHello }}} ¿©±â¿¡¼­ ¿£Å͸¦ Ä¡±âÀü¿¡ »ý°¢Çغ¸ÀÚ. ´Ù½Ã ¿£Å͸¦ ´©¸£°í ´ÙÀ½ ¶óÀο¡¼­ ³ªÁß¿¡ TABÀ» ´­·¯¼­ ÇàÀ» Á¤·ÄÇØ¾ß ÇÒ±î? ¸Å ¶óÀÎ TABÀ» ´­·¯ Á¤·ÄÇÏ´Â °ÍÀº ¾Æ¹«·¡µµ ±ÍÂú´Ù. C-J¸¦ ´©¸£ÀÚ. Àͼ÷ÇÑ µé¿©¾²±â°¡ µÉ°ÍÀÌ´Ù. C-J´Â ±× ÇàÀ» ÀÚµ¿À¸·Î µé¿©¾²±â ÇÑÈÄ ´ÙÀ½ ÇàÀ¸·Î ¹Ù²Ù°í ´ÙÀ½ ÇàÀÇ µé¿©¾²±â¸¦ ÇØÁÖ´Â ¸í·É¾î´Ù. ¾î·Á¿ö º¸À̸é ÇÑ°¡Áö¸¸ ±â¾ïÇÏÀÚ. ÀÌÁ¦ºÎÅÍ´Â ¿£ÅÍ ´ë½Å¿¡ C-J¸¦ ´©¸£ÀÚ. {{{#!vim class HelloMan def sayHello "Helo, guy. I love RUBY." }}} ¿©±â±îÁö ÀÔ·ÂÇϸé ÇϳªÀÇ ÇÔ¼ö¸¦ ¿Ï¼ºÇß´Ù. ÀÌ Å¬·¡½º¿¡´Â ÇϳªÀÇ ÇÔ¼ö¸¸ ³ÖÀ» ¿¹Á¤ÀÌ´Ù. ÇÔ¼ö¿Í Ŭ·¡½º¸¦ ´Ù ´ÝÀÚ. ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇ϶ó. {{{#!vim C-J, C-C, C-E, C-J, C-C, C-E }}} ¿©±â¿¡¼­ CTRL Å°´Â ¶ª ÇÊ¿ä¾ø´Ù. CTRLÀ» ´©¸¥ ä·Î ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇÏ¸é µÈ´Ù. {{{#!vim JCEJCE }}} ¿©±â±îÁö ¼º°øÇß´Ù¸é ´ÙÀ½°ú °°Àº È­¸éÀ» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. attachment:class.PNG C-C, C-E´Â end¸¦ ÀÔ·ÂÇÏ´Â ¸í·É¾îÀÌ´Ù. ruby´Â end°¡ ÀÚÁÖ ¾²ÀÌ´Ï ÄÜÆ®·ÑÀ» ´©¸¥ ä·Î JCE¸¦ ´©¸£´Â Å×Å©´ÐÀº ÀÚÁÖ ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù. ---- '''To Do''' ´Ù¸¥ ¸ðµåÀÇ »ç¿ë¹ý°ú ¼³Á¤¹ýÀ» Ãß°¡ÇÏÀÚ -- [CN] [[DateTime(2006-02-04T04:53:18)]] ---- [CategoryEmacs]