のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,825人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    【叩かれて】Emacs Lisp道場【強くなれ】

    emacs スレッド一覧へ / emacs とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    301 : 名無しさん@お腹 - 04/12/04 10:31:36 (+57,+29,-18)
    一気に変換するか、
    一回トークンを切り出してリストに変換、あとはリスト処理。
    302 : 299 - 04/12/04 14:13:51 (+57,+29,-17)
    情報どうもっす。
    色々調べたけど、TOKENに切り出す方法が分からないので諦めます。
    303 : 名無しさん@お腹 - 04/12/04 14:28:11 (+57,+29,-17)
    初心者なのはみえみえなんだからちゃんと教えてやれよ。
    304 : 名無しさん@お腹 - 04/12/04 22:08:21 (-23,-30,+0)
    ----BEGIN BASE64----(font-lock-test.el.gz)
    H4sICDWssUEAA2ZvbnQtbG9jay10ZXN0LmVsAI2RzW7DIBCEz/FTrHLJopZDnqdu
    FQzrBAVYC0gjv30B569qWtVH77czOwMaGk8B/CxHDlk61kc5qZhIOpsmQGe9zaID
    wPOBAmAkmUhFfSh8PKtoYI19j28fKKAP7y99L9bQlqCtlUVHGRCLiwbUHIzNloPU
    KhEE67rVqlFp9gM7WbE6B7QhUwwy8ZgLs1CF8yoX85SjDXsZWE6RJ4rZUoKtEKLJ
    4Sdb06SqUjERdXIRUMFAHXVVETkCDnMmqdnQzV1ODRHdxbWcdxri5Wf7OnxSXKS9
    TVkeaT5zNAmwFbfkJ0ceNvhr0VvY3Ae3O4Ly5SqlqbR5zYB2hDt6NetWeAqOUnH1
    5AeK0Bx/gi0UJsralOxOpfwMgh2+VoHH4oyRmeu5+fHWW9r7Rq2n0gfmI2xqPtle
    Uy2hfK16mf1V3zcR8kqnVtX/178A0ylMGtwCAAA=
    ----END BASE64----

    http://pc5.2ch.net/test/read.cgi/unix/1083394705/857-869
    の流れでちょっとやってみたもの。

    - とりあえずつつましく font-lock-keywords の末尾に追加
    - でも OVERRIDE はt だったり。本当は 'keep がいいんだろうけど
    - っつーか t にしててもところどころにしか色付かない。jit-lock だから?
    - symbol-function の結果を直接使うんじゃ駄目なんだっけ?
    - もうちょっと正規表現も格好よくしたいけど

    とかいろいろ疑問があるけどまだあまりテストしてないです。もっとスマート
    なのが出来たら教えて下さい。
    305 : 名無しさん@お腹 - 04/12/04 23:01:19 (+6,-16,+0)
    >>304
    hook ってわかってるか?
    306 : 名無しさん@お腹 - 04/12/05 02:34:57 (+39,-30,-48)
    なんか妙にややこしいことしてるな。
    (font-lock-add-keywords 'emacs-lisp-mode '((REGEXP SUBEXP (progn ...))))
    みたいな感じでいいんじゃないのか。
    307 : 名無しさん@お腹 - 04/12/05 03:00:41 (+37,-30,-60)
    >>304
    > - っつーか t にしててもところどころにしか色付かない。jit-lock だから?
    my-font-lock-parse-lisp で、
    (and func
    (or (byte-code-function-p func)
    (subrp func)))
    が nil になったときにそのまま nil を返しちゃまずい。
    もう一回探さないとそれ以降に色が付かないぞ。
    308 : 名無しさん@お腹 - 04/12/05 22:58:55 (+69,+30,-38)
    >>306
    最初そっちでやっててリストの先頭に登録されるのが嫌だったんですが新ため
    て見たら APPEND ってフラグがありますね。そっちに変更してみました。

    >>307
    ごもっとも。書いててなんか違和感あったんだけどなんで気付かなかったんだ
    ろ orz

    とりあえずそれなりに色付くようになりました。どもー。
    309 : 名無しさん@お腹 - 04/12/06 21:44:56 (+6,-29,-20)
    しつこくてスマン。間違いがあったので訂正。
    >>304 の condition-case んとこは void-function だけ受けるんじゃ駄目で
    すね。error で受けてやれば全部色付くようになりました。
    310 : 名無しさん@お腹 - 04/12/07 13:43:05 (+20,-30,-25)
    >>309
    なんかいろいろ修正があったようなのですが、自分も一度使用してみたいので、
    よかったら修正版 font-lock-test を navi2ch-base64-insert-file してもらえるとうれしいです
    311 : 名無しさん@お腹 - 04/12/07 22:35:01 (+38,-30,+0)
    ----BEGIN BASE64----(font-lock-test2.el.gz)
    H4sICDSvtUEAA2ZvbnQtbG9jay10ZXN0Mi5lbADdVEFu3DAMPNuvIPZiCoWA5to8
    JU4Br01vhFiSK8nY+j/5QD6RS5FP9CWl6G63aex0DznlZJjiDDkzlrGjvm9aAjvr
    /NQ0mDhq27TBQ4WYAL/0PtAh+Ml1sIvUwCEQuZ1SCpwZVInrFHHahzWGcQrjQP+F
    95Nr1+CWOjNZ2A/TPxyTEwbvkh58e/9CCA7GmqRKADzekQMMpFlJaO8YEI5NYOKb
    Cm/rGm++ooLa3X6qa7UDwYEgGesDYMNLoPO8liX7DfBASSf6nvQY/EghzfAZKtGD
    tkk8IKZg3AGulCqLoqjwvGHrrSV+ke5zmddxjJCyyiiQ4a13nUnGO902kbJu5gOM
    s937QezKh4DGJQpOR9+nlyto509LGop5oRM3s1MIrC6bmau46eRiZG7a9lyS/wiW
    ZyHjhvPFm87nBk7nggCKlQA2EhBfLwlA7s5HCGA/J2JIR39c1uPpm924EG/fiHKJ
    5aJgLolEnP4rkvN503X6nuajD12ESpplj2aRYVnU4s32XbuCau2vzKNyOu81SyS8
    GiXVd54k3++rSVL9Pen6GohFRr3IZTZ4+Pn0+Pz88KP8BYGg2TyqBgAA
    ----END BASE64----
    >>310
    今のところこんなかんじに落ち着いてます。lisp なだけにかなりの部分に色
    付くため1色だと逆に見難かったので3色使ってます。
    312 : 310 - 04/12/08 00:06:08 (+63,+29,-21)
    >>311 ありがとうございました
    しかし、これは良くできていますね。
    こうやって見てみると自分が普段どれだけ多くのsubrな関数を使用しているのかわかります。
    感謝です。
    313 : 名無しさん@お腹 - 04/12/08 03:56:47 (+16,-30,+0)
    minibuffer で作業してるときにたまに message が表示されて
    自分が入力してるのが消えるときがあるじゃないですか。
    で、そんなときに消えないようにと以下の advice を付けてみたんですけど、
    今いち視線が上下してよろしくない気がします。
    何かいい案はないですかね?
    momentary-string-display をうまく使えばいい感じになりそうな気もするけど。。。

    (defadvice message (around if-minibuffer-use-momentary-string-display activate)
    (if (window-minibuffer-p (selected-window))
    (save-window-excursion
    (save-selected-window
    (select-window (display-buffer (get-buffer-create "*message on minibuffer*")))
    (delete-other-windows)
    (erase-buffer)
    (insert (make-string (window-height) ?\n)
    (format (ad-get-arg 0) (ad-get-arg 1)))
    (goto-char (point-max))
    (recenter))
    (sit-for minibuffer-message-timeout))
    ad-do-it))
    314 : 名無しさん@お腹 - 04/12/08 08:55:07 (+4,-30,-83)
    >>313
    > minibuffer で作業してるときにたまに message が表示されて
    > 自分が入力してるのが消えるときがあるじゃないですか。

    漏れも、LSDBを入れたらその問題で悩みました。Fontifying... という
    メッセージがじゃまをするので、~/.emacs で (setq font-lock-verbose nil)
    しましたが、こういう手もあったとは。
    315 : 名無しさん@お腹 - 04/12/08 22:46:40 (+17,-30,-84)
    >>313
    何となくわかればいいだけなら、こんな感じでは?
    一発目だけポインタを移動するとか、小細工はあってもいいけど

    (defadvice message (around my-message-ad activate)
    (if (window-minibuffer-p (selected-window))
    (let ((executing-kbd-macro t))
    ad-do-it
    (display-buffer "*Messages*"))
    ad-do-it))

    316 : 名無しさん@お腹 - 04/12/08 23:47:51 (+17,-13,-4)
    >>315
    ポインタってポイントのコト?
    317 : 名無しさん@お腹 - 04/12/09 01:29:52 (+3,-30,-223)
    結局こんなんになりました。
    これだと視線の上下もないしいい感じ。
    ついでに、minibuffer での isearch のときもいい感じになってくれました。
    ただ signal とかの emacs の中の人が処理してるやつはやっぱりだめっぽいです。

    (defadvice message (around minibuffer-workaround activate)
    (if (window-minibuffer-p (selected-window))
    (let ((pos (point-max)))
    (when (ad-get-arg 0)
    (unwind-protect
    (progn
    (save-excursion
    (goto-char pos)
    (insert "\n" (format (ad-get-arg 0) (ad-get-arg 1))))
    (sit-for (or minibuffer-message-timeout 1)))
    (delete-region pos (point-max)))))
    ad-do-it))
    318 : 名無しさん@お腹 - 04/12/09 02:00:56 (+3,-30,-34)
    なんかいもごめんです。
    さっきのやつの insert のとこを
    (insert "\n" (apply 'format (ad-get-arg 0) (ad-get-args 1))))
    に変えないとダメポです。

    あと、skk と相性がわるいなぁ。
    319 : 名無しさん@お腹 - 04/12/10 22:21:05 (+13,-30,-65)
    http://example.jp/foo bar/~baz/
    こんな url を encode して
    http://example.jp/foo%20bar/%7Ebaz/
    を得たいんだけど、そのものズバリな関数がありそうで見つからない。

    (browse-url-file-url "http://example.jp/foo bar/~baz/")
    => "http://example.jp/foo%20bar/~baz/"

    ~ は encode してくれないのね。

    (w3m-url-encode-string "http://example.jp/foo bar/~baz/")
    => "http://example.jp/foo+bar/%7ebaz/"

    + か(´・ω・`)
    今は自力でやってるけど、どっかにあったりする?
    320 : 名無しさん@お腹 - 04/12/10 22:57:43 (+56,+28,-16)
    ~ をエンコードすべき理由が思い当たらないんだけど
    321 : 名無しさん@お腹 - 04/12/10 23:22:32 (+39,+16,-3)
    同一性をチェックしたいとか?
    322 : 名無しさん@お腹 - 04/12/11 10:59:40 (+9,-30,-90)
    RFC1738 の時代には「+」が unreserved で「~」はエスケープが必要だった。
    後に RFC2396 ができて「+」が reserved になり、「~」は unreserved に
    なった。

    > ~ は encode してくれないのね。
    は RFC2396 に

    > + か(´・ω・`)
    は RFC1738 にしたがっているのだろう。

    323 : 名無しさん@お腹 - 04/12/11 14:27:03 (+57,+29,-4)
    つまりどれにも準拠してないってことね。
    324 : 名無しさん@お腹 - 04/12/11 16:19:09 (+30,+12,-2)
    え?
    325 : 319 - 04/12/12 12:55:16 (+4,-29,-66)
    発端は wget -x で件の url を取得するとああいったディレクトリを掘るんで、
    それを emacs 側で知りたいってことからでした。
    >>322 氏の解説のように変遷があると既存の関数でズバリな encode を期待す
    るのは無理がありそうですね。自力 encode で納得しときます。
    レスどーもでした。
    326 : 名無しさん@お腹 - 04/12/12 21:58:29 (-1,-29,-36)
    wgetってなんで ~ をエンコードしちゃうんだろうね。
    だれかハックしてエンコードしないバージョンを配布してくれ。
    327 : 名無しさん@お腹 - 04/12/12 22:20:03 (+52,+29,-1)
    そんなんハックとはいえん
    328 : 名無しさん@お腹 - 04/12/13 12:21:41 (+49,+26,-1)
    一文字変えるだけ?
    329 : 名無しさん@お腹 - 04/12/21 22:10:29 (+69,+29,-118)
    最近Emacsを使うだけの立場から少しいじろうと思って、
    「やさしいEmacs-Lisp講座」など読みました。

    しかし、この板に書かれてるようなLispははるかに上でびっくりしました。
    hookとかどこにもほとんど説明がないし、始めはshow-paren-modeが気に食わなくて
    対応する括弧のbackgroundではなく、括弧そのものがboldでredになるようにしたい
    と思ったのですが第一歩が踏み出せません。

    cc-mode.elとかみれば参考になるかと思いきや、やはり難しい。。
    faceというのをいじればよいことまでは分かったのですが、他の機能もごちゃごちゃ
    ついているので、boldにしたりするのにどれが本当に必要なものか見分けがつきません。

    みなさんはこのギャップをどこで勉強して埋められたのですか?
    よろしければ教えてください。
    そして、こんな自分にどうやって、そして何を勉強してよいのかアドバイスください。
    よろしくお願いします。
    330 : 名無しさん@お腹 - 04/12/22 00:43:21 (+96,+30,-102)
    知識に上に下もないと思うけど。

    「やさしいEmacs-Lisp講座」は自分も一番最初に読んだ。elispの基本を押さえている
    し、かなり良い本だと思う。

    自分の場合は、その知識を元に .emacs をいじったり、他人の .emacs を覗いたり、日
    本語 Info で分からないこと調べたりしていくうちに、個人レベルでやりたいことはで
    きるようになった。

    その時は分からなくても、何ヶ月後かに調べてみたら、あっさり分かったりするので、
    焦らずに知識を蓄えていくのが一番の近道ではないでしょうか。
    331 : 名無しさん@お腹 - 04/12/22 01:09:28 (+18,-30,-145)
    >>329
    (show-paren-mode) の評価より先に
    show-paren-match-face を上書きすると変えられるよ.
    ちょっと paren.el のソース見たけどこんな感じ.

    (defface show-paren-match-face '((t (:foreground "red" :bold t))) nil)
    (show-paren-mode t)

    この際だから mic-paren.el でも捜して比較してみたらどうでしょう.
    332 : 名無しさん@お腹 - 04/12/22 01:33:27 (+39,-30,-110)
    >>331
    揚げ足取るわけじゃないけど、、、
    set-face-*()で変えるほうが自然じゃない?

    (show-paren-mode 1)
    (set-face-foreground 'show-paren-match-face "red")
    (set-face-bold-p 'show-paren-match-face t)
    333 : 名無しさん@お腹 - 04/12/22 01:38:24 (+63,+29,-18)
    >>332
    確かにこっちのほうがスマートだね.
    何でオレ, あんなふうに書いたんだろ….
    334 : 名無しさん@お腹 - 04/12/22 04:07:45 (+70,+29,-14)
    >>330-333
    ありがとうございます!あれから少し探してみたのですが、
    どうも各モードにどんな変数があるかをInfoで見つけて、
    それをいじるというのがカスタマイズの初歩のようですね。
    335 : 名無しさん@お腹 - 05/01/07 00:10:45 (+38,-5,-19)
    diredモードで拡張子ごとに色を付けたいんですけどどうやったらいいですか?
    336 : 名無しさん@お腹 - 05/01/07 09:11:46 (+6,-30,-205)
    >335
    俺の.emacs見てたらこんなんあった
    ウザくなってコメントアウトしてたけどうまく動いてたっぽい

    (font-lock-add-keywords 'dired-mode
    '(
    ; ;source
    ("^.*\\.[Ee][Ll]$" . font-lock-variable-name-face)
    ; ;archive
    ("^.*\\.[Zz][Ii][Pp]$" . font-lock-builtin-face)
    ("^.*\\.[Gg][Zz]$" . font-lock-builtin-face)
    ("^.*\\.[Tt][Aa][Rr]$" . font-lock-builtin-face)
    ("^.*\\.[Ll][Zz][Hh]$" . font-lock-builtin-face)
    ; ;text
    ("^.*\\.[Tt][Xx][Tt]$" . font-lock-reference-face)
    ; ;executable
    ("^.*\\.[Ee][Xx][Ee]$" . bold)
    ; ;dot
    ("^.+[0-9][0-9] \\.[^.]+.*" . font-lock-variable-name-face)
    ))
    337 : 335 - 05/01/07 19:28:01 (+69,+29,-80)
    お~、ありがとうございます。
    バッチリ動きました。
    ただexeにboldが効いてなかった様な気も・・。
    Fontlockの設定とかが原因でboldに気が付かなかっただけかな。
    boldを色指定に変えて使ってます。

    十分満足なんですけど
    拡張子だけに色を付けるとなると相当面倒ですか?
    理想としては拡張子はファイル名とは別のカラムに表示して(lsの設定?)
    さらに拡張子にだけ色を付けたいのですが。

    つーかemacs楽しいですね。時間足りないw
    ある程度Lisp覚えてがんがんカスタマイズできるようになりたいな。
    338 : 名無しさん@お腹 - 05/01/07 20:17:34 (+12,-30,-132)
    >>337
    > 拡張子だけに色を付けるとなると相当面倒ですか?

    ("^.*\\.\\([Ee][Ll]\\)$" 1 font-lock-variable-name-face)
    みたいにしてけばいいだけよ。詳しくは font-lock-add-keywords の
    docstring を参照のこと。

    > 理想としては拡張子はファイル名とは別のカラムに表示して(lsの設定?)
    ちょっとやり方を思い付かないけど、逆に見難くないかね。

    > つーかemacs楽しいですね。時間足りないw
    > ある程度Lisp覚えてがんがんカスタマイズできるようになりたいな。
    ガン(゚д゚)ガレ
    339 : 名無しさん@お腹 - 05/01/25 21:33:24 (+7,-30,-91)
    すいません、キーバインドの方法について質問させてください。
    shift+rightにother-windowを割り当てたいのですが
    ;(describe-keyでは"ESC [ d"と表示されます。)
    うまくいきません。global-set-key で
    \M-[-d とか [M-[-d] や [ESC]-[-d等を試してみたのですがどれもだめでした。
    ESC [ dはどう表記したらいいのでしょうか?
    340 : 名無しさん@お腹 - 05/01/25 23:45:32 (-1,-29,-8)
    >>339
    その環境だと shift+right も right も一緒になってないか?
    341 : 名無しさん@お腹 - 05/01/26 00:03:02 (+3,-30,-120)
    shift+right と right が一緒になってるかどうかの確認の方法が分からないのですが
    (何かにバインドして確認しようにもバインドの方法が分からない)
    describe-keyをすると

    right は right
    shift+right は ESC [ c
    とでます。
    ちなみにF1にバインドする時にもつまづきました。
    [f1] ではなく\C-ce でf1にバインドできました。
    そうするとC-ceにもバインドされました。
    C-ce と f1 は一緒になってるようです。

    ターミナルの設定の問題なんでしょうか?




    342 : 名無しさん@お腹 - 05/01/26 00:37:20 (-2,-30,-23)
    スレ違いだろうが、とりあえず [?\e ?\[ ?d] とか "\e[d" とか
    343 : 名無しさん@お腹 - 05/01/26 00:49:47 (+69,+29,-40)
    おお、いけました。ありがとうございます。
    shift+upでバッファ間を移動しまくっております。
    previous-bufferみたいな関数あるかと思ったんですけどないみたいですね。残念。
    書くスキルないのはもっと残念です。

    どこで質問するか迷ったんですけどやっぱりスレ違いでしたか。
    emacsスレで聞けばよかったです。
    ありがとうございました。
    344 : 名無しさん@お腹 - 05/01/26 01:40:01 (+12,-29,-38)
    >>343
    > shift+upでバッファ間を移動しまくっております。
    > previous-bufferみたいな関数あるかと思ったんですけどないみたいですね。残念。

    バッファっつーか、ウィンドウ間を移動したいんだよね?
    windomove.el がいいんじゃないかと。
    345 : 名無しさん@お腹 - 05/01/26 01:41:01 (-1,-29,-16)
    > windomove.el
    変なところに o が入った。windmove.el だ。スマソ
    346 : 名無しさん@お腹 - 05/01/26 02:35:31 (+3,-30,-110)
    そうか。windmove使えばいいのか。
    (global-set-key [?\e ?\[ ?d] 'windmove-left)
    (global-set-key [?\e ?\[ ?a] 'windmove-up)
    (global-set-key [?\e ?\[ ?c] 'windmove-right)
    (global-set-key [?\e ?\[ ?b] 'windmove-down)
    でウインドウ間を超高速移動しまくってます。
    ありがとうございました。
    347 : 名無しさん@お腹 - 05/01/26 09:51:41 (+51,+28,-1)
    超高速移動という響き,イイ!!
    348 : 名無しさん@お腹 - 05/01/27 03:17:04 (+30,+2,-1)
    どもども。いや、ホント楽になりました。
    C-xo連発してたのがうそみたいです。
    349 : 名無しさん@お腹 - 05/02/11 20:21:31 (+3,-30,-140)
    一回のキー操作に複数の手続きを割り当てたいんですけど、例えば
    (global-set-key "\C-cg" '(lambda () (begin
    (forward-char)
    (backward-char)))
    これで一文字進んで一文字戻る(なにも起こらない)を想定してるんですが、動いてくれません
    普通(global-set-key KEY COMMAND)でCOMMANDにはシンボルを想定してるみたいなんですが、
    複数同時に渡せないし...
    350 : 名無しさん@お腹 - 05/02/11 20:30:48 (-1,-29,-10)
    (global-set-key "\C-cg" "\C-f\C-b")
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / emacs スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について