Emacs Part 43
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2013/06/09(日) 14:05:32.09GNU 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/
0445名無しさん@お腹いっぱい。
2013/09/23(月) 14:05:51.65『心揺れてる』理由が知りたいです。
emacsを数年間利用した上でemacs以外のエディターに移行しようとする方の
意見には興味があります。
0446名無しさん@お腹いっぱい。
2013/09/23(月) 14:42:10.62vimに移行したい
0447名無しさん@お腹いっぱい。
2013/09/23(月) 17:12:31.00package-install mo-git-blame
も遅い?
0448名無しさん@お腹いっぱい。
2013/09/23(月) 17:55:56.78イミフ
0449名無しさん@お腹いっぱい。
2013/09/23(月) 18:02:29.57まあ、だいたい何が言いたいかわかる。
その場しのぎでワンライナーっぽくフィルタみたいなことをやろうとすると確かにEmacsは便利。
0450名無しさん@お腹いっぱい。
2013/09/23(月) 18:29:39.53自分のやることが制限され左右されてしまう
ニワカで低能のみなさんはそろそろ静かにしててね!
0451444
2013/09/23(月) 18:46:14.01> その場しのぎでワンライナーっぽくフィルタみたいなことをやろうとする
これです。これができるエディタって他にあるのかな。
while re-search-forward replace-match で何度も幸せになれたので。
0452名無しさん@お腹いっぱい。
2013/09/23(月) 20:08:15.11元ネタどこ?てか誰が広めたんだ?
なんかイラッと来るんだが。
幸福実現党かよ。
0453名無しさん@お腹いっぱい。
2013/09/23(月) 20:17:32.40わざわざageで書いてておまけに政治ネタにふってるようなレス見ると
ものすげーイラッと来るわ
0454名無しさん@お腹いっぱい。
2013/09/23(月) 20:20:01.89つまり、幸せになれてないと?
0455名無しさん@お腹いっぱい。
2013/09/23(月) 21:30:13.960456名無しさん@お腹いっぱい。
2013/09/23(月) 21:59:42.57そういう利点が、Emacs にはあるよね。
通常のテキストファイルに elisp を付属させて、必要に応じて
eval-last-sexp で簡単に処理したりで、1つのファイル内で簡潔に完結するこ
とができたり。
0457名無しさん@お腹いっぱい。
2013/09/23(月) 22:15:52.760458名無しさん@お腹いっぱい。
2013/09/24(火) 01:43:42.56あんましよく知らんけど、カーソルがある行を読み込んでevalにかけるくらいなら
プラグイン作れるエディタなら大抵出来そうな気がするんだが
0459名無しさん@お腹いっぱい。
2013/09/24(火) 07:45:00.70プラグインがコンパイラ言語のものだと、無理じゃね?
0460名無しさん@お腹いっぱい。
2013/09/24(火) 07:57:01.66ちょっとしたことなら正規表現で事足りてる
0461名無しさん@お腹いっぱい。
2013/09/24(火) 08:43:08.98あくまで「ユーザが学習して利用できるようになれば」だけど...
Emacs は、何か手軽に処理をさせたいときの仕組みが元々組み込まれていて、
その呼び出し方が簡単で自由度が高い感がある。
極端な話、その「仕組み」そのものにもシームレスにアクセスし確認できる点
(たとえば eval-last-sexp のソースコードを describe-function などで追っ
ていく) は、特筆ものだと思う。
いわゆるプラグインだと、シームレスさや手軽さが欠けるんではないかな。も
ちろん、プラグインにも利点はあるだろうが。
0462名無しさん@お腹いっぱい。
2013/09/24(火) 13:01:52.80sublime textとかpython知ってりゃ5分でプラグイン作れるようになるぞ
0463名無しさん@お腹いっぱい。
2013/09/24(火) 13:40:52.250464名無しさん@お腹いっぱい。
2013/09/24(火) 13:58:31.56ワイヤレスが主流の時代に時代遅れ感もあるし。
ワイヤレスインとかのほうが良い。
0465名無しさん@お腹いっぱい。
2013/09/24(火) 14:43:46.23フック使ってるとプラグインから作るとか面倒すぎる。
0466名無しさん@お腹いっぱい。
2013/09/24(火) 15:54:24.18標準パッケージですら手続き型みたいな書き方してるのばっかりだもの。
0467名無しさん@お腹いっぱい。
2013/09/24(火) 17:17:38.060468名無しさん@お腹いっぱい。
2013/09/24(火) 18:15:53.93http://blog.monochromegane.com/blog/2013/09/23/sg-spec/
elispはまだ誰も公開していないけれどackやagよりもしっくりきそう
0469名無しさん@お腹いっぱい。
2013/09/24(火) 18:55:19.69マクロじゃ手に負えないようなテキスト処理をelispで書くとか考えただけでゾッとするんだが
0470名無しさん@お腹いっぱい。
2013/09/24(火) 19:07:01.27スレチもたいがいにしとけよコノヤロウ
0471名無しさん@お腹いっぱい。
2013/09/24(火) 19:43:18.48Elisp は Eclipse と名前かぶってるし……もうやだこの界隈。
0472名無しさん@お腹いっぱい。
2013/09/24(火) 22:50:10.53名前がかぶっている?
もしそうだとしてもお前が思っている名前だけだろ
0473名無しさん@お腹いっぱい。
2013/09/24(火) 22:57:07.210474名無しさん@お腹いっぱい。
2013/09/24(火) 23:52:23.90lispじゃなきゃヤダ
0475名無しさん@お腹いっぱい。
2013/09/25(水) 00:33:08.73プラグインの定義ってあったら教えてほしい。
0476名無しさん@お腹いっぱい。
2013/09/25(水) 01:03:11.59じゃあgeditだな
編集中のバッファの一部、もしくは全部を標準入力や標準出力にしてコマンドを実行できる機能があるから
お好みのLispが使えるぞ
0477名無しさん@お腹いっぱい。
2013/09/25(水) 01:19:49.480478名無しさん@お腹いっぱい。
2013/09/25(水) 08:45:35.15>通常のテキストファイルに elisp を付属させて、必要に応じて
>eval-last-sexp で簡単に処理したり
あー、これオレもよくやったわ。
シェルスクリプトだとどこに置いたかすぐに忘れてしまって、何ヶ月後かに似たようなことするときに探せないんだけど、
こうしとくと、その手のテキストを探すだけですむ。その場しのぎだとかなり該当率高いし。
0479名無しさん@お腹いっぱい。
2013/09/25(水) 08:47:58.570480名無しさん@お腹いっぱい。
2013/09/25(水) 08:56:45.98人が作ったelispを使うだけなら、そんな感じなのも理解できまつ。
でも、ひとたび自分で elisp を書き出すとLisp脳で考えるのがフツーになって、シェルスクリプト書くのがめんどくなる。
末期的には、前に書いた elisp を find-file して、ちょこっと手直しして eval-buffer して終了、みたいなことが結構あるんだなこれが。
場合によってはキーボードマクロ使うより速いし。
0481名無しさん@お腹いっぱい。
2013/09/25(水) 09:11:08.80そういうことすっからオレの.emacsが手の施しようのない魔境になっちゃってるんだろうがっ!TT
0482名無しさん@お腹いっぱい。
2013/09/25(水) 13:18:14.510483名無しさん@お腹いっぱい。
2013/09/25(水) 16:16:55.22なんで.emacsが関係あるんだ?いみわからずー
0484名無しさん@お腹いっぱい。
2013/09/25(水) 17:26:40.540485名無しさん@お腹いっぱい。
2013/09/25(水) 21:42:31.130486名無しさん@お腹いっぱい。
2013/09/25(水) 21:47:56.560487名無しさん@お腹いっぱい。
2013/09/25(水) 23:29:01.83しょうもない書き捨て .el ファイルが量産されなくなってすっきり
0488名無しさん@お腹いっぱい。
2013/09/25(水) 23:41:03.31保存されないのが*scratch*さんのいいところだろうに
0489名無しさん@お腹いっぱい。
2013/09/26(木) 00:59:20.10同じくです。
最初はそれ用の el を適当に拾ってきてそのまま使ってたんだけど
ある日突然 *scratch* がまっさらになって真っ青になったw
0490名無しさん@お腹いっぱい。
2013/09/26(木) 08:30:24.97できればそのelispを晒してほしいでごわす
0491名無しさん@お腹いっぱい。
2013/09/26(木) 10:15:47.08487じゃないけれど
でらうま倶楽部 : [Emacs]スクラッチバッファを自動保存したり行末コメントをまとめて削除したりな小粒マクロ集
http://blog.livedoor.jp/tek_nishi/archives/3714842.html
これとrun-with-idle-timerを組み合わせればできると思う
0492名無しさん@お腹いっぱい。
2013/09/26(木) 11:53:06.25ちょっとしたelispってどんなことをやってるのか教えてほしい
0493名無しさん@お腹いっぱい。
2013/09/26(木) 12:12:49.99はい
http://pastebin.com/y1cgxu7s
kill-buffer 出来なくしたり write-buffer した時に scratch バッファを再作成したりってのもどっかにおちてたけど
別名作ったり複数作ったりする時の完全なやり方が思いつかなかったからそっちは消しちゃった
0494名無しさん@お腹いっぱい。
2013/09/26(木) 12:54:27.88ありがとうございました。
何気に、util:aif マクロがいい感じです。
(if (buffer-file-name)
(find-file (buffer-file-name))
(message "このバッファはファイルじゃないでつ"))
とか頻繁に書いていたのですが、こういうマクロを書けばよかったんですね。勉強になりますた。
0495名無しさん@お腹いっぱい。
2013/09/26(木) 13:51:39.030496名無しさん@お腹いっぱい。
2013/09/26(木) 15:24:17.52aif は On Lisp に載ってるメジャーなマクロシリーズなのでこっちも読んでみてね!
http://www.asahi-net.or.jp/~kc7k-nd/onlispjhtml/anaphoricMacros.html
0497名無しさん@お腹いっぱい。
2013/09/26(木) 16:12:57.48なんと、元は On Lisp のアナフォリックマクロでしたか。
すっかり本棚の肥やしとなっていたので、この機会に読み直しまつ!
グレアム先生、野田先生、ごめんなさい。
0498名無しさん@お腹いっぱい。
2013/09/26(木) 22:19:51.81auto-complete (今週頭にgithabからもらってきたもの) で、c++, cのファイルの末尾に、
ふと気が付くと改行が連続して入っているという現象について、なにか知っている人はいるかな
c/c++のファイルについては、セーブするときに行末の空白とファイル末尾の改行コードを
削除するようにしているから実用上は困ってないんだけど、結構気になるんで何か知っていたら教えてクレクレ
popupしたときに表示領域を確保するために改行コードを一時的につけているんじゃないかということは、
以前から使っているバージョンでも思ってはいる
0499名無しさん@お腹いっぱい。
2013/09/27(金) 00:49:02.94SJISのソースコードにUTF-8の文字列を書かなくちゃいけなくなった時に、
"日本語"ってソースに書いてリージョン選択してコマンド実行すると
↓
static const char data[] = {
0xe6, 0x97, 0xa5, 0xe6, 0x9c, 0xac, 0xe8, 0xaa, 0x9e, 0x00
};
って変換するelispを書いた時はかなり役に立った。
0500名無しさん@お腹いっぱい。
2013/09/27(金) 02:12:32.360501名無しさん@お腹いっぱい。
2013/09/27(金) 05:57:03.11おいどんも、コードを貼ってくれることを
希望するでごわす。
0502名無しさん@お腹いっぱい。
2013/09/27(金) 08:38:55.20高校二年女子です。
わたしからもお願いします。
0503名無しさん@お腹いっぱい。
2013/09/27(金) 10:09:23.520504名無しさん@お腹いっぱい。
2013/09/27(金) 12:49:19.21全て"4"と出力されてしまいます
どこが間違っているのでしょうか
(setq debian-x86-64 "")
(setq ubuntu-x86-64 "")
(setq g++ver (shell-command-to-string "g++ -v"))
(defun case-test (value)
(case value
(debian-x86-64 "1")
(ubuntu-x84-64 "2")
(g++ver "3")
(t "4")))
(message (case-test debian-x86-64))
(message (case-test (shell-command-to-string "g++ -v")))
(message (case-test "sklfj"))
0505名無しさん@お腹いっぱい。
2013/09/27(金) 15:16:02.540506名無しさん@お腹いっぱい。
2013/09/27(金) 17:40:50.49「お前のglobal-mapなんぞ知るかボケェ!」な奴多すぎだろ
0507名無しさん@お腹いっぱい。
2013/09/27(金) 18:45:05.19高校二年女子です。
まずは、case-test関数をedebug-defunして、ご自分のされていることを確認されたほうがよろしいかと思います。
それと、'g++ -v'そのままではなく、regexで引っ掛ける等しないと、このままではどうしようもないかと。
0508名無しさん@お腹いっぱい。
2013/09/27(金) 19:33:07.950509名無しさん@お腹いっぱい。
2013/09/27(金) 19:52:23.40501のエセ薩摩人です。
499氏がコードを貼り付けなかったら
おいどんと付き合ってください。
0510名無しさん@お腹いっぱい。
2013/09/27(金) 23:01:26.08>>505が言っているようにcondを使えばよろし
そういう形で分岐したいならこうかな
(defmacro cond-case (value &rest body)
(lexical-let* ((cand (gensym))
(result (gensym)))
`(loop for (cand result) in (quote ,body)
do (when (and (symbolp cand)
(or (equal (symbol-value cand) ,value)
(equal (symbol-value cand) t)))
(return result)))))
(defun case-test2 (value)
(cond-case value
(debian-x86-64 "1")
(ubuntu-x86-64 "2")
(g++ver "3")
(t "4")))
(message (case-test2 debian-x86-64))
(message (case-test2 (shell-command-to-string "g++ -v")))
(message (case-test2 "sklfj"))
0511名無しさん@お腹いっぱい。
2013/09/28(土) 07:24:23.7147歳男子です。
ありがとうございます。今後ともどうぞよろしくお願い致します。
0512名無しさん@お腹いっぱい。
2013/09/28(土) 11:46:59.29マクロのパワーを見せつけられました。
中2女子の私がこのような達人級のコードを書けるようになるには、何をすればよろしいのでしょうか?
まず服を脱ぐのは無しの方向で、お願いします。
0513名無しさん@お腹いっぱい。
2013/09/28(土) 12:18:52.460514名無しさん@お腹いっぱい。
2013/09/28(土) 12:27:59.850515504
2013/09/28(土) 13:39:46.00emacs lisp勉強します
0516名無しさん@お腹いっぱい。
2013/09/28(土) 15:22:38.81のヘルプのここを見ろというレスは付かないのかな?
0517名無しさん@お腹いっぱい。
2013/09/28(土) 15:38:34.81Emacs というより、まずはこんなのかな。
http://www.aoky.net/articles/paul_graham/int.htm
0518名無しさん@お腹いっぱい。
2013/09/28(土) 16:30:54.44エセ薩摩人です。
>まず服を脱ぐのは無しの方向で、お願いします。
では、お口でお願いし ... (/ω\)イヤン
ところで本題だが EmacsLisp に限ったことではないが
プログラミングの上達のコツは
a.自分が欲しい機能をリファレンスを読みながらでも作成してみる
b.他人が書いたコードを読む(初めは少々短めがお勧め)
あたりかな。
>>516
http://www.emacswiki.org/emacs/EmacsLisp%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9
0519名無しさん@お腹いっぱい。
2013/09/28(土) 19:28:33.770520499
2013/09/29(日) 01:20:21.88(interactive)
(save-excursion
(let ((beg (region-beginning))
(end (region-end)))
(end-of-line)
(insert "\nstatic const char data[] = {\n\t")
(mapc #'(lambda (x) (insert (format "0x%02x, " x)))
(encode-coding-region beg end 'utf-8 t))
(insert "0x00\n};"))))
0521名無しさん@お腹いっぱい。
2013/09/29(日) 03:13:57.14わーいありがとう!
姉も喜んでます
0523名無しさん@お腹いっぱい。
2013/09/29(日) 09:34:03.320524名無しさん@お腹いっぱい。
2013/09/29(日) 09:57:01.09簡潔に書き直せば、こんな感じになりそうだね。
(defun util-encode-region-utf8 (b e)
(interactive "r")
(save-excursion
(let ((s (concat (buffer-substring b e) "\0")))
(end-of-line)
(insert
"\nstatic const char data[] = {\n\t"
(mapconcat #'(lambda (x) (format "0x%02x" x))
(encode-coding-string s 'utf-8)
", ")
"\n};"))))
0526名無しさん@お腹いっぱい。
2013/09/29(日) 10:43:12.76おおきに
0527510
2013/09/29(日) 15:01:35.14>>510はおかしいところがいくつかあったので修正するよ ついでにもうちょっと汎用的にしてみた
(require 'cl)
;; http://www.gigamonkeys.com/book/macros-defining-your-own.html
(defmacro with-gensyms (names &rest body)
`(let ,(loop for n in names collect `(,n (gensym)))
,@body))
(defmacro cond-case (value &rest body)
(with-gensyms (cand result x)
`(loop for (cand result) in (quote ,body)
when (symbolp cand) for x = (symbol-value cand)
else for x = cand
when (member x `(,value t))
return result)))
(defun case-test2 (value)
(cond-case value
(123 "aaa")
("hoge" "bbb")
(debian-x86-64 "1")
(ubuntu-x86-64 "2")
(g++ver "3")
(t "4")))
(message (case-test2 123))
(message (case-test2 "hoge"))
(message (case-test2 debian-x86-64))
(message (case-test2 (shell-command-to-string "g++ -v")))
(message (case-test2 "sklfj"))
>>512 defmacroはon lispが、loopマクロはland of lispがわかりやすいよ emacs lispレファレンスだけだど慣れるまで時間がかかるかも
0528名無しさん@お腹いっぱい。
2013/09/29(日) 18:32:16.020529名無しさん@お腹いっぱい。
2013/09/30(月) 02:22:05.16Boost Spirit も似ている気がする。
言語仕様を上手く使って別言語の世界を作り出している。
Loop言語はマスターするとElispが非常に短くかけるし、
マクロなんでバイトコンパイルすれば速度処理もない。
0530名無しさん@お腹いっぱい。
2013/09/30(月) 07:14:53.590531名無しさん@お腹いっぱい。
2013/09/30(月) 08:05:41.61>Loop言語は
!!!
loop はDSLだと思えばよかったのですね。その発想はなかったです。
0532名無しさん@お腹いっぱい。
2013/09/30(月) 12:48:36.980533名無しさん@お腹いっぱい。
2013/09/30(月) 15:11:53.81クロは使わない方が得策だと思う。
0534名無しさん@お腹いっぱい。
2013/09/30(月) 15:30:40.240535名無しさん@お腹いっぱい。
2013/09/30(月) 16:21:25.84Editor MACroS なめんなよ。
0536名無しさん@お腹いっぱい。
2013/09/30(月) 17:01:41.300537名無しさん@お腹いっぱい。
2013/09/30(月) 17:06:46.61マクロ違い
0538名無しさん@お腹いっぱい。
2013/10/01(火) 08:43:04.22http://haleakala-avenue.style.coocan.jp/lealea/
0539名無しさん@お腹いっぱい。
2013/10/01(火) 08:47:34.26Common lispのloopマクロをelispで動くようにしたものなんだよね
Land of Lisp 10章のLoopマクロ周期表がおすすめ
0540名無しさん@お腹いっぱい。
2013/10/01(火) 09:52:35.10規格でも loop は定義しきれてないってさ
実際 sbcl で動く loop が clisp でコケたりする
0541名無しさん@お腹いっぱい。
2013/10/01(火) 14:32:07.83ここにあるox-texinfoを使って.org->.texiに、
さらにtexi2htmlで.texi->.htmlに変換したら
元の.orgで#+authorで設定していたその設定が失われてしまうようで
This document was generated by *PC-name\user-name* on October 1, 2013 using texi2html 1.82
となってしまいます
.org->.htmlであれば問題なくauthor情報が引き継がれているのですが、どうすれば引き継げるのでしょうか
orgファイルはこう書いています
#+TITLE: Org-mode test
#+AUTHOR: test-name
* hello
- world
0542名無しさん@お腹いっぱい。
2013/10/01(火) 17:04:44.91> This document was generated by *PC-name\user-name* on October 1, 2013 using texi2html 1.82
それで正しいのだと思うが
0543名無しさん@お腹いっぱい。
2013/10/01(火) 17:32:22.04こんなのがあったとは。
RMS信者の私はただいま絶賛感動中です。
0544名無しさん@お腹いっぱい。
2013/10/01(火) 22:48:31.45なんだかすごいことになっているような気もするが
君がやりたいことへの最短距離は cond を使うことだと思うぞ
■ このスレッドは過去ログ倉庫に格納されています