トップページunix
990コメント300KB

Emacs Part 39

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2011/11/29(火) 17:50:44.24
前スレ

Emacs Part 38
http://hibari.2ch.net/test/read.cgi/unix/1308635178/
0798名無しさん@お腹いっぱい。2012/01/20(金) 00:07:41.12
>>795
ありがとうございます。
こんなかんじになりました。
(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.82
やるじゃん
listって変数名は関数のlistとかぶってるから別の方がいいかも。特に動作上の弊害はないんだけど。
リストへの追加は push でもいいかもね。
0800名無しさん@お腹いっぱい。2012/01/20(金) 00:20:11.57
listの書き換えか
よく見るのはlis か lst かな
0801名無しさん@お腹いっぱい。2012/01/20(金) 00:55:32.98
どうでもよすぎるつっこみおつかれさん。
0802名無しさん@お腹いっぱい。2012/01/20(金) 02:47:45.08
引数はむしろlistの方がいいな。
eldocとかで不必要におかしな名前で出てくるのは間が抜けた感じ。
0803名無しさん@お腹いっぱい。2012/01/20(金) 08:31:17.14
>>798
reverse を 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
>>803
> そもそも (goto-char end) + (re-search-backward ...) を使うと、
> reverse がいらなくなる

これやると正規表現の量指定子はどういう挙動をするの?
0805名無しさん@お腹いっぱい。2012/01/20(金) 11:18:01.36
やっぱりloopは神だった
0806名無しさん@お腹いっぱい。2012/01/20(金) 12:17:24.19
http://blog.kiftwi.net/2011/12/13/emacs%E3%81%AEjs2-mode%E3%81%AE%E3%82%A4%E3%83%B3%E3%83%87%E3%83%B3%E3%83%88%E3%82%92%E6%AD%A3%E3%81%99/
これのインデントの関数の再設定を見て疑問に思ったのですが例えば
(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.49
>>803 はたぶん意味を理解していない。
0808名無しさん@お腹いっぱい。2012/01/20(金) 12:28:15.44
>>806
> と書くのでは、一つ目の方では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
>>808
ありがとうございます。その例とadd-hookのdocを見て理解できました。
0810名無しさん@お腹いっぱい。2012/01/20(金) 17:42:04.36
loop きもすぎる
0811名無しさん@お腹いっぱい。2012/01/20(金) 18:14:36.03
reddit にでてたけど、Emacs にも Achievement System あったら楽しそうだな。
http://www.reddit.com/r/emacs/comments/ook6a/does_something_like_this_exist_for_emacs/
0812名無しさん@お腹いっぱい。2012/01/21(土) 00:58:51.83
横レスだが>>808でインデントが整って見えるのは何故だろう
2chでは連続した空白スペースが省略されると思うんだが
0813名無しさん@お腹いっぱい。2012/01/21(土) 01:17:52.31
  ==   !=  
08148062012/01/21(土) 01:39:34.48
set-face-foregroundの色やset-face-bold-pの有効・無効を
特定のモードのについてのみ変更できますか?
0815名無しさん@お腹いっぱい。2012/01/21(土) 01:56:08.64
>>813
なるほどnbspですか
2ちゃんブラウザからスレを開いてコピペすると確かにそれがありました
0816名無しさん@お腹いっぱい。2012/01/21(土) 02:11:56.20
>>814
出来ない。
08178062012/01/21(土) 02:14:14.19
>>816
ありがとうございます。
いろいろやってみましたが設定できなかったのでどこか間違っているのか
迷っていました
0818名無しさん@お腹いっぱい。2012/01/21(土) 14:41:33.95
Emacsで、パターンに一致した行を見えなくすることはできますか。
(削除じゃなくて)
たとえばソースコードで「//」で始まる行だけを一時的に隠したいとか、
「<!ーー ーー>」の行を隠したいとか。
自分で指定したパターンで隠してくれるのを望みます。
あと、行数もつけてくれたら最高。

10: foo
14: bar   ← 11行目から13行目までが隠されていることがわかる
15: baz
0819名無しさん@お腹いっぱい。2012/01/21(土) 15:02:20.11
hideshow は?
隠す部分の開始パターンと終了パターンが指定出来るよ。しかも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
>>819-828
ありがとうございます。ためしてみます。
0822名無しさん@お腹いっぱい。2012/01/21(土) 23:21:55.04
emacs lisp テクニックバイブルの36ページに入力補完として
completion-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.56
著者に聞きなさい。
0824名無しさん@お腹いっぱい。2012/01/22(日) 10:34:28.62
anything を使ってないから詳しくはわからんけど、
anything-complete の中で define-key してるキーマップ名を探して
(define-key キーマップ名 (kbd "<M-TAB>") nil) とでもして機能を殺せばいい。
0825名無しさん@お腹いっぱい。2012/01/23(月) 21:19:01.13
elcってバージョン間の互換性薄かったりするけど、
複数バージョンの 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.84
軽くぐぐってみると emacs19とemacs20で非互換だったとか
Meadowの1系と2系で非互換だったとかそんなぐらいだなぁ。
今emacs24でコンパイルしたのをemacs23で読み込ませても特にエラーにはならなかった。
0829名無しさん@お腹いっぱい。2012/01/23(月) 22:24:54.69
>>828

経験したパターンでは、emacs 本体で供給している macro の展開で NG
とかある。個人的な感想では emacs23 と 24 の elc 共用は止めた方が
良い。読み込んだぐらいではエラーにならないけど、使っているうちに
理由の分からんエラーになる。知っている限りでは、Mew と emacs-w3m
はこれに該当する。
0830名無しさん@お腹いっぱい。2012/01/23(月) 22:34:06.05
byte-compile-dest-file-function に version specific なディレクトリに elc 突っ込むような関数定義して
load-path ではその ディレクトリが先頭に来るようにするってのはどうだろう。

el と elc が別ディレクトリだと describe-function とかした後に関数定義に飛べなかったような記憶があるけど・・・
0831名無しさん@お腹いっぱい。2012/01/23(月) 22:36:40.32
>>829
あー、なるほど。elcのフォーマットの問題ではなく、コンパイル時に展開されちゃう
マクロの内容に差があった場合に問題になるってことか。
0832名無しさん@お腹いっぱい。2012/01/24(火) 13:06:00.78
http://twitter.com/kazu_yamamoto/status/161620210237964288

> ELisp は Scheme より Common Lisp に近いため、Common Lisper がたくさん ELisp を書いていますが、ELisp っぽく書けてはいないので、require 'cl しているコードはお勧めできません。

さて、自称上級者はどういう反応をするか。
0833名無しさん@お腹いっぱい。2012/01/24(火) 13:11:14.50
そういや昔、山本さんが誰か知らずにfletとは云々ってブログにコメントしてた人がいたな。
0834名無しさん@お腹いっぱい。2012/01/24(火) 13:18:18.25
だから何?
0835名無しさん@お腹いっぱい。2012/01/24(火) 13:20:55.37
>>832
自称上級者って有料メルマガの人とかか。
あの人はあくまで設定の事だけでLispの何たるかはわかってなさそう。
0836名無しさん@お腹いっぱい。2012/01/24(火) 13:23:31.92
かずさんってEmacsアンチになってるもんだと勝手に勘違いしてたわ
0837名無しさん@お腹いっぱい。2012/01/24(火) 13:25:49.15
アンチには違いないと思うけど。
真っ当なグラマならこんな古くさい言語を必死に宣伝したりしない。
0838名無しさん@お腹いっぱい。2012/01/24(火) 13:26:55.34
そうするとツイッターアイコンが赤いEmacsアイコンなのはそういう意味なのか。
0839名無しさん@お腹いっぱい。2012/01/24(火) 13:27:26.28
Haskellerになって久しいもんな。
0840名無しさん@お腹いっぱい。2012/01/24(火) 13:27:49.92
あれはfiremacsのやつ。と思う。
0841名無しさん@お腹いっぱい。2012/01/24(火) 13:28:58.55
あんな必死になって著書にまで (require 'cl) の有用性を書いてた人にとっ
ては人格を否定されたも同然。でも、反論する度胸はないだろうな。(⊃д`)

いい加減ああいううさん臭いのに騙されるのやめてほしいわ。
0842名無しさん@お腹いっぱい。2012/01/24(火) 13:41:10.32
そもそもあの本売れたの?
0843名無しさん@お腹いっぱい。2012/01/24(火) 13:42:20.69
新人にEmacsの有用性を説く奴は信用ならん
るびきちはもはや老害だろう
0844名無しさん@お腹いっぱい。2012/01/24(火) 13:43:38.30
卒論間際の大学生とか暇な院生の方がelispの生産性高いイメージがある。
0845名無しさん@お腹いっぱい。2012/01/24(火) 13:45:13.51
ていうかあいつすでにelispまったく書いてないじゃん。家で何やってんだろ。
実はもうアンチに変わってるんじゃないか。
0846名無しさん@お腹いっぱい。2012/01/24(火) 15:12:10.87
メルマガ書くのでいっぱいいっぱいになってるんとちがうの。
どんぐらいの密度の内容の文章書いてるのかはわからんけど。
0847名無しさん@お腹いっぱい。2012/01/24(火) 16:07:20.83
common lispのreplのように
scratchバッファでもs式のインデントを自動的に行いたいのですが
(elispモードのように)
どうすればよいのでしょう
0848名無しさん@お腹いっぱい。2012/01/24(火) 16:15:12.98
(define-key lisp-interaction-mode-map (kbd "C-m") 'newline-and-indent)
0849名無しさん@お腹いっぱい。2012/01/24(火) 17:20:35.10
.emacsに書いている設定をinit-loaderで分割するときには
eval-when-compileをところどころ使わなくてはならないようですが、
eval-when-compile を使うのはdefmacroの設定が含まれているライブラリや
defmacroを自分で書いたときだと理解しています
それでいいでしょうか
0850名無しさん@お腹いっぱい。2012/01/24(火) 18:13:50.57
それでいいです。
0851名無しさん@お腹いっぱい。2012/01/24(火) 18:36:47.82
本当ですか?嘘を嘘と見抜けないと 2ch 使えないので念のための確認です。
0852名無しさん@お腹いっぱい。2012/01/24(火) 18:39:00.73
ほんとですよ。
0853名無しさん@お腹いっぱい。2012/01/24(火) 18:53:17.11
>>848
ありがとうございます。うまくいきました。
08548492012/01/24(火) 19:27:55.67
>>850
どうも。

>>851
誰ですか?
0855名無しさん@お腹いっぱい。2012/01/24(火) 19:34:23.85
 \                    /
   \  丶       i.   |      /     ./       /
    \  ヽ     i.   .|     /    /      /
      \  ヽ    i  |     /   /     /
   \
                                  -‐
  ー
 __          わ た し で す            --
     二          / ̄\           = 二
   ̄            | ^o^ |                 ̄
    -‐           \_/                ‐-

    /
            /               ヽ      \
    /                    丶     \
   /   /    /      |   i,      丶     \
 /    /    /       |    i,      丶     \  
0856名無しさん@お腹いっぱい。2012/01/24(火) 21:22:50.21
なんとなくなつかしさを覚えた。
0857名無しさん@お腹いっぱい。2012/01/24(火) 22:39:23.06
とりあえずrbkt一派のパッケージは使わない方がいいということが分かった。
ソースも参考にしない方がよさそうだな。メルマガも解約するわ。
0858名無しさん@お腹いっぱい。2012/01/24(火) 22:45:52.45
あの情報商材丸出しの紹介文読んだ上で契約してる時点ですでにどうかしてると思うよ。
0859名無しさん@お腹いっぱい。2012/01/24(火) 22:53:17.03
若いやつだろ。
よく大学でオタっぽい友達いないやつが宗教とか詐欺にひっかかってるだろ。
0860名無しさん@お腹いっぱい。2012/01/25(水) 14:49:11.77
情報商材ワロタw
0861名無しさん@お腹いっぱい。2012/01/26(木) 08:56:09.76
>>859
年配の方ですか?
0862名無しさん@お腹いっぱい。2012/01/26(木) 09:19:20.64
革命家rbkt釣れた。
0863名無しさん@お腹いっぱい。2012/01/26(木) 09:40:35.21
先生のアイデンティティが揺らいでいる。可哀そう…
0864名無しさん@お腹いっぱい。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.25
defmacroをどうぞ
GNU 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
>>865
マクロ…おいおい覚えていきます…。

>>866
(dolist (e '((fuga0 "piyo")) '((fuga1 "piyopiyo")))
(add-to-list 'hoge e))

としたらうまくいきました。ありがとうございます!
0868名無しさん@お腹いっぱい。2012/01/26(木) 15:45:12.49
何なのこのひと。。
0869名無しさん@お腹いっぱい。2012/01/26(木) 15:46:51.63
>>867
訂正:
(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.16
ウルセーバカ
0872名無しさん@お腹いっぱい。2012/01/27(金) 00:30:35.18
>>818
2年位前、コメントアウト部分を見えなくするマイナーモードを書いたけど、
インデントや空白・tabのところで表示が崩れて断念したな・・・

もっかい作ってみようかな。
自分は「開始と終了」という考え方じゃなくて「文字のface」で考えました。
0873名無しさん@お腹いっぱい。2012/01/27(金) 12:48:49.73
それって hilight が使ってるコメントの開始終了を hideshow に渡すのと比べて何が嬉しいの?
0874名無しさん@お腹いっぱい。2012/01/29(日) 00:03:22.47
FooBar()みたいな関数名をfoo_bar()に変えるにはどうすればいい?
とりあえずM-%でやると、Foo_Bar()みたいになっちまう・・
そんでFoo_Barをfoo_barにしようとしても、やっぱりFoo_Barのまま。
一括置換でない方で頼む。
0875名無しさん@お腹いっぱい。2012/01/29(日) 01:13:55.45
自決した。
foobarと検索してから置換してたらだった。ちゃんとFooBarで検索してから
M-%で大丈夫だった。
0876名無しさん@お腹いっぱい。2012/01/29(日) 17:48:19.27
腹切ったらしい
0877名無しさん@お腹いっぱい。2012/01/31(火) 16:05:49.37
cygstartを使って非同期でファイルを開いたときに(shell-command)
そのファイルを閉じるコマンドはありますか?
開いたファイルのアプリケーションを閉じるしかないでしょうか
0878名無しさん@お腹いっぱい。2012/01/31(火) 16:37:41.81
NTEmacsスレじゃない?
Async Shell なんたらバッファで C-c C-c で殺しちゃうのはどうなんだろ。
0879名無しさん@お腹いっぱい。2012/02/03(金) 14:14:19.52
define-generic-modeで作ったモードのキーワードの
マークアップについて質問します
funcをキーワードに登録しているとき
_func_test と書くと func 部分がキーワードとして認識されてしまいます
2func1 のように書けば認識されません
どうも _ がキーワードを構成する文字として認識されていない気がします
_func_test ではキーワードとして認識されず func test ならされるように
するにはどうすればよいでしょうか
0880名無しさん@お腹いっぱい。2012/02/03(金) 17:06:12.39
やったことないからわからんけど syntax table をいじるんじゃなかったかな。
どの文字がどのクラスに属するとかそういうのを定義しているやつだったとおもった。
0881名無しさん@お腹いっぱい。2012/02/03(金) 19:27:43.75
Amazon.co.jp: Emacs実践入門 ~思考を直感的にコード化し、開発を加速する (WEB+DB PRESS plus): 大竹 智也: 本
http://www.amazon.co.jp/dp/4774150029/
0882名無しさん@お腹いっぱい。2012/02/03(金) 19:30:13.82
精神を加速するってこと?
0883名無しさん@お腹いっぱい。2012/02/03(金) 19:33:07.96
仁義なき戦いの予感
0884名無しさん@お腹いっぱい。2012/02/03(金) 19:34:21.92
新興宗教の一種じゃないの
0885名無しさん@お腹いっぱい。2012/02/03(金) 22:01:36.09
 加
加速する!
 す
 る
 !
0886名無しさん@お腹いっぱい。2012/02/03(金) 22:17:07.21
誰かと思ったらるびきちの取り巻きか。
0887名無しさん@お腹いっぱい。2012/02/03(金) 22:31:13.92
るびきちって、るびーきちがいなの?
0888名無しさん@お腹いっぱい。2012/02/03(金) 22:42:57.50
昔そうだったらしい。
でも基本コミュ障なのでrubyのグループからは弾き出された。
それが彼にとっての現実(リアル)。
0889名無しさん@お腹いっぱい。2012/02/03(金) 22:44:28.21
今は、いまきち(いーまっくすきちがい)なのか。
0890名無しさん@お腹いっぱい。2012/02/03(金) 22:44:48.77
マジキチ
0891名無しさん@お腹いっぱい。2012/02/03(金) 22:59:19.38
現在はelispの大家ですね
0892名無しさん@お腹いっぱい。2012/02/04(土) 09:53:17.66
wanderlustとかnavi2chみたいな大型アプリのリリース経験ないけどな。
プッシュしまくってるanythingだって作者は別の人だし。
0893名無しさん@お腹いっぱい。2012/02/04(土) 11:14:31.27
小物リリース数日本一を誇ってるところも涙をそそる。
0894名無しさん@お腹いっぱい。2012/02/04(土) 11:45:33.47
最近、「嫉妬すごい」ってやつ来なくなったなぁ。
0895名無しさん@お腹いっぱい。2012/02/04(土) 12:12:59.46
図書館からは書けない
0896名無しさん@お腹いっぱい。2012/02/04(土) 12:18:50.44
auto-install とか広めるより package.el での mamalade の使い方でも説明したほうが健全だしな。
0897名無しさん@お腹いっぱい。2012/02/04(土) 12:29:24.93
メルマガで説明してんよ
■ このスレッドは過去ログ倉庫に格納されています