のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,878人
昨日: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

    502 = :

    そだね
    いろんな日本語のinfoを捜して、
    それ読むだけでもいいんじゃない

    504 = :

    文字列で与えられたシンボルを束縛したいんだけどどうやればいいでしょうか。

    font-lock-mode => t

    (let* ((bound-str "font-lock-mode")
    (intern-soft bound-str))
    font-lock-mode)
    => t

    これじゃ駄目だし orz

    505 = :

    eval すればいい
    (let ((bound-str "font-lock-mode"))
    (eval `(let ((,(intern bound-str) nil))
    font-lock-mode)))
    => nil
    よく使うならマクロに
    (defmacro hoge (str value &rest body)
    (let ((sym (intern (eval str))))
    `(let ((,sym ,value))
    ,@body)))
    (let ((bound-str "font-lock-mode"))
    (hoge bound-str nil font-lock-mode))
    => nil

    506 = :

    >>505
    おおー、できました。
    eval すりゃいいのか…ってまだよく理解できてないけど。感謝。

    507 = :

    eval 必要ないみたい。
    (defmacro let-string (str-value-list &rest body)
    `(let ,(mapcar (lambda (sval)
    (list (intern (car sval)) (cadr sval)))
    str-value-list) ,@body))
    (let-string (("font-lock-mode" nil)
    ("test" 11))
    (cons font-lock-mode test))
    => (nil . 11)

    508 = :

    eval 無いと
    (let ((bound-str "font-lock-mode")) (let-string ((bound-str nil)) ...))
    みたいに使えないよね。
    文字列リテラル書けるのなら最初からシンボルにすればいいんだから、
    よそから持って来た文字列に値を束縛したいって話なんじゃないの?

    509 = :

    すみません、書いてから気付きました。

    510 = :

    hoge という関数が定義されているか調べるにはどのように書けばよいのでしょ
    うか?

    512 = :

    Linux板のAtok Wnnスレで放置されたんで作ってみた。
    (defun to-hankaku ()
    "change current word from zenkaku to hankaku"
    (interactive)
    (save-excursion
    (push-mark)
    (backward-word 1)
    (japanese-hankaku-region (region-beginning) (region-end))
    (pop-mark)))
    (global-set-key "\M-n" 'to-hankaku)

    どなたか叩いてくだひゃい。
    本当に聞きたいのはWnn7eggで半角カタカナ入力できるか否かなんだが

    513 = :

    普通、関数内部の処理では mark は使わない。
    mark は基本的に、ユーザーが手動で region 指定したり移動したりするためのもの。
    移動コマンドなんかで、あとでユーザーが使えるように push-mark しとくとか、そういうときに使う。

    普段の処理で使うのは marker のほう。
    でもこの場合は、その場で region 指定するだけだから、 marker も使わないで済みそうかな。

    (save-excursion
    (let ((end (point)))
    (backward-word 1)
    (japanese-hankaku-region (point) end)))

    みたいな。

    514 = :

    >>513
    ありがとさんです。regionといっても
    markしなきゃいけないわけじゃないんですね。
    えらくすっきりしました。
    またなんかあったらよろしく

    515 = :

    質問なんですが、例えば(decode-time)の結果のようなリストを
    これまた例えば(sec minute hour day month)のような変数(のリスト)に
    一気に代入するようなコマンドってないもんでしょうか。
    Perlでいう
    ($sec, $minute, $day, $mon, $year) = localtime();
    みたいなイメージなんですが。

    あと、Emacs-Lisp Farm ていうMLがあるようですが
    過去ログって見れないんでしょうか?

    516 = :

    間違った使い方な気がするけど、multiple-value-setqとか?
    ログはMLはいってからコマンドメール投げれば取得できるよ。

    517 = :

    >>515
    (apply (lambda (sec minute hour day month year dow dst zone)
    ...)
    (decode-time))
    とか CL 使うなら
    (destructuring-bind
    (sec minute hour day month year dow dst zone)
    (decode-time)
    ...)

    520 = :



                ユニバーサルな解釈など存在しない為
                 間違った使い方など存在しない


    _________________
    If T is consistent then T !|- R_T
    If T is consistent then T !|- ¬R_T. -- John B. Rosser

    521 = :

    そういう考えだとあらゆる価値が平等に無意味になって
    思考停止に陥るお。

    522 = :

    思考する前に馬鹿を殺そう

    523 = :

    Reply-to:>>521
              知っていた (る) 人の文調に似ている・・・
                 君は吾がそう思っている人物か?

    > そういう考えだとあらゆる価値が平等に無意味になって
    > 思考停止に陥るお。

           人間は無限近くのチョイスを全て吟味するパワーはない為、
          結局はプラグマティク、若しくは他人が選んでいるチョイスを
                     選んでしまう。

       ただ 520 は「Lisp のような自由度の高い -- 故に創造性の必要とされる --
         言語でただ一つの解釈を強要するのは間違っているのではないのか」
                ということを伝えたかっただけだ。

    > Reply-to:>>522
                      お前誰だよ
    _________________
    If T is consistent then T !|- R_T
    If T is consistent then T !|- ¬R_T. -- John B. Rosser

    525 = :

    見えないのが気になるならフィルタ使わないほうがいいよ

    526 = :

    よくわからんがニューハーフに知り合いはいないよ。

    527 = :

    ゴキブリを見て見ぬふりする愚かさ

    528 = :

    今は一匹なんだから叩いてつぶしちゃうよりは、
    どっかに行くのを待ってもらった方がいい。

    529 = :

    Reply-to:>>524 お前もな
    Reply-to:>>526
    > よくわからんがニューハーフに知り合いはいないよ。
                     人違いのようだ

    Reply-to:>>528 お前誰だよ
    _________________
    If T is consistent then T !|- R_T
    If T is consistent then T !|- ¬R_T. -- John B. Rosser

    530 = :

    Reply-to:>>529
                    う   ざ   い

    _________________
    If T is consistent then T !|- R_T
    If T is consistent then T !|- ¬R_T. -- John B. Rosser

    531 = :

    インライン関数を変更した際、
    それを呼出している関数(バイトコンパイル済み)に反映させる
    手軽な方法はないでしょうか?
    いちいち定義してるとこに飛んで評価するのは面倒なもので。

    532 = :

    >>531
    unload-featureとか使えない?
    わたし自身、一度も使った事が無いから
    良く分かんないけど。

    533 = :

    テキストファイルを Emacs でバッチ処理して結果を stdout に吐きたいんです
    が、

    --- testout.el ---
    (defun testout (file)
    (insert-file-contents file)
    ;; なんか処理する とりあえずここではなにもしない
    (princ (buffer-string)))
    --- testout.el ends here ---

    emacs -Q --batch -l testout.el --execute='(testout "in.txt")' > out.txt

    とした時に、in.txt にある日本語が out.txt では化けてしまいます。(各文字
    の頭に '\222' が付くみたい、ascii は大丈夫)

    ちゃんと動かすにはどうすりゃいいでしょうか。

    534 = :

    a) coding systemを設定する。
    b) testout.elの中でout.txtに書く。

    537 = :

    >>534-536
    むむ、write-file するしかないのかあ。フィルタの類ではないとはいえちょっ
    と意外な気も。まあ、関数内でファイルに書いてもなんとかなるのでそうしま
    す。サンクスでした。

    538 = :

    encode-coding-string したものを princ するのはだめか?
    (未確認)

    539 = :

    >>538
    おお、なるほど。

    (princ (encode-coding-string (buffer-string) 'euc-jp))

    でやってみたら大丈夫なようです。エンコードが決め打ちなのが格好悪いです
    が、まぁしょうがないかな。ありがとうございました。

    540 = :

    terminal-coding-systemにすれば?

    541 = :

    >>540
    emacs -Q --batch --execute='(print (terminal-coding-system))'

    で japanese-iso-8bit が返ってきますね。.emacs 読んでなくても大丈夫なの
    か。terminal-coding-system 使うことにします。どうもでした。

    542 = :

    >>541
    ロケール見てるっぽいね。

    $ LC_ALL=C emacs -Q --batch --execute='(print (terminal-coding-system))'

    だと nil だったから。nil の時だけ us-ascii にしておけば問題ないと思う。

    543 = :

    >>539

    入力ファイルと同じ coding-system にしたいのであれば,
    insert-file-contents した直後の last-coding-system-used を
    使うというのはどうだろう。

    544 = :

    Elispを初めて改造してみたのですが
    うまく行きませんでした

    changeが設定されていれば、nonにchangeを入れたいのですが
    以下のように書いたところうまくいきませんでした
    間違っているでしょうか?

    (if change
    (setq non change))

    546 = :

    解決しました
    変更しない場合は
    (setq change ')
    として、変数は作成しておかないとダメなんですね

    変数が無い場合も正しく動作するようにはできないでしょうか?

    547 = :

    質問は上げとけ

    548 = :

    >>543
    なるほど。今回のは元ファイルと常に同じって訳でもなかったんですが、そう
    限定できる場合はいいかもしれませんね。アドバイスどうもです。

    >>546
    よくわからんが

    (and (boundp 'change) change
    (setq non change))

    とか?

    549 = :

    >>546
    そんな構文あるのかー!
    と思って思わず確認しちゃったよ。


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

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


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