トップページunix
1001コメント315KB

Emacs Part 43

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2013/06/09(日) 14:05:32.09
語り合いましょう。

GNU Emacs - GNU Project - Free Software Foundation (FSF)
https://www.gnu.org/software/emacs/

EmacsWiki: サイトマップ
http://www.emacswiki.org/emacs/

Emacsのトラノマキ | 検索結果: | ありえるえりあ
http://dev.ariel-networks.com/wp/?s=Emacs%E3%81%AE%E3%83%88%E3%83%A9%E3%83%8E%E3%83%9E%E3%82%AD

前スレ
EmacsPart42
http://toro.2ch.net/test/read.cgi/unix/1356319580/
0703名無しさん@お腹いっぱい。2013/10/30(水) 02:05:51.26
>>702
> あと色々沢山設定してるけど、今は特別なことしないなら↓だけで問題ないと思ったけど。
> (set-language-environment 'Japanese)
> (prefer-coding-system 'utf-8)
今はこれさえも必要ないはず。
環境変数見て、Emacsが適切に設定してくれます。
mule-ja-2009の09808のスレッドで半田さんが解説してくれているんだけど、
アーカイブ残ってないのね。。。
0704名無しさん@お腹いっぱい。2013/10/30(水) 15:24:53.44
LANG=ja_JP.UTF-8 とか設定しておけばいいってことかな。
emacs -q したら普通に current-language-environment が Japanese になってたし
なんちゃら-coding-system も utf-8-unix とかになってたわ。

デフォルト教が捗るなこれは。
標準で C-h がバックスペースじゃないことだけがどうしても納得いかないけど。
07057032013/10/31(木) 01:13:53.38
>>704
最近のディストリビューションだと、LANGの設定も要らないと思いますよ。
0706名無しさん@お腹いっぱい。2013/10/31(木) 13:52:58.77
重隅 or 言葉の綾レベルだがつっこませてもらう
LANGの設定が要らないんじゃなくて
ディストリがはじめからやっといてくれるだけだろ
設定は要る
0707名無しさん@お腹いっぱい。2013/10/31(木) 14:01:33.83
重隅って言うのか。
0708名無しさん@お腹いっぱい。2013/10/31(木) 18:20:29.45
大隈重信
0709名無しさん@お腹いっぱい。2013/11/01(金) 01:13:59.15
しげくま
0710名無しさん@お腹いっぱい。2013/11/01(金) 09:52:50.80
Emacs アイコンがコミットされるまで
http://www.slideshare.net/nanasess/emacs-5282932

あれ日本人が作ったのか。
0711名無しさん@お腹いっぱい。2013/11/01(金) 15:05:06.95
採用された時にこのスレで話題にならなかった?
0712名無しさん@お腹いっぱい。2013/11/01(金) 15:43:58.47
なったっけ?
0713名無しさん@お腹いっぱい。2013/11/01(金) 15:45:08.83
どっかでちょっと話題になった気はする
当時なにかそのことで書き込んだ記憶がある
スラドだったかも?
0714名無しさん@お腹いっぱい。2013/11/01(金) 17:59:34.56
むかしのアイコンがどんなだったか忘れてしまった
四角だったよな
0715名無しさん@お腹いっぱい。2013/11/01(金) 19:01:08.80
今時なアイコンすぎてかっこ良すぎ違和感あった
emacsって古くさいアイコンを想像するので、
いい意味で予想外
0716名無しさん@お腹いっぱい。2013/11/02(土) 00:55:35.59
>>710
口髭w > RMS
0717名無しさん@お腹いっぱい。2013/11/02(土) 09:00:20.79
*scratch* で変な式評価してエラーになると *scratch* が空になってしまいますが
エラー時はミニバッファに「この馬鹿たれが!」とかメッセージを出すだけに
する事は可能ですか?
0718名無しさん@お腹いっぱい。2013/11/02(土) 09:45:14.66
>>717
変な式って、具体的にどんな式?
0719名無しさん@お腹いっぱい。2013/11/02(土) 10:08:30.24
>>718
変ってわけでもないんですけど、これとかカーソル以降が消えちゃいます
(replace-regexp-in-string "^\^" "" "")
0720名無しさん@お腹いっぱい。2013/11/02(土) 10:48:41.80
>>717
eval-expression-debug-on-error と debug-on-error を両方 nil にすればできそうだけど
そんなことしなくても C-] で再帰編集から抜ければ消えた部分戻ってくるよ
0721名無しさん@お腹いっぱい。2013/11/02(土) 14:20:36.93
>>720
なんと!ほんとだ!完全に消えたわけじゃなかったんですね
ありがとうございました
0722名無しさん@お腹いっぱい。2013/11/03(日) 18:49:49.38
vimのH,M,Lに相当する動きって出来ませんか?
0723名無しさん@お腹いっぱい。2013/11/03(日) 19:21:17.77
M-r で出来るけど、標準だと middle→top→bottomで順次移動になってて
直接それぞれに移動ってのはそのままだとないみたい。

(move-to-window-line 0) で H
(move-to-window-line nil) で M
(move-to-window-line -1) で L 相当の動きになると思うから
適当にキーバインドしてやってもいいかもね
0724名無しさん@お腹いっぱい。2013/11/03(日) 19:55:59.34
>>722-723
タイプ数は増えるけど
C-u 0 M-r とか C-u -1 M-r とか
C-u も使うようにしたほうがいいかも。

広いディスプレイで作業してるなら、大ざっぱな移動よりも、
linum-mode で行番号表示しておいて goto-line で移動 C-u 数字 M-g g とか、
narrow-to-region を使ったほうが作業効率が上がる場合もありそうだね。
0725名無しさん@お腹いっぱい。2013/11/03(日) 20:30:14.82
>>723,724
C-c h, C-c m, C-c l にバインドして使うことにしました
ありがとうございます
0726名無しさん@お腹いっぱい。2013/11/03(日) 21:20:26.73
数字プリフィクスなら M-数字 がいいんじゃないかな
M-0 M-r とか M-- M-r ならメタキーから手を離さないから比較的楽だ
0727名無しさん@お腹いっぱい。2013/11/03(日) 22:48:02.24
emacsにc++の自動補完機能を導入しようと思ったのですが途中で詰まってしまいました
http://d.hatena.ne.jp/uhiaha888/20130304/1362382317
これの
$ git clone git://github.com/Golevka/emacs-clang-complete-async.git
$ cd emacs-clang-complete-async
$ make
ここでmakeを実行すると
cc -std=c99 -I/usr/include -DNDEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -O3 -fomit-frame-pointer -g -Wall -Wextra -pedantic -O3 -I./src -c -o src/obj/msg_handlers.o ./src/msg_handlers.c
makefile.mk:43: recipe for target `src/obj/msg_handlers.o' failed
make: *** [src/obj/msg_handlers.o] Error 1
このようなエラーが出て止まります。アドバイスをください。
0728名無しさん@お腹いっぱい。2013/11/03(日) 23:24:53.54
>>727
llvm 3.2 で make したけどエラーにはならなかった。

コンパイル時のエラーメッセージが書かれていないんでよくワカランけど、
こっちの環境では msg_handlers.c のコンパイルはこんな↓感じ

cc -std=c99 -I/usr/lib/llvm-3.2/include -DNDEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -g -O2 -fomit-frame-pointer -fPIC -Wall -Wextra -pedantic -O3 -I./src -c -o src/obj/msg_handlers.o ./src/msg_handlers.c
0729名無しさん@お腹いっぱい。2013/11/04(月) 06:58:45.10
>>726
C-2 M-2 C-M-2 系って意外に知られていないような気がする
0730名無しさん@お腹いっぱい。2013/11/04(月) 07:25:22.83
C-aで行頭に、
C-a aで全選択、
とかしたいんですが、
設定方法はありますか?
0731名無しさん@お腹いっぱい。2013/11/04(月) 09:31:50.52
C-aで行頭に戻って、そこにaを挿入するときはどうすんの?
0732名無しさん@お腹いっぱい。2013/11/04(月) 09:45:15.87
C-a C-g a じゃね?
0733名無しさん@お腹いっぱい。2013/11/04(月) 09:48:24.04
>>730
key-chord とかなんかそれ系のでそういうの出来たような気がする。
C-a a の a 打つまでの時間が短かったら全選択とみなすみたいな。
key-chord は同時押しだったかもしれない。
なんか似たような変態的なキーバインドパッケージ一時期増えた時のどれかだな。

あと、C-a だけだと行頭、 C-a C-a だと全選択、みたいに連続で押すと挙動が代わるのもあるよ。
sequential-command だったかな。
0734名無しさん@お腹いっぱい。2013/11/04(月) 18:43:08.25
C-x h を、覚える
0735名無しさん@お腹いっぱい。2013/11/04(月) 21:32:28.37
emacs上でocamlを学習したいので環境を作ったのですが.mlファイルを
開いてもモードがlispになりcamlモードで開けませんどこがおかしいのでしょうか?

OS:Windows7 64bt

emacs設定
home/.emacs.d/elisp
tuareg-2.0.6
他:ttp://wwwfun.kurims.kyoto-u.ac.jp/soft/lsl/ocaml.html
 のOcaml-mode3.05の全て

Ocaml.exeの位置
C:\OCaml\bin


emacs設定
(add-to-list 'load-path "~/.emacs.d/lisp/tuareg-2.0.6")
(setq tuareg-interactive-program "ocaml")
(autoload 'tuareg-mode "tuareg" "Major mode for editing Caml code." t)
(autoload 'tuareg-run-caml "tuareg" "startup a Caml toplevel" t)
(autoload 'camldebug "camldebug" "Run the Caml debugger." t)
(autoload 'tuareg-imenu-set-imenu "tuareg-imenu" "Configuration of imenu for tuareg" t)
(add-hook 'tuareg-mode-hook 'tuareg-imenu-set-imenu)
0736名無しさん@お腹いっぱい。2013/11/04(月) 22:36:07.87
README を読めば
(setq auto-mode-alist
(cons '("\\.ml[iylp]?$" . caml-mode) auto-mode-alist))
が必要ってのがわかるはず
0737名無しさん@お腹いっぱい。2013/11/04(月) 22:57:28.44
>>736
ありがとう
(setq auto-mode-alist
(cons '("\\.ml[iylp]?$" . caml-mode) auto-mode-alist))
(autoload 'caml-mode "caml" "Major mode for editing Caml code." t)
(autoload 'run-caml "inf-caml" "Run an inferior Caml process." t)
を追加しても動きませんでした。
.mlファイルが(Lisp)で起動されてしまう。

M-x caml-modeは [No match]になってしまう

もう少し調べてみます。
0738名無しさん@お腹いっぱい。2013/11/04(月) 23:09:32.51
>>735 においてあるのは Ocaml-mode3.05 だけど、
>>735 で書いてる設定は tuareg-mode の設定に思える。
tuareg に一緒に添付されてるパッケージを使うんであれば ocaml-mode って必要ないのでは?
0739名無しさん@お腹いっぱい。2013/11/04(月) 23:27:36.38
最初はcaml-modeで動かそうとしたのですが、動かず
その後turregを入れました。

M-x tuareg-mode も[No match]になります。

tuareg関連のファイルはtuareg-2.0.6に入れてelisp
に入れています。

elispにはauto-completeも入れていますがこちらは動作しています。

現在の.emacs.dはこんな感じです。
;ocamlモードの設定
(setq load-path
(append '("C/Ocaml/bin")
load-path))

(setq auto-mode-alist
(cons '("\\.ml[iylp]?$" . caml-mode) auto-mode-alist))
(autoload 'caml-mode "caml" "Major mode for editing Caml code." t)
(autoload 'run-caml "inf-caml" "Run an inferior Caml process." t)

(add-to-list 'load-path "~/.emacs.d/lisp/tuareg-2.0.6")
(setq tuareg-interactive-program "ocaml")
(autoload 'tuareg-mode "tuareg" "Major mode for editing Caml code." t)
(autoload 'tuareg-run-caml "tuareg" "startup a Caml toplevel" t)
(autoload 'camldebug "camldebug" "Run the Caml debugger." t)
(autoload 'tuareg-imenu-set-imenu "tuareg-imenu" "Configuration of imenu for tuareg" t)
(add-hook 'tuareg-mode-hook 'tuareg-imenu-set-imenu)
0740名無しさん@お腹いっぱい。2013/11/04(月) 23:42:03.61
ちゃんと eval するか再起動はしてるんだろか。
autoload が評価されてるなら [No match] にはならないと思うんだけどな。
0741名無しさん@お腹いっぱい。2013/11/04(月) 23:55:12.39
再起動は設定をかえるためにやってるんですが
ダメそうです。

c-modeは普通にM-x c-modeで呼び出せるんだが…

遅くまでありがとう
0742名無しさん@お腹いっぱい。2013/11/05(火) 00:06:12.99
c-mode は標準で設定されてるから特に何もしなくても動くんだけどね。
*scratch* バッファに上記の設定貼り付けて M-x eval-buffer でもだめかね。
設定ファイルコンパイルしてなくて古い init.elc が読み込まれてるとかのオチな気がする。
0743名無しさん@お腹いっぱい。2013/11/05(火) 02:06:53.32
(append '("C/Ocaml/bin")
C/ -> C:/
中身見ていないけれど、binの下に *.el[c] があるのか

load-pathってexpand-file-nameしなくてもよくなったんだっけ?
(add-to-list 'load-path (expand-file-name "~/.emacs.d/lisp/tuareg-2.0.6"))

まずは *scratch* で (load-library "calm") を評価するところから始めたほうがいいと思う。
0744名無しさん@お腹いっぱい。2013/11/05(火) 09:53:55.83
今は load-path は expand-file-name しなくてもちゃんと認識されるようになってるね。
~/.emacs.d/misc とか普通に入れて使ってる。
0745名無しさん@お腹いっぱい。2013/11/05(火) 14:35:42.53
>>728
遅くなってすみません。そうでしたか。もうちょっといじってみます。
0746名無しさん@お腹いっぱい。2013/11/05(火) 22:31:48.55
>>742
設定を色々ためしながらいじっているのでコンパイルは
しないようにしています。
確認してみると.emacs下に.elcはなかったです。

>>743
*scratch*で(load-library "caml")を実行したところ
Loading ~ユーザ名~.emacs.d/elisp/caml.el(source) ...done
となりました。

読み込めてはいるのかな?


ttp://wwwfun.kurims.kyoto-u.ac.jp/soft/lsl/ocaml.html
のOcaml-mode3.05の全てをelispフォルダに放り込んでいるので
これのcaml.elは読み込めているようです

少し進展がありました。
M-x caml-modeだけだとNo matchになりますが
*scratch*で(load-library "caml")実行後にM-x caml-mode
を実行すると(caml)で実行できました。

init.elが悪いのかな
0747名無しさん@お腹いっぱい。2013/11/05(火) 22:53:37.38
init.el に load-library なり load なりを入れて
それでも M-x caml-mode が動かないんだとしたら init.el がちゃんと読まれていないか
期待通りに動いていないかだね。
0748名無しさん@お腹いっぱい。2013/11/05(火) 23:11:01.03
initial.elに(load-library "caml")を追加しても
M-x caml-modeが動きませんでした。

initial.elの前半に記述している(set-foreground-color "white")
などは動作しているのでocamlの設定中心にinitial.elをデバックしてみます。
0749名無しさん@お腹いっぱい。2013/11/05(火) 23:16:52.42
もしかして古い ~/.emacs とか ~/.emacs.el があるんじゃないのかね。
init.el よりそっちのが読み込みの優先度高いよ。
0750名無しさん@お腹いっぱい。2013/11/05(火) 23:26:36.24
コマンドプロンプトでemacs --debug-initを実行したところ
Debugger entered--Lisp error: (void-function c-toggle-auto-state)
(c-toggle-auto-state t)
と出たため(c-toggle-auto-mode t)をコメントアウトしたところ
無事.mlファイルがcamlモードで起動できました。

ありがとうございました。
emacs関連で2日も使ってしまった。

「Emacs実践入門」だけでは知識不足か。
0751名無しさん@お腹いっぱい。2013/11/05(火) 23:41:24.64
さすがにそれはわざわざデバッグモードで起動せんでも
起動時にエラー出てるような気がするんだけど
0752名無しさん@お腹いっぱい。2013/11/05(火) 23:55:55.90
melpaにtuaregがあるから、packageを使ってインストールしたほうが楽なように思う。
けれどWindowsでpackage使うにはtarなどをインストールしないといけないかも。
07537302013/11/06(水) 05:24:58.76
>> 731
時間が十分短い場合→全選択、少し空けば→a挿入、みたいなイメージ。

>> 732
ごめんなさい、C-a C-g a はよく判りませんでした。

>> 733 sequential-command だったかな。
おおお、C-a、C-aでバッファ先頭に飛ぶ例があるね。
これを使えば、C-a C-aで全選択もわけなさそう。

>> 734 C-x h を、覚える
知らんかった…。当座はこれでしのぎます。
0754名無しさん@お腹いっぱい。2013/11/06(水) 07:53:57.23
>>753
やりたいことこの辺に近いかな。
http://d.hatena.ne.jp/rubikitch/20090219/sequential_command
http://web.archive.org/web/20081011163429/http://taiyaki.org/elisp/accel-key/
0755名無しさん@お腹いっぱい。2013/11/06(水) 09:44:18.83
taiyaki.org の人は今 google ime 作ってるんだよな
0756名無しさん@お腹いっぱい。2013/11/06(水) 09:52:27.08
うん、知ってる。
0757名無しさん@お腹いっぱい。2013/11/06(水) 12:57:25.84
help-echo プロパティで表示出来るツールチップをマウスオーバーではなく
関数で強制的に表示って出来ないですかね。
0758名無しさん@お腹いっぱい。2013/11/06(水) 13:24:02.97
既出かもしれないけど eval-after-load のフォームの中までバイトコンパイルさせる方法考えた。

(eval-after-load "hoge" `(funcall ,(lambda ()
(message "ここはコンパイルされるよ!")
))

もっとも eval-after-load 内にそんなごつい処理かかないだろうし、ロード時に一回しか走らないしで
大した違いが出るとは思えないけど。
0759名無しさん@お腹いっぱい。2013/11/06(水) 21:49:23.91
バイトコンパイルってファイルが小さくなるだけじゃないの?
速度変わらないんだったら大した意味ないんじゃない?
0760名無しさん@お腹いっぱい。2013/11/06(水) 21:56:42.85
バイトコンパイルしないとより遅くなるぞ。
0761名無しさん@お腹いっぱい。2013/11/06(水) 22:08:47.81
eval-after-loadまでコンパイルする必要はないだろう・・・・
0762名無しさん@お腹いっぱい。2013/11/07(木) 01:57:20.77
>>759
たかがサイズのためにどんだけまわりくどい手間かけてんだよ…
0763名無しさん@お腹いっぱい。2013/11/07(木) 02:35:13.66
たかがサイズ
されどサイズ
0764名無しさん@お腹いっぱい。2013/11/07(木) 07:43:47.94
ファジィな痛みー
0765名無しさん@お腹いっぱい。2013/11/07(木) 08:01:14.52
>>759
elispのバイトコンパイラはlisp専業だったlucidが手を入れた最適化コンパイラ
実行速度も向上する
0766名無しさん@お腹いっぱい。2013/11/07(木) 09:02:32.14
js2-modeとか最適化でかなり変わるね
0767名無しさん@お腹いっぱい。2013/11/07(木) 10:27:50.93
極力起動時の処理を軽くしようとして eval-after-load に関数定義とかまで押し込んでる場合は
>>758 は有効だと思う。

もっとも init.el に書く程度の内容だったらやっぱり誤差だろうな。
0768名無しさん@お腹いっぱい。2013/11/07(木) 12:43:20.42
org-modeのファイルを開くときに折り返しを有効にしている状態で開くにはどうすればよいですか?
今はファイルを開いた後に(toggle-truncate-lines)を手動で1回評価しています
0769名無しさん@お腹いっぱい。2013/11/07(木) 13:13:02.22
org-mode-hook に toggle-truncate-lines を追加してやればいいんじゃないかな
0770名無しさん@お腹いっぱい。2013/11/07(木) 14:51:59.91
>>768
以前探して見つけたのは、org-startup-truncated を NIL にしておく方法。
0771名無しさん@お腹いっぱい。2013/11/07(木) 22:39:25.58
X11のフォント設定に依存しない、直接ttfファイル等を指定して
フォントを設定することはできますか?
0772名無しさん@お腹いっぱい。2013/11/08(金) 02:11:35.30
今のところ OS に認識させないと無理だと思う。
0773名無しさん@お腹いっぱい。2013/11/08(金) 12:40:42.05
twittering-modeを使っているのですが
urlをクリックしたときに指定したブラウザでそのリンクを開くよう設定できますか
0774名無しさん@お腹いっぱい。2013/11/08(金) 12:55:08.45
browse-url を使ってるみたいだから、
browse-url-browser-function を browse-url-firefox とか好きなのに変更すればいい。
デフォルトで何が選べるかは browse-url の先頭のコメントのところに列挙されている。
そこにない場合は自分で適当に追加すればいい。

twittering-mode の url クリックの時だけ変更したいなら
twittering-click に包囲 advice でも追加してそこでだけ browse-url-browser-function を変更すればいい。
0775名無しさん@お腹いっぱい。2013/11/08(金) 16:50:57.45
>>774
できました!大変助かりました。感謝です。
07767682013/11/09(土) 01:24:53.69
>>769-770
両方を参考にしてorg-mode-hookでorg-startup-truncatedをnilにすることにしました
ありがとうございました
0777名無しさん@お腹いっぱい。2013/11/09(土) 22:33:14.63
package で color-theme のSolarizedをインストールして
設定ファイルにGithubに書かれているように書き込んだのですが
Emacsを起動する際に
Unable to find theme file for `solarized-dark'と出て、適用されない状態で起動されます。
Pathを確認したところしっかりとPackageでインストールされたものが
はいるディレクトリは通っていますし、
M-x load-file RET ~/.emacs.d/init.el
とするとエラーは出ずにしっかりとSolarizedのColorthemeが適用されます。
原因は何なのでしょうか?
0778名無しさん@お腹いっぱい。2013/11/09(土) 22:48:15.90
>設定ファイルにGithubに書かれているように書き込んだのですが
これのURLがないとなんとも
0779名無しさん@お腹いっぱい。2013/11/10(日) 11:09:20.67
>>750
遅レスだけど、これは caml.el の作者のバグっぽいね。
c-toggle-auto-state は、cc-cmds.elを読み込まないと定義されないけど
きっと作者の環境の .emacs には、これをどこかで読み込ませる設定でも
あって、これを require するのを忘れたんだろう…

対処するならば、
(eval-after-load 'caml
'(require cc-cmds))
という方法もある。

というか、ocaml 使うなら MELPA から tuareg 入れておいたら、
autoload設定も auto-mode-alist の追加も不要なはずなんだけどなぁ。
**
0780名無しさん@お腹いっぱい。2013/11/10(日) 11:19:21.48
>>758
この話題、ちょっと前の gnu.emacs.devel でもあったね。
Emacs 24.4 では lexical-binding の機能を活かして、
コンパイル時に変数チェックまでしてくれるから、
eval-after-load の中もコンパイルすると、変数名のミスなどが見つかるので
有効。もっとも、読み込まないライブラリがあると逆にこれは鬱陶しいので、
ライブラリがない場合は、
(with-no-warnings) で囲むようなマクロを作っておけばさらに便利。

実は Emacs 24.4 には、すでに同じようなことをしてくれる
with-eval-after-load マクロが定義されている。。。
0781名無しさん@お腹いっぱい。2013/11/10(日) 11:32:27.62
>>777
勘で書くけど、
多分、init.el で、
(package-initialize)
を先頭の方で書いていないんじゃないかな。
これ書かないと、MELPA経由でインストールしたパッケージへの
アクセスが init.el でできない。
(package-initialize) は、init.el 読み込み完了後に
(もしinit.el で実行していないなら)自動的に行われるので
起動後は設定できるとか。
0782名無しさん@お腹いっぱい。2013/11/10(日) 11:35:18.32
>>780
>with-eval-after-load マクロが定義されている。。。
なんでいままでなかったんだレベルだな
0783名無しさん@お腹いっぱい。2013/11/10(日) 11:37:23.74
これか
(unless (fboundp 'with-eval-after-load)
(defmacro with-eval-after-load (file &rest body)
`(eval-after-load ,file
`(funcall (function ,(lambda () ,@body))))))

さっさか導入しちゃうのも悪くないな
0784名無しさん@お腹いっぱい。2013/11/10(日) 12:29:19.02
>>730
これも遅レスだけど、最近、一部で話題の領域選択ツール:
https://github.com/magnars/expand-region.el
rの連打でどんどん選択領域を広げてくれる。
0785名無しさん@お腹いっぱい。2013/11/10(日) 13:04:05.71
投下

auto-insert で挿入するテンプレートを yasnippet に処理させる
& ~/.emacs.d/template にモード名でファイルを放り込んでおけば勝手に auto-insert の対象にする

(add-hook 'find-file-hook 'auto-insert)

;; テンプレートファイルのフォルダ. モード名のファイルを配置する (java-mode.java や emacs-lisp-mode.el など)
(setq auto-insert-directory (locate-user-emacs-file "template"))

(defvar auto-insert-template-modtime nil "テンプレートディレクトリの更新時間.")

(defun auto-insert-yas-expand ()
"`auto-insert' するテンプレートを `yasnippet' のスニペットと見做して展開する."
(yas-expand-snippet (buffer-string) (point-min) (point-max)))

(defadvice auto-insert (before auto-insert-update-template activate)
"`auto-insert' 前にテンプレート一覧を更新する."
(let ((modtime (file-attributes auto-insert-directory)))
(unless (equal modtime auto-insert-template-modtime)
(setq auto-insert-template-modtime modtime)
(setq auto-insert-alist nil)
(dolist (template (directory-files auto-insert-directory nil "^[^.]"))
(add-to-list 'auto-insert-alist
(cons (intern (file-name-sans-extension template))
(vector template 'auto-insert-yas-expand))))
))
0786名無しさん@お腹いっぱい。2013/11/10(日) 17:01:24.63
>>777
theme は、普通の load-path とは、違う変数をたどるんだけど、
そこいらへんも、package system で、ちゃんと、面倒見てくれてるのかな?

custom-theme-directory
custom-theme-load-path

調べてみると、良いかもしれない。
0787名無しさん@お腹いっぱい。2013/11/10(日) 18:20:01.75
locate-file (locate-library とか executable-find) の実行結果をキャッシュするのを作った。
init.el なんかでパッケージの有無で分岐して設定変更なんかしてる場合にちょっとだけ起動が速くなる。

http://pastebin.com/hCAGBh6H

locate-file-cache.el で保存してなるべく早い位置で require する。
二回目以降の起動ではキャッシュを読むようになるのでディスクアクセスが発生しなくなって
ちょっとだけ速くなる。
0788名無しさん@お腹いっぱい。2013/11/10(日) 18:26:48.25
>>785
いいね。abbrev, dabbrev, skeleton, tempo, とか全部 yasnippet/auto-complete
に整理してるんで助かった。
(defadvice auto-insert (before auto-insert-update-template activate)
"`auto-insert' 前にテンプレート一覧を更新する."
(dolist (template (directory-files auto-insert-directory nil "-mode\\.[^~]+$"))
(let ((mode (intern (file-name-sans-extension template))))
(setq auto-insert-alist (assq-delete-all mode auto-insert-alist))
(add-to-list 'auto-insert-alist
(cons mode (vector template 'auto-insert-yas-expand))))))
snippet ですむのにわざわざ elisp で実装してドヤ顔している人ってなんなの?
と思わないことはない。
0789名無しさん@お腹いっぱい。2013/11/10(日) 18:46:53.13
SSD だとあんまり気にならなくない?
0790名無しさん@お腹いっぱい。2013/11/10(日) 19:07:33.60
>>789
普通のHDDでも誤差レベル。
自分ところは 37 回ぐらい executable-find とか locate-library してるけど
起動時間が 1.0 sec から 0.9 sec になった程度の差だった。
自己満足ではある。
0791名無しさん@お腹いっぱい。2013/11/10(日) 20:34:49.57
1万回起動すれば1000秒(約16分)の差になる。
メロスも16分遅れていたら約束を果たせなかったかもしれない。
人生の行方を決めるには十分な時間さ。
0792名無しさん@お腹いっぱい。2013/11/10(日) 20:51:46.13
一日2回起動するとしても16分稼ぐのに13年もかかるのか・・・
PCの性能があがると更に差は縮まるだろうしなかなか過酷な旅路になるな
0793名無しさん@お腹いっぱい。2013/11/10(日) 21:17:59.12
>>787
一時的なファイルチェックなんかに locate-file 使われると詰むから
init.el 内のみで機能するようにした方が無難だと思う。
0794名無しさん@お腹いっぱい。2013/11/10(日) 21:29:59.18
init.elc ファイル見てて思ったんだけど、advice 定義の中身ってコンパイルされてないのね。
上の方で eval-after-load の中身をコンパイルしてたけどこっちは出来ないんだろうか。
オプションに compile って付けてみたけど効果がよくわからない。
0795名無しさん@お腹いっぱい。2013/11/10(日) 22:02:56.27
>>794
適当にadviceした関数の定義をsymbol-functionで見てみるとどうやらコンパイルされてるっぽいから
特に何もしなくてもいいんじゃないのかね。defadviceしたタイミングでコンパイルされるんだろうきっと。
0796名無しさん@お腹いっぱい。2013/11/10(日) 23:29:44.99
そうすると init.el に advice 書きまくるとバイトコンパイルのせいでどんどん遅くなるんじゃないかって気がしてきた
実際 flet とか advice の中に書いとくと起動時に Compile-Log のバッファが出来てて warning が記録されてる・・
0797名無しさん@お腹いっぱい。2013/11/10(日) 23:38:22.34
adviceは(あんまり)使うべきではない
http://www.emacswiki.org/emacs/AdviceVsHooks
0798名無しさん@お腹いっぱい。2013/11/10(日) 23:53:51.94
>>790
37回という回数はどうやって計測するの?
0799名無しさん@お腹いっぱい。2013/11/11(月) 00:04:03.16
>>798
occur で数えたよ。ダサい答えでごめんなさい。
require した別のファイルの中でも呼んでたりするだろうから実際はもう少し多いかもね。
それこそ advice でも書いて数カウントでもしたほうがいいのかもしれない。
0800名無しさん@お腹いっぱい。2013/11/12(火) 00:43:56.46
流れぶった切るけど。文字列の最初の空白のみからなる行を削除するのってemacsではどう書くのがいい?

Gaucheだと
(regexp-replace #/^( *\n)*/ str "")
と書けるけど、emacsだと
(string-match "^\( *\n\)*" " \n\n \n hoge\n \n")
はnilになるので。
0801名無しさん@お腹いっぱい。2013/11/12(火) 01:13:26.16
次のバージョンていつリリースされんだろう?
0802名無しさん@お腹いっぱい。2013/11/12(火) 01:41:42.06
>>799
なるほど
ありがとう
■ このスレッドは過去ログ倉庫に格納されています