- 1 名前:おっす [03/09/18 19:29]
- なんとなくEmacs 触り始めて、なんとなくelispにも手を出して
しまったアナタ。 なんとなく書いてしまったコードをココに書き込んで叩かれましょう。 タタカレテツヨクナレ。 年季の入った玄人衆は、もしアドバイスできたらお願いします。 いや、叩きついでにでも。 とりあえず入門書は ttp://www.netfort.gr.jp/~kiyoka/emacs_setq/emacs_setq.html ttp://www.math.s.chiba-u.ac.jp/~matsu/lisp/emacs-lisp-intro-jp.html リファレンスマニュアルは(ちと古い) ttp://www.fan.gr.jp/~ring/doc/elisp-manual/elisp.html とか、新しいのは(でも英語) ttp://www.delorie.com/gnu/docs/elisp-manual-21/elisp.html ではひとつ、コード中心の熱いバトルをよろぴく。
- 60 名前:kaoru mailto:sage [03/10/02 00:23]
- >>59
変数として評価すると自身を返すシンボル。 : が頭についているシンボルについてくわしく知りたいなら keyword-symbols-constant-flag の docstring でも見てくださいな。 t や nil とは微妙に違う、こんなことをしたときに。 (setq t t) (setq :foo :foo) > 中級は尊い
- 61 名前:59 mailto:sage [03/10/02 23:09]
-
>>60 なるほどです。 そのまんま、constantなsymbolなのですね。 これを使う側が、 (:char-spec ascii :height any) なんかで、リストの次の中身が何なのか、判断しているのですね。 ("char-spec" ascii "height" any) だと、文字列だから遅いんですか? lispでは、 (eq :hage :hage) は純粋にsymbolの比較onlyだから”軽い”ってことですか?
- 62 名前:kaoru mailto:sage [03/10/03 17:01]
- >>61
その手のやつは plist-get を使ってると思うんで docstring でも見てくださいな。 (plist-get '(nnsoup pink) 'nnsoup) => pink (plist-get '(:nnsoup pink) :nnsoup) => pink (plist-get '("nnsoup" pink) "nnsoup") => nil 中級は尊い
- 63 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/03 21:37]
- >>62
59 じゃないけど質問です。 plist で、普通のシンボルじゃなくって :hoge とかをよく使うのはなんでですか? 自分では、わかりやすいからなのかなーとか思ってます。
- 64 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/03 21:48]
- It's fukin' CLism.
- 65 名前:59 mailto:sage [03/10/03 23:46]
-
>>62 あぁ、なるほどね。 ありがとうございます。 すっきりしました。 もう一度Emacs Lispマニュアル読み直しに逝ってくるでつ。
- 66 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/04 21:55]
- 長い文字列をコピーすることが多いので、こんなのを作ってみました。
一応、C-u で コピー時に含める文字を追加できます。 デフォルトの状態で[と]を区切文字にできないのがちょっとナニですが。 (defvar my-copy-word-include-chars "a-zA-z0-9\-") (defun my-copy-word (&optional arg) (interactive "P") (let ((skip-chars (concat my-copy-word-include-chars (when arg (read-string "inc. chars: ")))) beg end str) (save-excursion (skip-chars-backward skip-chars) (setq beg (point)) (skip-chars-forward skip-chars) (setq end (point))) (setq str (buffer-substring-no-properties beg end)) (kill-new str) (message "copied \"%s\"" str) )) ;; (global-set-key [?\C-=] 'my-copy-word)とか
- 67 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/05 03:05]
- 自分以外に便利だと思う人がいるとは思えないけど
(defun my-recenter (&optional arg) (interactive "P") (if (equal last-command 'recenter) (recenter 0) (recenter arg) (setq this-command 'recenter)))
- 68 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/05 03:25]
- >>67
いちお簡単に機能ぐらい書いといたほうが。 equal は eq でいいね。 last-command が recenter と my-recenterの間で トグルするのを利用するわけか。
- 69 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/05 13:03]
- >>67
reposition-window ってのもあるけどな。
- 70 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/05 13:26]
- >>67
これを機会に docstring 書く癖つけれ
- 71 名前:66 mailto:sage [03/10/05 18:14]
- >>68,70
あ、僕もですね。肝心な説明を書いてませんでした。 >>66 は ポイント付近の語をkill-ringにコピーします。 docstringは、さしずめ "Copy a word at near the point to kill-ring." といったところでしょうか。 細かい説明書きは英語ではつらい…ボソ
- 72 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/06 09:40]
- ----BEGIN BASE64----(auto-vc-checkin.el.gz)
H4sICAy4gD8AA2F1dG8tdmMtY2hlY2tpbi5lbAClVk1v2zgQPSdA/sPAl0jbyknR WwwUcINFsUCQFmnaRY8UObK5kUiHpOTqsr+9Q4p0VNtx3NZIAEnz9ebN40izGbDW 6aLjBV8if5BqijUURREeN8xJDtGwKKSC1qKAjp+dzmb+f18w1w1aWEu3hPn7zx9v vtz/ffMNbj/Cv/O7u/nt/bdpiLxfSgtWV27NDAJdC2mdkWXrqEKrBBpwS4QPt1/g Ayo0rIZPbVkTnhvJUVmkND7RDK5106ByzPRXw6MhN/1V2hzuo2i0wAHP9chKofgd eYCiFUfADk0PQpMdLOuwKNuqQjOlSrpdLF9Dr9uQhTMFTPzXWkfomfupZsi01Gto mOrBSU+T0yHfdEPoP8o6VtdXmwefWp/KNyNr4klRRK2ZKFbMLc8Jn5AGudOmfw1M CSh7h34Eq+DtQFYhi0BLfmIKMCenVciJxE9d67VvCr+vDFortbJDDWrIwP8XU2wY t0/w/C8z+NhSNjjfmn7+5GLRPW6LozCcGs6BfFCxkvCtl+hH4QGQ7YVo3j0fTbZN dFTlaOYb8t/uYf1AxTBprlvlirJPT+FtPrCRxCcwyY5EZaBjRnp4Z6eZwIrujkz7 5vLsFGDy123blJSm7H/SjlfyIMIQCLraamWSP1/QM6dkHfNrVdANNMho1luuiVqt 4Prr54NJ/TB/Oend9eGkfDjKIel878ElXraCLjp+Mah0MoCJ+wD8OiFthKPu+av1 ggBayxb4pBA6a32AFCZI0kejaNX8yhTh0nfUsAcsUljcD0WtqcDOORnFpsLBQuXB 6NZJFeu2aqes0MWYjiz3PWcBN+NOdjg8qNFBlkU6n6OZXE+ykvEHpJ2QkX1zHeH7 lVMo1iBkvDUGvWKDJfc/X4hKca3EcOmPHk34Kg3M7xg13FBX0SfL8BFSoXNyj3nI Eg70Hp15mCM5HYHOKxPGXaZwwnFU/BCV1DIJsSQjqfYo58QlLjwBdG6eCNCq7vf2 TV4v9B1W2h/3/TsdaBqbuaK3HSi6JKGlDpxPnzzzJF0mOnohp0UUoQz6jabRc8hY RVLdWRFBu8xF9QZC4ts5qiwJemtrZm+K4/arh3tCef5U7gldRgtlR8mwM+MwBFlB 9g52sB/cCidxGFLxGpmNJAZrNL70ziJuXh2qMRTx3wZ6vGEHmlZGL1QqdHgH5cfi uczzSGTQjcK4l8cyUAJGR5VU5PP57x04H7lNOp5Wtv8aoPXjAXdSPPNNsvc7leIs kNJJYT8A6fvoYgYLAAA= ----END BASE64----
- 73 名前:72 mailto:sage [03/10/06 09:41]
- >>72
CVS or RCSをvc で使用時、ついついチェックインを忘れてしまい、古い版が 欲しいときに戻せないという歯がゆい思いをしました。 これを防ぐためにファイルセーブx回に1回は自動的にチェックインするelisp を書いてみました。要vcで、CVSと RCSにしか対応していません。 使うには .emacsに以下を追加します。 (require 'auto-vc-checkin) (setq auto-vc-checkin-rcs t) ;; RCSで有効にする (setq auto-vc-checkin-cvs t) ;; CVSで有効にする ;; 例:セーブ3回につき、1回チェックイン (setq auto-vc-checkin-save-count-by-checkin 3) RCSの場合はチェックインと同時にチェックアウトしますので、初回チェック アウト後はCVSと同じような使用感になると思います。 なお、auto-save-buffers.elを使ってる場合は処理待ち増大で操作不能になる 可能性があるかもです。リビジョン番号肥大にも要注意です。 あと、複数メンバーのプロジェクトでは使わないほうが無難だと思います。
- 74 名前:72 mailto:sage [03/10/06 09:50]
- >>73
× RCSの場合はチェックインと同時にチェックアウトしますので ○ RCSの場合はチェックイン直後にチェックアウトしますので でし。
- 75 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/11 15:31]
- いいんだけど、check inしたらアンドゥ情報が失われるというのはちょっと…
- 76 名前:72 mailto:sage [03/10/13 19:49]
- 確かに、です。
vc がよく分かってないままに書いたのがいけなかったです。 もちょっと調べます。
- 77 名前:名無しさん@お腹いっぱい。 [03/10/14 07:00]
- modeによってshow-paren-mode を切り替えたいのですが
lispがわかりません どのような設定になるのでしょうか?
- 78 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/14 07:05]
- (add-hook 'foobar-mode (function (lambda () (show-paren-mode 1))))
- 79 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/14 08:44]
- >>78
(add-hook 'foobar-mode-hook #'(lambda () (show-paren-mode 1))) でしょ? foobar-mode でなく foobar-mode-hook と。一般的にですが。
- 80 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/14 17:11]
- 78-79 有難う御座います
- 81 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/16 07:53]
- 初心者 寄せ集めでも.emacsを作れて、キーバインドができる
初級者 正規表現を操れて、簡単なelispが書ける listを自由自在に操れて、人の書いたelispを書き直せる マイナーモードやメジャーモードをスクラッチから書ける 中級者 Emacsにパッチをあてはじめる 上級者 Emacsをスクラッチから書ける
- 82 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/16 16:29]
- 中級は尊い。
- 83 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/16 17:58]
- >>79
> (add-hook 'foobar-mode-hook #'(lambda () (show-paren-mode 1))) (add-hook 'foobar-mode-hook (lambda () (show-paren-mode 1))) ではないの? (defmacro lambda (&rest cdr) : (list 'function (cons 'lambda cdr))) だじょ。
- 84 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/16 18:18]
- >>83
訂正するほどじゃない。
- 85 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/16 18:21]
- スタイルの問題でしょ。emacs/lisp/*.el 見ても両方使われてる。
- 86 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/16 18:42]
- #' を付けるほうが好きだけど、
nemacsからも利用する設定ファイルには使えない悲しさ。
- 87 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/16 19:01]
- >81 漏れはいまだ初心者でつね
- 88 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/18 01:53]
- >>81
上級者というのはxyzzyの亀井さんくらいのレベルなのか…。 道は遠い…というより一生かかってもムリ
- 89 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/18 21:16]
- 初心者 寄せ集めでも女を集めて、ハーレム を作れる
初級者 性器表現を操れて、簡単なエロ本が書ける チムポを自由自在に操れて、人に汚された女を調教し直せる S モードや M モードをスクラッチから調教できる 中級者 少女の頃から育成をはじめる 上級者 女を卵子から作り始める
- 90 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/18 21:25]
- >>89
はい、それから〜
- 91 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/18 21:34]
- 定義厨は失せて。
- 92 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/21 14:05]
- >>91
なんか Emacsスレのほうに飛び火してるみたいだが。
- 93 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/21 19:38]
- >>89
初心者のハードルやけに高いな、おい。
- 94 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/22 10:54]
- >>85
> スタイルの問題でしょ。emacs/lisp/*.el 見ても両方使われてる。 www.mew.org/~kazu/doc/elisp/function.html
- 95 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/22 11:11]
- >>94
結局「スタイルの問題」じゃないの?
- 96 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/22 11:26]
- >94
kazuのeispは信じられない程アレなので参考にならない。
- 97 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/22 11:43]
- #' ではなく ' を使うと、バイトコンパイルされない場合がある。ってことでしょ。
- 98 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/22 11:51]
- >>96
あ、mew 使ってないんでよく知らないんだけどどのへんがアレなの?
- 99 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/22 13:34]
- >>97
でもこのスレでは生のlambdaと functionで囲んだのだけ扱ってて、 quoteは関係無かったからさ。なのに 94が変な反応するから。
- 100 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/23 12:00]
- 今日、はじめて包囲アドバイスなるものを使ってみマスタ。
強力すぎてちょっと怖いけど、試しに ;; デフォルト動作でそのウィンドウも消すようにする。 (defadvice quit-window (around kill-window-adv activate) "quit-window with kill selected window" (unless (ad-get-arg 1) (ad-set-arg 1 (selected-window))) ad-do-it) こんな風なのを書いてみた。 たとえばapropos のウィンドウで q したときなんかはウィンドウが消えてくれます。 コレ一発で vc の log ウィンドウなんかもそんな挙動になってくれるからスゴイ楽でし。 でもやっぱし怖いす。
- 101 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/23 14:51]
- 包囲アドバイスって訳語は、日本語infoで使われちゃっていますけど、
あまり良さそうに思えないですね。語感が合わなくて。
- 102 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/24 06:20]
- >>96
> kazuのeispは信じられない程アレなので参考にならない。 どのへんが?
- 103 名前: ◆kXMewIMy86 mailto:sage [03/10/24 06:28]
- ま、いろいろとね。。。
- 104 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/24 08:30]
- >>103
FUD?
- 105 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/24 12:41]
- >>104
そうとも言いきれなさそうだから困る。 リスト遊びの評判もだが。
- 106 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/24 14:45]
- >>105
広瀬さんの本はどう?
- 107 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/24 17:10]
- 「リスト遊び」は純粋にとても良かったと思うが。
mewは使ってないからコードの評価はしないけど。
- 108 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/24 20:33]
- 2章を頭からちょっと読んでみたが
- nil を偽値として紹介した直後に not でなく null を紹介。 その後で空リスト。 偽値と空リストがごっちゃになってる taste がしてイヤでつ。 同じ lisp ばかりじゃねえんだぞと。 - predicate は「述語」でなしに「断言する」でよかったんだっけか? - "\n" が改行文字にすりかわるのは評価じゃなくてリーダーの問題だろ \n ならいいけど \\ が出てきたらこんな理解で困るんじゃないか。 regexp を扱うようになったらパニックだろ。 とか考えた漏れは逝ってよしでつか
- 109 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/24 20:50]
- でつ
- 110 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/24 20:54]
- >>108
> 同じ lisp ばかりじゃねえんだぞと。 違う Lisp 知らない。教えて。 Scheme は Lisp じゃないし。
- 111 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/25 09:12]
- >>99
まだ理解できていないようで・・・
- 112 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/25 09:30]
- >>111
あのー、罵倒されても構いませんから、 (lambda ...) と (function (lambda ...)) で具体的に何が変わってくるのか、 もうちょっと詳しく教えてください。 俺の理解では、バイトコンパイルされてしまえば同じ。 そのままだったら、functionのほうがマクロ展開ないぶん、 微妙に速いかもしれない(俺の勝手な推測)というところなんですが。 # quoteの場合が違うのは分かっています。
- 113 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/25 14:44]
- それでいいんじゃないの? 個人的には (lambda ...) よりも #'(lambda ...)
のほうがパッと見たときにわかりやすいので好み。
- 114 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/26 10:49]
- 時間がかかる処理をしていて、何かキーが押されたら中断する、ということを
考えています。試しに下のようなのを書いてみました。 (defun g () (interactive) (let ((i 0)) (while t (setq i (1+ i)) (when (input-pending-p) (keyboard-quit))))) これはうまくいきました。 今、やりたいのは 上記のwhile部分がブラックボックス扱いのときで、 (defun heavy-proc () (let ((i 0)) (while t (setq i (1+ i))) i)) という関数の中身を変更せずに、呼び出した後でキー入力があれば中断して戻 るということがしたいのです。割り込みのような感じです。 (defun f2 () (interactive) (condition-case nil (heavy-proc) ..... とやればいいのかなと思ったのですが、肝心のキーが押されたらエラーを発生 するやり方がさっぱり見当がつかないのです。 なにか良い方法を知っておられましたら、教えてやってくださいまし。
- 115 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/26 11:42]
- >>114
condition-case で quit 取るんじゃだめなん?
- 116 名前:114 mailto:sage [03/10/26 18:05]
- >>115
アドバイスありがとうございます。 (defun heavy-proc () (let ((i 0)) (while t (setq i (1+ i))) i)) (defun f2 () (interactive) (condition-case nil (heavy-proc) ((quit) (message "aborted.")))) こういうことでしょうか。 これだと、C-g以外のキーを押したときは中断できません。 もうちょっと練ってみます。
- 117 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/27 01:23]
- 全てのキーに signal発生させるよう設定したキーマップ使用すれば
いけるかも? signalの代わりに throwでもいいけど。
- 118 名前:114 mailto:sage [03/10/27 09:49]
- >>117
試しにこうしてみましたが… (defvar tmp-map nil "temporary key map for aborting.") (defun f2 () (interactive) (let ((previous-keymap (copy-keymap (current-local-map)))) (if tmp-map nil (setq tmp-map (make-sparse-keymap)) (define-key tmp-map "a" 'keyboard-quit) (define-key tmp-map "b" 'keyboard-quit) (define-key tmp-map "c" 'keyboard-quit)) (use-local-map tmp-map) (condition-case nil (heavy-proc) ((quit) (message "aborted."))) (use-local-map previous-keymap))) 中断してくれない(^^;
- 119 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/27 10:25]
- うーん、自分で bindした keyboard-quitと
C-g は扱いが違うって事なのかな?
- 120 名前:114 mailto:sage [03/10/27 11:47]
- >>119
今度は以下のようにsignalを使ってみましたが… (defvar tmp-map nil "temporary key map for aborting.") (defun my-quit () (interactive) (signal 'quit nil)) (defun f2 () (interactive) (let ((previous-keymap (copy-keymap (current-local-map)))) (if tmp-map nil (setq tmp-map (make-sparse-keymap)) (define-key tmp-map "a" 'my-quit)) (use-local-map tmp-map) (condition-case nil (heavy-proc) ((quit) (message "aborted."))) (use-local-map previous-keymap))) 相変わらず、中断せずでした。 edebugで追いかけてみると、キーマップ自体は変わってくれているのですが、 heavy-procを呼び出したらC-g以外をセンスしてくれないような感じがします です。
- 121 名前:114 mailto:sage [03/10/27 12:30]
- 助言を元に調べました。
なんとなく分かってきた気がします。(気がするだけかも…) (defun heavy-proc () (let ((i 0)) (while t (setq i (1+ i))) i)) (defun f3 () (interactive) (let ((previous-keymap (copy-keymap (current-local-map))) (previous-input-mode (current-input-mode))) (set-input-mode t nil 0 ?a) (condition-case nil (heavy-proc) ((quit) (message "aborted."))) (use-local-map previous-keymap) (set-input-mode (car previous-input-mode) (nth 1 previous-input-mode) (nth 2 previous-input-mode) (nth 3 previous-input-mode)))) キーマップ再定義はせずに、上記のようにすると aキーで中断できるようにな りますた。あとはこれを全部のキー文字に割り当てれば、と考えたのですが… (set-input-mode t nil 0 '(?a ?b)) のような複数指定は不可 (set-input-mode t nil 0 nil) ではデフォルトのC-gになる の様です。…もはや手詰まりか…
- 122 名前:114 mailto:sage [03/10/28 10:24]
- ふと思い立って、
(keyboard-translate ?b ?\C-g) とかやってみましたが、やはり中断してくれませんね。 コマンドループ内でC-gというのはかなりの特別扱いの感じがします。 こんなローレベルな関数が効かないなんて…。 # emvaders.elとかどうやってるのかな。ゲームなら割り込みみたいな処理を してると思うんだけど。
- 123 名前:114 mailto:sage [03/10/28 10:53]
- emvaders.elでは input-pending-pで処理してますた。
ゲーム的にはこのやり方は納得です。 にしても、ハマりすぎです。 誰かお願いです。ひとつ叩いてやってください。ガツンと。
- 124 名前:114 mailto:sage [03/10/29 15:54]
- 苦肉の策として、「最後に押したキーで中断する」というのを考えてみました。
(defadvice heavy-proc (before input-set disable) (set-input-mode t nil 0 last-input-event)) (defun heavy-proc () (interactive) (let ((i 0)) (while t (setq i (1+ i))) i)) (defun f3 () (interactive) (let ((previous-input-mode (current-input-mode))) ;; enable advice (ad-enable-advice 'heavy-proc 'before 'input-set) (ad-activate 'heavy-proc) (condition-case nil (heavy-proc) ((quit) (message "aborted."))) ;; disable advice (ad-disable-advice 'heavy-proc 'before 'input-set) (ad-activate 'heavy-proc) (set-input-mode (car previous-input-mode) (nth 1 previous-input-mode) (nth 2 previous-input-mode) (nth 3 previous-input-mode)))) ややこしいやり方になってしまいました。
- 125 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/29 16:16]
- unwind-protect使ったほうがいいよ。
- 126 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/29 16:46]
- なぜ C-g で quit がいやなのかようわからんが、アドバイスせんでも
(let ((previous-input-mode (current-input-mode))) (unwind-protect (progn (apply #'set-input-mode `(,@(butlast previous-input-mode) ,last-input-event)) (heavy-proc)) (apply #'set-input-mode previous-input-mode))) でいいような。
- 127 名前:114 mailto:sage [03/10/29 17:56]
- >>125, 126
助言、ありがとうございます。 今まで、unwind-protect は実際にどういう場面で用いるのかわかりませんでしたが、 なんかわかったような気がしますです。 > なぜ C-g で quit がいやなのかようわからんが、 bf-mode.elというelispをいじくっているのですが、html をw3mで表示したと きに重いので、キャンセルの手段が欲しいと思ったのです。
- 128 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/30 01:09]
- C-gでいいじゃん…
- 129 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/30 21:47]
- ファイルへの出力ってどうやってするんですか?
とりあえずhoge.txtに"hoge\n"と書いて出力する程度でいいんですが。
- 130 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/30 21:53]
- write-regionでいいじゃん…
- 131 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/30 21:58]
- >>130
さんくす! ググってもよく分らなかったもので。
- 132 名前:名無しさん@お腹いっぱい。 mailto:age [03/11/15 19:21]
- 【徹底的】プログラマーが語るviとemacs 7【バトル】
pc.2ch.net/test/read.cgi/prog/1064605855/ 514 :仕様書無しさん :03/11/15 14:09 Vimの方がEmacsより速いとか言っていた馬鹿が居たなぁ ttp://msdn.microsoft.com/seminar/shared/asp/view.asp?url=/msdntv/episodes/en/20031028lhorndb/manifest.xml&rate=1&WMPVer=9.0.0.3008 どう見てもEmacsの方が速いなプッ 以前のこれと比べてみろよ ttp://seriss.com/people/erco/fltk-videos/tutorial-fltk-hello.html ダセーーー(藁 なんか、Vim抜けてプロンプトでコンパイルしてまた開いてるよプッ しかも、Emacsの方が断然速いな〜 いい加減乗り換えた方が良いんじゃねぇか(藁 それにしてもM$のプログラマホモくせーな
- 133 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/06 19:06]
- もはや、このスレもこれまでか…
がんばってる同士はおらんのだろうか。
- 134 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/06 22:27]
- 2ch以外で頑張ってます。
- 135 名前:名無しさん@お腹いっぱい。 [03/12/07 17:16]
- たとえば、それはどこなんでしょう?
- 136 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/10 02:40]
- あのー質問なんですが,
あるファイルの内容を調査したい場合,Emacs Lisp だと 対象となるファイルを一旦 find-file とかで 全て読み込まなくちゃ駄目なんでしょうか…? 外部プロセスに逃げると言う手も考えましたが, そんなものを使うよりは,Emacs Lisp のみで完結したいので…
- 137 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/10 03:10]
- etagsとか?
ってか、どんな調査したいのかにもよるのでは?
- 138 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/10 10:17]
- dired で % g
- 139 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/10 10:30]
- 全部読まなくても
(insert-file-contents FILENAME &optional VISIT BEG END REPLACE) でファイルの一部だけを読む事ができるよ。
- 140 名前:136 mailto:sage [03/12/11 23:27]
- 御回答どもです
>>137 どんな調査ってのはイロイロあるものの, コレさえ解決できればってのは無くて, 要は, open→無視して良いデータは破棄しつつ満足するまでread→close ってのをやりたいだけでして… >>139 ありがとうございます。 info読みなおしました… 今まで如何にイイカゲンに読んでたかを思い知りますた… 名前付きパイプとかも読めちゃうんすねコレ…
- 141 名前:名無しさん@お腹いっぱい。 [03/12/26 16:20]
- 一つの関数でλを定義する数は何個ぐらい許されるんでしょうか?
- 142 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/26 17:03]
- なにがしたいのか分からんが、とりあえず作ってみたら?
もっと意図を明確にしたうえで、ム板のスレで質問するのがいいと思うが。
- 143 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/26 22:02]
- (defun newschangelog (start end)
"ChangeLog中の不必要な部分を削除" (interactive "r") (save-excursion (save-restriction (narrow-to-region start end) (goto-char start) (replace-regexp "^[ \t]*.*STRONG.*" "") (goto-char start) (replace-regexp "^ *<A HREF.*" "") (goto-char start) (replace-regexp "</A></DT>" "") (goto-char start) (delete-matching-lines "^$") (goto-char start) (replace-regexp "^[ \t]*" "\t") ))) * news/index.html: 記事追加 ★ PTCジャパン、Linux対応Pro/EをLinux World Expoに参考出品</A></DT> <DT><STRONG>日経BizTech</STRONG> <A HREF="biztech.nikkeibp.co.jp/wcs/show/leaf/CID/onair/biztech/comp/247927"> 日本SGI、Linux向けのシステム構築支援サービス</A></DT> <DT><STRONG>c|net</STRONG> <A HREF="japan.cnet.com/svc/rss?id=1261.47623.54525"> 日本国内のLinuxサーバ市場:ビジネス利用には課題が多い</A></DT> ☆ 上記★から☆までがリージョンに指定されている状態だとします。このとき、 カーソルが★にあるのか☆にあるのかで、M-x newschangelog の結果が異なり ます。
- 144 名前:143の続き mailto:sage [03/12/26 22:03]
- 具体的には、カーソルが☆にあると
PTCジャパン、Linux対応Pro/EをLinux World Expoに参考出品 <DT><STRONG>日経BizTech</STRONG> 日本SGI、Linux向けのシステム構築支援サービス <DT><STRONG>c|net</STRONG> 日本国内のLinuxサーバ市場:ビジネス利用には課題が多い となり、カーソルが★にあると PTCジャパン、Linux対応Pro/EをLinux World Expoに参考出品 日本SGI、Linux向けのシステム構築支援サービス 日本国内のLinuxサーバ市場:ビジネス利用には課題が多い となります。 希望する結果は、カーソルが★☆のどちらにあっても PTCジャパン、Linux対応Pro/EをLinux World Expoに参考出品 日本SGI、Linux向けのシステム構築支援サービス 日本国内のLinuxサーバ市場:ビジネス利用には課題が多い のようになることです。添削おねがいします。
- 145 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/26 23:41]
- なんか例示されてるのと違い、空行が入ってしまうなーと思ったら、
transient-mark-mode かどうかで挙動が違うな。 で、offにして試してみたけど、どちらも okっぽかったけれど。
- 146 名前:143 mailto:sage [03/12/27 00:21]
- 検証ありがとうございます。おっしゃるとおり、手元の Emacs 20.7.2 を
\emacs -qで起動すると、★☆どちらにカーソルがあっても希望の結果になり ました(transient-mark-mode t/nil のどちらも)。 ところが、XEmacs 21.1 を \xemacs -q で起動させて確認したところ、 transient-mark-mode t/nil どちらの場合も 144 に書いた結果になるのです。 常用しているのは XEmacs なので、それで希望の結果が出て欲しいのです。 皆様のアドバイスをいただきたく思います。よろしくお願いします。
- 147 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/27 05:08]
- replace-regexp を
(while (re-search-forward REGEXP nil t) (replace-match TO-STRING nil nil)) にすれば直るはず。 特別な理由がない限り lisp program 中で replace-regexp は使わないほうが いいです。 perform-replace を参照。
- 148 名前:143 mailto:sage [03/12/27 22:46]
- 147氏のおっしゃるように修正したところ、XEmacs, Emacs の両者で
希望の動作をしてくれるようになりました。ありがとうございます。
- 149 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/04 14:13]
- >>1 のelispリファレンス-ja
ttp://www.fan.gr.jp/~ring/doc/elisp-manual/elisp.html は 27章 ウィンドウ がまるごと抜けてるからちょっと不便ですた。 ちょっと探したら、 www.i.kyushu-u.ac.jp/~s-fusa/doc/elisp-manual-20-2.5-jp/elisp-ja.html を発見。こっちはちゃんと27章があるじょ。 スタイルシートでカラフルで見やすいなり。 にしても、emacs21版のelispリファ-ja は まだどこにもないんでしょか。
- 150 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/04 14:43]
- 149が訳すことにケテーイしますた。
- 151 名前:名無しさん@お腹いっぱい。 [04/01/04 16:33]
- がんがれー
- 152 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/04 17:13]
- www.gnu.org/software/emacs/elisp-manual/html_chapter/elisp_51.html#SEC729
これだけ訳せばいいんだろうか?
- 153 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/05 19:56]
- >>152
駄目. www.i.kyushu-u.ac.jp/~s-fusa/doc/elisp-manual-20-2.5-jp/elisp-ja_1.html#SEC4 にあるように,日本語は改変が認められていません. 故に公開したければ,全文を訳し直す必要がある.
- 154 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/05 21:01]
- その GPL 和訳の由来はここ。
www.sra.co.jp/public/doc/gnu/gpl-2j.txt これにも同じく > ・和文文書の本文を改変しないこと。 とある。つまり、禁止してるのは「GPL の和文本文」の改変であって、 Emacs Lisp Reference Manual の和文ではない。 そもそも、元の文書が GPL なのだから改変禁止は不可能。
- 155 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/05 23:46]
- 恐ろしいほどの部分引用だな
- 156 名前:名無しさん@お腹いっぱい。 mailto:asage [04/01/23 04:41]
- asm-mode で新規作成/既存ファイル開く、でファイル先頭に;(コメント文字) が
自動的に挿入されてしまうんだけど、これを抑制する方法ないでつか?
- 157 名前:名無しさん@お腹いっぱい。 mailto:sage [04/01/23 09:11]
- それだけでは、うちではそんなことはないとしか言いようがないよ。
それは本当にasm-modeが入れているものなのかな?
- 158 名前:名無しさん@お腹いっぱい。 mailto:156 [04/01/23 11:26]
- -q つけて起動したら再現しませんでした…出直してくるぽ。
新規作成したバッファの状態を監視しつつ edebug でステップ実行したいんですけど、 バッファが見当たらない… asm-mode が 呼ばれたときはバッファが存在してるはずでつよね?
- 159 名前:156 mailto:sage [04/01/23 11:29]
- まちがえて age ちゃった。 ごめんでつ。>>158 は >>156 です。
- 160 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/02 02:00]
- 最近の elisp では when とか unless とか出て来るんですけど、
わたしは while と if と cond くらいしか使いません。 when, unless の利点は何ですか?
|

|