私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
【叩かれて】Emacs Lisp道場【強くなれ】
emacs スレッド一覧へ / emacs とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 : ○
レスフィルター : (試験中)
>>152
駄目.
http://www.i.kyushu-u.ac.jp/~s-fusa/doc/elisp-manual-20-2.5-jp/elisp-ja_1.html#SEC4
にあるように,日本語は改変が認められていません.
故に公開したければ,全文を訳し直す必要がある.
駄目.
http://www.i.kyushu-u.ac.jp/~s-fusa/doc/elisp-manual-20-2.5-jp/elisp-ja_1.html#SEC4
にあるように,日本語は改変が認められていません.
故に公開したければ,全文を訳し直す必要がある.
その GPL 和訳の由来はここ。
http://www.sra.co.jp/public/doc/gnu/gpl-2j.txt
これにも同じく
> ・和文文書の本文を改変しないこと。
とある。つまり、禁止してるのは「GPL の和文本文」の改変であって、
Emacs Lisp Reference Manual の和文ではない。
そもそも、元の文書が GPL なのだから改変禁止は不可能。
http://www.sra.co.jp/public/doc/gnu/gpl-2j.txt
これにも同じく
> ・和文文書の本文を改変しないこと。
とある。つまり、禁止してるのは「GPL の和文本文」の改変であって、
Emacs Lisp Reference Manual の和文ではない。
そもそも、元の文書が GPL なのだから改変禁止は不可能。
asm-mode で新規作成/既存ファイル開く、でファイル先頭に;(コメント文字) が
自動的に挿入されてしまうんだけど、これを抑制する方法ないでつか?
自動的に挿入されてしまうんだけど、これを抑制する方法ないでつか?
それだけでは、うちではそんなことはないとしか言いようがないよ。
それは本当にasm-modeが入れているものなのかな?
それは本当にasm-modeが入れているものなのかな?
-q つけて起動したら再現しませんでした…出直してくるぽ。
新規作成したバッファの状態を監視しつつ
edebug でステップ実行したいんですけど、
バッファが見当たらない… asm-mode が
呼ばれたときはバッファが存在してるはずでつよね?
新規作成したバッファの状態を監視しつつ
edebug でステップ実行したいんですけど、
バッファが見当たらない… asm-mode が
呼ばれたときはバッファが存在してるはずでつよね?
最近の elisp では when とか unless とか出て来るんですけど、
わたしは while と if と cond くらいしか使いません。
when, unless の利点は何ですか?
わたしは while と if と cond くらいしか使いません。
when, unless の利点は何ですか?
>>160
progn 使わなくていい
progn 使わなくていい
ってことは別に無理して使わなくてもいいってことか。
マクロってよくわかんないけど subr.el 見たら、if に置き換えてるだけみたいね。
マクロってよくわかんないけど subr.el 見たら、if に置き換えてるだけみたいね。
navi2chなんかで、エンター押したらその行に関係する動作をする機能を作るには
何を使えばいいのでしょうか。
key map を使うのかと思ってnavi2chのソースをみたのですが、
define-key map [return] という行は見つかりませんでした。
何を使えばいいのでしょうか。
key map を使うのかと思ってnavi2chのソースをみたのですが、
define-key map [return] という行は見つかりませんでした。
(define-key map "\r" 'navi2ch-article-select-current-link)
今回の場合、describe-key で returnに対応するコマンドを調べて、
それを元に grepすれば >>168が見つかりますな。
それを元に grepすれば >>168が見つかりますな。
ある関数内で auto-compression-mode を有効に束縛したいんですが
(let ((auto-compression-mode t))
(insert-file "foo.gz"))
じゃ駄目なんですね。
(let ((current auto-compression-mode))
(auto-compression-mode t)
(insert-file "foo.gz")
(auto-compression-mode current))
こうすべきもんなんでしょうか。なんかもっとスマートな方法ありますか?
(let ((auto-compression-mode t))
(insert-file "foo.gz"))
じゃ駄目なんですね。
(let ((current auto-compression-mode))
(auto-compression-mode t)
(insert-file "foo.gz")
(auto-compression-mode current))
こうすべきもんなんでしょうか。なんかもっとスマートな方法ありますか?
>>174
いちお変数でもあるんですけどね、って今見てみたら docstring に
Setting this variable directly does not take effect;
と書いてあった…失礼しますた。やっぱあんな方法でやるしかないのかなあ。
いちお変数でもあるんですけどね、って今見てみたら docstring に
Setting this variable directly does not take effect;
と書いてあった…失礼しますた。やっぱあんな方法でやるしかないのかなあ。
>>176
おーありがとうです。こんなのがあったのか。感謝。
おーありがとうです。こんなのがあったのか。感謝。
emacs21のtool-bar にあるプリンタアイコンはprint-bufferですが、
これを.emacsでpostscript-print-bufferに変えたいんですが、どうやれば
良いすかね?
これを.emacsでpostscript-print-bufferに変えたいんですが、どうやれば
良いすかね?
(setq tool-bar-map (delq (assq 'print-buffer tool-bar-map) tool-bar-map))
(tool-bar-add-item-from-menu 'ps-print-buffer "print")
でどうでしょ
(tool-bar-add-item-from-menu 'ps-print-buffer "print")
でどうでしょ
空のファイルを作成したいのですがどうやればいいんでしょうか?
動作としては↓のような感じです。
% touch hoge
(hogeというファイルは存在していないとして)
動作としては↓のような感じです。
% touch hoge
(hogeというファイルは存在していないとして)
>>181
ありがとうございました。
ありがとうございました。
mmm と php-mode てなんか相性わるいよね。
漏れは別の不具合のせいで、結局php-mode 単体でつかってまふ。
漏れは別の不具合のせいで、結局php-mode 単体でつかってまふ。
'(1 2) '(3 4) => (4 6)
みたいにリストの各要素を足してくれるような関数ってありませんでしたっけ?
みたいにリストの各要素を足してくれるような関数ってありませんでしたっけ?
arg1 が non-nil なら a-list に arg2 を append、
arg1 が nil なら b-list に arg2 を append、って処理をやりたいんですが
(defun my-test (arg1 arg2)
(if arg1
(setq a-list (append arg2 a-list))
(setq b-list (append arg2 b-list))))
これじゃちょっと不恰好な気がします。スマートに実装する方法ありませんか
ね。
arg1 が nil なら b-list に arg2 を append、って処理をやりたいんですが
(defun my-test (arg1 arg2)
(if arg1
(setq a-list (append arg2 a-list))
(setq b-list (append arg2 b-list))))
これじゃちょっと不恰好な気がします。スマートに実装する方法ありませんか
ね。
(let ((sym (if arg1 'a-list 'b-list)))
(set sym (append arg2 (symbol-value sym))))
(set sym (append arg2 (symbol-value sym))))
>>189
set ってこんな時に使えるのか。サンクスコでした。
set ってこんな時に使えるのか。サンクスコでした。
マ板、Emacs Lispスレから流れてきました。
○×ゲームを作っていくという話題。
とりあえず、入力はこんな感じで。
(read-from-minibuffer " │○│
―┼―┼―
│×│
―┼―┼―
│ │ コンマで区切って2つの数字を入力してください。(例 0,0)")
○×ゲームを作っていくという話題。
とりあえず、入力はこんな感じで。
(read-from-minibuffer " │○│
―┼―┼―
│×│
―┼―┼―
│ │ コンマで区切って2つの数字を入力してください。(例 0,0)")
何でminibuffer使う?
一瞬 gomoku.el の部品が使えないかなと思ったけど
自分で書いた方がはやそう。
一瞬 gomoku.el の部品が使えないかなと思ったけど
自分で書いた方がはやそう。
○×か。最初から敷居が高いなぁ。
入力はコンマ区切りよりリストとして入力させる方が良いハックじゃないかな?
コンマはパースしなくちゃいけないし。
入力はコンマ区切りよりリストとして入力させる方が良いハックじゃないかな?
コンマはパースしなくちゃいけないし。
何も考えずに、ここまでやってみた。ボードと終了判定があるだけ。
あとは、エラーチェックの徹底と思考ルーチンかな。
長いので2回に分けます。
(defun ox-index (x y) (+ (* y 3) x))
(defun ox-line (vector y)
(format "%c|%c|%c"
(aref vector (ox-index 0 y))
(aref vector (ox-index 1 y))
(aref vector (ox-index 2 y))))
(defun ox-board (vector)
(format "%s\n-+-+-\n%s\n-+-+-\n%s\n"
(ox-line vector 0)
(ox-line vector 1)
(ox-line vector 2)))
(defun ox-read (vector o-or-x)
(1- (string-to-int
(read-from-minibuffer (format "%s (%cの番です) " (ox-board board)
o-or-x)))))
あとは、エラーチェックの徹底と思考ルーチンかな。
長いので2回に分けます。
(defun ox-index (x y) (+ (* y 3) x))
(defun ox-line (vector y)
(format "%c|%c|%c"
(aref vector (ox-index 0 y))
(aref vector (ox-index 1 y))
(aref vector (ox-index 2 y))))
(defun ox-board (vector)
(format "%s\n-+-+-\n%s\n-+-+-\n%s\n"
(ox-line vector 0)
(ox-line vector 1)
(ox-line vector 2)))
(defun ox-read (vector o-or-x)
(1- (string-to-int
(read-from-minibuffer (format "%s (%cの番です) " (ox-board board)
o-or-x)))))
しょの2
(defun ox-game-over-p (vector)
(catch 'loop
(dolist (indexes '((0 1 2) (2 5 8) (7 6 8) (0 3 6)
(0 4 8) (1 4 7) (2 4 6) (3 4 5)))
(let ((marks (mapcar #'(lambda (i) (aref vector i)) indexes)))
(when (or (null (remove ?O marks)) (null (remove ?X marks)))
(message (format "%s (%cの勝ちです。)" (ox-board board) (car marks)))
(throw 'loop t))))))
(defun ox-game-over-p (vector)
(catch 'loop
(dolist (indexes '((0 1 2) (2 5 8) (7 6 8) (0 3 6)
(0 4 8) (1 4 7) (2 4 6) (3 4 5)))
(let ((marks (mapcar #'(lambda (i) (aref vector i)) indexes)))
(when (or (null (remove ?O marks)) (null (remove ?X marks)))
(message (format "%s (%cの勝ちです。)" (ox-board board) (car marks)))
(throw 'loop t))))))
あとminibufferよりも新しく編集バッファを作成してエディタ内のテキストを
操作する方が良いと思う。二次元の平面を扱うなら。
例えば以下のような感じ。
(progn (get-buffer-create "hoge")
(switch-to-buffer "hoge")
(erase-buffer)
(insert "○|×|○ \n")
(insert "×|○|○ \n")
(insert "×|○|× \n"))
操作する方が良いと思う。二次元の平面を扱うなら。
例えば以下のような感じ。
(progn (get-buffer-create "hoge")
(switch-to-buffer "hoge")
(erase-buffer)
(insert "○|×|○ \n")
(insert "×|○|○ \n")
(insert "×|○|× \n"))
しょの3
(defun ox ()
(interactive)
(let ((board (vconcat '(?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9)))
(o-or-x ?O)
i mark)
(while (not (ox-game-over-p board))
(setq i (ox-read board o-or-x))
(setq mark (aref board i))
(if (member mark '(?O ?X))
(progn
(message (format "%s (そこには置けません)" (ox-board board)))
(sit-for 1))
(aset board i o-or-x)
(setq o-or-x (if (eql o-or-x ?O) ?X ?O))))))
(defun ox ()
(interactive)
(let ((board (vconcat '(?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9)))
(o-or-x ?O)
i mark)
(while (not (ox-game-over-p board))
(setq i (ox-read board o-or-x))
(setq mark (aref board i))
(if (member mark '(?O ?X))
(progn
(message (format "%s (そこには置けません)" (ox-board board)))
(sit-for 1))
(aset board i o-or-x)
(setq o-or-x (if (eql o-or-x ?O) ?X ?O))))))
>>192
> 何でminibuffer使う?
> 一瞬 gomoku.el の部品が使えないかなと思ったけど
> 自分で書いた方がはやそう。
その場のノリですが、むりやり理由をつければゲーム後に画面の後かたずけとかが自動的に行われるからです。
>>193
>入力はコンマ区切りよりリストとして入力させる方が良いハックじゃないかな?
>コンマはパースしなくちゃいけないし。
置ける場所に番号を書いておいて、それを入力してもらう方法をとってみました。
思考ルーチンも総あたりすればいいだけですね。
ox-game-over-pではthrowでdolistを早抜けしているんですけど、elisp的な
定石はこれでいいのでしょうか。
> 何でminibuffer使う?
> 一瞬 gomoku.el の部品が使えないかなと思ったけど
> 自分で書いた方がはやそう。
その場のノリですが、むりやり理由をつければゲーム後に画面の後かたずけとかが自動的に行われるからです。
>>193
>入力はコンマ区切りよりリストとして入力させる方が良いハックじゃないかな?
>コンマはパースしなくちゃいけないし。
置ける場所に番号を書いておいて、それを入力してもらう方法をとってみました。
思考ルーチンも総あたりすればいいだけですね。
ox-game-over-pではthrowでdolistを早抜けしているんですけど、elisp的な
定石はこれでいいのでしょうか。
ここで>>1を読んで修業すればnavi2chみたいの書けますか?
前へ 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
トップメニューへ / →のくす牧場書庫について