====== emacs ====== * reference.pdf があるとショートカットを覚えるのに便利 * [[http://clip.dia.fi.upm.es/~albegarcia/emacs-reference.pdf]] 以下,微妙に使うショートカットを一部抜粋 | M-= | 文字数のカウント | | C-M-\| カレントリージョンをまとめてインデント| | C-c Enter | (.f90モード) &(改行)&を出力| ===== テキストの印刷 ===== C-u M-x ps-print-buffer-with-faces でpsファイルにカラーのまま出力. 白黒でよければ, C-u M-x ps-print-buffer ===== エラーメッセージ ===== ** (emacs:16172): CRITICAL **: murrine_style_draw_box: assertion `height >= -1' failed なんてエラーがでる場合,/usr/share/themes/Ambiance/gtk-2.0/gtkrc を編集. GtkRange::trough-under-steppers = 0 => GtkRange::trough-under-steppers = 1. ===== フレームを縦分割したときも折り返し ===== C-x 3したときに、右から文字があふれる人のために。 (setq truncate-partial-width-windows nil) ===== 折り返しをON/OFF ===== C-c C-lで折り返したり溢れさせたり、を切り替えれるようになる。 (defun toggle-truncate-lines () "折り返し表示をトグル動作します." (interactive) (if truncate-lines (setq truncate-lines nil) (setq truncate-lines t)) (recenter)) (global-set-key "\C-c\C-l" 'toggle-truncate-lines) ; 折り返し表示ON/OFF ===== etags ===== たくさんサブルーチンを作る人は、tagをつけると幸せ。 ~/workdir$ etags *f90 *f とやると、workdir 内にある *f90 *fの中で呼ばれているサブルーチンのリストを作ってくれる。 リストはTAGSというファイルに吐き出される。 さらに、 *.f90のなかに、hogeというサブルーチンがあるとき、emacsでhogeの文字の上にカーソルをもってきて M-. と叩くと、hogeが定義されている場所に連れていってくれる。 元の箇所へ帰るときは M-* http://www.bookshelf.jp/soft/meadow_42.html#SEC634 http://www.emacswiki.org/emacs/?action=browse;oldid=TagFile;id=TagsFile ===== 背景を黒く ===== 背景が黒の方が目にやさしいらしい。 .zshrcか何かに、 alias emacs='emacs -r' でおk。もっと凝ったことをしたければ、 http://www.emacswiki.org/emacs/ColorTheme なんてのもあるらしい。 load-pathの通った場所 ((.emacsに (setq load-path (cons (expand-file-name "~/適当な/ディレクトリの/名前") load-path)) を書けばよい)) にcolor-theme.elを置いて、 .emacsに (require 'color-theme) と書いて、M-x color-theme-[Tab]で気に入ったものを探せばよろしい。 気に入ったテーマが見つかったら、.emacsに (color-theme-hogehogehoge) と書いておくと、emacsを起動するたびにhogehogehogeを開いてくれる。 ただし、拾ってきたcolor-theme.elにはbugがいる模様。common-color-configurationの部分をコメントアウトすれば、一応動くようにはなる。FIXME ===== ispell-buffer ===== M-x(Alt押しながらx)ispell-bufferで、スペルチェックしてくれる。 Error: No word lists can be found for the language "ja_JP".と怒られるかも。 ~/.aspell.confというファイルを新規作成して、 lang en_US と書いておく。 ispell-buffer起動後は、変更したい単語を選ぶことでスペルミスをした単語を修正できる。 また、間違っていない場合(elastodynamics, FEMなど)はSpaceを押すとスキップでき、さらにその単語を自分の辞書に追加したい場合はiを押せば良い。 追加の単語は ~/.aspell.en.pws に記述される.直接編集することも可能. ===== emacsから日本語文書を直接印刷 ===== * gs-cjk-resource, cmap-adobe-japan1が必要 sudo apt-get install gs-cjk-resource cmap-adobe-japan1 * ~/.emacs.el に以下の設定を追記. (setq ps-multibyte-buffer 'non-latin-printer) (require 'ps-mule) (defalias 'ps-mule-header-string-charsets 'ignore) * M-x ps-print-buffer かメニューバーからFile => print Postscript Bufferで印刷. ===== anthyの設定 ===== ; Anthy, swith mode by CTRL- (load-library "anthy") (setq default-input-method "japanese-anthy") ;(setq its-hira-period ".") ;(setq its-hira-comma ",") (anthy-change-hiragana-map "," ",") (anthy-change-hiragana-map "." ".") ===== スタートアップスクリーン ===== デフォルトで分割されている窓を1つに (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. '(inhibit-startup-screen t)) (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. ) ===== yatexの設定 ===== ;旧来のショートカットを利用(ubuntu only?) (setq YaTeX-inhibit-prefix-letter nil) ;;*.texで自動的にYaTeXモード (setq auto-mode-alist (cons (cons "\\.tex$" 'yatex-mode) auto-mode-alist)) (autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t) ;;TeX typeset (setq tex-command "platex") ;;dvi preview (setq dvi2-command "xdvi") ;; 1 = Shift_JIS, 2 = ISO-2022-JP, 3 = EUC-JP, 4 = UTF-8 (setq YaTeX-kanji-code 4) ;;use LaTeX2e and AMS-LaTeX (setq YaTeX-use-LaTeX2e t) (setq YaTeX-use-AMS-LaTeX t) ;;font latex hook (add-hook 'yatex-mode-hook '(lambda () (require 'font-latex) (font-latex-setup))) ;;RefTeX mode ;(add-hook 'yatex-mode-hook '(lambda () (reftex-mode t))) ;;auto fill mode ;(add-hook 'yatex-mode-hook '(lambda () (auto-fill-mode t) (setq fill-column 70))) ;;color ;;(setq YaTeX-use-font-lock t) ;; section color ;;(setq YaTeX-hilit-sectioning-face '(light時のforecolor/backcolor dark時の forecolor/backcolor)) ;;(setq YaTeX-hilit-sectioning-face '(white/snow3 snow1/snow3)) ;(add-hook 'yatex-mode-hook ;'(lambda () (require 'font-latex) ; (font-latex-setup) ; (progn ; (modify-syntax-entry ?% "<" (syntax-table)) ; (modify-syntax-entry 10 ">" (syntax-table)) ; (make-variable-buffer-local 'outline-level) ; (setq outline-level 'latex-outline-level) ; (make-variable-buffer-local 'outline-regexp) ; (setq outline-regexp ; (concat "[ \t]*\\\\\\(documentstyle\\|documentclass\\|chapter\\|" ; "section\\|subsection\\|subsubsection\\|paragraph\\)" ; "\\*?[ \t]*[[{]") ; )))) ;;outline-minor-mode ;(add-hook 'yatex-mode-hook '(lambda () (outline-minor-mode t))) ;(setq-default outline-level 'outline-level) ; ;(defun latex-outline-level () ; (save-excursion ; (looking-at outline-regexp) ; (let ((title (buffer-substring (match-beginning 1) (match-end 1)))) ; (cond ((equal (substring title 0 4) "docu") 20) ; ((equal (substring title 0 4) "para") 15) ; ((equal (substring title 0 4) "chap") 0) ; ((equal (substring title 0 4) "appe") 0) ; (t (length title)))))) ; ;;misc mode ;(add-hook 'yatex-mode-load-hook ; (function ; (lambda () ; (YaTeX-define-key "w" 'sdic-describe-word) ; (YaTeX-define-key "\C-w" 'YaTeX-switch-mode-menu)))) ; ;math-sign の追加 ; ;(setq ; YaTeX-math-sign-alist-private ; '( ; ("q" "Q" "(Q)") ; ("z" "Z" "ZZ") ; ("t""text""text") ; ("qu" "quad" "__") ; ("qq" "qquad" "____") ; ("ls" "varlimsup" "___\nlim") ; ("li" "varliminf" "lim\n---") ; ("il" "varinjlim" "lim\n-->") ; ("pl" "varprojlim" "lim\n<--") ; ("st" "text{ s.t. }" "s.t.") ; ("bigop" "bigoplus" "_\n(+)~") ; ("bigot" "bigotimes" "_\n(x)\n ~") ; )) ;;dvipdfmxの追加 ;; dviからpdfを作成する%sはファイル名 (setq dviprint-command-format "dvipdfmx %s") ;; latexmkを使う場合 ; (setq tex-command "latexmk -dvi") ;;mendexの指定 † ;(setq makeindex-command "mendex") ;;テンプレート ;; ~/.LaTeX-templateは新規ファイル作成時に自動挿入するファイル名 ;(setq YaTeX-template-file "~/.LaTeX-template") ===== a2psjを使った印刷 ===== a2psjが必要. sudo apt-get install a2ps-perl-ja ;;;==================================== ;;;; print - 印刷設定 ;;;==================================== ;;; Postscript で印刷 (setq print-command-format "a2psj| lpr") (defun print-region (begin end) (interactive "r") (shell-command-on-region begin end print-command-format)) (defun print-buffer () (interactive) (print-region (point-min) (point-max))) (setq print-function (function print-buffer)) ===== emacs.elのサンプル ===== (setq ps-multibyte-buffer 'non-latin-printer) (require 'ps-mule) (defalias 'ps-mule-header-string-charsets 'ignore) (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. '(inhibit-startup-screen t)) (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. ) ;;*.texで自動的にYaTeXモード (setq auto-mode-alist (cons (cons "\\.tex$" 'yatex-mode) auto-mode-alist)) (autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t) ;;TeX typeset (setq tex-command "platex") ;;dvi preview (setq dvi2-command "xdvi") ;; Kanji code ;;; 1=Shift JIS ;;; 2=JIS ;;; 3=EUC (setq YaTeX-kanji-code 3) ;;use LaTeX2e and AMS-LaTeX (setq YaTeX-use-LaTeX2e t) (setq YaTeX-use-AMS-LaTeX t) ;;font latex hook (add-hook 'yatex-mode-hook '(lambda () (require 'font-latex) (font-latex-setup))) ;;RefTeX mode ;(add-hook 'yatex-mode-hook '(lambda () (reftex-mode t))) ;;auto fill mode ;(add-hook 'yatex-mode-hook '(lambda () (auto-fill-mode t) (setq fill-column 70))) ;;color ;;(setq YaTeX-use-font-lock t) ;; section color ;;(setq YaTeX-hilit-sectioning-face '(light時のforecolor/backcolor dark時の forecolor/backcolor)) ;;(setq YaTeX-hilit-sectioning-face '(white/snow3 snow1/snow3)) ;(add-hook 'yatex-mode-hook ;'(lambda () (require 'font-latex) ; (font-latex-setup) ; (progn ; (modify-syntax-entry ?% "<" (syntax-table)) ; (modify-syntax-entry 10 ">" (syntax-table)) ; (make-variable-buffer-local 'outline-level) ; (setq outline-level 'latex-outline-level) ; (make-variable-buffer-local 'outline-regexp) ; (setq outline-regexp ; (concat "[ \t]*\\\\\\(documentstyle\\|documentclass\\|chapter\\|" ; "section\\|subsection\\|subsubsection\\|paragraph\\)" ; "\\*?[ \t]*[[{]") ; )))) ;;outline-minor-mode ;(add-hook 'yatex-mode-hook '(lambda () (outline-minor-mode t))) ;(setq-default outline-level 'outline-level) ; ;(defun latex-outline-level () ; (save-excursion ; (looking-at outline-regexp) ; (let ((title (buffer-substring (match-beginning 1) (match-end 1)))) ; (cond ((equal (substring title 0 4) "docu") 20) ; ((equal (substring title 0 4) "para") 15) ; ((equal (substring title 0 4) "chap") 0) ; ((equal (substring title 0 4) "appe") 0) ; (t (length title)))))) ; ;;misc mode ;(add-hook 'yatex-mode-load-hook ; (function ; (lambda () ; (YaTeX-define-key "w" 'sdic-describe-word) ; (YaTeX-define-key "\C-w" 'YaTeX-switch-mode-menu)))) ; ;math-sign の追加 ; ;(setq ; YaTeX-math-sign-alist-private ; '( ; ("q" "Q" "(Q)") ; ("z" "Z" "ZZ") ; ("t""text""text") ; ("qu" "quad" "__") ; ("qq" "qquad" "____") ; ("ls" "varlimsup" "___\nlim") ; ("li" "varliminf" "lim\n---") ; ("il" "varinjlim" "lim\n-->") ; ("pl" "varprojlim" "lim\n<--") ; ("st" "text{ s.t. }" "s.t.") ; ("bigop" "bigoplus" "_\n(+)~") ; ("bigot" "bigotimes" "_\n(x)\n ~") ; )) ;;dvipdfmxの追加 ;; dviからpdfを作成する%sはファイル名 (setq dviprint-command-format "dvipdfmx %s") ;; latexmkを使う場合 ; (setq tex-command "latexmk -dvi") ;;mendexの指定 † ;(setq makeindex-command "mendex") ;;テンプレート ;; ~/.LaTeX-templateは新規ファイル作成時に自動挿入するファイル名 ;(setq YaTeX-template-file "~/.LaTeX-template") ;;;==================================== ;;;; print - 印刷設定 ;;;==================================== ;;; Postscript で印刷 (setq print-command-format "a2psj| lpr") (defun print-region (begin end) (interactive "r") (shell-command-on-region begin end print-command-format)) (defun print-buffer () (interactive) (print-region (point-min) (point-max))) (setq print-function (function print-buffer))