のくす牧場
コンテンツ
牧場内検索
カウンタ
総計: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
    951 : 名無しさん@お腹 - 2007/11/29(木) 10:04:56 (+11,-30,-57)
    みなさん、乙です。

    コードの中で読み易さを上げるためダブルクオート中の文字列を改行して書きたいのですが、
    その改行自体はコード上では無効にしたいのですが、どうすればいいですか?


    (message "
    listA,
    listB,
    listC")

    これが以下のようにmini-buffer に出力して貰いたいのですが、

    listA,listB,listC

    そんな方法ありますか?
    952 : 名無しさん@お腹 - 2007/11/29(木) 11:08:37 (+28,-29,-8)
    >>951
    (message (concat
    "listA,"
    "listB,"
    "listC"))
    953 : 名無しさん@お腹 - 2007/11/29(木) 12:39:04 (+0,-29,-4)
    >>951
    (message "\
    listA,\
    listB,\
    listC")
    954 : 名無しさん@お腹 - 2007/11/30(金) 05:59:54 (+51,+20,-2)
    >>952, 953
    サンクス。C と同じことできたのね。試せよオレ。
    955 : 最近始めたEMA - 2007/12/24(月) 01:01:38 (+16,-30,+0)
    こんなのがあった。
    (defvar zic-new-shell-buffer 0)
    (defun zic-create-shell (n)
    (interactive "P")
    (shell)
    (if n (setq zic-new-shell-buffer n))
    (while
    (get-buffer (concat ""
    (int-to-string zic-new-shell-buffer)))
    (setq zic-new-shell-buffer (1+ zic-new-shell-buffer)))
    (rename-buffer
    (concat "" (int-to-string zic-new-shell-buffer))))
    (global-set-key "\C-cz" ' zic-create-shell)
    上とは関係ないけど、ご教授をよろしくお願いいたします。
    以下のデータ(リージョン)を呼んで ("XXX" "YYY" "ZZZ")のように
    kill-ringに入れる関数の作り方教えてください。とうか作ってください。
    他力本願ですみません。
    ほげほげ、HOGEHOGE、ホゲホゲはデータの中に一回しか出てきません。
    ほげほげ、HOGEHOGE、ホゲホゲは行の先頭にあるとはあkぎりません。
    XXX、YYY、ZZZは、ほげほげ、HOGEHOGE、ホゲホゲの直後にあり、
    XXX,YYY,ZZZ文字列長さは不定です(20文字以内)。
    "ほげほげ"を探し、”XXX”(次のブランクの手前まで)をkill-ringに格納したいのです。
    つまり、複数の特定文字列の後ろにある数文字の切り出しを自動化け
    したいわけです。
    検索ワードのほげほげ、HOGEHOGE、ホゲホゲは,alistに事前登録でかまいません。
    ●データ(リージョン)
    ほげほげ:XXX @@@@
    HOGEHOGE:YYY @@@@
    ホゲホゲ:ZZZ @@@@
    つづく。。
    よろしくお願いいたします。
    956 : 名無しさん@お腹 - 2007/12/24(月) 01:11:46 (+57,+29,-1)
    分かりやすく書こうという努力が見られない
    957 : Zeno ◆5 - 2007/12/24(月) 10:28:04 (+4,-30,-50)

    >>955
    吾はお前のレスをほとんど読んでいないが、リストの内容をキルリングに入れたいのであれば
    関数の最後あたりに (kill-new (format "%S" L)) としておけ (Lはリスト)。

    958 : 名無しさん@お腹 - 2007/12/24(月) 18:52:35 (+5,-30,-250)
    >>955
    やりたいのはこういうことかな? 入門書やマニュアル読んでるうちに書けるようになると思うよ。
    (defvar hogehoge-keys '("ほげほげ" "HOGEHOGE" "ホゲホゲ"))
    (defun hogehoge (start end)
    (interactive "r")
    (let (result)
    (save-excursion
    (save-restriction
    (narrow-to-region start end)
    (dolist (x hogehoge-keys)
    (goto-char (point-min))
    (when (re-search-forward (concat x ":\\(.+?\\) ") nil t)
    (push (match-string-no-properties 1) result)))))
    (when result (kill-new (format "%S" (nreverse result))))))
    959 : 名無しさん@お腹 - 2007/12/25(火) 07:55:32 (-1,-29,-6)
    firefox があるこの時代の (emacs-)w3m の存在意義を200字以内に書け。
    960 : 名無しさん@お腹 - 2007/12/25(火) 08:16:18 (+45,+22,+0)
    悪い、↑のは誤爆だ。
    961 : 名無しさん@お腹 - 2007/12/25(火) 13:31:26 (+32,-30,-14)
    Visual Studio, Office, Internet Explorer があるこの時代の (emacs-)w3m の存在意義を200字以内に書け。
    962 : 名無しさん@お腹 - 2007/12/26(水) 15:55:05 (-3,-26,+1)
    elinks><;
    963 : 名無しさん@お腹 - 2007/12/31(月) 01:25:06 (-1,-30,-40)
    >>961
    slime 使って lisp を coding/debug している時に Common Lisp Hyper Spec を
    読むために存在している.
    964 : 名無しさん@お腹 - 2007/12/31(月) 19:03:33 (+55,+23,-32)
    >>961
    白痴みてーにマウスをカチャコチョclick!click!とかしねーですむべ?
    965 : 名無しさん@お腹 - 2008/01/01(火) 14:30:07 (+34,+11,-2)
    激しくニッチな用途ワロタ
    966 : 名無しさん@お腹 - 2008/01/02(水) 14:33:53 (+13,-30,-120)
    ("abc" "def" "ghi") のどれかが
    "de" を含むなら t 含まないなら nil を返す関数を書きたかったのですが
    ↓まで書いて力尽きました…。

    (mapcar (lambda (f)
    (if (string-match "de" f) t))
    '("abc" "def" "ghi"))

    戻り値の論理和をとればうまくいくんじゃないかと思ったんですが
    logior は引数としてinteger しかとらないし
    真偽値に対して論理和を行う関数は見つけられませんでした…。

    どうすればできるのかアドバイスお願いします
    967 : 名無しさん@お腹 - 2008/01/02(水) 15:22:07 (+4,-30,-31)
    (defun hoge (re list)
      (catch :loop
        (dolist (x list)
          (if (string-match re x)
              (throw :loop t)))))
    968 : 名無しさん@お腹 - 2008/01/02(水) 15:32:10 (+13,-30,-89)
    (require 'cl)
    (not
    (apply 'every
    `(null ,(mapcar (lambda (x)
    (if (string-match "de" x) t))
    '("abc" "def" "ghi")))))
    こんなのを書いてみた。complementって無いのね。
    969 : 名無しさん@お腹 - 2008/01/02(水) 15:32:44 (-1,-29,-21)
    catch/throwやclのblock/return
    970 : 名無しさん@お腹 - 2008/01/02(水) 15:37:45 (-1,-29,-2)
    >>968 everyよりはsomeじゃない?
    971 : 名無しさん@お腹 - 2008/01/02(水) 16:39:54 (+5,-30,-45)
    わざわざ cl 使わなくてもできるんじゃね?
    >>967
    とか,
    (dolist (i '("abc" "def" "ghi") nil)
    (when (string-match "de" i)
    (return t)))
    とか...
    972 : 名無しさん@お腹 - 2008/01/02(水) 16:58:36 (+41,-30,-48)
    (not (null (string-match "de" (mapconcat 'identity '("abc" "def" "ghi") "¥0"))))
    Lispレベルでループしないし、string-matchも1回しか実行しないから、
    データによってはこんな風にした方が速いかもよ。
    973 : 名無しさん@お腹 - 2008/01/02(水) 17:01:14 (+15,-14,-1)
    >>972
    目から鱗。 mapconcat なんてものがあったんだ
    974 : 名無しさん@お腹 - 2008/01/02(水) 18:01:14 (+52,+29,-15)
    この発想には脱帽。
    975 : 名無しさん@お腹 - 2008/01/02(水) 19:45:53 (-6,-29,-12)
    >>971 returnはcl
    976 : 名無しさん@お腹 - 2008/01/02(水) 22:31:07 (+2,-29,+0)
    dolist も cl だったりする。
    977 : 名無しさん@お腹 - 2008/01/02(水) 22:52:32 (-1,-29,-9)
    >>976
    昔は cl だったけど今は標準ライブラリだよ。
    http://www.gnu.org/software/emacs/manual/html_node/elisp/Iteration.html#index-dolist-535
    978 : 名無しさん@お腹 - 2008/01/02(水) 23:20:29 (-1,-29,-27)
    ElispがCL相当になるのはいつの日か・・・lexbindはまだか
    979 : 966 - 2008/01/03(木) 02:49:26 (+5,-30,-156)
    みなさんありがとうございます
    色々な書き方があるのですね

    ただ、scratch で >>968 さんのコードを実行しても
    every がないと言われてしまい cl の読み込みがうまくいかず動かせません…。
    load-path に cl.el のあるディレクトリは入ってます

    よくわからないので色々と

    (load "cl.el")
    (load "cl-extra.el")
    (require 'cl)
    (require 'cl-extra)

    こんな感じで追加してみましたがやはり(void-function every)で怒られてしまいます
    バージョンは22.1.50.1 (i386-mingw-nt5.1.2600)です

    >>972さんのはもちろん問題なく動きますので
    これを使わせていただく事にします

    cl.el についてはおいおい調べる事にします
    ありがとうございました
    980 : 972 - 2008/01/03(木) 16:22:35 (+6,-30,-53)
    sageてなかった…
    もう必要ないかもしれないけど、self-evaluatingな要素しかないリスト(nilとtしかない場合を含む)についての論理和なら、(eval (cons 'or LIST))という手もある。
    981 : 名無しさん@お腹 - 2008/01/03(木) 16:24:41 (+5,-25,-12)
    >>980
    eval は遅い
    982 : 972 - 2008/01/03(木) 17:36:50 (+3,-30,-172)
    >>981
    >eval は遅い
    一般にはね。でもこのくらい単純な例になるとそうとも言えない。
    (defun test (x)
    (eval (cons 'or x)))
    (defun test (x)
    (while (and x (not (car x)))
    (setq x (cdr x)))
    (car x))
    両方バイトコンパイルして比較すると、
    (dotimes (i 10000000) (test '(nil nil nil nil t nil nil nil nil t)))
    はwhile版が速いけど、
    (let ((x (make-list 10000 nil))) (dotimes (i 10000) (test x)))
    はeval版が速い。
    983 : 名無しさん@お腹 - 2008/01/04(金) 11:10:52 (+55,+27,-17)
    静的言語脳だからeval使うと負けと思ってる
    984 : 名無しさん@お腹 - 2008/01/04(金) 16:51:25 (+26,+3,-12)
    evalでエバるなよ?!
    985 : 名無しさん@お腹 - 2008/01/04(金) 17:28:14 (-2,-30,-24)
               ∩_
               〈〈〈 ヽ
              〈⊃  }
       ∩___∩  |   |
       | ノ      ヽ !   !
      /  ●   ● |  /
      |    ( _●_)  ミ/ <こいつ最高にアホ
     彡、   |∪|  /
    / __  ヽノ /
    (___)   /
    986 : 名無しさん@お腹 - 2008/01/04(金) 18:32:09 (+13,-14,-3)
    そっか、関数じゃないからfuncallとか使えないわけだな
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / emacs スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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