1 名前:名無しさん@お腹いっぱい。 [2011/11/29(火) 17:50:44.24 ] 前スレ Emacs Part 38 hibari.2ch.net/test/read.cgi/unix/1308635178/
554 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 17:45:38.45 ] >>553 ほれ ;; popwin 管理下におく (add-to-list 'popwin:special-display-config `(,sdic-buffer-name)) ;; sdic-display-buffer 書き換え (defadvice sdic-display-buffer (around sdic-display-buffer-normalize activate) "sdic のバッファ表示を普通にする。" (let ((p (or (ad-get-arg 0) (point)))) (and sdic-warning-hidden-entry (> p (point-min)) (message "この前にもエントリがあります。")) (goto-char p)) (display-buffer (get-buffer sdic-buffer-name)))
555 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 17:53:07.75 ] >>554 ありがとでも sdic-describe-word-at-point がちょっと変な気がする
556 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 17:59:14.72 ] >>555 ほれ。あとちょっと挙動違ってた部分もついでになおした。 ;; sdic-display-buffer 書き換え (defadvice sdic-display-buffer (around sdic-display-buffer-normalize activate) "sdic のバッファ表示を普通にする。" (setq ad-return-value (buffer-size)) (let ((p (or (ad-get-arg 0) (point)))) (and sdic-warning-hidden-entry (> p (point-min)) (message "この前にもエントリがあります。")) (goto-char p) (display-buffer (get-buffer sdic-buffer-name)) (set-window-start (get-buffer-window sdic-buffer-name) p)))
557 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 18:14:46.00 ] 追加。閉じる時の変なチラチラも消える。 (defadvice sdic-other-window (around sdic-other-normalize activate) "sdic のバッファ移動を普通にする。" (other-window 1)) (defadvice sdic-close-window (around sdic-close-normalize activate) "sdic のバッファクローズを普通にする。" (bury-buffer sdic-buffer-name))
558 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 18:20:47.72 ] >>554 >(add-to-list 'popwin:special-display-config `(,sdic-buffer-name)) を (add-to-list 'popwin:special-display-config `(,sdic-buffer-name ,sdic-window-height)) に直したら大分良くなった
559 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 18:21:28.63 ] ミスった (add-to-list 'popwin:special-display-config `(,sdic-buffer-name :height ,sdic-window-height))
560 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 18:33:53.57 ] ありがてえ・・・
561 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 19:08:58.15 ] 速攻でコード書いてくれて凄腕って思うだろ? こいつらみんな無職なんだぜ……
562 名前:545 mailto:sage [2012/01/06(金) 19:46:26.97 ] >>548 ありがとうございます。確認してみました。 (define-generic-mode 'my-mode '(";") こういう書き出しではじまるgeneric-modeで ;の出力される位置は行頭行末とも適切だとわかったのですがただ行頭が;;になりません 普通generic-modeでこう設定すると行頭は;;となるのでしょうか
563 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 20:19:12.42 ] >>562 emacs-lisp-mode みてみたら、どうやら comment-add って変数で ; の数を制御しているみたい。 モードのセットアップしてるところで (setq (make-local-variable 'comment-add) 1) ってやってみて。
564 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 20:19:20.55 ] ここがサポート掲示板か
565 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 20:20:28.45 ] まちがった setq じゃなくて set ね
566 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 20:23:51.57 ] にわかはるびきちが引き取れって言ってるだろうが!!
567 名前:545 mailto:sage [2012/01/06(金) 20:28:48.11 ] >>563 ありがとうございます。意図した通りの結果が出てきました!
568 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 20:31:57.02 ] きちぼんは誰かに献本されなかったのだろうか。 思うにあいつかなりドケチだよな。
569 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 20:41:56.80 ] 書店が献本したがレビューが後回しにされてる d.hatena.ne.jp/rokujyouhitoma/20110816/1313468638 lispじゃなくて普通の方だな
570 名前:539 mailto:sage [2012/01/06(金) 21:11:16.68 ] >>542-543 >>551 ありがとうございます。save-match-data の使い方を勉強します。 >>541 説明が不足でした。重複している処理なので whileのたぐいで一度だけ書けばどうにかならないかと悩んでいました。 書き方は再帰でもloopでもかまいませんでした。
571 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/06(金) 21:23:48.68 ] >>570 save-match-data は >>542 が string-match 使った時に混入しただけで search-forward 使う分には入れる必要ないかと。
572 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 00:03:43.68 ] あとは bf-mode が popwin 対応すればもう勝利は目前だな。
573 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 00:07:29.32 ] 必死でアピールしてるな。
574 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 00:30:53.33 ] bf-modeみたいなメンテナのはっきりしないelispは埋もれていく定め
575 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 01:04:50.46 ] もしかして eval-after-load の中のフォームってバイトコンパイルされなかったりする?
576 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 01:23:09.55 ] てst
577 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 10:32:37.89 ] Android 版ありますか?
578 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 10:42:25.69 ] iOS版は確かあったけどAndroid版はまだじゃないかなあ と思ったら一応出来ないことはないみたい www.emacswiki.org/emacs/EmacsOnAndroid
579 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 11:44:15.55 ] emacs から emacs を立ち上げれば elisp だけでの並列プログラミングが実現出来るんじゃないか? マルチスレッドじゃなくマルチプロセスだけど。
580 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 11:46:26.85 ] Androidのバージョンとか不明ですが Emacs for Android ttp://d.hatena.ne.jp/MATSUZAKI/20101104/1288882148
581 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 12:25:49.29 ] >>579 emacs24からはポート指定でサーバ立ち上げられるし server-eval-at なんてのも追加されてるからあながち間違ったアプローチじゃないとおもう。
582 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 14:14:17.26 ] replace-regexpについて質問します このようなテキストがあるところで akasatana hamayarawa ikisitini 「元のテキスト 元のテキスト」のようにテキストを複製するかのような処理を 正規表現の置換で行いたいのですがうまくいきません 置換対象の文字列検索はre-builderでは大丈夫でした replace-regexp [ret] \\(.+\\) [ret] \\1 \\1 [ret] 何を修正すればよいのでしょうか
583 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 14:21:09.16 ] \ を \\ と書く時ってのはどういう理由でそれが必要だったのか考え直せ
584 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 14:39:22.04 ] emacs の正規表現はもうちょっとなんとかならんのかと常々思うわ。
585 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 15:03:07.77 ] 似たような問題はどんな言語いじっててもあるからね。
586 名前:582 mailto:sage [2012/01/07(土) 16:00:50.27 ] >>583 なるほど、re-builderは""内に書くから\\(\\)と書かなければならなくて、 replace-regexpは""内に書かないから\(\)と書くということですね すっきりしました
587 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 16:21:58.76 ] ELPAの作者がemacsをcommon lispで書き直そうとしているみたい The Cliffs of Inanity ? Emacs and Common Lisp tromey.com/blog/?p=709 そうなると長い目で見ればcommon lispを知っておいた方がよさそう
588 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 16:26:03.17 ] EmacsをCommon Lispでって・・・・ 10年前に Erik Naggum が言ってたのと同じことやん。 歴史は繰り返す。
589 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 16:53:47.36 ] climacs があるけれど、elisp の便利な資産が使えないからなあ。
590 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 17:10:02.39 ] >>588 このあたりの話が関係するか。emacsをcommon lispで、っていうのは真っ正面から議論されていたのかな? Island Life - 「Cで書くコードの方がCommon Lispで書くより速いって人がいたら、それは彼のCの技量が高すぎるってことだね。」 blog.practical-scheme.net/shiro/20100620a-lisp-speed
591 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 17:15:34.53 ] guile emacs の方がいいよ それはそうと emacs 24で`image-library-alist' is renamed to `dynamic-library-alist' ってなってるの見て ああもう本当にストールマンいなくなったんだなと実感した
592 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 17:22:54.27 ] elisp to cl emasc なコンバータを作るとか。
593 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 17:32:50.08 ] >>584 正規表現リテラルでもありゃあいいのにな。
594 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 17:51:12.15 ] >>591 のストールマンなら聞いたことがあるが他の人は寡聞にして知らない emacsの開発歴史というよりも どういう人がemacsにどういう影響を与えたか、を聞きたい
595 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 18:00:10.33 ] まず名前があがるのがるびきちさんだな
596 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 18:03:58.85 ] >>594 ja.wikipedia.org/wiki/Emacs 結構ちゃんと人物も記載されてるよ。
597 名前:545 mailto:sage [2012/01/07(土) 19:07:20.82 ] define-generic-modeの質問をした者ですが関連する質問をします test_func { test } のように{が行末に来たときは次の行をスペース2つ分(かタブ1つ分)右にシフトさせて }が行頭に来たときには左にシフトさせる設定はdefine-generic-mode向けに何かありますか (上の例では全角スペースを使っています) 単体のemacsでは設定できずyasnippetのようなものを併用しなければならないでしょうか
598 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 19:52:42.00 ] >>597 凝ったことしたくなったら generic-mode 使わないで素でmajor-mode作ってもいいような気もするけど { を入力したときに勝手に整形されるようにするのか、 改行したときに勝手にそうなるようにしたいのか、 C-i だの TAB だの入力して indent したときにそうしたいのかによって微妙に入り口は異なると思うけど 基本的には自力で整形処理を書かなきゃいけないと思うよ。 c-mode の c-indent-line の辺り読んで頑張れ
599 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 19:59:36.41 ] indent-line-function に前の行の { の位置をみてインデント位置を調節する関数を設定する。
600 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 22:41:57.81 ] gnusわかりにくすぎる
601 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 22:46:09.78 ] ttp://blog.livedoor.jp/dankogai/archives/51763038.html (require 'cl) ; cl (defun mapbetween (f l) (let (y) (mapl #'(lambda (x) (when (cadr x) (push (funcall f (cadr x) (car x)) y))) l) (nreverse y))) ; mapbetween (mapbetween #'+ '(1 2 3 4 5)) ; (3 5 7 9) (mapbetween #'- '(0 1 4 9)) ; (1 3 5)
602 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 22:47:16.57 ] いや、ダンコーガイに直接コメントしてやれよ
603 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/07(土) 22:47:31.32 ] >>527 もう解決してるかもしれないけど、別のスクリプト (qlgrep) に lgrep を包むって方法は採れそう。 #!/bin/sh lgrep "$@" > /dev/null 2>&1 さらに別の関数 (find-lgrep-dired) も用意する。 (defun find-lgrep-dired (dir regexp) (interactive "DFind-grep (directory): \nsFind-grep (grep regexp): ") (find-dired dir (concat "-type f -exec qlgrep - " (shell-quote-argument regexp) " " (shell-quote-argument "{}") " " ;; Doesn't work with "+". (shell-quote-argument ";"))))
604 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 12:25:43.23 ] which-func-mode ってなんであんなにお馬鹿なんだろう
605 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 12:29:35.16 ] 汎用だからね。
606 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 13:46:03.01 ] minibuffer だけスクロールバー無しって出来るんでしょうか?
607 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 14:16:32.10 ] >>597 解説とか殆ど見たことないけど、emacs23からは インデントカスタマイズ用の smie ってライブラリが入ってるみたい。 つかったことないけどドキュメント読んだ感じ結構凝ったこと出来そうね。 www.gnu.org/software/emacs/manual/html_node/elisp/SMIE.html#SMIE emacs24 の octave-mode とかは実際に使ってるみたいだから見てみたけど 文法定義から始まる重量級のライブラリだなこれ
608 名前:名無しさん@お腹いっぱい。 [2012/01/08(日) 17:34:12.70 ] diredでファイル一覧を表示させた後,そこに表示されたあるファイルについ て,フルパス付きのファイル名をkill-ring-saveする方法はあるでしょうか。 ちょっとわかりにくかもしれませんが,例えば,diredで一覧表示した.emacs に適用したなら,/home/hogehoge/.emacs という情報をコピペできる関数を探 しています。
609 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 17:49:12.34 ] lookupってもう終わってるの? これの次は?
610 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 17:51:00.10 ] >>608 C-0w
611 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 19:00:19.17 ] >>608 C-u 0 w w runs the command dired-copy-filename-as-kill, which is an interactive compiled Lisp function in `dired.el'. It is bound to w. (dired-copy-filename-as-kill &optional ARG) Copy names of marked (or next ARG) files into the kill ring. The names are separated by a space. With a zero prefix arg, use the absolute file name of each marked file.
612 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 19:51:29.65 ] >>609 まだ開発続いてると思うけど。
613 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 20:38:47.17 ] >>609 lookup て辞書検索できる lookup のことかな。 次といっても dict と epwing が理解できればそれで十分に思える、自分には。
614 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 20:54:03.71 ] epwing自体がおわコンというか… 変換スクリプトもメンテされてないし、入手不可能だったり。
615 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 20:57:40.10 ] ネット辞書から引けたほうがまだいいわな。 ただ emacs-w3m がいまいちだからねえ。 emacs-xwidget + webkit が安定して使えるようになったらうっはうはなんだが・・・
616 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 21:14:40.45 ] >>615 それなら普通にブラウザ使う方がいい。
617 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 21:56:44.63 ] >>612 RHEL6のx64でまともに動かんかった emacsが悪いのか外部が悪いのかよく分からん 4文字の単語を退いたときだけ駄目とか変な挙動いろいろで調べる気が起きん
618 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 22:02:12.17 ] >>616 むしろブラウザだけでいい
619 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 22:21:01.13 ] firefox+keysnailにファイルエディット機能つければemacsの代わりに使えるんじゃね?
620 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 22:25:56.90 ] むしろfirefoxにemacsを組み込んだ方が
621 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 22:34:39.67 ] ブラウザにEmacs組み込むのと Emacsにブラウザ組み込むのどっちが楽だろう
622 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 22:42:25.03 ] >>621 後者は既出感が…
623 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 22:44:19.10 ] ちゃんとJavaScript 解釈してかつ elisp からブラウザの状態弄れるのがいいなあ
624 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/08(日) 22:48:48.36 ] なんか面白い elisp ないかしらん
625 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 01:29:57.86 ] >>624 seimei.el tako.el trr.el
626 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 01:43:55.29 ] なんであれだけ発行部数出てないんだろうねぇ。
627 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 02:55:49.39 ] >>621 Javascript PC Emulator ttp://bellard.org/jslinux/ で、ブラウザ上でQEmacsが使えます。 ~ # which emacs /usr/bin/emacs ~ # ls -l /usr/bin/emacs lrwxrwxrwx 1 root root 2 May 14 2011 /usr/bin/emacs -> qe ~ # ls -l /usr/bin/qe -rwxr-xr-x 1 root root 108240 May 16 2011 /usr/bin/qe ~ # strings /usr/bin/emacs | fgrep -i version QEmacs version 0.3.1, Copyright (c) 2000-2003 Fabrice Bellard
628 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 03:17:21.81 ] 【スタッフ募集】路線名を擬人化させたエロゲ【鉄オタも】 hayabusa.2ch.net/test/read.cgi/news4vip/1326032146/ 【wiki】 www38.atwiki.jp/train_erog/ 【避難所】 jbbs.livedoor.jp/game/54004/
629 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 08:39:46.95 ] >>625 tako.el みて普通に日本語のシンボル名作れることに驚愕した
630 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 12:53:58.93 ] 関数の中で直接呼び出されている関数*だけ*置き換える方法ってありませんでしょうか? (defun greeting (msg who) (message "%s, %s" msg who)) (defun hello (who) (message "===hello===") (greeting "hello" who)) みたいになっている時、 hello の中で直接呼ばれてる message だけ置き換えたいのです。 flet を使うと greeting の中の message まで置き換えられてしまいます。 関数定義をそのまま引っ張ってきて書き換えたものを再定義したり fset したりする以外に方法はありませんでしょうか?
631 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 12:58:14.67 ] 関数を around アドバイスして flet ってやったらできないんだっけ?
632 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 12:58:40.71 ] あ、馬鹿なこと言ったごめ。
633 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 13:57:27.13 ] 全然うまい方法が思いつかなかったので、じゃあせめて置き換え後の関数で 呼び出し元の関数を判断して挙動を変えようと思ったのですが、 今度は呼び出し元の関数の調べ方がわかりません。 b.hatena.ne.jp/IMAKADO/elisp/callee/ とかは見つかったんですが 肝心のリンク先が壊れて見れないという・・・トレースとか書いてあるから バックトレースの内容を参照するってことなんでしょうかね・・難しい。
634 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 14:42:51.45 ] なんかものすごく力技な感じになりましたが一応実装できたので貼っておきます。 なんかもっとスマートな方法はないのか・・・・ (defun greeting (msg who) (message "%s, %s" msg who)) (defun hello (who) (message "===hello===") (greeting "hello" who)) (defun callee () "呼び出し元の関数名を文字列で返す" (let ((bt (split-string (with-output-to-string (backtrace)) "^ *\\|\n" t))) (while (and bt (not (string-match "^callee\\>" (pop bt))))) (cadr bt))) (defadvice hello (around ad-hello-no-heading activate compile) "hello が直で呼び出している message だけ ignore に置き換える" (let ((org-message (symbol-function 'message))) (flet ((message (format-string &rest args) (if (string-match "^ad-Orig-hello\\>" (callee)) ;; advice の場合は ad-Orig-* になる (ignore) (apply org-message format-string args)))) ad-do-it)))
635 名前:597 mailto:sage [2012/01/09(月) 16:29:31.21 ] >>598-599 >>607 ありがとうございます。 indent-line-function等で制御するよりも>>607 を改変すればよさそうだと思いました ですが改変がうまくいきません if (x>0) { proc1() proc2() } else if (x<0) { proc3() proc4() } else { proc5() proc6() } こういう風に自動的にインデントさせようとして www.gnu.org/software/emacs/manual//html_node/elisp/SMIE-Grammar.html#SMIE-Grammar の("then" insts "end")を("{" insts "}")、 ("if" exp "then" inst "else" inst)を("if" exp inst "else" inst)、 (insts (insts ";" insts) (inst))を(insts (insts insts) (inst))、 に書き換えましたが、{を入力してC-jを押すと(newline-and-indent) (wrong-type-argument integer-or-marker-p nil) とエラーが出ました このif (test) {procs} else if (test) {procs} else {procs} を (procsは改行区切りです) インデントさえできればいいのですが どうすればよいでしょうか
636 名前:597 mailto:sage [2012/01/09(月) 16:39:18.77 ] あと、調べていて気づいたのですが www.emacswiki.org/emacs/IndentingC#toc1 このcc modeをdefine-generic-modeで作成したモードで 使えればよさそうだと思いました というのも整えようとしているのがc++ likeのコードに似ているからです 上のsmie改変がうまくいかないときにはこれで十分です define-generic-modeで作成したモードの初期化部分で このcc modeの機能を利用することはできるでしょうか
637 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 16:39:19.97 ] ちなみにサンプルの設定ではうまく動いたの? smieって何やってるのかわからなかったけど smie-setup で indent-line-function 設定してるのな。 ちょっと真面目に使い方勉強してみるか。
638 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 16:40:28.70 ] >>636 特定のモードを元にモードを作る場合は define-derived-mode を使うといいよ。
639 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 17:09:57.88 ] >>635 "}"とかが token として認識されてないんじゃないの?
640 名前:597 mailto:sage [2012/01/09(月) 17:50:59.31 ] >>637 はい。サンプルは動きました。↓の各セクションから以下の設定をコピペして www.gnu.org/software/emacs/manual//html_node/elisp/SMIE.html#SMIE (eval-when-compile (require 'cl)) (require 'smie) (defvar sample-smie-grammar (defvar sample-keywords-regexp (defun sample-smie-forward-token () (defun sample-smie-backward-token () インデント分をこう設定し (defvar sample-indent-basic 4) メジャーモードを作成する (define-generic-mode の初期化部分で (list (function (lambda () (add-hook 'hoge-mode-hook (lambda () (smie-setup sample-smie-grammar #'sample-smie-rules) と書きました。 あと、>>635 の(insts (insts ";" insts) (inst))は書き換えないままでした 書き換えるとエラーになります すみません >>639 確かにtokenの設定が抜け落ちていました。ですが (defvar sample-keywords-regexp (regexp-opt '("+" "*" "," ";" ">" ">=" "<" "<=" ":=" "="))) を (defvar sample-keywords-regexp (regexp-opt '("+" "*" "," ";" ">" ">=" "<" "<=" ":=" "=" "{" "}" "(" ")"))) に書き換えましたがだめでした >>638 なるほど、ただキーワードの色づけ設定は引き継ぎたくないのでdefine-gereric-modeで設定しました インデントとキーフックのみ特定のモードを引き継ぐという機能があればいいのですが
641 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 18:02:41.16 ] >>640 自分とこでちょっと動かしてみたいけど長そうだから ↓ここにコピペしてURL教えてくれ paste.lisp.org/new/emacs
642 名前:597 mailto:sage [2012/01/09(月) 19:05:20.29 ] 書きました paste.lisp.org/display/126938 よろしくお願いします
643 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 19:42:06.40 ] うおお、難しい とりあえずコメントの ';' と 区切り文字の ';' が干渉してるのと sample-smie-forward-token で a+b みたいなのが一気に通過しちゃうのが気になったけど じっくり取り組まないとわからんなあ・・・
644 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/09(月) 21:32:24.24 ] サンプルのまんまで実行しても emacs 23 では wrong-type-argument が出るねえ。 emacs 24 で実行するとエラーは出ないけどちゃんと動いてるような感じがしない。 サンプルそのままで実行してもぶら下がりelseがちゃんと処理できてないように見えるなぁ。
645 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/10(火) 00:11:10.77 ] >>629 skk に含まれてる skk-ja-names.el とか見てみろよ。 こんなだぞ。 (defalias 'SKKモード 'skk-mode) (defalias 'SKKのバージョン 'skk-version) (defalias 'SKKのバグを報告する 'skk-submit-bug-report) (defalias 'SKKのチュートリアル 'skk-tutorial)
646 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/10(火) 11:26:09.75 ] load-path の追加に normal-top-level-add-subdirs-to-load-path を使うのを 止めたら起動時間が 500〜700ms 近く早くなって感動した
647 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/10(火) 15:26:23.62 ] emacs使いの大半はcapslockをctrlにしている? それともそのまま?
648 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/10(火) 15:30:40.42 ] そんなの調査のしようがないからなぁ。
649 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/10(火) 15:34:21.26 ] 大半かどうかは知らんけどEmacs関係なく一定数いることは確か。 MSなんか公式でCTRL<=>CAPS逆にするドライバ配布してるし。 これも呪いの一つだとは思う。
650 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/10(火) 17:29:15.59 ] なんでこれでエラーがでるんでしょう? (string-match (migemo-get-pattern "popw") "popwin") ここまでは大丈夫なのに。 (string-match (migemo-get-pattern "pop") "popwin")
651 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/10(火) 17:37:09.14 ] 失礼しやした。 キャッシュがぶっ壊れていただけだった。
652 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/10(火) 18:44:24.40 ] >>649 MSのドライバ配布なんて聞いたことがなかったから調べてみた www.atmarkit.co.jp/fwin2k/win2ktips/1182ctrl2cap/ctrl2cap.html ふむふむこれか。楽ちんなツールもあるもんだな
653 名前: 忍法帖【Lv=34,xxxPT】 mailto:sage [2012/01/10(火) 18:48:32.71 ] 入れ替えじゃなくてcapslockをctrlにしたい
654 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/10(火) 19:51:36.16 ] 職場なんかだと交換よりCAPS潰すの方が ちょっと同僚が叩いた時とかに面倒がなくていいわ