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

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

    emacs覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

    301 = :

    一気に変換するか、
    一回トークンを切り出してリストに変換、あとはリスト処理。

    302 = :

    情報どうもっす。
    色々調べたけど、TOKENに切り出す方法が分からないので諦めます。

    303 = :

    初心者なのはみえみえなんだからちゃんと教えてやれよ。

    305 = :

    >>304
    hook ってわかってるか?

    306 = :

    なんか妙にややこしいことしてるな。
    (font-lock-add-keywords 'emacs-lisp-mode '((REGEXP SUBEXP (progn ...))))
    みたいな感じでいいんじゃないのか。

    307 = :

    >>304
    > - っつーか t にしててもところどころにしか色付かない。jit-lock だから?
    my-font-lock-parse-lisp で、
    (and func
    (or (byte-code-function-p func)
    (subrp func)))
    が nil になったときにそのまま nil を返しちゃまずい。
    もう一回探さないとそれ以降に色が付かないぞ。

    308 = :

    >>306
    最初そっちでやっててリストの先頭に登録されるのが嫌だったんですが新ため
    て見たら APPEND ってフラグがありますね。そっちに変更してみました。

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

    とりあえずそれなりに色付くようになりました。どもー。

    309 = :

    しつこくてスマン。間違いがあったので訂正。
    >>304 の condition-case んとこは void-function だけ受けるんじゃ駄目で
    すね。error で受けてやれば全部色付くようになりました。

    310 = :

    >>309
    なんかいろいろ修正があったようなのですが、自分も一度使用してみたいので、
    よかったら修正版 font-lock-test を navi2ch-base64-insert-file してもらえるとうれしいです

    311 = :

    ----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 = :

    >>311 ありがとうございました
    しかし、これは良くできていますね。
    こうやって見てみると自分が普段どれだけ多くのsubrな関数を使用しているのかわかります。
    感謝です。

    313 = :

    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 = :

    >>313
    > minibuffer で作業してるときにたまに message が表示されて
    > 自分が入力してるのが消えるときがあるじゃないですか。

    漏れも、LSDBを入れたらその問題で悩みました。Fontifying... という
    メッセージがじゃまをするので、~/.emacs で (setq font-lock-verbose nil)
    しましたが、こういう手もあったとは。

    315 = :

    >>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 = :

    >>315
    ポインタってポイントのコト?

    317 = :

    結局こんなんになりました。
    これだと視線の上下もないしいい感じ。
    ついでに、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 = :

    なんかいもごめんです。
    さっきのやつの insert のとこを
    (insert "\n" (apply 'format (ad-get-arg 0) (ad-get-args 1))))
    に変えないとダメポです。

    あと、skk と相性がわるいなぁ。

    320 = :

    ~ をエンコードすべき理由が思い当たらないんだけど

    321 = :

    同一性をチェックしたいとか?

    322 = :

    RFC1738 の時代には「+」が unreserved で「~」はエスケープが必要だった。
    後に RFC2396 ができて「+」が reserved になり、「~」は unreserved に
    なった。

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

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

    323 = :

    つまりどれにも準拠してないってことね。

    324 = :

    え?

    325 = :

    発端は wget -x で件の url を取得するとああいったディレクトリを掘るんで、
    それを emacs 側で知りたいってことからでした。
    >>322 氏の解説のように変遷があると既存の関数でズバリな encode を期待す
    るのは無理がありそうですね。自力 encode で納得しときます。
    レスどーもでした。

    327 = :

    そんなんハックとはいえん

    328 = :

    一文字変えるだけ?

    329 = :

    最近Emacsを使うだけの立場から少しいじろうと思って、
    「やさしいEmacs-Lisp講座」など読みました。

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

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

    みなさんはこのギャップをどこで勉強して埋められたのですか?
    よろしければ教えてください。
    そして、こんな自分にどうやって、そして何を勉強してよいのかアドバイスください。
    よろしくお願いします。

    330 = :

    知識に上に下もないと思うけど。

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

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

    その時は分からなくても、何ヶ月後かに調べてみたら、あっさり分かったりするので、
    焦らずに知識を蓄えていくのが一番の近道ではないでしょうか。

    331 = :

    >>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 = :

    >>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 = :

    >>332
    確かにこっちのほうがスマートだね.
    何でオレ, あんなふうに書いたんだろ….

    334 = :

    >>330-333
    ありがとうございます!あれから少し探してみたのですが、
    どうも各モードにどんな変数があるかをInfoで見つけて、
    それをいじるというのがカスタマイズの初歩のようですね。

    335 = :

    diredモードで拡張子ごとに色を付けたいんですけどどうやったらいいですか?

    336 = :

    >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 = :

    お~、ありがとうございます。
    バッチリ動きました。
    ただexeにboldが効いてなかった様な気も・・。
    Fontlockの設定とかが原因でboldに気が付かなかっただけかな。
    boldを色指定に変えて使ってます。

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

    つーかemacs楽しいですね。時間足りないw
    ある程度Lisp覚えてがんがんカスタマイズできるようになりたいな。

    338 = :

    >>337
    > 拡張子だけに色を付けるとなると相当面倒ですか?

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

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

    > つーかemacs楽しいですね。時間足りないw
    > ある程度Lisp覚えてがんがんカスタマイズできるようになりたいな。
    ガン(゚д゚)ガレ

    339 = :

    すいません、キーバインドの方法について質問させてください。
    shift+rightにother-windowを割り当てたいのですが
    ;(describe-keyでは"ESC [ d"と表示されます。)
    うまくいきません。global-set-key で
    \M-[-d とか [M-[-d] や [ESC]-[-d等を試してみたのですがどれもだめでした。
    ESC [ dはどう表記したらいいのでしょうか?

    341 = :

    shift+right と right が一緒になってるかどうかの確認の方法が分からないのですが
    (何かにバインドして確認しようにもバインドの方法が分からない)
    describe-keyをすると

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

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




    343 = :

    おお、いけました。ありがとうございます。
    shift+upでバッファ間を移動しまくっております。
    previous-bufferみたいな関数あるかと思ったんですけどないみたいですね。残念。
    書くスキルないのはもっと残念です。

    どこで質問するか迷ったんですけどやっぱりスレ違いでしたか。
    emacsスレで聞けばよかったです。
    ありがとうございました。

    344 = :

    >>343
    > shift+upでバッファ間を移動しまくっております。
    > previous-bufferみたいな関数あるかと思ったんですけどないみたいですね。残念。

    バッファっつーか、ウィンドウ間を移動したいんだよね?
    windomove.el がいいんじゃないかと。

    346 = :

    そうか。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 = :

    超高速移動という響き,イイ!!

    348 = :

    どもども。いや、ホント楽になりました。
    C-xo連発してたのがうそみたいです。

    349 = :

    一回のキー操作に複数の手続きを割り当てたいんですけど、例えば
    (global-set-key "\C-cg" '(lambda () (begin
    (forward-char)
    (backward-char)))
    これで一文字進んで一文字戻る(なにも起こらない)を想定してるんですが、動いてくれません
    普通(global-set-key KEY COMMAND)でCOMMANDにはシンボルを想定してるみたいなんですが、
    複数同時に渡せないし...


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / emacs一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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