私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
【叩かれて】Emacs Lisp道場【強くなれ】
emacs スレッド一覧へ / emacs とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 : ○
レスフィルター : (試験中)
みなさん、乙です。
コードの中で読み易さを上げるためダブルクオート中の文字列を改行して書きたいのですが、
その改行自体はコード上では無効にしたいのですが、どうすればいいですか?
例
(message "
listA,
listB,
listC")
これが以下のようにmini-buffer に出力して貰いたいのですが、
listA,listB,listC
そんな方法ありますか?
コードの中で読み易さを上げるためダブルクオート中の文字列を改行して書きたいのですが、
その改行自体はコード上では無効にしたいのですが、どうすればいいですか?
例
(message "
listA,
listB,
listC")
これが以下のようにmini-buffer に出力して貰いたいのですが、
listA,listB,listC
そんな方法ありますか?
こんなのがあった。
(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 @@@@
つづく。。
よろしくお願いいたします。
(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 @@@@
つづく。。
よろしくお願いいたします。
>>955
吾はお前のレスをほとんど読んでいないが、リストの内容をキルリングに入れたいのであれば
関数の最後あたりに (kill-new (format "%S" L)) としておけ (Lはリスト)。
>>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))))))
やりたいのはこういうことかな? 入門書やマニュアル読んでるうちに書けるようになると思うよ。
(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))))))
Visual Studio, Office, Internet Explorer があるこの時代の (emacs-)w3m の存在意義を200字以内に書け。
>>961
白痴みてーにマウスをカチャコチョclick!click!とかしねーですむべ?
白痴みてーにマウスをカチャコチョclick!click!とかしねーですむべ?
("abc" "def" "ghi") のどれかが
"de" を含むなら t 含まないなら nil を返す関数を書きたかったのですが
↓まで書いて力尽きました…。
(mapcar (lambda (f)
(if (string-match "de" f) t))
'("abc" "def" "ghi"))
戻り値の論理和をとればうまくいくんじゃないかと思ったんですが
logior は引数としてinteger しかとらないし
真偽値に対して論理和を行う関数は見つけられませんでした…。
どうすればできるのかアドバイスお願いします
"de" を含むなら t 含まないなら nil を返す関数を書きたかったのですが
↓まで書いて力尽きました…。
(mapcar (lambda (f)
(if (string-match "de" f) t))
'("abc" "def" "ghi"))
戻り値の論理和をとればうまくいくんじゃないかと思ったんですが
logior は引数としてinteger しかとらないし
真偽値に対して論理和を行う関数は見つけられませんでした…。
どうすればできるのかアドバイスお願いします
(defun hoge (re list)
(catch :loop
(dolist (x list)
(if (string-match re x)
(throw :loop t)))))
(catch :loop
(dolist (x list)
(if (string-match re x)
(throw :loop t)))))
(require 'cl)
(not
(apply 'every
`(null ,(mapcar (lambda (x)
(if (string-match "de" x) t))
'("abc" "def" "ghi")))))
こんなのを書いてみた。complementって無いのね。
(not
(apply 'every
`(null ,(mapcar (lambda (x)
(if (string-match "de" x) t))
'("abc" "def" "ghi")))))
こんなのを書いてみた。complementって無いのね。
>>968 everyよりはsomeじゃない?
わざわざ cl 使わなくてもできるんじゃね?
>>967
とか,
(dolist (i '("abc" "def" "ghi") nil)
(when (string-match "de" i)
(return t)))
とか...
>>967
とか,
(dolist (i '("abc" "def" "ghi") nil)
(when (string-match "de" i)
(return t)))
とか...
(not (null (string-match "de" (mapconcat 'identity '("abc" "def" "ghi") "¥0"))))
Lispレベルでループしないし、string-matchも1回しか実行しないから、
データによってはこんな風にした方が速いかもよ。
Lispレベルでループしないし、string-matchも1回しか実行しないから、
データによってはこんな風にした方が速いかもよ。
>>971 returnはcl
>>976
昔は cl だったけど今は標準ライブラリだよ。
http://www.gnu.org/software/emacs/manual/html_node/elisp/Iteration.html#index-dolist-535
昔は cl だったけど今は標準ライブラリだよ。
http://www.gnu.org/software/emacs/manual/html_node/elisp/Iteration.html#index-dolist-535
みなさんありがとうございます
色々な書き方があるのですね
ただ、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 についてはおいおい調べる事にします
ありがとうございました
色々な書き方があるのですね
ただ、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 についてはおいおい調べる事にします
ありがとうございました
sageてなかった…
もう必要ないかもしれないけど、self-evaluatingな要素しかないリスト(nilとtしかない場合を含む)についての論理和なら、(eval (cons 'or LIST))という手もある。
もう必要ないかもしれないけど、self-evaluatingな要素しかないリスト(nilとtしかない場合を含む)についての論理和なら、(eval (cons 'or LIST))という手もある。
>>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版が速い。
>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版が速い。
∩_
〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ <こいつ最高にアホ
彡、 |∪| /
/ __ ヽノ /
(___) /
〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ <こいつ最高にアホ
彡、 |∪| /
/ __ ヽノ /
(___) /
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / emacs スレッド一覧へ
みんなの評価 : ○類似してるかもしれないスレッド
- 【熱く】お前のEmacsにはまった理由【語れ】 (577) - [36%] - 2021/8/28 17:30 ○
- 「Emacsは消滅すべき」、ゴスリング氏 (127) - [17%] - 2023/1/12 15:45
トップメニューへ / →のくす牧場書庫について