Emacs Part 39
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2011/11/29(火) 17:50:44.24Emacs Part 38
http://hibari.2ch.net/test/read.cgi/unix/1308635178/
0774名無しさん@お腹いっぱい。
2012/01/18(水) 02:47:01.89どうせ中身は mapconcat なんだろうけど
0775名無しさん@お腹いっぱい。
2012/01/18(水) 02:48:56.760776名無しさん@お腹いっぱい。
2012/01/18(水) 08:52:46.80> ・string-joinよりconcatのほうがいいの?
・mapconcat は文字列のリストに作用するし、concat は char のリストに作
用すると覚えておけ。apply 使えるようになれば違いはほとんどない。
> ・loopとかつかったほうがいいの?
とりあえず使うな。while と mapcar を覚えろ。
> ・for i from 0 to ... とか初めて見たけど、これって普通に使われているの?
はい。loop に狂ってる連中は使う。ほとんどが上級者だな。
ここで質問する前に他の人のコードをひたすら読め。
elisp以前にプログラマの基本だ。
0777名無しさん@お腹いっぱい。
2012/01/18(水) 10:08:52.240778名無しさん@お腹いっぱい。
2012/01/18(水) 12:35:55.81日付と履歴情報が自動的に更新されている気がする
たとえば http://www.emacswiki.org/emacs/download/auto-install.el
日付の自動更新はtime-stamp.elでできるけど
履歴情報(changelog)の自動更新はどうやるのだろう
0779名無しさん@お腹いっぱい。
2012/01/18(水) 16:24:31.76elispファイルに履歴なんて書いても誰もみないから分離してほしいよな。
githubにでもリポジトリ公開すればいいのに。
0780名無しさん@お腹いっぱい。
2012/01/18(水) 16:31:22.63まあChangeLogはふつう別ファイルだから何かしら細工していると思うが
$Id: の部分も別ファイルのChangeLogを挿入しているだけかと
0781名無しさん@お腹いっぱい。
2012/01/18(水) 17:06:37.54> とりあえず使うな。while と mapcar を覚えろ。
mapcもね
0783名無しさん@お腹いっぱい。
2012/01/18(水) 18:12:11.630784名無しさん@お腹いっぱい。
2012/01/18(水) 18:42:21.520785名無しさん@お腹いっぱい。
2012/01/18(水) 20:53:48.69コンパイルするしかない?
0786名無しさん@お腹いっぱい。
2012/01/18(水) 20:59:27.450787名無しさん@お腹いっぱい。
2012/01/18(水) 22:51:29.370788名無しさん@お腹いっぱい。
2012/01/19(木) 08:03:24.33なんかもうどうでもよくなった
0789名無しさん@お腹いっぱい。
2012/01/19(木) 08:36:10.64とか言われない限り取り除く気は無い
0790名無しさん@お腹いっぱい。
2012/01/19(木) 16:08:28.58やりたいことは、現在のポジションを短い名前付きで覚えておき、あとからその名前を使ってジャンプすることです。
emacsを終了しても覚えておかなくていいです。
0791名無しさん@お腹いっぱい。
2012/01/19(木) 16:12:47.560792名無しさん@お腹いっぱい。
2012/01/19(木) 17:28:51.63ありがとうございます。
0793名無しさん@お腹いっぱい。
2012/01/19(木) 21:41:24.31キツいhookだなぁ。
0794名無しさん@お腹いっぱい。
2012/01/19(木) 22:08:53.23Rubyで書くとこんな感じです。
arr = []
region.each_line do |line|
if line =~ regexp
arr << $1
end
end
リージョンを受け取るには (interactive "r") を指定するらしいところまではわかりましたが、
その先がさっぱりわかりません。だれか助けて。
(defun regexp-collect-matched-in-region (beg, end)
(interactive "r")
;; どう書けばいいの?
)
0795名無しさん@お腹いっぱい。
2012/01/19(木) 22:28:30.59リージョンの開始位置までポイントを進めて、
リージョンの終了位置を検索の境界に指定して検索を進めればいい。
goto-char、re-search-forward と match-string とかを describe-function しなさい。
save-restriction とか save-excursion、save-match-data とかもぐぐるといいかもね。
単純に操作としてやりたいだけなら keep-lines とかはどうかね。
0796名無しさん@お腹いっぱい。
2012/01/19(木) 22:52:46.90いいから解答教えろよ役にたたねえな
0797名無しさん@お腹いっぱい。
2012/01/19(木) 22:56:09.090798名無しさん@お腹いっぱい。
2012/01/20(金) 00:07:41.12ありがとうございます。
こんなかんじになりました。
(defun regexp-collect-matched-in-region (regexp index beg end)
(let ((list '()))
(save-excursion
(goto-char beg)
(while (re-search-forward regexp end t)
(setq list (cons (match-string index) list))))
(reverse list)))
どうでしょうか?
なお796は別人ですので無視してください。
0799名無しさん@お腹いっぱい。
2012/01/20(金) 00:11:48.82listって変数名は関数のlistとかぶってるから別の方がいいかも。特に動作上の弊害はないんだけど。
リストへの追加は push でもいいかもね。
0800名無しさん@お腹いっぱい。
2012/01/20(金) 00:20:11.57よく見るのはlis か lst かな
0801名無しさん@お腹いっぱい。
2012/01/20(金) 00:55:32.980802名無しさん@お腹いっぱい。
2012/01/20(金) 02:47:45.08eldocとかで不必要におかしな名前で出てくるのは間が抜けた感じ。
0803名無しさん@お腹いっぱい。
2012/01/20(金) 08:31:17.14reverse を nreverse にする
そもそも (goto-char end) + (re-search-backward ...) を使うと、 reverse がいらなくなる
loop 大好き
(save-excursion
(goto-char beg)
(loop while (re-search-forward regexp end t)
collect (match-string index)))
0804名無しさん@お腹いっぱい。
2012/01/20(金) 08:40:02.69> そもそも (goto-char end) + (re-search-backward ...) を使うと、
> reverse がいらなくなる
これやると正規表現の量指定子はどういう挙動をするの?
0805名無しさん@お腹いっぱい。
2012/01/20(金) 11:18:01.360806名無しさん@お腹いっぱい。
2012/01/20(金) 12:17:24.19これのインデントの関数の再設定を見て疑問に思ったのですが例えば
(add-hook 'text-mode-hook
(lambda ()
(setq indent-line-function (lambda () (insert " ")))))
このように書くのと、
(add-hook 'text-mode-hook
(lambda ()
(set (make-local-variable 'indent-line-function) (lambda () (insert " ")))))
と書くのでは、一つ目の方ではtext-mode-hook以外にも適用されてしまうと
理解しているのですが、これでいいでしょうか
それと、add-hook で他のモードに影響させないバッファローカルな関数を定義することは可能でしょうか
(add-hook 'input-method-activate-hook
(lambda() (set-cursor-color "yellow")))
この設定をelispモードのバッファにのみ適用させたいです
0807名無しさん@お腹いっぱい。
2012/01/20(金) 12:22:38.490808名無しさん@お腹いっぱい。
2012/01/20(金) 12:28:15.44> と書くのでは、一つ目の方ではtext-mode-hook以外にも適用されてしまうと
text-mode-hook が実行? されるバッファ以外にもだけれど、合ってる。
(add-hook 'emacs-lisp-mode-hook
(lambda ()
(add-hook 'input-method-activate-hook (lambda() (set-cursor-color "yellow")) nil 'local)))
0809名無しさん@お腹いっぱい。
2012/01/20(金) 13:20:47.87ありがとうございます。その例とadd-hookのdocを見て理解できました。
0810名無しさん@お腹いっぱい。
2012/01/20(金) 17:42:04.360811名無しさん@お腹いっぱい。
2012/01/20(金) 18:14:36.03http://www.reddit.com/r/emacs/comments/ook6a/does_something_like_this_exist_for_emacs/
0812名無しさん@お腹いっぱい。
2012/01/21(土) 00:58:51.832chでは連続した空白スペースが省略されると思うんだが
0813名無しさん@お腹いっぱい。
2012/01/21(土) 01:17:52.310814806
2012/01/21(土) 01:39:34.48特定のモードのについてのみ変更できますか?
0815名無しさん@お腹いっぱい。
2012/01/21(土) 01:56:08.64なるほどnbspですか
2ちゃんブラウザからスレを開いてコピペすると確かにそれがありました
0816名無しさん@お腹いっぱい。
2012/01/21(土) 02:11:56.20出来ない。
0818名無しさん@お腹いっぱい。
2012/01/21(土) 14:41:33.95(削除じゃなくて)
たとえばソースコードで「//」で始まる行だけを一時的に隠したいとか、
「<!ーー ーー>」の行を隠したいとか。
自分で指定したパターンで隠してくれるのを望みます。
あと、行数もつけてくれたら最高。
10: foo
14: bar ← 11行目から13行目までが隠されていることがわかる
15: baz
0819名無しさん@お腹いっぱい。
2012/01/21(土) 15:02:20.11隠す部分の開始パターンと終了パターンが指定出来るよ。しかもEmacsに標準でついてくる。
describe-function hs-minor-mode ね。
あと、linum-mode で行表示しててもちゃんと隠された行はスキップされる。
0820名無しさん@お腹いっぱい。
2012/01/21(土) 15:03:38.80自分で使いたい部分だけバインドしなおしたほうが便利だとは思う。
自分は表示/非表示切り替えの hs-toggle-hiding だけ C-c C-SPC にバインドしなおして
それだけ使ってる。
0821名無しさん@お腹いっぱい。
2012/01/21(土) 15:28:21.01ありがとうございます。ためしてみます。
0822名無しさん@お腹いっぱい。
2012/01/21(土) 23:21:55.04completion-at-point(M-tab)が紹介されていますが
anythingを導入したらその機能が置き換えられてしまいました
調べてみたらanything-complete.elのanything-lisp-complete-symbol-partial-matchとなったようです
具体的には入力補完の例として本で説明されている
bu-f-naでbuffer-file-nameを補完したいです
そこでM-tabだけはcompletion-at-pointの機能を復活させて
それ以外はanything-completeを利用したいのですが
どうすればよいでしょうか
0823名無しさん@お腹いっぱい。
2012/01/21(土) 23:23:15.560824名無しさん@お腹いっぱい。
2012/01/22(日) 10:34:28.62anything-complete の中で define-key してるキーマップ名を探して
(define-key キーマップ名 (kbd "<M-TAB>") nil) とでもして機能を殺せばいい。
0825名無しさん@お腹いっぱい。
2012/01/23(月) 21:19:01.13複数バージョンの emacs 使ってる人は ~/.emacs.d 以下の elc ファイルってどうやって共有させてるの?
0826名無しさん@お腹いっぱい。
2012/01/23(月) 21:44:20.39というか互換性薄かったっけ?
暗号系のやつは遅いので仕方ないからコンパイルしてるけど互換性で問題になっ
たことない。
0827名無しさん@お腹いっぱい。
2012/01/23(月) 21:48:01.40バージョンごとに違うディレクトリを掘って、
~/.emacs.d/22
~/.emacs.d/23
それぞれに el ファイルとか elc 放り込んでる。
で
(setq load-path (cons (format "~/.emacs.d/%s" emacs-major-version) load-path))
みたいなことをしてる。
0828名無しさん@お腹いっぱい。
2012/01/23(月) 21:59:21.84Meadowの1系と2系で非互換だったとかそんなぐらいだなぁ。
今emacs24でコンパイルしたのをemacs23で読み込ませても特にエラーにはならなかった。
0829名無しさん@お腹いっぱい。
2012/01/23(月) 22:24:54.69経験したパターンでは、emacs 本体で供給している macro の展開で NG
とかある。個人的な感想では emacs23 と 24 の elc 共用は止めた方が
良い。読み込んだぐらいではエラーにならないけど、使っているうちに
理由の分からんエラーになる。知っている限りでは、Mew と emacs-w3m
はこれに該当する。
0830名無しさん@お腹いっぱい。
2012/01/23(月) 22:34:06.05load-path ではその ディレクトリが先頭に来るようにするってのはどうだろう。
el と elc が別ディレクトリだと describe-function とかした後に関数定義に飛べなかったような記憶があるけど・・・
0831名無しさん@お腹いっぱい。
2012/01/23(月) 22:36:40.32あー、なるほど。elcのフォーマットの問題ではなく、コンパイル時に展開されちゃう
マクロの内容に差があった場合に問題になるってことか。
0832名無しさん@お腹いっぱい。
2012/01/24(火) 13:06:00.78> ELisp は Scheme より Common Lisp に近いため、Common Lisper がたくさん ELisp を書いていますが、ELisp っぽく書けてはいないので、require 'cl しているコードはお勧めできません。
さて、自称上級者はどういう反応をするか。
0833名無しさん@お腹いっぱい。
2012/01/24(火) 13:11:14.500834名無しさん@お腹いっぱい。
2012/01/24(火) 13:18:18.250835名無しさん@お腹いっぱい。
2012/01/24(火) 13:20:55.37自称上級者って有料メルマガの人とかか。
あの人はあくまで設定の事だけでLispの何たるかはわかってなさそう。
0836名無しさん@お腹いっぱい。
2012/01/24(火) 13:23:31.920837名無しさん@お腹いっぱい。
2012/01/24(火) 13:25:49.15真っ当なグラマならこんな古くさい言語を必死に宣伝したりしない。
0838名無しさん@お腹いっぱい。
2012/01/24(火) 13:26:55.340839名無しさん@お腹いっぱい。
2012/01/24(火) 13:27:26.280840名無しさん@お腹いっぱい。
2012/01/24(火) 13:27:49.920841名無しさん@お腹いっぱい。
2012/01/24(火) 13:28:58.55ては人格を否定されたも同然。でも、反論する度胸はないだろうな。(⊃д`)
いい加減ああいううさん臭いのに騙されるのやめてほしいわ。
0842名無しさん@お腹いっぱい。
2012/01/24(火) 13:41:10.320843名無しさん@お腹いっぱい。
2012/01/24(火) 13:42:20.69るびきちはもはや老害だろう
0844名無しさん@お腹いっぱい。
2012/01/24(火) 13:43:38.300845名無しさん@お腹いっぱい。
2012/01/24(火) 13:45:13.51実はもうアンチに変わってるんじゃないか。
0846名無しさん@お腹いっぱい。
2012/01/24(火) 15:12:10.87どんぐらいの密度の内容の文章書いてるのかはわからんけど。
0847名無しさん@お腹いっぱい。
2012/01/24(火) 16:07:20.83scratchバッファでもs式のインデントを自動的に行いたいのですが
(elispモードのように)
どうすればよいのでしょう
0848名無しさん@お腹いっぱい。
2012/01/24(火) 16:15:12.980849名無しさん@お腹いっぱい。
2012/01/24(火) 17:20:35.10eval-when-compileをところどころ使わなくてはならないようですが、
eval-when-compile を使うのはdefmacroの設定が含まれているライブラリや
defmacroを自分で書いたときだと理解しています
それでいいでしょうか
0850名無しさん@お腹いっぱい。
2012/01/24(火) 18:13:50.570851名無しさん@お腹いっぱい。
2012/01/24(火) 18:36:47.820852名無しさん@お腹いっぱい。
2012/01/24(火) 18:39:00.730853名無しさん@お腹いっぱい。
2012/01/24(火) 18:53:17.11ありがとうございます。うまくいきました。
0855名無しさん@お腹いっぱい。
2012/01/24(火) 19:34:23.85\ 丶 i. | / ./ /
\ ヽ i. .| / / /
\ ヽ i | / / /
\
-‐
ー
__ わ た し で す --
二 / ̄\ = 二
 ̄ | ^o^ |  ̄
-‐ \_/ ‐-
/
/ ヽ \
/ 丶 \
/ / / | i, 丶 \
/ / / | i, 丶 \
0856名無しさん@お腹いっぱい。
2012/01/24(火) 21:22:50.210857名無しさん@お腹いっぱい。
2012/01/24(火) 22:39:23.06ソースも参考にしない方がよさそうだな。メルマガも解約するわ。
0858名無しさん@お腹いっぱい。
2012/01/24(火) 22:45:52.450859名無しさん@お腹いっぱい。
2012/01/24(火) 22:53:17.03よく大学でオタっぽい友達いないやつが宗教とか詐欺にひっかかってるだろ。
0860名無しさん@お腹いっぱい。
2012/01/25(水) 14:49:11.770861名無しさん@お腹いっぱい。
2012/01/26(木) 08:56:09.76年配の方ですか?
0862名無しさん@お腹いっぱい。
2012/01/26(木) 09:19:20.640863名無しさん@お腹いっぱい。
2012/01/26(木) 09:40:35.210864名無しさん@お腹いっぱい。
2012/01/26(木) 13:33:55.60(add-to-list 'hoge '(fuga0 "piyo"))
(add-to-list 'hoge '(fuga1 "piyopiyo"))
みたいな記述を何度も書くのがアホらしいので、consとかappendとかを駆使して纏めてみようとしたのですが上手くいきません。
どうしたらいいのでしょう。
0865名無しさん@お腹いっぱい。
2012/01/26(木) 13:58:32.25GNU Emacs Lispリファレンスマニュアル: 12. マクロ
http://www.fan.gr.jp/~ring/doc/elisp_20/elisp_13.html
0866名無しさん@お腹いっぱい。
2012/01/26(木) 14:47:36.03(dolist (e '((fuga0 "piyo")
(fuga1 "piyopiyo")))
(add-list 'hoge e))
0867名無しさん@お腹いっぱい。
2012/01/26(木) 15:34:48.39マクロ…おいおい覚えていきます…。
>>866
(dolist (e '((fuga0 "piyo")) '((fuga1 "piyopiyo")))
(add-to-list 'hoge e))
としたらうまくいきました。ありがとうございます!
0868名無しさん@お腹いっぱい。
2012/01/26(木) 15:45:12.490869名無しさん@お腹いっぱい。
2012/01/26(木) 15:46:51.63訂正:
(dolist (e '((fuga0 "piyo") (fuga1 "piyopiyo")))
(add-to-list 'hoge e))
です。
0870名無しさん@お腹いっぱい。
2012/01/26(木) 17:10:23.76(dotimes (i 9)
(add-to-list 'hoge (list (intern (format "fuga%d" i))
(let* ((length (length "piyo"))
(str (make-string (* (1+ i) length) 0)))
(dotimes (j (1+ i))
(store-substring str (* j length) "piyo"))
str))))
0871名無しさん@お腹いっぱい。
2012/01/26(木) 17:37:22.160872名無しさん@お腹いっぱい。
2012/01/27(金) 00:30:35.182年位前、コメントアウト部分を見えなくするマイナーモードを書いたけど、
インデントや空白・tabのところで表示が崩れて断念したな・・・
もっかい作ってみようかな。
自分は「開始と終了」という考え方じゃなくて「文字のface」で考えました。
0873名無しさん@お腹いっぱい。
2012/01/27(金) 12:48:49.73■ このスレッドは過去ログ倉庫に格納されています