私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
【叩かれて】Emacs Lisp道場【強くなれ】
emacs スレッド一覧へ / emacs とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 : ○
レスフィルター : (試験中)
先生!
このマンコ関数はどうでしょう?
(defun manko(i)
(cond ((> i 0) (insert (format "Sequence%d\n" i)) (manko (- i 1)))
(t nil)))
(manko 10)
このマンコ関数はどうでしょう?
(defun manko(i)
(cond ((> i 0) (insert (format "Sequence%d\n" i)) (manko (- i 1)))
(t nil)))
(manko 10)
>>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?
ありがとう。
でも、こういわれてしまう…。
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?
(do ((i 1 (1+ i)) ((> i 10))
(insert (format "Sequence%d\n" i)))
(insert (format "Sequence%d\n" i)))
>>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)
環境が悪いのでしょうか。
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)
(require 'cl)
(do ((i 1 (1+ i))) ((> i 10))
(insert (format "Sequence%d\n" i)))
(do ((i 1 (1+ i))) ((> i 10))
(insert (format "Sequence%d\n" i)))
eldocでミニバッファに出るから覚えなくても書ける。
でも普通はdotimesなんかを使うとは思うんだが。
でも普通はdotimesなんかを使うとは思うんだが。
>>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のほうが、っていうなら、
サンプルを掲示してみてはどうでしょう。
言い合いをしているだけでは何にもならないじゃないですか。
ありがとう!!
(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のほうが、っていうなら、
サンプルを掲示してみてはどうでしょう。
言い合いをしているだけでは何にもならないじゃないですか。
「してくれないでしょうか?」の間違いではなくて?
個人的には、何故doでやってみようとしたかに興味が少しある。
個人的には、何故doでやってみようとしたかに興味が少しある。
>>262
調べろよ、それくらい。
見て猿真似できるサンプルが出てこないと何も出来ない池沼なのかよ。
キーワードが出てくるだけで十分だろ。
# cl-macsにloopがあるとは知らんかった
そもそも「言い合い」になるほど骨のある内容じゃなかったし。
調べろよ、それくらい。
見て猿真似できるサンプルが出てこないと何も出来ない池沼なのかよ。
キーワードが出てくるだけで十分だろ。
# cl-macsにloopがあるとは知らんかった
そもそも「言い合い」になるほど骨のある内容じゃなかったし。
池沼というのは、マンコ関数でひっかかってる時点で明らか。>>253
言われてみればその通りだった。orz
(let ((i 0))
(while (< i 10)
.....
))
とかの方が分かりやすくて好きなんだけどな
(while (< i 10)
.....
))
とかの方が分かりやすくて好きなんだけどな
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))))
(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))))
>>268
おーなかなかいいすね。使わせてもらいまっさ。
でも g + hogehoge は viper 流の (viper-buffer-search-enable) の方が好き :-)
;; しかし viper 異様に重いよなあ…。ボクのマシンがボロなだけ?(´・ω・`)
おーなかなかいいすね。使わせてもらいまっさ。
でも g + hogehoge は viper 流の (viper-buffer-search-enable) の方が好き :-)
;; しかし viper 異様に重いよなあ…。ボクのマシンがボロなだけ?(´・ω・`)
再帰好きなelisperの人は
max-lisp-eval-depth と max-specpdl-size に
どのくらいの値を設定してるの?
max-lisp-eval-depth と max-specpdl-size に
どのくらいの値を設定してるの?
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))))))))))
;;; 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))))))))))
;;; 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"))
;;; .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"))
cach - throw は何のため?
(defun file-cache-not-el-list ()
(delq nil (mapcar (lambda (list)
(unless (string-match "\\.el\\'" (car list))
(car list)))
file-cache-alist)))
(defun file-cache-not-el-list ()
(delq nil (mapcar (lambda (list)
(unless (string-match "\\.el\\'" (car list))
(car list)))
file-cache-alist)))
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"))
のように展開(?)するにはどうしたら良いのでしょうか?
(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"))
のように展開(?)するにはどうしたら良いのでしょうか?
何をどう調べたり考えたりしたのか書いた方がいいと思うよ。
これこれを試してみたとか。
ヒントとしては、
mapc + append
これこれを試してみたとか。
ヒントとしては、
mapc + append
>>275
(apply #'append
(list (list '("A" . "1") '("B" . "2"))
(list '("C" . "3"))
(list '("D" . "4") '("E" . "5"))))
(apply #'append
(list (list '("A" . "1") '("B" . "2"))
(list '("C" . "3"))
(list '("D" . "4") '("E" . "5"))))
>> 283
まだ読んでません.どうも基礎がわかってないみたいなので,まずは
そちらから読んでみます.お世話になりました.
まだ読んでません.どうも基礎がわかってないみたいなので,まずは
そちらから読んでみます.お世話になりました.
(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)
どなたかアドバイスをお願いします。
"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)
どなたかアドバイスをお願いします。
>>285
unix なら PROGRAM に & を付ければ? って話なんだろうけど。
firefox.exe のオプションか別コマンドで「firefox に url を渡してする終
了する」ってなことができるんじゃないの?
unix なら PROGRAM に & を付ければ? って話なんだろうけど。
firefox.exe のオプションか別コマンドで「firefox に url を渡してする終
了する」ってなことができるんじゃないの?
Emacs 終了時に Firefox も終了したいわけじゃないんだよね。
プロセスをバックグラウンドで動かしっぱなしにするには、
BUFFER 引数を 0 にして call-process を
(call-process "C:/Program Files/Mozilla Firefox/firefox.exe" nil 0 nil url)
こんな感じで呼び出してやればいい。
プロセスをバックグラウンドで動かしっぱなしにするには、
BUFFER 引数を 0 にして call-process を
(call-process "C:/Program Files/Mozilla Firefox/firefox.exe" nil 0 nil url)
こんな感じで呼び出してやればいい。
う、navi2ch のデフォルトフィルタにひっかかった。
>>289 は
( call-process "C:/Program Files/Mozilla Firefox/firefox.exe" nil 0 nil url)
>>289 は
( call-process "C:/Program Files/Mozilla Firefox/firefox.exe" nil 0 nil url)
レスありがとうございます。
>>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)))
どうもありがとうございました。
>>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)))
どうもありがとうございました。
8進数を10進数に変換する関数とかあったりする?
自前でゴリゴリやるしかないスか?
逆は format でできるんだけど…。
自前でゴリゴリやるしかないスか?
逆は format でできるんだけど…。
>>293
(string-to-number (number-to-string 10) 8)
=> 8
(string-to-number (number-to-string 20) 8)
=> 16
(string-to-number (number-to-string 10) 8)
=> 8
(string-to-number (number-to-string 20) 8)
=> 16
(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))))
(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))))
call-process を呼ぶ時って apply 使って呼んでるコードが多いんだけど、ど
うしてなの?
引数をリストで渡せるから? とか思ったんだけどそうでない場合でも apply
使ってることあるしなあ。なぜざんしょ?
うしてなの?
引数をリストで渡せるから? とか思ったんだけどそうでない場合でも apply
使ってることあるしなあ。なぜざんしょ?
元々は直接呼んでたのが、何らかの必要があって apply を使うようになり、
その後の変更で apply である必要が無くなったんじゃないの?
その後の変更で apply である必要が無くなったんじゃないの?
(pol2str "5X^2-3") >>> ((5 2) (-3 0))
入力がSTRINGで出力をリスト形式で出すようなpol2strを定義したいんですけど、
どうかいたらいいかわかります?
反対の作業はなんとなくできたんだけどこれはわからなかったです。
入力がSTRINGで出力をリスト形式で出すようなpol2strを定義したいんですけど、
どうかいたらいいかわかります?
反対の作業はなんとなくできたんだけどこれはわからなかったです。
前へ 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
トップメニューへ / →のくす牧場書庫について