;; Hosung Kim의 dotemacs를 수정한 것임. ;; ;; 한글 저장은 어떻게 되는 것인가? ;; ;; 버퍼에 쩍힌 영역에 따라 다르게 저장된다. 현재 default는 CP949로 ;; 저장되며, 만약 확장영역의 한글이 적히면 utf-8로 저장할 것인지 ;; 물어본다. (setq user-mail-address "user@domain.com" user-full-name "Users Name") (setq inhibit-startup-message t) (setq byte-compile-verbose nil byte-compile-warnings nil) (add-to-list 'load-path "~/elisp") ;;;===================================================================== ;;; hangul 설정 http://sylphong.egloos.com/1787602 ;;;============ ;;; 1. 새로운 한글 입력기를 load한다.(utf-8지원) ;;; 2. 윈도우에서 사용할 fontset을 만든다. ;;; 3. font dialog를 unix형태의 것으로 설정한다. ;;; 4. theme 설정 ;;; ;;; 날개셋이 Shift-Space를 사용하므로 IME를 원래 것으로 변경한다. ;;; (Ctrl-Shift-1로 가능) ;;; lisp/language/korea-util.el -> korean-key-bindings에 보면 ;;; 아래와 같이 key-mapping이 되어 있다. ;;; Shift-SPACE : toggle-korean-input-method ;;; Ctrl-f9 : quail-hangul-switch-symbol-ksc ;;; f9 : quail-hangul-switch-hanja ;;;===================================================================== (require 'hangul) (set-language-environment "Korean") (if (eq window-system 'w32) (progn ;; http://oldpie.yoonkn.com/cgi-bin/moin.cgi/EmacsFontSet ;; http://oldpie.yoonkn.com/cgi-bin/moin.cgi/dreamstorm/emacs ;; http://www.emacswiki.org/cgi-bin/wiki/FontSets ;; by hosung 2008-05-20 ;; http://www.gnu.org/software/emacs/windows/faq5.html#windows-font ;; M-x set-default-font 하면 폰트리스트가 나온다. ;; 폰트크기 18은 맨 첫줄을 따라 가는 것 같다. ksc5601에서 작게 해도 한글이 작아지지는 않는다. ;; ksc5601에서 c는 실제 p로 나오는데 어떤 것을 해도 상관 없다. ;; 맨끝의 0을 *로 하면 정상적으로 폰트가 출력되지 않는다. ;; ;; 이와 같이 ksc5601로 하면 확장문자에 대하여 네모박스로 출력되는 문제가 있다. ;; Consolas는 ms로 부터 다운로드 한다. ;;http://www.microsoft.com/downloads/details.aspx?familyid=22e69ae4-7e40-4807-8a86-b3d36fab68d3&displaylang=en ;; (create-fontset-from-fontset-spec ;; "-*-Consolas-normal-r-*-*-10-*-*-*-c-*-fontset-iso8859_1_10, ;; korean-ksc5601:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-ksc5601.1987-0, ;; unicode-bmp:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-iso10646-1" ;; ' (medium)) ;; (create-fontset-from-fontset-spec ;; "-*-Consolas-bold-r-*-*-10-*-*-*-c-*-fontset-iso8859_1_10, ;; korean-ksc5601:-outline-새굴림-bold-r-*-*-*-*-*-*-c-*-ksc5601.1987-0, ;; unicode-bmp:-outline-새굴림-bold-r-*-*-*-*-*-*-c-*-iso10646-1" ;; ' (bold)) (create-fontset-from-fontset-spec "-*-Consolas-normal-r-*-*-10-*-*-*-c-*-fontset-iso8859_1_10, korean-ksc5601:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-ksc5601.1987-0, unicode-bmp:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-iso10646-1" t) (create-fontset-from-fontset-spec "-*-Consolas-normal-r-*-*-11-*-*-*-c-*-fontset-iso8859_1_11, korean-ksc5601:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-ksc5601.1987-0, unicode-bmp:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-iso10646-1" t) (create-fontset-from-fontset-spec "-*-Consolas-normal-r-*-*-12-*-*-*-c-*-fontset-iso8859_1_12, korean-ksc5601:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-ksc5601.1987-0, unicode-bmp:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-iso10646-1" t) (create-fontset-from-fontset-spec "-*-Consolas-normal-r-*-*-13-*-*-*-c-*-fontset-iso8859_1_13, korean-ksc5601:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-ksc5601.1987-0, unicode-bmp:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-iso10646-1" t) (create-fontset-from-fontset-spec "-*-Consolas-normal-r-*-*-14-*-*-*-c-*-fontset-iso8859_1_14, korean-ksc5601:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-ksc5601.1987-0, unicode-bmp:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-iso10646-1" t) (create-fontset-from-fontset-spec "-*-Consolas-normal-r-*-*-15-*-*-*-c-*-fontset-iso8859_1_15, korean-ksc5601:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-ksc5601.1987-0, unicode-bmp:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-iso10646-1" t) (create-fontset-from-fontset-spec "-*-Consolas-normal-r-*-*-16-*-*-*-c-*-fontset-iso8859_1_16, korean-ksc5601:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-ksc5601.1987-0, unicode-bmp:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-iso10646-1" t) (create-fontset-from-fontset-spec "-*-Consolas-normal-r-*-*-17-*-*-*-c-*-fontset-iso8859_1_17, korean-ksc5601:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-ksc5601.1987-0, unicode-bmp:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-iso10646-1" t) (create-fontset-from-fontset-spec "-*-Consolas-normal-r-*-*-18-*-*-*-c-*-fontset-iso8859_1_18, korean-ksc5601:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-ksc5601.1987-0, unicode-bmp:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-iso10646-1" t) (create-fontset-from-fontset-spec "-*-Consolas-normal-r-*-*-19-*-*-*-c-*-fontset-iso8859_1_19, korean-ksc5601:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-ksc5601.1987-0, unicode-bmp:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-iso10646-1" t) (create-fontset-from-fontset-spec "-*-Consolas-normal-r-*-*-20-*-*-*-c-*-fontset-iso8859_1_20, korean-ksc5601:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-ksc5601.1987-0, unicode-bmp:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-iso10646-1" t) (create-fontset-from-fontset-spec "-*-Consolas-normal-r-*-*-21-*-*-*-c-*-fontset-iso8859_1_21, korean-ksc5601:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-ksc5601.1987-0, unicode-bmp:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-iso10646-1" t) (create-fontset-from-fontset-spec "-*-Consolas-normal-r-*-*-22-*-*-*-c-*-fontset-iso8859_1_22, korean-ksc5601:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-ksc5601.1987-0, unicode-bmp:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-iso10646-1" t) (create-fontset-from-fontset-spec "-*-Consolas-normal-r-*-*-23-*-*-*-c-*-fontset-iso8859_1_23, korean-ksc5601:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-ksc5601.1987-0, unicode-bmp:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-iso10646-1" t) (create-fontset-from-fontset-spec "-*-Consolas-normal-r-*-*-24-*-*-*-c-*-fontset-iso8859_1_24, korean-ksc5601:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-ksc5601.1987-0, unicode-bmp:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-iso10646-1" t) (create-fontset-from-fontset-spec "-*-Consolas-normal-r-*-*-25-*-*-*-c-*-fontset-iso8859_1_25, korean-ksc5601:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-ksc5601.1987-0, unicode-bmp:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-iso10646-1" t) (create-fontset-from-fontset-spec "-*-Consolas-normal-r-*-*-26-*-*-*-c-*-fontset-iso8859_1_26, korean-ksc5601:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-ksc5601.1987-0, unicode-bmp:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-iso10646-1" t) (create-fontset-from-fontset-spec "-*-Consolas-normal-r-*-*-27-*-*-*-c-*-fontset-iso8859_1_27, korean-ksc5601:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-ksc5601.1987-0, unicode-bmp:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-iso10646-1" t) (create-fontset-from-fontset-spec "-*-Consolas-normal-r-*-*-28-*-*-*-c-*-fontset-iso8859_1_28, korean-ksc5601:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-ksc5601.1987-0, unicode-bmp:-outline-새굴림-normal-r-*-*-*-*-*-*-c-*-iso10646-1" t) (setq initial-frame-alist '((top . 10) (left . 100))) (setq default-frame-alist (append '( ;;(font . "-outline-Bitstream Vera Sans Mono-normal-r-normal-normal-14-*-*-*-c-*-iso8859-1") ;(font . "-*-Consolas-normal-r-*-*-14-*-*-*-c-*-fontset-iso8859_1_14") (font . "fontset-iso8859_1_15");; 위와 같이 full로 적기 않고 fontset이후만 적어도 된다. (width . 100) (height . 45) ;;(cursor-type . (bar . 1)) ) default-frame-alist)))) ;; Tell NT Emacs to use a font menu similar to the one it uses on Unix (setq w32-use-w32-font-dialog nil) ;; Shift mouse 1 click시 윈도우 폰트 ;; 다이얼로그 대신 Unix시스템과 같은 ;; 폰트 선택리스트가 ;; 나온다. fontset에 내가 등록한 ;; 폰트가 나온다. ;(add-to-list 'load-path "~/elisp/color-theme/") ;(require 'color-theme) ;(color-theme-initialize) ;(color-theme-clarity) ;(load-file "~/elisp/color-theme/color-theme-colorful-obsolescence.el") ;(color-theme-colorful-obsolescence) ;;;===================================================================== ;;; 각종 외관에 관한 설정 ;;;===================================================================== (global-font-lock-mode 1) ; syntanx highlight (setq font-lock-maximum-decoration t) (transient-mark-mode t) ; marking highlight (show-paren-mode t) ; 짝이 맞는 괄호 보여준다 (delete-selection-mode 1) ; 윈도우처럼, 선택된 reging을 EL로 ; 지우거나, 다른 글자를 타이핑할때 즉시 ; 지운다. ;;(setq-default truncate-lines t) ; 화면을 벗어나는 긴 줄처리 toggle-truncate-lines 참고 (setq frame-title-format (list "GNU Emacs " emacs-version "@" system-name " - " '(buffer-file-name "%f" "%b"))) (setq icon-title-format frame-title-format) ;;; 어떤 함수를 수정중인지 modeline에 표현 ;;; semantic-stickyfunc-mode 보다는 이게 보기 좋다 (which-function-mode 1) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; 외관 모양 (scroll-bar-mode -1) (tool-bar-mode -1) ;;(menu-bar-mode -1) ;; Ctrl+right mouse (line-number-mode 1) ; mode line 에 라인수를 표시한다 (column-number-mode 1) ; mode line 에 컬럼을 표시한다(기본이 아니더라) ;;(display-time) ;; NTEmacs가 죽는다?? ;; from http://www.emacswiki.org/cgi-bin/wiki/BufferMenu (global-set-key (kbd "C-x C-b") 'ibuffer) (global-set-key (kbd "M-g") 'goto-line) ;;; ido-mode(Interactive Do) ;;; http://www.emacsblog.org/2008/05/19/giving-ido-mode-a-second-chance/ ;;; Flex or fuzzy matching is the ability to match any item containing ;;; the characters in the given sequence. For example, “mwc” might ;;; match a file named “my_wicked_class.rb.” (require 'ido) (ido-mode t) (setq ido-enable-flex-mating t) ; fuzzy matching is a must have (defun recentf-open-files-compl () (interactive) (let* ((all-files recentf-list) (tocpl (mapcar (function (lambda (x) (cons (file-name-nondirectory x) x))) all-files)) (prompt (append '("File name: ") tocpl)) (fname (completing-read (car prompt) (cdr prompt) nil nil))) (find-file (cdr (assoc-ignore-representation fname tocpl))))) (global-set-key "\C-x\C-r" 'recentf-open-files-compl) ;; override read-only ;; (ido-everywhere 1) ;; (setq ido-use-filename-at-point 'guess ;; ido-use-url-at-point t) ;; ;;(iswitchb-mode 1) ;;; ====================================================================== ;;; highlight-current-line.el ;;; http://www.emacswiki.org/cgi-bin/wiki/HighlineMode 이걸로 바꾸면? ;;; ====================================================================== ;;; 커서가 있는 라인을 빛나게 한다. ;;(when window-system ;; (require 'highlight-current-line) ;; (highlight-current-line-on t) ;; (highlight-current-line-set-bg-color "gray20")) ;; hippie-expand ;;;http://trey-jackson.blogspot.com/2007/12/emacs-tip-5-hippie-expand.html (global-set-key (kbd "M-/") 'hippie-expand) (setq hippie-expand-try-functions-list '(try-expand-dabbrev try-expand-dabbrev-all-buffers try-expand-dabbrev-from-kill try-complete-file-name-partially try-complete-file-name try-expand-all-abbrevs try-expand-list try-expand-line try-complete-lisp-symbol-partially try-complete-lisp-symbol)) ;; function to reload .emacs 2008.01.24 (defun reload-dotemacs () "Reload .emacs" (interactive) (load-file "~/.emacs")) ;; TODO, BUG 등에 강조표시 (font-lock-add-keywords 'c++-mode '(("\\<\\(FIXME\\):" 1 c-nonbreakable-space-face prepend) ("\\<\\(TODO\\):" 1 c-nonbreakable-space-face prepend) ("\\<\\(BUG\\):" 1 c-nonbreakable-space-face prepend) ("\\<\\(NOTE\\):" 1 c-nonbreakable-space-face prepend))) ;;;===================================================================== ;;; AUCTeX ;;; http://physics.kyunghee.ac.kr/~reds/Hpack_Project/k-download.htm ;;; http://www.gnu.org/software/auctex/download-for-windows.html 에서 ;;; Precompiled AUCTeX for Emacs를 다운 받아 압축을 푼 후 Emacs가 설치된 ;;; 디렉토리로 복사한다. ;;; -*-주의사항-*- info의 dir은 복사하지 말고 원본에 추가해야한다. ;;;===================================================================== (setq TeX-auto-save t) (setq TeX-parse-self t) ;; If use \include or \input, for multi-file document. (setq-default TeX-master nil) ;(add-hook 'LaTeX-mode-hook 'turn-on-auto-fill) ;(add-hook 'LaTeX-mode-hook 'turn-on-reftex) (setq reftex-plug-into-AUCTeX t) ;;settings for bib-cite.el (autoload 'turn-on-bib-cite "bib-cite") ;(add-hook 'LaTeX-mode-hook 'turn-on-bib-cite) ;; '(TeX-bar-LaTeX-buttons (quote (open-file kill-buffer save-buffer cut copy paste undo [separator nil] latex next-error view bibtex))) ;; '(TeX-newline-function (quote newline-and-indent)) (add-hook 'LaTeX-mode-hook (function (lambda () ;; bib-cite (turn-on-auto-fill) (turn-on-reftex) (turn-on-bib-cite) (outline-minor-mode) (TeX-source-specials-mode 1) ;;(TeX-newline-function (quote reindent-then-newline-and-indent)) ;; PDF파일이 있으면 emacs가 자동으로 PDF mode를 on해서 ;; pdflatex로 컴파일하게 된다. 이것을 disalbe한다. ;; 제대로 동작하지 않는다. ;; 2006-07-01 ;; 파일 Local Variables에 TeX-PDF-mode: nil을 추가한다. (TeX-PDF-mode t) ;; http://physics.kyunghee.ac.kr/~reds/Hpack_Project/faq.htm 확장자에 대한 이야기가 나온다. ;; - \site-lisp\auctex\tex.el 에서 확장자를 지정해준다. ;; 아래에서 %a에 pdf를 추가한 것이다. (add-to-list 'TeX-expand-list '("%a" file "pdf" t)) ;; (add-to-list 'TeX-command-list ;; (list "LaTeX" "latex --src-specials \\nonstopmode\\input{%s}" ;; 'TeX-run-LaTeX nil t)) (add-to-list 'TeX-command-list (list "TeXify" "texify --src %t" 'TeX-run-command nil t)) ;;(add-to-list 'TeX-command-list ;; (list "Ghostview" "C:\\PROGRA~1\\Ghostgum\\gsview\\gsview32.exe %f" ;; 'TeX-run-command nil t)) (add-to-list 'TeX-command-list (list "dviPS" "dvips %d -o %f" 'TeX-run-command nil t)) ;; (add-to-list 'TeX-command-list ;; (list "dvipdfm" "dvipdfmx %d" 'TeX-run-command nil t)) ;; (add-to-list 'TeX-command-list ;; (list "BibTeX" "bibtex %s" 'TeX-run-BibTeX nil nil)) ;; (add-to-list 'TeX-command-list ;; (list "Index" "makeindex %s" 'TeX-run-command nil t)) ;; (add-to-list 'TeX-command-list ;; (list "dviPS-landscape" "dvips %d -t landscape -o %f" 'TeX-run-command nil t)) ;; (add-to-list 'TeX-command-list ;; (list "Check" "lacheck %s" 'TeX-run-compile nil t)) ;; (add-to-list 'TeX-command-list ;; (list "GS PDFView" "C:\\gs\\Ghostgum\\gsview\\gsview32.exe %a" 'TeX-run-command nil t)) ;; (add-to-list 'TeX-command-list ;; (list "Acrobat" "C:\\PROGRA~1\\Adobe\\ACROBA~2.0\\Reader\\AcroRd32.exe %a" 'TeX-run-command nil t)) ;;(list "Acrobat" "AcroRd32.exe %a" 'TeX-run-command nil t) ;;(add-to-list 'TeX-command-list ;; (list "Foxit" "C:\\PROGRA~1\\FOXITS~1\\FOXITR~1\\FOXITR~1.EXE %a" 'TeX-run-command nil t)) ;; cmd.exe -> dir /X short name (add-to-list 'TeX-command-list (list "SumatraPDF" "C:\\PROGRA~1\\SUMATR~1\\SUMATR~1.EXE %a" 'TeX-run-command nil t)) (add-to-list 'TeX-command-list (list "DVIPDFMx" "dvipdfmx %d" 'TeX-run-command nil t)) (add-to-list 'TeX-command-list (list "ko-Index" "komkindex -s kotex %s" 'TeX-run-command nil t)) ;; (add-to-list 'TeX-command-list ;; (list "DVISearch" "yap.exe -1 -s %n%b %d" 'TeX-run-command nil t)) (add-to-list 'TeX-command-list (list "DVISearch" "c:\\usr\\texlive\\dviout\\dviout.exe -1 %d # %n %b" 'TeX-run-command nil t)) (add-to-list 'TeX-command-list (list "DviOut" "c:\\usr\\texlive\\dviout\\dviout.exe %d" 'TeX-run-command nil t)) ;; `pdflatex -src-specials -interaction=nonstopmode "\input" "csi.tex" (add-to-list 'TeX-command-list (list "PDFLaTeX" "pdflatex -src-specials -interaction=nonstopmode -synctex=-1 %t" 'TeX-run-command nil t)) (add-to-list 'TeX-command-list (list "PDFSearch" "c:\\usr\\texlive\\HOME\\bin\\fsrch.bat %a %b %n" 'TeX-run-command nil t)) ;;; key-binding (define-key LaTeX-mode-map [f9] 'do-LaTeX) ;;(define-key LaTeX-mode-map [f10] 'do-DVISearch) (define-key LaTeX-mode-map [f10] 'do-PDFSearch) (define-key LaTeX-mode-map [f11] 'do-DVIPDFMx) ))) (defun do-LaTeX () "LaTeX the curent file." (interactive) (TeX-command "LaTeX" 'TeX-master-file)) (defun do-PDFSearch () "Forward search LaTeX the current file position." (interactive) (TeX-command "PDFSearch" 'TeX-master-file)) (defun do-DVISearch () "Forward search LaTeX the current file position." (interactive) (TeX-command "DVISearch" 'TeX-master-file)) (defun do-DVIPDFMx () "Running DVIPDFMx" (interactive) (TeX-command "DVIPDFMx" 'TeX-master-file)) ;; if you have a network connection with UNIX like environment ;; take care of CR/LF disabling if NTemacs manages (load/save) files on it ;; ftp://ftp.sunet.se/pub/os/Win32/ntEmacs/docs/ntemacs.html#translation ;(load "untranslate") ;(add-untranslated-filesystem "d:") ; d: is a UNIX drive ;;if you encounter a file with ^M or ... at the end of every line, ;; this means a worng copy by samba or floppy disk of the DOS file to UNIX. ;; get rid of them by pressing [F5] ;;(global-set-key [f5] 'cut-ctrlM) ; cut all ^M. (defun cut-ctrlM () "Cut all visible ^M." (interactive) (beginning-of-buffer) (while (search-forward "\r" nil t) (replace-match "" nil t)) ) ;; use ISPELL on PC (see http://cat.rpi.edu/~tibbetts/ispell_toc.html ;; fot the installation procedure) ;; you don't need to add c:\ispell4\exe to your PATH, and ;; you don't need to copy or move any file after unzipping ;; if you define ispell-command and ispell-look-command properly. ;; M-$ for ispell word under cursor, M-x ispell-buffer for whole buffer ;; see also pull-down menu , , . ;; For ispell-3.2.06-w32 by Suk-Ho Hong ;; download http://examples.oreilly.com/gnu3/ispell.zip version 3.1.20 ;; TODO. LyX 깔면 자동으로 다운로드 하든 것 같은데 확인할것 (when (eq system-type 'windows-nt) (cond ((file-exists-p "d:/Programs/ispell/bin/ispell.exe") (autoload 'ispell-word "ispell" "Check spelling of word at or before point" t) (autoload 'ispell-complete-word "ispell" "Complete word at or before point" t) (autoload 'ispell-region "ispell" "Check spelling of every word in the region" t) (autoload 'ispell-buffer "ispell" "Check spelling of every word in the buffer" t) (setq ispell-command "~/ispell/bin/ispell.exe" ispell-look-dictionary "~/ispell/lib/ispell.words" ispell-look-command "d:/Programs/ispell/bin/look.exe" ispell-command-options (list "-d" "d:/Programs/ispell/ISPELL~1.DIC")))) (setenv "ISPELLDICTDIR" "d:/Programs/ispell/dic") (setq exec-path (append (list "d:/Programs/ispell/bin") exec-path)) ) ;still necessary (setenv "TEMP" "c:/windows/temp") (setenv "TMP" "c:/windows/temp") ;helpful (setq text-mode-hook '(lambda () (local-set-key "\M-\t" 'ispell-complete-word))) (setq tex-mode-hook ' (lambda () (local-set-key "\M-\t" 'ispell-complete-word))) (setq latex-mode-hook ' (lambda () (local-set-key "\M-\t" 'ispell-complete-word))) ;; enable tex parser, also very helpful (setq ispell-enable-tex-parser t) ;;;===================================================================== ;;; noweb-mode ;;;===================================================================== ;; (autoload 'noweb-mode "noweb-mode" "Editing noweb files." t) ;; (setq auto-mode-alist (append (list (cons "\\.nw$" 'noweb-mode)) ;; auto-mode-alist)) ;; ;;(require 'noweb-font-lock-mode) ;; ;; from noweb-mode.el 아래 comment에서 복사함. 2008-05-29 ;; ;;; We need this variable since we will be overwriting the ;; ;;; noweb-code-mode from time to time. ;; (defvar my-noweb-main-code-mode nil ;; "Variable used to save the default noweb-code-mode.") ;; (defun my-set-noweb-code-mode (beg-pt end-pt) ;; "Set the noweb-code-mode for the chunk between BEG-PT and END-PT." ;; (let (beg end done mode) ;; ;; Reset code-mode to default and then check for a mode comment. ;; (setq mode my-noweb-main-code-mode) ;; (save-excursion ;; (goto-char beg-pt) ;; (beginning-of-line 2) ;; (and (search-forward "-*-" ;; (save-excursion (end-of-line) (point)) ;; t) ;; (progn ;; (skip-chars-forward " \t") ;; (setq beg (point)) ;; (search-forward "-*-" ;; (save-excursion (end-of-line) (point)) ;; t)) ;; (progn ;; (forward-char -3) ;; (skip-chars-backward " \t") ;; (setq end (point)) ;; (goto-char beg) ;; (setq mode (intern ;; (concat ;; (downcase (buffer-substring beg end)) ;; "-mode"))))) ;; (noweb-set-code-mode mode)))) ;; (defun my-noweb-pre-select-code-mode-hook () ;; "Set the code mode for the current chunk." ;; (let ((r (noweb-chunk-region))) ;; (my-set-noweb-code-mode (car r) (cdr r)) ;; t)) ;; (defun my-noweb-select-mode-hook () ;; "Fontify the current chunk based on the chunks mode." ;; ;; If this is the first time, save the default noweb-code-mode. ;; (if my-noweb-first-time ;; (progn ;; (setq my-noweb-first-time nil) ;; (setq my-noweb-main-code-mode noweb-code-mode))) ;; (font-lock-set-defaults) ;; (let ((r (noweb-chunk-region))) ;; (save-excursion ;; (font-lock-fontify-region (car r) (cdr r)) ;; t))) ;; (defun my-noweb-mode-hook() ;; (setq my-noweb-first-time t)) ;; (add-hook 'noweb-mode-hook 'my-noweb-mode-hook) ;; (add-hook 'noweb-select-mode-hook 'my-noweb-select-mode-hook) ;; (add-hook 'noweb-pre-select-code-mode-hook 'my-noweb-pre-select-code-mode-hook) ;;;===================================================================== ;;; python mode ;;; : http://sourceforge.net/projects/python ;;;===================================================================== ;;;--->START (setq auto-mode-alist (cons '("\\.py$" . python-mode) auto-mode-alist)) (setq auto-mode-alist (cons '("\\.pyw$" . python-mode) auto-mode-alist)) (setq interpreter-mode-alist (cons '("python" . python-mode) interpreter-mode-alist)) (autoload 'python-mode "python-mode" "Python editing mode." t) ;;;<---END python mode ;;; ================================================================================= ;;; Key-map ;;; ================================================================================= (defmacro mapkeys (map &rest bindings) "keymapping macro by jay@kldp.org. USAGE : (mapkeys map keystring command) or (mapkeys (map1 map2 ...) keystring command)" (if (consp map) `(progn ,@(loop for m in map if (and (boundp m) (keymapp (symbol-value m))) collect `(mapkeys ,m ,@bindings))) `(progn ,@(loop for l = bindings then (cddr l) until (null l) collect (if (symbolp (cadr l)) `(define-key ,map ,(read-kbd-macro (car l)) ',(cadr l)) `(define-key ,map ,(read-kbd-macro (car l)) ,(cadr l))))))) ;;; ================================================================================= ;;; c-mode ;;; ================================================================================= (defun my-custom-c-mode () "my c mode customization" (interactive) (c-set-offset 'comment-intro 0) (setq comment-multi-line t) ;;(setq tab-stop-list ;;refer to upper modify Tab ;; '(4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80)) (setq c-recognize-knr-p nil) (c-toggle-auto-hungry-state 1) (turn-on-auto-fill) (abbrev-mode 1) ;; --> start added by hosung in solomon with clearmake ;;(setq compile-command "clearmake -C gnu -J 16 -k") (setq compile-command "clearmake -C gnu -k") (c-set-style "stroustrup") ;; --> end (unless (or (file-exists-p "makefile") (file-exists-p "Makefile")) (make-local-variable 'compile-command) ;;; (when buffer-file-name ;;; (setq compile-command ;;; (concat "clearmake -C gnu -J 16 -k" ;; modified by hosung "make -k" ;;; ;;(concat "clearmake -C gnu -J 16" ;; in solomon with clearmake ;;; (file-name-sans-extension ;;; (file-name-nondirectory buffer-file-name))))) ) (ignore-errors (require 'newcomment)) ;; here follows local key bindings for C and Java modes only ;; the "xref-key-binding" variable must be set to 'local in order ;; that this binding takes effect). ;; ;; maybe you will need to customize the following loaded file name ;; to one containing c-mode-map and java-mode-map definitions (load "cc-mode") (mapkeys (c-mode-map c++-mode-map java-mode-map) "RET" newline-and-indent "M-(" insert-parentheses "(" insert-delimiter-pair ")" insert-delimiter-pair "{" insert-delimiter-pair "}" insert-delimiter-pair "[" insert-delimiter-pair "]" insert-delimiter-pair ;; visual studio compatabiel key bindings ;;"" gud-next ;;"C-" gud-cont-to ;;"" gud-step ;;"" tags-search ;; align stuffs "C-c a" align ;; skels "C-c c" c-block-comment "C-c e" c-local-var-block "C-c C-i" c-skel "C-c #" c-insert-ifdef "C-c ;" c-set-comment-style "C-c =" c-align-eql "C-c |" c-align-decls ;; miscs ;;"C-c x" cpp-parse-buffer "C-c C-f" function-comment ) (and (fboundp 'highlight-regexp) (highlight-regexp "FIXME\\|TODO\\|XXX\\|CODING" 'hi-black-b)) ) (add-hook 'c-mode-common-hook 'my-custom-c-mode) (defun c-set-comment-style (style-name) (interactive (list (let ((prompt (format "Which %s indentation style? " mode-name))) (completing-read prompt (mapcar (lambda (a) (list (symbol-name (car a)))) comment-styles) nil t (symbol-name comment-style) 'c-set-comment-style-history)))) (setq comment-style (intern style-name)) (message "comment style set to %s." style-name) (sit-for 1)) ;; align = and declaration stuffs (defun c-align-eql (start end) (interactive (if (and mark-active (or (not (fboundp 'transient-mark-mode)) transient-mark-mode)) (list (region-beginning) (region-end)) (list nil nil))) (if (null start) (save-excursion (mark-paragraph-dwim) (call-interactively 'c-align-eql)) (save-excursion (setq start (progn (setf (point) start) (point-at-bol))) (setq end (progn (setf (point) end) (point-at-bol))) (let ((max-col 0)) (setf (point) start) (while (<= (point) end) (setq max-col (max max-col (if (search-forward "=" (point-at-eol) t) (current-column) 0))) (beginning-of-line 2)) (setf (point) start) (while (<= (point) end) (when (search-forward "=" (point-at-eol) t) (backward-char 1) (while (> (- max-col (current-column)) 1) (insert ? ) (incf end))) (beginning-of-line 2)))))) (defun c-align-decls (start end) (interactive (if (and mark-active (or (not (fboundp 'transient-mark-mode)) transient-mark-mode)) (list (region-beginning) (region-end)) (list nil nil))) (if (null start) (save-excursion (mark-paragraph-dwim) (call-interactively 'c-align-decls)) (save-excursion (setq start (progn (setf (point) start) (point-at-bol))) (setq end (progn (setf (point) end) (point-at-bol))) (let ((max-col 0)) (setf (point) start) (while (<= (point) end) (setq max-col (max max-col (if (and (not (looking-at "^\\s-*}")) (re-search-forward ",\\|;" (point-at-eol) t)) (progn (decf (point)) (while (and (skip-chars-backward "\\s-*") (memq (char-before) '(?\] ?\)))) (backward-sexp 1)) (backward-sexp 1) ;; let pointer tied together with the variable (while (eq (char-before) ?\*) (backward-char)) (current-column)) 0))) (beginning-of-line 2)) (setf (point) start) (while (<= (point) end) (when (and (not (looking-at "^\\s-*}")) (re-search-forward ",\\|;" (point-at-eol) t)) (decf (point)) (while (and (skip-chars-backward "\\s-*") (memq (char-before) '(?\] ?\)))) (backward-sexp 1)) (backward-sexp 1) ;; let pointer tied together with the variable (while (eq (char-before) ?\*) (backward-char)) (while (> (- max-col (current-column)) 0) (insert ? ) (incf end))) (beginning-of-line 2)))))) (defun mark-paragraph-dwim () (let (b e) (forward-line -1) (mark-paragraph) (setq b (region-beginning) e (region-end)) (setf (point) e) (when (re-search-backward "^\\s-*{" b t) (forward-line 1) (setq b (point))) (setf (point) e) (set-mark b) (setq mark-active t))) (defun c-block-comment () (interactive) (let (pt) (insert "/* " (make-string 70 ?=) " *\n") (insert " * ") (setq pt (point)) (insert "\n") (insert " * " (make-string 70 ?=) " *\n") (insert " */" "\n") (setf (point) pt))) (defun c-local-var-block () (interactive) (insert " /* * Local variables: * * End: */ ") (save-match-data (re-search-backward "^ [*] End:") (forward-line -1) (end-of-line))) (defun c-insert-delimiter-pair () (interactive) (call-interactively 'insert-delimiter-pair) (call-interactively 'c-indent-command)) ;; pair file generator (defun c-skel () (interactive) (let* ((file-name (file-name-nondirectory (buffer-file-name))) (file-name-symbol (concat "_" (file-name-sans-extension file-name) "_H_")) (extension (intern (file-name-extension file-name))) (pt (point))) (case extension ((c) (beginning-of-buffer) (insert "/* " file-name " -- " ) (setq pt (point)) (insert " * Time-stamp: <> * $Id" "$ */ #if !defined (lint) static char rcsid[] = \"$Id" "$\"; #endif ") (end-of-buffer) (insert " /* * Local variables: * End: */ /* " file-name " ends here. */")) ((h) (beginning-of-buffer) (insert "/* " file-name " -- " ) (setq pt (point)) (insert " * Time-stamp: <> * $Id" "$ */ ") (insert "#ifndef " file-name-symbol " #define " file-name-symbol " ") (end-of-buffer) (insert "#endif /* !" file-name-symbol "*/ ") ) (otherwise (beginning-of-buffer) (insert "-*- mode: outline; mode: auto-fill; outline-regexp:\" *[*^L]+\" -*-") (insert "\n") (insert "\n") (insert "TITLE: ") (setq pt (point)) (insert "\nTime-stamp: <>\n\n") )) (setf (point) pt))) (defun c-insert-ifdef (symbol &optional arg) "insert ifdef statements" (interactive "*ssymbol : \nP") (let ((pt (point))) (beginning-of-line) (insert "#if defined(" symbol ")\n") (setq pt (point)) (if arg (progn (insert "\n#else /* ! " symbol " */\n\n") (insert "#endif /* ! " symbol " */\n")) (insert "\n#endif /* " symbol " */\n")) (setf (point) pt) (c-indent-command))) (defvar extra-delimiter-pairs '((?\` . ?\') (?< . ?>) (?( . ?)) (?\' . ?\')) "Alist of delimiters that should be paired in addition to syntax.") (defun insert-delimiter-pair (arg) "Put pair of delimiters around next ARG words, and leave point after first. No argument is equivalent to zero: just insert pair and leave point between. If the last command character has open-parenthesis syntax or is equal to the car of an element of `extra-delimiter-pairs', insert it and the matching parenthesis. If it has close-parenthesis syntax or is equal to the cdr of an element of `extra-delimiter-paris', search for the first occurrence and leave point past it; ignore ARG. Any other syntax means just insert a pair of the last command character." (interactive "P") (let* ((arg (if arg (prefix-numeric-value arg) 0)) (command (or (eval-in-xemacs (event-key last-command-event)) (eval-in-gnuemacs (logand last-command-char ?\xff)))) (before (assoc command extra-delimiter-pairs)) (after (rassoc command extra-delimiter-pairs))) (if (or after (eq (char-syntax command) ?\))) (search-forward (char-to-string command) nil t) (if (or before (eq (char-syntax command) ?\()) (setq after (if before (cdr before) (matching-paren command)) before command) (setq before command after command)) (if (< arg 0) (save-excursion (insert after) (forward-sexp arg) (insert before)) (or (eq arg 0) (skip-chars-forward " \t")) (insert before) (save-excursion (or (eq arg 0) (forward-sexp arg)) (insert after)))))) (defvar maybe-byte-compile-file t "If non-nil, byte-compiles el file if it was before when saved.") (defun maybe-byte-compile-file () "For files ending in \".el\", byte-compile if there is a \".elc\" file. Also, if the file appears to be loaded, re-load it." (when (and maybe-byte-compile-file (string= (substring buffer-file-name -3) ".el") (file-exists-p (concat buffer-file-name "c"))) (let ((byte-compile-verbose nil) (byte-compile-warnings nil) (reload (save-excursion (widen) (goto-char (point-min)) (and (search-forward "\n(provide '" nil t) (featurep (read (current-buffer))))))) (byte-compile-file buffer-file-name reload)))) (add-hook 'after-save-hook #'maybe-byte-compile-file t) ;; (add-hook 'dired-load-hook ;; (lambda () ;; (load "dired-x") ;; ;; Set dired-x global variables here. For example: ;; ;; (setq dired-guess-shell-gnutar "gtar") ;; ;; (setq dired-x-hands-off-my-keys nil) ;; )) ;; (add-hook 'dired-mode-hook ;; (lambda () ;; ;; Set dired-x buffer-local variables here. For example: ;; ;; (dired-omit-mode 1) ;; )) ;;;===================================================================== ;;; using sww ;;; http://www.xsteve.at/prg/emacs/sww.el ;;;===================================================================== ;;(require 'sww) ;;(setq sww-sww-cmd "d:/programs/sww.exe") ;;; 특정키에 연결된 함수나, 특정함수 이름 혹은 변수의 소스를 보고 싶은 경우 ;;; 이 함수는 다음과 같은 명령어들이 정의 된다. ;;; C-x F : 함수의 정의를 찾아감 ;;; C-x 4 F : 다른 버퍼에 표시 ;;; C-x 5 F : 다른 프레임에 표시 ;;; C-x V : 변수의 정의를 찾아감 ;;; C-x 4 V ;;; C-x 5 V ;;; C-x K : 키에 연결된 명령의 정의로 바로 찾아감 ;;; 이들은 "C-h f"또는 " f"나 "C-h k"나 " k"등의 명령과 흡사하지만, ;;; 설명을 "*Help*"버퍼에 보여주는 것 대신에, 명령이 정의된 소스를 보여준다. (find-function-setup-keys) (defun clipboard() "open clipboard file." (interactive) (find-file "~/clipboard")) ;;http://kldp.org/node/95647 ;; Emacs 문장 단위 명령과 구두점 뒤 스페이스 두 개 (setq sentence-end-double-space nil) ;;;===================================================================== ;;; using emacsclientw ;;;===================================================================== (server-start) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; customize menu (custom-set-variables ;; custom-set-variables was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(cua-mode nil nil (cua-base)) '(emacsw32-style-frame-title t) '(font-latex-fontify-sectioning 1.1) '(ido-mode (quote both) nil (ido)) '(menuacc-mode nil) ; '(org-agenda-files (quote ("d:/work/org/daily.org" "d:/work/org/journal.org" "d:/work/org/2008.org" "d:/work/org/todo.org"))) ; '(recentf-mode t) ; '(safe-local-variable-values (quote ((TeX . UTF-8) (noweb-doc-mode . latex-mode) (noweb-code-mode . c-mode) (noweb-code-mode . C-mode)))) ; '(swbuff-y-mode t) ; '(text-mode-hook (quote (turn-on-auto-fill text-mode-hook-identify)))) ;(custom-set-faces ; ;; custom-set-faces was added by Custom. ; ;; If you edit it by hand, you could mess it up, so be careful. ; ß;; Your init file should contain only one such instance. ; ;; If there is more than one, they won't work right. )