のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,595,267人
昨日: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
251 : 名無しさん@お腹 - 04/09/07 14:16 (-5,-30,-42)
先生!
このマンコ関数はどうでしょう?
(defun manko(i)
(cond ((> i 0) (insert (format "Sequence%d\n" i)) (manko (- i 1)))
(t nil)))
(manko 10)
252 : 名無しさん@お腹 - 04/09/07 23:36 (-6,-29,-1)
number-sequence
253 : 249 - 04/09/08 11:31 (-7,-30,-166)
>>251

ありがとう。
でも、こういわれてしまう…。

Debugger entered--Lisp error: (void-function manko)
(manko 10)
eval((manko 10))
eval-last-sexp-1(nil)
eval-last-sexp(nil)
* call-interactively(eval-last-sexp)
recursive-edit()
byte-code("堰ニ!秩ー∨ 秩ー¬!秩ッ⊃n?
254 : 名無しさん@お腹 - 04/09/09 21:01 (-5,-30,-16)
(do ((i 1 (1+ i)) ((> i 10))
(insert (format "Sequence%d\n" i)))
255 : 名無しさん@お腹 - 04/09/09 22:02 (+57,+29,-2)
ちゃんと書きなよ。
しかし do なんか使わなくても。
256 : 249 - 04/09/09 22:37 (-18,-30,-176)
>>254

環境が悪いのでしょうか。

Debugger entered--Lisp error: (invalid-function (i 1 (1+ i)))
((i 1 (1+ i)) ((> i 10)) (insert (format "Sequence%d\n" i)))
eval(((i 1 (1+ i)) ((> i 10)) (insert (format "Sequence%d\n" i))))
eval-last-sexp-1(nil)
eval-last-sexp(nil)
* call-interactively(eval-last-sexp)
257 : 名無しさん@お腹 - 04/09/09 23:43 (+65,+29,-11)
>>249
そもそも「うまく動」いたらどうなるんだ?
期待してる結果が書いてない。
258 : 名無しさん@お腹 - 04/09/10 01:03 (+4,-30,-35)
(require 'cl)

(do ((i 1 (1+ i))) ((> i 10))
(insert (format "Sequence%d\n" i)))
259 : 名無しさん@お腹 - 04/09/10 09:17 (+57,+29,-7)
なんか覚えにくい構文だな。
まだloopのほうが、という気がした。
260 : 名無しさん@お腹 - 04/09/10 10:12 (+18,-29,-10)
eldocでミニバッファに出るから覚えなくても書ける。
でも普通はdotimesなんかを使うとは思うんだが。
261 : 名無しさん@お腹 - 04/09/10 11:14 (+11,-6,+0)
エコーエリア
262 : 249 - 04/09/10 17:28:00 (+22,-30,-104)
>>258

ありがとう!!

(require 'cl)

これが不足でした。

(do ((i 1 (1+ i))) ((> i 10))
(insert (format "Sequence%d\n" i)))

(do ((i 1)) ((> i 10))
(insert (format "Sequence%d\n" i))
(setq i (1+ i)))

どちらでも動きました。


しかし。
doなんてとか、loopのほうが、っていうなら、
サンプルを掲示してみてはどうでしょう。
言い合いをしているだけでは何にもならないじゃないですか。
263 : 名無しさん@お腹 - 04/09/10 17:48:24 (+57,+29,-28)
「してくれないでしょうか?」の間違いではなくて?
個人的には、何故doでやってみようとしたかに興味が少しある。
264 : 260 - 04/09/10 18:49:50 (+31,+29,-33)
>>262
調べろよ、それくらい。
見て猿真似できるサンプルが出てこないと何も出来ない池沼なのかよ。
キーワードが出てくるだけで十分だろ。
# cl-macsにloopがあるとは知らんかった

そもそも「言い合い」になるほど骨のある内容じゃなかったし。
265 : 名無しさん@お腹 - 04/09/10 19:05:04 (+10,+23,-3)
池沼というのは、マンコ関数でひっかかってる時点で明らか。>>253
266 : 260 - 04/09/10 19:15:10 (+57,+29,+0)
言われてみればその通りだった。orz
267 : 名無しさん@お腹 - 04/09/12 01:45:39 (-2,-30,-19)
(let ((i 0))
(while (< i 10)
.....
))
とかの方が分かりやすくて好きなんだけどな
268 : 名無しさん@お腹 - 04/09/12 04:07:53 (+0,+0,+0)
viperで、vimの"*"コマンドを実装した。

(define-key viper-vi-global-user-map "*" 'viper-exec-word-search-nearest-cursor)
(define-key viper-vi-global-user-map "#" '(lambda () (interactive) (viper-exec-word-search-nearest-cursor t)))
(define-key viper-vi-global-user-map "g*" '(lambda () (interactive) (viper-exec-word-search-nearest-cursor nil t)))
(define-key viper-vi-global-user-map "g#" '(lambda () (interactive) (viper-exec-word-search-nearest-cursor t t)))
(defun viper-exec-word-search-nearest-cursor (&optional reverse unbound)
"Emulate vim \"*\" command."
(interactive)
(let ((word (viper-surrounding-word 1 1)))
(when (stringp word)
(setq viper-s-string (if unbound word (concat "\\<" word "\\>")))
(setq viper-s-forward (not reverse))
(setq viper-search-history (cons viper-s-string viper-search-history))
(setq viper-intermediate-command 'viper-exec-word-search-nearest-cursor)
(viper-search viper-s-string viper-s-forward 1))))
269 : 名無しさん@お腹 - 04/09/12 09:49:16 (+0,-30,-68)
>>268
おーなかなかいいすね。使わせてもらいまっさ。
でも g + hogehoge は viper 流の (viper-buffer-search-enable) の方が好き :-)

;; しかし viper 異様に重いよなあ…。ボクのマシンがボロなだけ?(´・ω・`)
270 : 名無しさん@お腹 - 04/09/12 14:11:08 (-2,-30,-70)
再帰好きなelisperの人は
max-lisp-eval-depth と max-specpdl-size に
どのくらいの値を設定してるの?

271 : 268 - 04/09/18 10:06:39 (+0,+0,+0)
www.vim.orgで公開されているscriptで定番のやつの実装。
;;; alternate files quickly
(defvar a-extension-map
'(("c" . "h") ("cc" . "h") ("h" . ("c" "cc")) ("emacs" . "viper") ("viper" . "emacs"))
"The corresponding associative list of extensions.")
(defun alternate-files-quickly ()
"A few of quick commands to swtich between source files and header files quickly."
(interactive)
(if buffer-file-name
(let ((ext (file-name-extension buffer-file-name))
(base (file-name-sans-extension (file-name-nondirectory buffer-file-name)))
data a_ext a_file)
(when (and ext base (< 0 (length ext)))
(setq data (cdr (assoc ext a-extension-map)))
(cond ((stringp data)
(setq a_ext data)
(when (< 0 (length a_ext))
(setq a_file (concat base "." a_ext))
(when (file-exists-p a_file)
(find-file a_file))))
((listp data)
(catch 'break
(while data
(setq a_ext (car data))
(when (and (stringp a_ext) (< 0 (length a_ext)))
(setq a_file (concat base "." a_ext))
(when (file-exists-p a_file)
(find-file a_file)
(throw 'break t)))
(setq data (cdr data))))))))))
272 : 名無しさん@お腹 - 04/09/20 17:14:26 (+3,-30,-190)
;;; filecache の対象を load-path にすると、
;;; .el 以外のファイルもついてきて面倒なので以外を消す
;;; 必要なのはあとで追加する

(defun file-cache-not-el-list ()
(let (nelist)
(dolist (list file-cache-alist)
(catch 'quit
(unless (string-match "^.*\\.el\\'" (car list))
(setq nelist (cons (car list) nelist))
(throw 'quit nil))))
nelist))
(file-cache-add-directory-list load-path)
(file-cache-delete-file-list (file-cache-not-el-list))
(file-cache-add-file-list '("~/.emacs" "~/.skk" "~/.wl" "~/.folders" "~/.bashrc"))
273 : 名無しさん@お腹 - 04/09/20 17:58:29 (+36,-30,-76)
cach - throw は何のため?

(defun file-cache-not-el-list ()
(delq nil (mapcar (lambda (list)
(unless (string-match "\\.el\\'" (car list))
(car list)))
file-cache-alist)))
274 : 名無しさん@お腹 - 04/09/20 18:05:39 (+62,+29,-3)
>>273
叩かれて強くなるためです
勉強になりました
275 : 名無しさん@お腹 - 04/10/24 22:51:00 (+37,-30,-81)
30 分ほど考えたり調べたりしましたが,わからなかったので質問させてください.

(list (list '("A" . "1") '("B" . "2"))
(list '("C" . "3"))
(list '("D" . "4") '("E" . "5")))



(list '("A" . "1")
'("B" . "2")
'("C" . "3")
'("D" . "4")
'("E" . "5"))


のように展開(?)するにはどうしたら良いのでしょうか?
276 : 名無しさん@お腹 - 04/10/24 23:02:53 (+84,+28,-7)
何をどう調べたり考えたりしたのか書いた方がいいと思うよ。
これこれを試してみたとか。

ヒントとしては、
mapc + append
277 : 名無しさん@お腹 - 04/10/24 23:07:21 (+37,+14,-2)
宿題なのかなー?
278 : 名無しさん@お腹 - 04/10/24 23:09:05 (+57,+29,-11)
展開後(?)の表記のしかたが悪い。
それを評価した結果になってほしいのか、まさにそれが欲しいのか。
279 : 名無しさん@お腹 - 04/10/24 23:14:48 (-14,-30,-35)
>>275
(apply #'append
(list (list '("A" . "1") '("B" . "2"))
(list '("C" . "3"))
(list '("D" . "4") '("E" . "5"))))
280 : 名無しさん@お腹 - 04/10/24 23:16:21 (+45,+27,-1)
>>275
http://pc5.2ch.net/test/read.cgi/unix/1083394705/405
これ書いたやつだろ。

>>276
mapcは違うと思うぞ。
281 : 276 - 04/10/24 23:17:46 (+63,+29,-14)
>>280
applyが思い浮かばなかったのさ……
283 : 276 - 04/10/24 23:59:29 (-7,-30,-34)
>>282
#'はemacs lispではほとんど'と一緒。関数にのみ使うと思っておいて。
refrence manualだけじゃなくてemacs-lisp-intro は読んだ?
284 : 275 - 04/10/25 00:01:12 (+57,+29,-5)
>> 283
まだ読んでません.どうも基礎がわかってないみたいなので,まずは
そちらから読んでみます.お世話になりました.
285 : 名無しさん@お腹 - 04/11/09 12:28:51 (+19,-30,-149)
(defun my-w3m-view-url-with-external-browser ()
"emacs-w3mから外部ブラウザを起動する"
(interactive)
(let ((url (or (w3m-anchor)
(ffap-url-at-point)
w3m-current-url)))
(message "Browsing <%s>..." url)
(start-process "external-browser"
nil
"C:/Program Files/Mozilla Firefox/firefox.exe"
url)))

FireFoxを閉じないと、↓こんなメッセージが出てEmacsも閉じられない・・・

Active processes exist; kill them and exit anyway? (y or n)

どなたかアドバイスをお願いします。

286 : 名無しさん@お腹 - 04/11/09 12:45:52 (+10,-29,-25)
>>285
unix なら PROGRAM に & を付ければ? って話なんだろうけど。
firefox.exe のオプションか別コマンドで「firefox に url を渡してする終
了する」ってなことができるんじゃないの?
287 : 名無しさん@お腹 - 04/11/09 13:27:30 (+4,-29,-8)
process-kill-without-query じゃない?
288 : 名無しさん@お腹 - 04/11/09 14:01:40 (+48,+25,+0)
ごもっとも orz
289 : 名無しさん@お腹 - 04/11/09 14:19:05 (+19,-30,-77)
Emacs 終了時に Firefox も終了したいわけじゃないんだよね。
プロセスをバックグラウンドで動かしっぱなしにするには、
BUFFER 引数を 0 にして call-process を
(call-process "C:/Program Files/Mozilla Firefox/firefox.exe" nil 0 nil url)
こんな感じで呼び出してやればいい。
290 : 289 - 04/11/09 14:21:42 (+16,-30,-35)
う、navi2ch のデフォルトフィルタにひっかかった。
>>289
( call-process "C:/Program Files/Mozilla Firefox/firefox.exe" nil 0 nil url)
291 : 285 - 04/11/09 14:57:44 (+4,-30,-221)
レスありがとうございます。

>>286
firefoxのオプションを調べてみたんですが、適切なものが見つかりませんでした。

>>287
説明が足りなかったようで、すいません。
僕がやりたかったのは、emacsから起動したfirefoxは閉じずに
emacsだけを終了するというものです。
process-kill-without-queryを使ったら、問い合わせなしにfirefoxも
終了されてしまったので、どうやら僕がやりたいこととは違ったようです。

>>290
おおっ、うまくいきました。
ちなみにコードは以下のように変更しました。

(defun my-w3m-view-url-with-external-browser ()
"emacs-w3mから外部ブラウザを起動する"
(interactive)
(let ((url (or (w3m-anchor)
(ffap-url-at-point)
w3m-current-url)))
(message "Browsing <%s>..." url)
( call-process "C:/Program Files/Mozilla Firefox/firefox.exe" nil 0 nil url)))

どうもありがとうございました。
292 : 名無しさん@お腹 - 04/11/09 23:32:45 (+0,-29,-25)
>>290
start-process と call-process の第3引数を0にするのってそんな違いがあっ
たのか。今までどっちにするか気分で決めてた…(´Д`)
293 : 名無しさん@お腹 - 04/11/13 13:00:32 (+33,-1,-56)
8進数を10進数に変換する関数とかあったりする?
自前でゴリゴリやるしかないスか?
逆は format でできるんだけど…。
294 : 名無しさん@お腹 - 04/11/13 13:08:06 (+11,-30,-31)
>>293
(string-to-number (number-to-string 10) 8)
=> 8
(string-to-number (number-to-string 20) 8)
=> 16
295 : 名無しさん@お腹 - 04/11/13 14:43:54 (+0,-29,-8)
>>294
がーん、string-to-number って基数を指定できるのか、知らなかった。
ありがとう。
296 : 名無しさん@お腹 - 04/11/21 21:51:33 (+3,-30,-179)
(let ((y 1.2))
(while (>= y -1.2)
(let ((x -2.0))
(while (<= x 1.0)
(let ((zx x) (zy y) (v 126))
(while (and (< (+ (* zx zx) (* zy zy)) 4.0) (> v 32))
(let ((temp (+ (* 2 zx zy) y)))
(setq zx (+ (* zx zx) (- (* zy zy)) x))
(setq zy temp))
(setq v (- v 1)))
(insert v))
(setq x (+ x 0.04))))
(insert "\n")
(setq y (- y 0.1))))
297 : 名無しさん@お腹 - 04/11/27 21:42:29 (+13,-29,-58)
call-process を呼ぶ時って apply 使って呼んでるコードが多いんだけど、ど
うしてなの?
引数をリストで渡せるから? とか思ったんだけどそうでない場合でも apply
使ってることあるしなあ。なぜざんしょ?
298 : 名無しさん@お腹 - 04/11/28 13:55:08 (+86,+24,-26)
元々は直接呼んでたのが、何らかの必要があって apply を使うようになり、
その後の変更で apply である必要が無くなったんじゃないの?
299 : 名無しさん@お腹 - 04/12/04 07:28:21 (+13,-30,-51)
(pol2str "5X^2-3") >>> ((5 2) (-3 0))

入力がSTRINGで出力をリスト形式で出すようなpol2strを定義したいんですけど、
どうかいたらいいかわかります?
反対の作業はなんとなくできたんだけどこれはわからなかったです。
300 : 297 - 04/12/04 08:42:10 (+69,+29,-2)
>>298
遅くなったけどサンクス。そんな経緯があったのか。
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / emacs スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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