#!/usr/bin/sh emacs "$1" --batch -f org-html-export-to-html --kill「--」とか「:」を文面として記載したいときに[[--]]とか[[:]]で書いてたんだけど、「Unable to resolve link」ってエラーで変換できなくなってしまっていた。エスケープ方法をググったけどわからず。公式ドキュメントも探ってみたけど迷子になった。取り急ぎ「 : 」「 -- -- 」と記載した。正しくないからなんとかしたいけど。
2020/03/06
orgファイルをコマンドラインでhtml変換エクスポート
2013/07/10
Re: 僕と契約してLisperになってよ!-Gaucheの開発環境を整えよう-
Vim派であれば、またはEmacsもVimも嫌いなら。
Vim派なら
- Vim上でGaucheのREPLを動かす - aharisuのごみ箱
- neocomplcacheを利用したGauche用補完プラグインgosh_completeを作ってます(インストール篇) - aharisuのごみ箱
- vim_goshreplに自動use機能とwhich-module関数を追加しました - aharisuのごみ箱
- Gauche開発支援拡張vim-gdev/emacs-gdev紹介 - aharisuのごみ箱
EmacsもVimも嫌い
EmacsもVimもSublime Text 2も嫌いなら
Gauche本体とrlwrapを入れるだけでも十分書ける。
- 好きなエディタでGaucheのコードを書く。
- shellでgoshに書いたコードのファイルを渡す。
hoge.scm
#!/usr/local/bin/gosh (print "Hello, world !!")
% gosh hoge.scm
または
- 好きなエディタでGaucheのコードを書く。
- 先頭行に #!/usr/local/bin/gosh などとgoshのパスを書く。
- 実行できるようにpermissionを設定する。
% sudo chmod 755 ./hoge.scm
% ./hoge.scm
といった感じ。
rlwrapについては、サンプルを動かしたり、コード片の実行結果を確かめたりするのに便利。rlwrapを使うとgoshのreplでC-pとかC-nとかC-aとかC-eとかShellのやEmacsで慣れ親しんだキーが使えます。プロンプトに色をつけたり。
% rlwrap gosh
-pオプションでプロンプトに色がつくのでaliasにしとくといいかも
% rlwrap -pCYAN
ubuntuであれば
% sudo apt-get install rlwrap
でインストールできます。
Emacs
一応Emacsのことも。
- vallog: Emacs で Scheme (Gauche)する設定
- vallog: Gauche の info を anything で引く
- vallog: EmacsでSchemeで入力補完 scheme-complete.el
- vallog: [Emacs][Meadow][Gauche]ショートカット
- vallog: [scheme][Gauche]WindowsでプログラミングGauche
- vallog: [scheme][Emacs]MeadowでGaucheやる時に便利なやつ
- vallog: [emacs][Gauche]MeadowでGaucheやるならバッファは横分割がいいですよね
余談
自分は、SchemeやLispつまりS式を書くときはEmacsを使います。その理由はEmacs標準のC-p、C-n、C-a、C-e、C-kなどのキーバインド以外に、C-M-tとかC-M-f、C-M-b、C-M-u、C-M-d、M-(、C-x r、C-xC-eなどのS式用のコマンドが便利過ぎるからです。これがVimにあったらVimに完全に移行するのになあ。今はS式以外ではVim、S式を書くのとorg書式の文章を書くときにEmacs。両方とも使ってる。でもVisual StudioもChromeもVimキーバインド。
完全に引きこもる覚悟があればEmacsはすごくいいけど、Shellを拠点にしているのであればEmacsは大げさで邪魔なことが多い。起動遅いし(serverあるけどさ)。CTRLキー押しっぱなしでの移動はtypoが多くなるし。Vimだとそういう心配がなくて、なんというかストレスが少ない。Emacsでも閲覧専用のViewモードでVimキーバインドを設定しているけど、やっぱり本家Vimには負ける。
2012/02/14
2012/01/14
emacsでコードリーディング(view-mode, follow-mode, inertial-scroll)
labels :
Emacs
2012/01/01
2011/12/24
emacs lispのplist
これを見て初めて知りました。
elispにもcl同様にplistがあったんですね。しかも変数/関数とは別にバインドできるアレが。(あ、でもこれはcl packageのお陰なのかな?そこまで調べる気は起きなかったり)
*** Welcome to IELM *** Type (describe-mode) for help. ELISP> (get 'hoge :foo) nil ELISP> (get 'hoge :bar) nil ELISP> (setf (get 'hoge :foo) 100) 100 ELISP> (setf (get 'hoge :bar) 200) 200 ELISP> (get 'hoge :foo) 100 ELISP> (get 'hoge :bar) 200 ELISP> hoge *** Eval error *** Symbol's value as variable is void: hoge ELISP> (setq hoge 'aaaaaaaaaaa) aaaaaaaaaaa ELISP> hoge aaaaaaaaaaa ELISP> (defun hoge (x) x) hoge ELISP> (hoge "hoge") "hoge" ELISP> (hoge "hello, world !!") "hello, world !!" ELISP> (symbol-value 'hoge) aaaaaaaaaaa ELISP> (symbol-function 'hoge) (lambda (x) x) ELISP> (symbol-plist 'hoge) (:foo 100 :bar 200) ELISP> (symbol-name 'hoge) "hoge" ELISP> (symbol-package 'hoge) *** Eval error *** Symbol's function definition is void: symbol-package ELISP>twitterで教えてもらったけど、Common Lispのsymbolって5つもスロットあったのか(笑)変数/関数にplistの3つかと思ってた。その点schemeは良し悪しは別としてすごくシンプル。
labels :
common lisp,
Emacs,
Lisp
2011/08/12
2011/08/09
2011/08/06
Emacsでカタカナの全角半角変換(SKKとか)
M-x japanese-hankaku-region M-x japanese-zenkaku-region
SKKで半角カナ入力ってどうやるんだろうって思ってました。たぶんSKKのチュートリアルには出てきってなかった。と思う。
labels :
Emacs
2011/08/05
もじこーど(emacs, vim, screen)
2011/07/29
2011/03/19
Emacs: iimage.el (画像表示)
labels :
Emacs
Emacs で改行マーク、全角スペースマーク、タブマークなどを表示する
これは良いかもしれない。
(require 'jaspace) (setq jaspace-alternate-jaspace-string "□") (setq jaspace-alternate-eol-string "\xab\n") (setq jaspace-highlight-tabs t) (setq jaspace-highlight-tabs ?^) ;; (setq jaspace-mdoes '(org-mode)) (custom-set-faces `(jaspace-highlight-eol-face ((t :foreground "dark slate grey"))))
labels :
Emacs
2011/03/18
org-paste-subtree: The kill is not a (set of) tree(s) - please use to yank anyway
org-paste-subtree: The kill is not a (set of) tree(s) - please useorg-remember でメモってたらこんなメッセージが。なんだこれ、と思ったら「見出しの * のネストが変ですよ」ってことみたいですね。to yank anyway
labels :
Emacs
Emacs で Scheme (Gauche)する設定
主にどこそこからのコピペなので汚いですが、貼ってみます。
(quack とか auto-complete とか scheme-complete とか他にもいくつか必要かもしれないので、このままコピペしても動かないと思いますが)
プログラミングGauche に載っている設定をベースにしたような記憶があります。
参考
gauche-mode というのもいくつかあるそうで。
(quack とか auto-complete とか scheme-complete とか他にもいくつか必要かもしれないので、このままコピペしても動かないと思いますが)
;; ******************************************************************** ;; scheme ;; ******************************************************************** ;; (defvar gauche-program-path "~/../gauche/bin/gosh") (defvar gauche-program-path "~/../cygwin/usr/local/bin/gosh") (defvar gauche-program-params (apply #'concat (intersperse " " `("-i" ;; "-I" ,(expand-file-name "~/../gauche/liv") ;; "-I" ,(expand-file-name "~/../gauche/other") ;; "-u" "liv.init" )))) ;; scheme-mode-hook (defvar ac-source-scheme '((candidates . (lambda () (require 'scheme-complete) (all-completions ac-target (car (scheme-current-env))))))) (add-hook 'scheme-mode-hook '(lambda () (make-local-variable 'ac-sources) (setq ac-sources (append ac-sources '(ac-source-scheme))))) (defun gauche-info-index (topic) (interactive (list (read-string (concat "Gauche help topic : ") (current-word)))) (get-buffer-create "*info*") (info "gauche-refj.info") (Info-index topic)) (define-key global-map "\C-xH" 'gauche-info-index) (setq process-coding-system-alist (cons '("gosh" utf-8 . utf-8) process-coding-system-alist)) (autoload 'scheme-mode "cmuscheme" "Major mode for Scheme." t) (autoload 'run-scheme "cmuscheme" "Run an inferior Scheme process." t) (add-hook 'cmuscheme-load-hook '(lambda() (defun scheme-args-to-list (string) (if (string= string "") nil (let ((where (string-match "[ \t]" string))) (cond ((null where) (list string)) ((not (= where 0)) (let ((qpos (string-match "^\"\\([^\"]*\\)\"" string))) (if (null qpos) (cons (substring string 0 where) (scheme-args-to-list (substring string (+ 1 where) (length string)))) (cons (substring string (match-beginning 1) (match-end 1)) (scheme-args-to-list (substring string (match-end 0) (length string))))))) (t (let ((pos (string-match "[^ \t]" string))) (if (null pos) nil (scheme-args-to-list (substring string pos (length string)))))))))))) (setq gauche-program-name (apply #'concat (intersperse " " `(,gauche-program-path ,gauche-program-params)))) ;; split window (defun scheme-other-window () "Run Gauche on other window" (interactive) (setq scheme-program-name gauche-program-name) (split-window-horizontally 90) (let ((buf-name (buffer-name (current-buffer)))) (scheme-mode) (switch-to-buffer-other-window (get-buffer-create "*scheme*")) (run-scheme scheme-program-name) (switch-to-buffer-other-window (get-buffer-create buf-name)))) ;; indent settings (put 'and-let* 'scheme-indent-function 1) (put 'begin0 'scheme-indent-function 0) (put 'call-with-client-socket 'scheme-indent-function 1) (put 'call-with-input-conversion 'scheme-indent-function 1) (put 'call-with-input-file 'scheme-indent-function 1) (put 'call-with-input-process 'scheme-indent-function 1) (put 'call-with-input-string 'scheme-indent-function 1) (put 'call-with-iterator 'scheme-indent-function 1) (put 'call-with-output-conversion 'scheme-indent-function 1) (put 'call-with-output-file 'scheme-indent-function 1) (put 'call-with-output-string 'scheme-indent-function 0) (put 'call-with-temporary-file 'scheme-indent-function 1) (put 'call-with-values 'scheme-indent-function 1) (put 'dolist 'scheme-indent-function 1) (put 'dotimes 'scheme-indent-function 1) (put 'if-match 'scheme-indent-function 2) (put 'let*-values 'scheme-indent-function 1) (put 'let-args 'scheme-indent-function 2) (put 'let-keywords* 'scheme-indent-function 2) (put 'let-match 'scheme-indent-function 2) (put 'let-optionals* 'scheme-indent-function 2) (put 'let-syntax 'scheme-indent-function 1) (put 'let-values 'scheme-indent-function 1) (put 'let/cc 'scheme-indent-function 1) (put 'let1 'scheme-indent-function 2) (put 'letrec-syntax 'scheme-indent-function 1) (put 'make 'scheme-indent-function 1) (put 'multiple-value-bind 'scheme-indent-function 2) (put 'match 'scheme-indent-function 1) (put 'parameterize 'scheme-indent-function 1) (put 'parse-options 'scheme-indent-function 1) (put 'receive 'scheme-indent-function 2) (put 'rxmatch-case 'scheme-indent-function 1) (put 'rxmatch-cond 'scheme-indent-function 0) (put 'rxmatch-if 'scheme-indent-function 2) (put 'rxmatch-let 'scheme-indent-function 2) (put 'syntax-rules 'scheme-indent-function 1) (put 'unless 'scheme-indent-function 1) (put 'until 'scheme-indent-function 1) (put 'when 'scheme-indent-function 1) (put 'while 'scheme-indent-function 1) (put 'with-builder 'scheme-indent-function 1) (put 'with-error-handler 'scheme-indent-function 0) (put 'with-error-to-port 'scheme-indent-function 1) (put 'with-input-conversion 'scheme-indent-function 1) (put 'with-input-from-port 'scheme-indent-function 1) (put 'with-input-from-process 'scheme-indent-function 1) (put 'with-input-from-string 'scheme-indent-function 1) (put 'with-iterator 'scheme-indent-function 1) (put 'with-module 'scheme-indent-function 1) (put 'with-output-conversion 'scheme-indent-function 1) (put 'with-output-to-port 'scheme-indent-function 1) (put 'with-output-to-process 'scheme-indent-function 1) (put 'with-output-to-string 'scheme-indent-function 1) (put 'with-port-locking 'scheme-indent-function 1) (put 'with-string-io 'scheme-indent-function 1) (put 'with-time-counter 'scheme-indent-function 1) (put 'with-signal-handlers 'scheme-indent-function 1) (put 'with-locking-mutex 'scheme-indent-function 1) (put 'guard 'scheme-indent-function 1) ;; scheme-mode (autoload 'scheme-smart-complete "scheme-complete" nil t) (eval-after-load 'scheme '(progn (define-key scheme-mode-map "\t" 'scheme-complete-or-indent))) (autoload 'scheme-get-current-symbol-info "scheme-complete" nil t) (add-hook 'scheme-mode-hook (lambda () (make-local-variable 'eldoc-documentation-function) (setq eldoc-documentation-function 'scheme-get-current-symbol-info) (eldoc-mode t) (setq lisp-indent-function 'scheme-smart-indent-function))) ;; ******************************************************************** ;; quak.el ;; ******************************************************************** ;; C-c C-q m View a manual in your Web browser. ;; C-c C-q k View the manual documentation for a keyword ;; (currently only works for PLT manuals). ;; C-c C-q s View an SRFI. ;; C-c C-q r Run an inferior Scheme process. ;; C-c C-q f Find a file using context of point for default. ;; C-c C-q l Toggle `lambda' syntax of `define'-like form. ;; C-c C-q t Tidy the formatting of the buffer. ;;(load "unparen") (load "quack") (setq quack-remap-find-file-bindings-p nil) (setq quack-pltish-keywords-to-fontify (append '("let1" "rlet1" "if-let1" "and-let*" "let/cc" "use" "export" "export-all" "extend" "select-module" "guard" "error" "apply" "^" "^_" "^a" "^b" "^c" "^d" "^e" "^f" "^g" "^h" "^i" "^j" "^k" "^l" "^m" "^n" "^o" "^p" "^q" "^r" "^s" "^t" "^u" "^v" "^w" "^x" "^y" "^z") quack-pltish-keywords-to-fontify)) (custom-set-variables '(quack-default-program gauche-program-name) '(quack-fontify-style 'plt) '(quack-pretty-lambda-p t) '(quack-programs '("/server:hoge@foo.org#1234:/usr/local/bin/gosh" "gauche" "gosh" "guile" "ironscheme.console.exe" "mit-scheme" "mzscheme" "mzscheme3m" "mzschemecgc" "scheme" )) '(quack-run-scheme-always-prompts-p t) '(quack-smart-open-paren-p nil)) ;; custom faces ;; quack-pltish-comment-face ;; quack-pltish-selfeval-face ;; quack-pltish-paren-face ;; quack-banner-face ;; quack-pltish-class-defn-face ;; quack-pltish-module-defn-face ;; quack-pltish-keyword-face ;; quack-threesemi-h2-face ;; quack-threesemi-h3-face ;; quack-pltfile-prologue-face ;; quack-pltfile-dir-face ;; quack-pltfile-file-face ;; quack-about-title-face ;; quack-about-face ;; quack-smallprint-face (custom-set-faces '(quack-pltish-defn-face ((t (:bold t :foreground "darkgoldenrod3")))) '(quack-pltish-keyword-face ((t (:bold t :foreground "maroon2")))) '(quack-threesemi-semi-face ((t (:bold t :foreground "blue1")))) '(quack-threesemi-text-face ((t (:bold t :foreground "royalblue2"))))) (define-key global-map "\C-cG" 'scheme-other-window)
プログラミングGauche に載っている設定をベースにしたような記憶があります。
参考
- Emacs+Scheme - 紫藤のWiki
- scheme-complete.el を auto-complete.el で使う - tigre
- auto-complete.el で scheme のシンボル補完なんとなくできた - 日記を書く [・w・] はやみずさん
- vallog: Gauche の info を anything で引く
gauche-mode というのもいくつかあるそうで。
- gauche-mode - 月の塵
- www.katch.ne.jp/~leque/software/repos/gauche-mode/gauche-mode.el
- Gauche mode
- gauche-mode
- Inferior Gauche ModeInferior Gauche Mode
2011/03/03
Emacs: popwin.el が快適過ぎる
- ヘルプバッファや補完バッファをポップアップで表示してくれるpopwin.elをリリースしました - Functional Emacser
- popwin.el v0.2をリリースしました - Functional Emacser
取りあえずは、今まで特に気になっていたものを popup するようにしました。org-remember, backtrace の挙動は特に特に気に入らず、イラついていたのが超快適になりました!最後に popup したものは C-x p で再度 popup するようにしました。
あと dired の o を上書きして、対象のファイルを popup で表示するようにしました。たくさんのファイル(例えば自動で保存してある *scratch* バッファの履歴とか)を一つ一つ確認するのが大変で困っていたのが、これまた大変快適になりました。
あとは、試しに key-chord の mn で message バッファを popup するようにしています。
(require 'popwin) (defvar popwin:special-display-config-backup popwin:special-display-config) (setq display-buffer-function 'popwin:display-buffer) (setq popwin:special-display-config (append '(("*Remember*" :stick t)("*Org Agenda*")("*Backtrace*") ("*sdic*" :noselect)) popwin:special-display-config)) (define-key global-map (kbd "C-x p") 'popwin:display-last-buffer) (define-key dired-mode-map "o" #'(lambda () (interactive) (popwin:find-file (dired-get-file-for-visit)))) (key-chord-define-global "mn" 'popwin:messages)
labels :
Emacs
2011/03/01
Emacs: 「次の単語(というかS式)を指定した文字で囲む」 earmuff.el
#Emacs に「リージョンを指定した文字で囲む」とか「次の単語(というかS式)を指定した文字で囲む」みたいなコマンドありませんか?
で、insert-pair
とか lisp-electric.el
などを教えて頂きました。
ですが、素朴なものであれば簡単に書けそうだったので書いてみました。ただのコード辺なわけですが、せっかくなのでパッケージ(?)にしてみました。
download
auto-install.el があれば auto-install-from-url とか auto-install-from-gist でインストールできます。何ができるのか
- 現在のカーソル位置の次にある S 式を「耳当て記法」にする。
- 例) hoge -> *hoge* とか hoge -> +hoge+ とか
- foo -> "foo" とか foo -> 'foo' とか foo -> {foo} なども「耳当て記法」扱いすることにしました
- 「耳当て」は、emacs 既存の insert-pair-alist か、自分で指定した alist から選択される
- 実行するたびに alist の中から順番に適用される
耳当て(笑)
いやいや、lisp 界隈では大域変数なんかに *global-var* や、定数に +const-var+ というような名前の付け方をする慣習があるのです。で、これを「耳当て記法」と呼ぶそうです。なので、名前も earmuff.el にしました。
設定例
(require 'earmuff) (define-key global-map [f11] (emf:cycle-earmuff-gen '((?" ?")(?* ?*)(?+ ?+)))) (define-key global-map (kbd "M-<f11>") (emf:earmuff-and-move-next-gen '(?" ?")))上記設定だと、例えば hoge という S 式があってその直前にカーソルがある状態で F11 を連打すると以下のように切り替わります。
hoge ;; "hoge" ;; 1 回 *hoge* ;; 2 回 +hoge+ ;; 3 回 hoge ;; 4 回
Emacs には insert-pair-alist という alist が組み込み(?)であるようなのですが、それをそのまま使っても良いかもしれません。以下の設定で insert-pair-alist を基に耳当てします。
(require 'earmuff) (add-to-list 'insert-pair-alist '(?" ?")) (add-to-list 'insert-pair-alist '(?* ?*)) (add-to-list 'insert-pair-alist '(?+ ?+)) (define-key global-map [f11] (emf:cycle-earmuff-gen)) (define-key global-map (kbd "M-<f11>") (emf:earmuff-and-move-next-gen '(?" ?")))
M-F11 に割当てているのは、連続で耳当てできるようにするものです。例えば上記の設定だと下記のようになります。
foo bar baz ;; "foo" bar baz ;; 1 回 "foo" "bar" baz ;; 2 回 "foo" "bar" "baz" ;; 3 回コレはキーボードマクロで定義してもよさそうだったんですが、取りあえず用意しました。
この例では F11 と M-F11 に割当てていますが、好みのキーに割り当ててください。
コードは以下の通りです。
labels :
Emacs
2011/02/24
eshell のプロンプトに git のブランチを表示
話題に乗って eshell を使い始めてみました。
で、掲題の通りこんな感じに。
プロンプトの設定。
ここを参考に。
bash のときみたいに modified, deleted, added, not pushed とかも出した方がうれしいかも?
そういえば、今後カイゼンしたいところ。
で、掲題の通りこんな感じに。
Welcome to the Emacs shell
[2011/02/24(Thu) 00:09][foo@hogehoge ~/temp/fuga(Git:master)]
$
プロンプトの設定。
(setq eshell-prompt-function (lambda () (concat "[" (format-time-string "%Y/%m/%d(%a) %H:%M") "]" "[" (user-login-name) "@" (system-name) " " (eshell/pwd) "(" (vc-git-mode-line-string (eshell/pwd)) ")" "]\n" (if (= (user-uid) 0) "#" "$") " " )))
(vc-git-mode-line-string (eshell/pwd))
の部分。ここを参考に。
bash のときみたいに modified, deleted, added, not pushed とかも出した方がうれしいかも?
そういえば、今後カイゼンしたいところ。
- 補完は auto-complete を使ってるつもりなんだけど、どういう時なのかわからないけど下からポップアップで補完候補一覧が出てきたりするのが不満。
- その時の補完タイミングが自動なのが不満。
- auto-complete での補完時も補完候補から選ばずに全て自分でタイプしたときに C-m を二回押下しないと実行されない(1.補完確定、2.実行)のが不満。
labels :
Emacs
2011/02/22
org-agenda の weekly-view の日付フォーマットを変更した
これを
これと同じような感じで。
当日のイタリック表記も解除したくてソース(org-agenda.el)読んでみたけど、わかんなかった。org-remember も org-remember-templates をシャドウしてカテゴリ別に複数定義したら使いやすくなった。書き換えずにシャドウできるってのは良いですね。
scheme(というかgauche) の parameter と parameterize の組み合わせや fluid-let も使い方が見えてきました(ここの with-db が素敵だった)。ダイナミックスコープとレキシカルスコープはどちらか一方でなくて、両方ある方が良いっすね。ダイナミックスコープだとクロージャを使うのに一手間かかってしまうので、レキシカルスコープメインでダイナミックスコープをエミュレートする方が好きかなーと思います。
Sunday 20 February 2011
こうした2011/02/15 (Tue)
これと同じような感じで。
(defadvice org-agenda (around org-agenda-around) (let ((system-time-locale "English")) ad-do-it)) (defadvice org-agenda-redo (around org-agenda-redo-around) (let ((system-time-locale "English")) ad-do-it)) (custom-set-variables '(org-agenda-format-date "%Y/%m/%d (%a)")) (custom-set-faces '(org-agenda-date ((t :weight bold))))
当日のイタリック表記も解除したくてソース(org-agenda.el)読んでみたけど、わかんなかった。org-remember も org-remember-templates をシャドウしてカテゴリ別に複数定義したら使いやすくなった。書き換えずにシャドウできるってのは良いですね。
scheme(というかgauche) の parameter と parameterize の組み合わせや fluid-let も使い方が見えてきました(ここの with-db が素敵だった)。ダイナミックスコープとレキシカルスコープはどちらか一方でなくて、両方ある方が良いっすね。ダイナミックスコープだとクロージャを使うのに一手間かかってしまうので、レキシカルスコープメインでダイナミックスコープをエミュレートする方が好きかなーと思います。
labels :
Emacs
eshell を使ってみることに
どうせ bash も zsh もライトユーザなので、この際流れに乗って eshell を試してみようかと。bash も zsh もなかなかうまいこと Emacs の中で動かせなかったし。
取りあえずプロンプトを変えるとかそんなもんだけど。こんな感じに。
eshell の設定はこの辺を参考に。
プロンプトに日付を表示した時に曜日が日本語なのが気にくわないので、defadvice してます。system-time-locale を let でシャドウしてるだけ。この辺、ダイナミックスコープも良いとこあるなーと思わされます。
取りあえずプロンプトを変えるとかそんなもんだけど。こんな感じに。
Welcome to the Emacs shell
[2011/02/22(Tue) 22:30][foo@hoge ~]
$
git のブランチ表示とかもやりたいところですね。eshell の設定はこの辺を参考に。
- シェル難民がeshellに漂流したついでに、 eshell tipsまとめてみた
- おれの eshell の設定 - 刺身☆ブーメランのはてなダイアリー
- eshellをはじめてみた - とりあえず暇だったし何となく始めたブログ
- Eshellを使いこなす - Meadow memo
(setq eshell-cmpl-ignore-case t) (setq eshell-ask-to-save-history (quote always)) (setq eshell-cmpl-cycle-completions t) (setq eshell-cmpl-cycle-cutoff-length 5) (setq eshell-hist-ignoredups t) (defadvice eshell (around eshell-around) (let ((system-time-locale "English")) ad-do-it)) ;; prompt (setq eshell-prompt-function (lambda () (concat "[" (format-time-string "%Y/%m/%d(%a) %H:%M") "]" "[" (user-login-name) "@" (system-name) " " (eshell/pwd) "]\n" (if (= (user-uid) 0) "#" "$") " " ))) (setq eshell-prompt-regexp "^[^#$]*[$#] ") (add-hook 'eshell-mode-hook '(lambda () (progn (define-key eshell-mode-map "\C-a" 'eshell-bol) (define-key eshell-mode-map "\C-p" 'eshell-previous-matching-input-from-input) (define-key eshell-mode-map "\C-n" 'eshell-next-matching-input-from-input) ) )) (require 'pcomplete) (add-to-list 'ac-modes 'eshell-mode) (ac-define-source pcomplete '((candidates . pcomplete-completions))) (defun my-ac-eshell-mode () (setq ac-sources '(ac-source-pcomplete ac-source-words-in-buffer ac-source-dictionary))) (add-hook 'eshell-mode-hook (lambda () (my-ac-eshell-mode) (define-key eshell-mode-map (kbd "C-i") 'auto-complete))) (custom-set-faces '(eshell-prompt-face ((t (:foreground "maroon2" :bold nil)))))
プロンプトに日付を表示した時に曜日が日本語なのが気にくわないので、defadvice してます。system-time-locale を let でシャドウしてるだけ。この辺、ダイナミックスコープも良いとこあるなーと思わされます。
labels :
Emacs
登録:
投稿 (Atom)