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

Emacs Part 40

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2012/02/11(土) 20:07:29.69
前スレ

Emacs Part 39
http://toro.2ch.net/test/read.cgi/unix/1322556644/
0690名無しさん@お腹いっぱい。2012/07/19(木) 21:27:54.30
>681
url-method.elあたりを見ると空文字列はnil扱いなんで問題なさそうな気が。

何か試すとしたら、あとはdebug-on-errorをtにして実行して何かエラーが
出て止まるか見てみるくらいかなぁ。
06916822012/07/19(木) 23:54:28.76
>>689
menu-bar.elを参考にして自分で作れってことかー。。。
便利そうだしやってみたいけど、今は時間的にムリダナ。
06926822012/07/20(金) 00:23:35.02
>>689
そんなに難しそうではなさげだね。elisp reference manualに書いてあることを使えば、
elscreen.el 読んだら行けるか。とりあえず保留だけど。
0693名無しさん@お腹いっぱい。2012/07/21(土) 10:06:30.43
保存時にmakeを自動で実行したいのですが、そのような事はできませんか?

C-cC-sのように別コマンドでmakeを行う保存、ただの保存、のように分けることも出来ればうれしいです。
0694名無しさん@お腹いっぱい。2012/07/21(土) 10:11:12.06
after-save-hook に make を行うような設定にすればいいんじゃね?
わけるなら make してから save するコマンドでも作ればいい。

ちょっと希望してるのとは違うけど flymake とかもお勧めではある。
0695名無しさん@お腹いっぱい。2012/07/21(土) 12:27:34.03
いまだemacs とか使ってやつってそろそろ団塊入りの禿オヤジばっかだろ
0696名無しさん@お腹いっぱい。2012/07/21(土) 12:29:25.17
歳とったからって団塊入りするわけじゃないのよ
0697名無しさん@お腹いっぱい。2012/07/21(土) 12:36:46.99
>>695
髪はふさふさしてる。
禿丸しか使えない馬鹿を尻目にテキパキ仕事してますよ。
0698名無しさん@お腹いっぱい。2012/07/21(土) 12:47:37.70
そろそろ団塊入りワロタ
0699名無しさん@お腹いっぱい。2012/07/21(土) 13:17:25.57
>>695の低学歴臭がひどすぎてw
0700名無しさん@お腹いっぱい。2012/07/21(土) 17:43:35.34
俺も低学歴です。ごめんなさい。
0701名無しさん@お腹いっぱい。2012/07/21(土) 17:54:40.89
ネタがねえ

*.elを保存する時に自動的にバイトコンパイルするやつ
作りかけのとかコンパイルされてもしかたないので元々 *.elc がある場合だけコンパイルする。

(add-hook 'emacs-lisp-mode-hook
(lambda ()
(add-hook 'after-save-hook
(lambda ()
"必要ならバイトコンパイルする. elc が無い場合はコンパイルしない."
(require 'bytecomp nil t)
(let* ((file (buffer-file-name))
(dest (byte-compile-dest-file file)))
(when (and (file-exists-p dest)
(file-writable-p dest)
(file-newer-than-file-p file dest))
(byte-compile-file file))))
nil t))) ; buffer local hook
0702名無しさん@お腹いっぱい。2012/07/21(土) 18:03:00.23
どっかで拾ったこれがお気に入りだ。

iswitchbでバッファ名入力時に表示されてるバッファも一緒に切り替わるやつ
ついでに選択中に C-f C-b で切り替えできるようにする

(defadvice iswitchb-exhibit
(after in:ad-iswitchb-exhibit-with-display-buffer activate compile)
"選択しているバッファをウィンドウに表示する."
(when (and (eq iswitchb-method iswitchb-default-method)
iswitchb-matches)
(select-window (get-buffer-window
(find-if-not 'minibufferp (buffer-list))))
(let ((iswitchb-method 'samewindow))
(iswitchb-visit-buffer
(get-buffer (car iswitchb-matches))))
(select-window (minibuffer-window))))

(add-hook 'iswitchb-define-mode-map-hook
(lambda ()
"`iswitchb' の追加キーバインド."
(define-key iswitchb-mode-map (kbd "C-f") 'iswitchb-next-match)
(define-key iswitchb-mode-map (kbd "C-b") 'iswitchb-prev-match)))
0703名無しさん@お腹いっぱい。2012/07/21(土) 19:12:07.99
ネタがない、か。それでは初心者がネタを投下。

emacsの正規表現は使いにくすぎる。書くときはいいけど後から読めない。rxを使うほどではないけど、Gaucheの正規表現リテラルが羨しい。
気になるのは二つ。
どうしてこんなことになったのか、歴史的なこと。
今、正規表現リテラルに関してまじめに考えている人はいるのか。
0704名無しさん@お腹いっぱい。2012/07/21(土) 19:52:54.44
正規表現リテラルってそんなに便利なのかな?
Gaucheでは型の扱い方がエレガントだからよさげに思うんじゃないだろうか。
0705名無しさん@お腹いっぱい。2012/07/21(土) 20:25:10.73
便利っていうかEmacsの正規表現の\の数は異常だろう
0706名無しさん@お腹いっぱい。2012/07/21(土) 21:05:46.69
バックスラッシュを解釈しない文字列が書ければいいんだよな。
今時の言語にはあって当たり前だが。。
0707名無しさん@お腹いっぱい。2012/07/21(土) 21:37:29.58
そんなものを正規表現で書くのが間違いなんじゃない?
0708名無しさん@お腹いっぱい。2012/07/21(土) 21:48:17.98
どう考えても、正規表現記号にエスケープを要求することと
そのエスケープ用文字が文字列のエスケープと被ってることが間違いじゃね
まあ環境が間違ってると言ってもそれを踏まえてうまくやるしかないんだけども
0709名無しさん@お腹いっぱい。2012/07/21(土) 22:27:27.49
あれは設計ミスとしか思えないよねえ。
コードに落としこむ時とミニバッファとかに入力する時でまた変わるってのも輪をかけておかしい。
何がメタ文字なのかってちゃんと把握すれば一応直交してはいるんだけどさ。
0710名無しさん@お腹いっぱい。2012/07/22(日) 02:18:47.65
ヒートガイJ「男はratpoisionとemacsで全てをこなすものである」
0711名無しさん@お腹いっぱい。2012/07/22(日) 05:35:50.46
>>703
書くときもよくないw

実は自分も知りたいと思ってたけど、初心者すぎるかなと思って聞けなかった・・・
まだ解決してなかったのかー。

Perlの正規表現で置換できるelispとか無いのかな?
0712名無しさん@お腹いっぱい。2012/07/22(日) 07:59:59.39
ratpoison使ってたけどGIMPであきらめた
0713名無しさん@お腹いっぱい。2012/07/22(日) 08:27:08.54
やっぱり皆不満なのね。「それくらい脳をhackできなきゃemacsianとして云々」とか言うのかと思った。

>>711
M-x re-builder
改行含めて全ての文字にマッチする表現がぱっと書けないのもどうかと思うよ。
いまだになぜかうまく動かないやつあるし。
0714名無しさん@お腹いっぱい。2012/07/22(日) 08:48:27.26
re-builderはなぁ・・
今だったらミニバッファに正規表現入力中に勝手に re-builder が働くような感じだといいんだろうね。
0715名無しさん@お腹いっぱい。2012/07/22(日) 09:48:02.18
re-builderで作った正規表現をそのままoccurに入れて動かねーと
頭を抱えたのはいい思い出
0716名無しさん@お腹いっぱい。2012/07/22(日) 10:21:33.06
>>715
query-replace-regex がうまく動かなくて困ってるんだけどくわしく。
0717名無しさん@お腹いっぱい。2012/07/22(日) 15:28:47.25
正規表現で何かをパーズしてる人達がオールドタイプってことは分かる。
0718名無しさん@お腹いっぱい。2012/07/22(日) 16:21:10.79
ニュータイプはどうやってパーすするの?
0719名無しさん@お腹いっぱい。2012/07/22(日) 16:31:00.79
基本に立ち返って字句解析と構文解析するんじゃない?
0720名無しさん@お腹いっぱい。2012/07/22(日) 16:45:02.23
Javaなんかは1.4になって初めて正規表現をサポートした。
むしろこれからの技術でしょ。>正規表現
0721名無しさん@お腹いっぱい。2012/07/22(日) 16:56:37.04
これからもなにも・・・・
計算機科学黎明期のそれこそ字句解析構文解析とほぼ同時に生まれた概念だぞ
0722名無しさん@お腹いっぱい。2012/07/22(日) 18:38:52.11
そういえばelispに関数型parserの話なかったっけ。
くそ長い正規表現撲滅されるかも。
0723名無しさん@お腹いっぱい。2012/07/22(日) 18:49:57.81
>>721
それが後々まで使われ、新しい環境でも望まれている。
まだまだこれから、と言いたいわけだが。
つーかUNIX板で正規表現嫌いと聞くとは思わんかったよ。
0724名無しさん@お腹いっぱい。2012/07/22(日) 18:56:09.53
>>723
> それが後々まで使われ、新しい環境でも望まれている。
> まだまだこれから、と言いたいわけだが。

正規表現使い過ぎる人ってCOBOLerと同じ臭いがするんだよね。
0725名無しさん@お腹いっぱい。2012/07/22(日) 19:05:15.74
しったか君はとりあえずマ板に帰ろうか
0726名無しさん@お腹いっぱい。2012/07/22(日) 19:38:39.33
>>723
あんなメンテナンス性の悪いもの嫌って当然。
0727名無しさん@お腹いっぱい。2012/07/22(日) 19:42:15.08
まーまー。
Emacsの正規表現でのエスケープだらけへの愚痴大会を
正規表現そのものの悪口大会と勘違いした夏厨くんが
勇んで参加してしまっただけ。
よくある話だ。
0728名無しさん@お腹いっぱい。2012/07/22(日) 19:43:18.19
正規表現は利便性の高いものであることに疑問はないけど、
emacsで正規表現書く時はすごくストレスが溜まることはあるな。
バックスラッシュ4つ書くのが普通となるとやっぱり嫌だ。
0729名無しさん@お腹いっぱい。2012/07/22(日) 20:51:08.28
>>728
暫く書かないでいるとどれに何個エスケープしなきゃいけないか忘れるよね
0730名無しさん@お腹いっぱい。2012/07/22(日) 20:55:04.60
バックスラッシュが大量に入っちゃうのは何らかのパーズ処理だと思うが。
そういう処理に正規表現使わないのはそろそろ常識になってほしい。
0731名無しさん@お腹いっぱい。2012/07/22(日) 20:57:52.24
なにいってんだこいつ () 使うだけで \\(\\) なんだぞ?
0732名無しさん@お腹いっぱい。2012/07/22(日) 21:00:29.68
普通のバックスラッシュにマッチさせるだけで"\\\\"なんだよな。
0733名無しさん@お腹いっぱい。2012/07/22(日) 21:07:34.50
なんとかなんないもんなのかねぇ。
rx とか使ってるの見たことないわ。
0734名無しさん@お腹いっぱい。2012/07/22(日) 21:07:39.36
>>731
それだけでそこまで読みづらいのかな?いつごろからかハイライトされるよう
になってあんまり不満がなくなっちゃった
正規表現のバックスラッシュが一番数えづらいの正規表現の文字列リテラルにダ
ブクオートとか入ってきたときのような気がする。次に >>732
そういうのにマッチさせる正規表現は書かなければいいんじゃないかな。
0735名無しさん@お腹いっぱい。2012/07/22(日) 21:08:10.02
ついついrx使ってしまい糞elisp書くなゴルァって怒られてた
0736名無しさん@お腹いっぱい。2012/07/22(日) 21:12:00.49
>>734
君がそう思うならそれはそれで幸せなことだ。
別にみんながみんな使い辛いって思って欲しいわけじゃないし。
少なくとも俺と俺の周りの何人かは使ってて不便に思ってるってだけの話。
0737名無しさん@お腹いっぱい。2012/07/22(日) 21:23:11.46
>>736
くれぐれも巨大な正規表現は書かないように。馬鹿に見えるからね。
0738名無しさん@お腹いっぱい。2012/07/22(日) 21:26:23.78
Emacsはなんで正規表現リテラル導入しなかったんだろね。
長いの書く時まじでしんどいわ。
だいたい列挙するだけで \\(\\(\\(public\\|protected\\|private\\|const\\|...とか
あほやろwwww
0739名無しさん@お腹いっぱい。2012/07/22(日) 21:28:33.82
>>738
四の五の言わず、 regexp-opt 使いたまえ。
0740名無しさん@お腹いっぱい。2012/07/22(日) 21:29:11.76
どうせまたstallmanの趣味でリテラルの導入考えなかったんだろ。
抜けたことでダイナミックリンクも解禁されたし正規表現リテラルもそのうち実装されるんじゃねえの。
0741名無しさん@お腹いっぱい。2012/07/22(日) 21:37:04.01
replace-regexp の置換語のところに S 式書けるの今はじめて知ったわ
replace-regexp: \(\w+\) => \,(capitalize \1)
0742名無しさん@お腹いっぱい。2012/07/22(日) 21:47:00.18
rx使ってるライブラリって何かあるかなとおもって調べたら
python-modeが使ってたわ
標準配布なんだしもっと使えばいいのに
07437432012/07/23(月) 02:38:20.83
書かなくていいなら幸せだ。書かなきゃいけないんだよ。
0744名無しさん@お腹いっぱい。2012/07/23(月) 08:35:29.27
なんでわざわざ名前欄にレス番入れてんだ・・・?
こっから連レスする予定?
0745名無しさん@お腹いっぱい。2012/07/23(月) 09:05:09.00
すまん、なぜかわからん。自分で書いた覚えがない。
0746名無しさん@お腹いっぱい。2012/07/25(水) 02:30:08.61
\\の嵐に悩んでいる人は regexp-lock 使ってみたら?
個人的にはグルーピングに関する悩みは大体は解決した。
0747名無しさん@お腹いっぱい。2012/07/25(水) 08:29:30.29
軽くぐぐっても出てこないんだけどどこにあるの?
regexp-optの間違いじゃないよね?
0748名無しさん@お腹いっぱい。2012/07/25(水) 20:34:26.96
http://lists.gnu.org/archive/html/gnu-emacs-sources/2005-11/msg00004.html
これかな?
0749名無しさん@お腹いっぱい。2012/07/25(水) 20:43:28.61
>>748
これ面白いね。正規表現っぽい文字列コンテキストのとこに入ると
\\(\ab\(\\(cd\\)\\)\\) がハイライト付きで \1(ab\2(\3(cd\3)\2)\1) みたいに表示される
正規表現のグルーピングになってない()はハイライトされないから確かに一目瞭然だわ。
0750名無しさん@お腹いっぱい。2012/07/27(金) 12:49:38.46
質問です。
Emacsを使うとマウスまで手を伸ばさなくてもほとんどの作業ができるようですが、
本当にそうなのでしょうか?
例えばカーソルを合わせたりクリックするような作業も全てキーボードで行う事は可能なのですか?
0751名無しさん@お腹いっぱい。2012/07/27(金) 13:08:24.02
>>750
どこにカーソルを合わせること想定していますか?
バッファの中ならカーソル移動のキーバインドを調べてください。
クリックするとは、どのような機能を意味していますか?
カーソルの位置指定という意味に過ぎないのなら、
カーソルがそこに移動すれば、クリックは不要でしょう。
0752名無しさん@お腹いっぱい。2012/07/27(金) 13:35:07.17
ずばりそうでしょう。
0753名無しさん@お腹いっぱい。2012/07/27(金) 13:59:54.91
それにカーソルの位置合わせでマウスの方がはやいじゃんwwwとか思ったら
別に躊躇せずマウス使えばいいと思う
0754名無しさん@お腹いっぱい。2012/07/27(金) 21:19:20.49
ネタ振り

色設定とかフォント設定を環境毎に分けて書きたくないから
フォントとか色があればそれを使うって書き方にした。

;; フォント
(flet ((font-candidate (&rest font-list) (find-if (lambda (f) (find-font (font-spec :name f))) font-list)))
(set-fontset-font "fontset-custom" 'japanese-jisx0208 (font-candidate "MeiryoKe_Console" "VLゴシック" "MSゴシック"))
...
)

;; 色
(flet ((color-candidate (&rest colors) (find-if #'color-defined-p colors)))
(set-face-attribute 'region nil :foregreound (color-candidate "SystemHilightText" "White")
:background (color-candidate "SystemHilight" "Royal Blue"))
...
)
0755名無しさん@お腹いっぱい。2012/07/27(金) 21:35:25.42
フォントや色は.emacsじゃなくて.Xresourcesで設定するようにした。
そうすると.emacs引き回すときも環境のことあまり気にしなくてよいので
かなり気楽になったよ。
0756名無しさん@お腹いっぱい。2012/07/27(金) 21:41:15.92
>>755
どっちかっていうとNTEmacsとかのWindows環境との共存重視っす。
0757名無しさん@お腹いっぱい。2012/07/29(日) 09:49:45.82
Googleで調べたけどいまいちよくわからないので質問です。
最初にanything.elというパッケージをTamasPatrovicsという人が開発して、
その開発をいまは日本のるびきちさんが受け継いでいる。そしてそこから
フォークしたhelmというパッケージもあるって理解でOKですか?
0758名無しさん@お腹いっぱい。2012/07/29(日) 10:07:29.52
大体あってる。
フォークしたんでなくメンテナンス引き継いだんだったかな?
今は helm の方が開発活発だね
0759名無しさん@お腹いっぱい。2012/07/29(日) 10:12:46.34
レスありがとうございます。
0760名無しさん@お腹いっぱい。2012/07/29(日) 11:47:32.17
るびなんとかさんが作者みたいなふるまいをしてるから
作者なのかと思っていたわ
0761名無しさん@お腹いっぱい。2012/07/29(日) 12:36:58.25
yasnippet がいつの間にか動的ロードだかなんかするようになったせいなのか
起動時に有効化しても M-x emacs-init-time が1秒を切るようになって嬉しい
0762名無しさん@お腹いっぱい。2012/07/29(日) 13:10:29.41
俺様の新PCだとM-x emacs-init-time => 0.2です。
”一瞬”でエディタが立ち上がるという感覚って大事ですよね。
0763名無しさん@お腹いっぱい。2012/07/29(日) 13:25:56.44
うちも emacs -q なら M-x emacs-init-time > 0.1 だわ
0764名無しさん@お腹いっぱい。2012/07/29(日) 19:34:06.08
emacs -q でないなら、みんなどれくらいなの?
俺は無駄にいろいろ書いてるので 3.6seconds だった。。。
0765名無しさん@お腹いっぱい。2012/07/29(日) 19:46:46.33
4.4 seconds
0766名無しさん@お腹いっぱい。2012/07/29(日) 19:48:30.79
うちは 0.9 seconds だわ
eval-after-load とかに結構追い出したからなぁ
0767名無しさん@お腹いっぱい。2012/07/29(日) 21:14:22.25
>>766
そうか。。。俺も整理が必要だな。
0768名無しさん@お腹いっぱい。2012/07/29(日) 21:18:32.42
どう考えてももうこれ使わんだろ的な require なくすだけでも軽くなってくけど
そんなに頻繁に立ちあげたり落したりしないなら数秒の差とか気にしなくてもよいだろうけどね。

dump すれば凄まじく早くなるらしいが・・・
http://dev.ariel-networks.com/Members/matsuyama/dump-emacs/
0769名無しさん@お腹いっぱい。2012/07/29(日) 21:45:00.95
このコマンド初めて知った
3.4 sec
0770名無しさん@お腹いっぱい。2012/07/29(日) 22:01:40.21
0.4~0.6だった
みんなどれだけ複雑な.emacsなんだ
0771名無しさん@お腹いっぱい。2012/07/29(日) 22:20:54.81
どこが重いかまでプロファイリングできれば面白いね
0772名無しさん@お腹いっぱい。2012/07/29(日) 22:23:53.37
25.9 secondsだった。
0773名無しさん@お腹いっぱい。2012/07/29(日) 22:27:27.75
それはさすがにマシンの方に問題ありだろw
0774名無しさん@お腹いっぱい。2012/07/29(日) 22:32:47.58
emacs 23 の時でちょっと古い yasnippet 使ってた時は 15 seconds だったけど
同じPCで emacs 24 と最新の yasnippet にしたら 0.9 seconds まで下がった
07757722012/07/29(日) 22:36:02.32
Intel(R) Atom(TM) CPU N455 @ 1.66GHz
memory 1G
のネットブックなんだ。

あとemacs-w3m初回起動時に、3秒ぐらいかかる。
0776名無しさん@お腹いっぱい。2012/07/30(月) 12:21:16.20
executable-find とかを大量に書いてる場合で環境がそんなに変わらないなら
結果をキャッシュするとかすれば速くなりそうだ
0777名無しさん@お腹いっぱい。2012/07/30(月) 13:47:03.70
SSD なノートだと 0.2 sec やな。
0778名無しさん@お腹いっぱい。2012/07/30(月) 13:49:24.53
ディスクアクセスがネックになってるってのはあるだろなあ
0779名無しさん@お腹いっぱい。2012/07/30(月) 14:11:25.30
いったん、ディスクにキャッシュが効けば、早くなりますな。
0780名無しさん@お腹いっぱい。2012/07/31(火) 05:38:10.28
i7 3960 で5〜7sec
i7 920 で5sec
あんまりかわらんな・・・。
0781名無しさん@お腹いっぱい。2012/07/31(火) 07:28:29.04
ディスクアクセスとメモリアクセスがほとんどだろ。
0782名無しさん@お腹いっぱい。2012/07/31(火) 07:57:58.62
GNU Emacs24.1をWindowsで使い始めたんだけど、
日本語入力時のキーバインディングが独特でとまどっています。
あと変換候補もなんかWindowsの標準IMEよりすこしバカというか…
これはこんなもんだとあきらめて適応したほうが幸せですか?
0783名無しさん@お腹いっぱい。2012/07/31(火) 07:58:42.46
あ、ここUnix板だったか、場違いだったら失礼しました。
0784名無しさん@お腹いっぱい。2012/07/31(火) 08:04:27.65
MS-IMEかATOKを使えばいいじゃないの。
0785名無しさん@お腹いっぱい。2012/07/31(火) 08:33:04.60
オリジナルの NTEmacs だと IME パッチとかが適用されていないから
gnupack とかのパッチ適用済みのバイナリを使ったほうがいいかもね。
そっちなら Windows 本来の IME が使える。

標準で入ってる leim はどんな言語も入力出来る優れたシステムではあるんだけど
日本語入力部分の元となった skk が特殊な上辞書とかほぼ入ってない状態に近いから
最新の skk を入れるか他の漢字変換システム使ったほうが賢明だとは思う。
これは Win も Unix も同じ。
0786名無しさん@お腹いっぱい。2012/07/31(火) 08:57:11.24
レスありがとうございます。調べてみます。
0787名無しさん@お腹いっぱい。2012/07/31(火) 12:05:27.51
NTEmacs スレは良スレ
ここはるびきっちゃんアンチが常駐、多分結構なおっさん
0788名無しさん@お腹いっぱい。2012/07/31(火) 12:08:31.12
そういうこと言わんでよろしい。
0789名無しさん@お腹いっぱい。2012/07/31(火) 15:19:22.57
るびきちも結構なおっさんなんじゃないの?
■ このスレッドは過去ログ倉庫に格納されています