Next: Auto Major Mode, Previous: Major Mode Conventions, Up: Major Modes [Contents][Index]
´ðËÜ¡Êfundamental¡Ë¥â¡¼¥É¤ò½ü¤¯¤È¡¢ ¥Æ¥¥¹¥È¡Êtext¡Ë¥â¡¼¥É¤Ï¤â¤Ã¤È¤âñ½ã¤Ê¥â¡¼¥É¤Ç¤¹¡£ ¾å¤Ë½Ò¤Ù¤¿´·½¬¤ÎÎ㼨¤È¤·¤Æ¡¢text-mode.el¤ÎÈ´¿è¤ò¤¢¤²¤Æ¤ª¤¤Þ¤¹¡£
;; ¥â¡¼¥É¸Çͤι½Ê¸¥Æ¡¼¥Ö¥ë¤òºî¤ë
(defvar text-mode-syntax-table nil
"Syntax table used while in text mode.")
(if text-mode-syntax-table
() ; ¹½Ê¸¥Æ¡¼¥Ö¥ë¤¬´û¸¤Ê¤é¤ÐÊѹ¹¤·¤Ê¤¤
(setq text-mode-syntax-table (make-syntax-table))
(modify-syntax-entry ?\" ". " text-mode-syntax-table)
(modify-syntax-entry ?\\ ". " text-mode-syntax-table)
(modify-syntax-entry ?' "w " text-mode-syntax-table))
(defvar text-mode-abbrev-table nil "Abbrev table used while in text mode.") (define-abbrev-table 'text-mode-abbrev-table ())
(defvar text-mode-map nil) ; ¥â¡¼¥É¸ÇͤΥ¡¼¥Þ¥Ã¥×¤òºî¤ë (if text-mode-map () ; ¥¡¼¥Þ¥Ã¥×¤¬´û¸¤Ê¤é¤ÐÊѹ¹¤·¤Ê¤¤ (setq text-mode-map (make-sparse-keymap)) (define-key text-mode-map "\t" 'indent-relative) (define-key text-mode-map "\es" 'center-line) (define-key text-mode-map "\eS" 'center-paragraph))
¤Ä¤®¤Ï¡¢¥Æ¥¥¹¥È¡Êtext¡Ë¥â¡¼¥É¤Î¥á¥¸¥ã¡¼¥â¡¼¥É´Ø¿ô¤Î´°Á´¤ÊÄêµÁ¤Ç¤¹¡£
(defun text-mode () "Major mode for editing text intended for humans to read... Special commands: \\{text-mode-map}
Turning on text-mode runs the hook `text-mode-hook'." (interactive) (kill-all-local-variables) (use-local-map text-mode-map)
(setq local-abbrev-table text-mode-abbrev-table) (set-syntax-table text-mode-syntax-table)
(make-local-variable 'paragraph-start) (setq paragraph-start (concat "[ \t]*$\\|" page-delimiter)) (make-local-variable 'paragraph-separate) (setq paragraph-separate paragraph-start)
(setq mode-name "Text") (setq major-mode 'text-mode) (run-hooks 'text-mode-hook)) ; ºÇ¸å¤Ë¡¢¥Õ¥Ã¥¯¤Ë¤è¤ë¥â¡¼¥É¤Î ; ¥«¥¹¥¿¥Þ¥¤¥º¤ò¥æ¡¼¥¶¡¼¤Ëµö¤¹
3¤Ä¤Îlisp¥â¡¼¥É¡Êlisp¥â¡¼¥É¡¢emacs-lisp¥â¡¼¥É¡¢lispÂÐÏå⡼¥É¡Ë¤Ë¤Ï¡¢ ¥Æ¥¥¹¥È¡Êtext¡Ë¥â¡¼¥É¤è¤ê¿¤¯¤Îµ¡Ç½¤¬¤¢¤ê¡¢ ¤½¤ì¤Ë±þ¤¸¤Æ¥³¡¼¥É¤â¤è¤êÊ£»¨¤Ç¤¹¡£ ¤³¤ì¤é¤Î¥â¡¼¥É¤Î½ñ¤Êý¤òÎ㼨¤¹¤ë lisp-mode.el¤«¤é¤ÎÈ´¿è¤ò¤¢¤²¤Æ¤ª¤¤Þ¤¹¡£
;; ¥â¡¼¥É¸Çͤι½Ê¸¥Æ¡¼¥Ö¥ë¤òºîÀ®¤¹¤ë
(defvar lisp-mode-syntax-table nil "")
(defvar emacs-lisp-mode-syntax-table nil "")
(defvar lisp-mode-abbrev-table nil "")
(if (not emacs-lisp-mode-syntax-table) ; ¹½Ê¸¥Æ¡¼¥Ö¥ë¤¬´û¸¤Ê¤é¤Ð ; Êѹ¹¤·¤Ê¤¤ (let ((i 0)) (setq emacs-lisp-mode-syntax-table (make-syntax-table))
;; 0¤Þ¤Ç¤Îʸ»ú¤Ë¡¢Ã±¸ì¹½À®Ê¸»ú¤Ç¤Ï¤Ê¤¤¤¬
;; ¥·¥ó¥Ü¥ë̾¹½À®Ê¸»ú¤Ç¤¢¤ë¥¯¥é¥¹¤òÀßÄꤹ¤ë
;; (ʸ»ú0¤Ï¡¢ASCIIʸ»ú½¸¹ç¤Ç¤Ï48
)
(while (< i ?0)
(modify-syntax-entry i "_ " emacs-lisp-mode-syntax-table)
(setq i (1+ i)))
…
;; ¾¤Îʸ»ú¤Î¹½Ê¸¤òÀßÄꤹ¤ë
(modify-syntax-entry ? " " emacs-lisp-mode-syntax-table)
(modify-syntax-entry ?\t " " emacs-lisp-mode-syntax-table)
…
(modify-syntax-entry ?\( "() " emacs-lisp-mode-syntax-table)
(modify-syntax-entry ?\) ")( " emacs-lisp-mode-syntax-table)
…))
;; lisp¥â¡¼¥É¸þ¤±¤Îά¸ìɽ¤òºî¤ë
(define-abbrev-table 'lisp-mode-abbrev-table ())
3¤Ä¤Îlisp¥â¡¼¥É¤Ï¿¤¯¤Î¥³¡¼¥É¤ò¶¦Í¤·¤Æ¤¤¤Þ¤¹¡£ ¤Ä¤®¤Î´Ø¿ô¤Ï¤µ¤Þ¤¶¤Þ¤ÊÊÑ¿ô¤ËÀßÄꤷ¤Þ¤¹¡£ lisp¥â¡¼¥É¤Î³Æ¥á¥¸¥ã¡¼¥â¡¼¥É´Ø¿ô¤¬¸Æ¤Ó½Ð¤·¤Þ¤¹¡£
(defun lisp-mode-variables (lisp-syntax) (cond (lisp-syntax (set-syntax-table lisp-mode-syntax-table))) (setq local-abbrev-table lisp-mode-abbrev-table) …
forward-paragraph
¤Ê¤É¤Î´Ø¿ô¤Ï¡¢
ÊÑ¿ôparagraph-start
¤ÎÃͤò»È¤¤¤Þ¤¹¡£
Lisp¤Î¥³¡¼¥É¤ÏÉáÄ̤Υƥ¥¹¥È¤È¤Ï°Û¤Ê¤ë¤Î¤Ç¡¢
Lisp¤ò°·¤¨¤ë¤è¤¦¤ËÊÑ¿ôparagraph-start
¤òÆÃÊ̤ËÀßÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¤Þ¤¿¡¢Lisp¤Ç¤Ï¥³¥á¥ó¥È¤Î»ú²¼¤²¤ÏÆÃ¼ì¤Ê·Á¤Ê¤Î¤Ç¡¢
³Ælisp¥â¡¼¥É¤Ë¤ÏÆÈ¼«¤Î¥â¡¼¥É¸ÇͤÎcomment-indent-function
¤¬É¬ÍפǤ¹¡£
¤³¤ì¤é¤ÎÊÑ¿ô¤ËÀßÄꤹ¤ë¥³¡¼¥É¤¬¡¢
lisp-mode-variables
¤Î»Ä¤ê¤ÎÉôʬ¤Ç¤¹¡£
(make-local-variable 'paragraph-start) (setq paragraph-start (concat page-delimiter "\\|$" )) (make-local-variable 'paragraph-separate) (setq paragraph-separate paragraph-start) …
(make-local-variable 'comment-indent-function) (setq comment-indent-function 'lisp-comment-indent))
³Ælisp¥â¡¼¥É¤Ç¤Ï¡¢¥¡¼¥Þ¥Ã¥×¤¬Â¿¾¯°Û¤Ê¤ê¤Þ¤¹¡£
¤¿¤È¤¨¤Ð¡¢lisp¥â¡¼¥É¤Ç¤ÏC-c C-z¤òrun-lisp
¤Ë¥Ð¥¤¥ó¥É¤·¤Þ¤¹¤¬¡¢
¾¤Îlisp¥â¡¼¥É¤Ç¤Ï¤½¤¦¤·¤Þ¤»¤ó¡£
¤Ä¤®¤Î¥³¡¼¥É¤Ï¡¢¶¦Ä̤¹¤ë¥³¥Þ¥ó¥É¤òÀßÄꤷ¤Þ¤¹¡£
(defvar shared-lisp-mode-map () "Keymap for commands shared by all sorts of Lisp modes.") (if shared-lisp-mode-map () (setq shared-lisp-mode-map (make-sparse-keymap)) (define-key shared-lisp-mode-map "\e\C-q" 'indent-sexp) (define-key shared-lisp-mode-map "\177" 'backward-delete-char-untabify))
¤Ä¤®¤Ïlisp¥â¡¼¥É¸þ¤±¤Î¥¡¼¥Þ¥Ã¥×¤òÀßÄꤹ¤ë¥³¡¼¥É¤Ç¤¹¡£
(defvar lisp-mode-map () "Keymap for ordinary Lisp mode...") (if lisp-mode-map () (setq lisp-mode-map (make-sparse-keymap)) (set-keymap-parent lisp-mode-map shared-lisp-mode-map) (define-key lisp-mode-map "\e\C-x" 'lisp-eval-defun) (define-key lisp-mode-map "\C-c\C-z" 'run-lisp))
ºÇ¸å¤Ë¡¢emacs-lisp¥â¡¼¥É¤Î¥á¥¸¥ã¡¼¥â¡¼¥É´Ø¿ô¤Î´°Á´¤ÊÄêµÁ¤ò¼¨¤·¤Þ¤¹¡£
(defun lisp-mode () "Major mode for editing Lisp code for Lisps other than GNU Emacs Lisp. Commands: Delete converts tabs to spaces as it moves back. Blank lines separate paragraphs. Semicolons start comments. \\{lisp-mode-map} Note that `run-lisp' may be used either to start an inferior Lisp job or to switch back to an existing one.
Entry to this mode calls the value of `lisp-mode-hook' if that value is non-nil." (interactive) (kill-all-local-variables)
(use-local-map lisp-mode-map) ; ¥â¡¼¥É¤Î¥¡¼¥Þ¥Ã¥×¤òÁªÂò¤¹¤ë
(setq major-mode 'lisp-mode) ; ¤³¤ì¤Ë¤è¤êdescribe-mode
¤Ï
; ÀâÌÀʸ¤òõ¤·½Ð¤»¤ë
(setq mode-name "Lisp") ; ¥â¡¼¥É¹Ô¤Ëɽ¼¨¤µ¤ì¤ë
(lisp-mode-variables t) ; ¤µ¤Þ¤¶¤Þ¤ÊÊÑ¿ô¤òÄêµÁ¤¹¤ë
(setq imenu-case-fold-search t) (set-syntax-table lisp-mode-syntax-table) (run-hooks 'lisp-mode-hook)) ; ¥Õ¥Ã¥¯¤Ë¤è¤ë¥â¡¼¥É¤Î ; ¥«¥¹¥¿¥Þ¥¤¥º¤ò¥æ¡¼¥¶¡¼¤Ëµö¤¹
Next: Auto Major Mode, Previous: Major Mode Conventions, Up: Major Modes [Contents][Index]