Emacs Lispのスレです。
- GNU Emacs Lisp Reference Manual
http://www.gnu.org/software/emacs/manual/elisp.html
- An Introduction to Programming in Emacs Lisp
http://www.gnu.org/software/emacs/manual/eintr.html
- Emacs Wiki の "EmacsLisp"
http://www.emacswiki.org/cgi-bin/wiki/EmacsLisp
- GNU Emacs
http://www.gnu.org/software/emacs/emacs.html
探検
【GNU】Emacs Lisp 【Elisp】
2013/10/20(日) 07:50:56.93
68デフォルトの名無しさん
2014/02/12(水) 09:38:07.02 >>66
こういう親切な人がいるところが2ちゃんの凄いところ
こういう親切な人がいるところが2ちゃんの凄いところ
2014/02/12(水) 17:48:01.21
ム板ってマイナー言語とかのスレに凄い優しい人一杯いるよね
2014/02/12(水) 17:52:46.28
仲間が少なくなってきてるから寂しいんだろう
2014/02/12(水) 23:04:33.78
Sublime Textが
Emacs LispやCommon Lispで拡張できるようになったらどうするんだろうか。
Emacs LispやCommon Lispで拡張できるようになったらどうするんだろうか。
2014/02/12(水) 23:05:24.28
Sublime TextがEmacsenになる
2014/02/12(水) 23:11:54.46
EmacsにとってEmacs Lispは拡張言語じゃないんだよ
C言語で作られたEmacs Lispがあって、そのEmacs LispでEmacsが作られている
Sublime TextがEmacs Lispを拡張言語として使えるようになってもあまり魅力は無い
Emacs Lispで作られたSublime Textがあればちょっと考える
C言語で作られたEmacs Lispがあって、そのEmacs LispでEmacsが作られている
Sublime TextがEmacs Lispを拡張言語として使えるようになってもあまり魅力は無い
Emacs Lispで作られたSublime Textがあればちょっと考える
2014/02/13(木) 01:01:11.54
2014/02/13(木) 01:10:17.62
そりゃそうだろ
機械語最強伝説みたいなもんだ
機械語最強伝説みたいなもんだ
2014/02/13(木) 01:20:48.87
2014/02/13(木) 01:23:31.49
elisp も ffi が実装されたら素敵なんだが
2014/02/13(木) 01:27:09.81
Pymacsとかそれっぽい
2014/02/13(木) 02:09:03.65
pythonはインデントが嫌いなんだよなー、構文で文ブロック表さないようにしている所がどうしてもなじめない。
なのでいまだにEmacsラブラブなんであるよ。
あと基本の削除がKillRing無いと生きていけない
なのでいまだにEmacsラブラブなんであるよ。
あと基本の削除がKillRing無いと生きていけない
2014/02/13(木) 05:24:21.72
俺は逆
Pythonのインデントが美しい、見やすい。ブロック指示語無しでの表現がスマート
でも、Lisp使いになると東大女とやり放題と聞いたのでLispの勉強を始めた
Pythonのインデントが美しい、見やすい。ブロック指示語無しでの表現がスマート
でも、Lisp使いになると東大女とやり放題と聞いたのでLispの勉強を始めた
2014/02/13(木) 07:52:22.02
>>71
理想的だな。
Emacsを使う理由が薄れる。
ここのスレの住人はLispで拡張できるからEmacsを使うって人が多いと思う。
目的がLispであってEmacsは手段でしかない。
できれば素のlisp,common lispが使えれば理想的だな。
理想的だな。
Emacsを使う理由が薄れる。
ここのスレの住人はLispで拡張できるからEmacsを使うって人が多いと思う。
目的がLispであってEmacsは手段でしかない。
できれば素のlisp,common lispが使えれば理想的だな。
2014/02/13(木) 07:54:13.80
俺はxyzzyだけど
2014/02/13(木) 08:48:50.79
>>82
だけど、何?
だけど、何?
2014/02/13(木) 09:57:01.02
xyzzy はより Common Lisp っぽいんじゃなかったっけ
emacs lisp は lisp 好きにはむしろ
emacs lisp は lisp 好きにはむしろ
2014/02/13(木) 11:38:56.40
Common Lispで実装されたEmacsみたいなエディタあるよ。
でもEmacsのように便利に使おうと思うと、自分でCommon Lispをバリバリ書かないといけない。
でもEmacsのように便利に使おうと思うと、自分でCommon Lispをバリバリ書かないといけない。
2014/02/13(木) 12:43:10.37
あったとしてもEmacsやVimくらい世界中からHackされようじゃないとねぇ。
zyzzyなんて海外じゃ誰も知らないだろうし。
zyzzyなんて海外じゃ誰も知らないだろうし。
2014/02/13(木) 12:45:46.31
xyzzy さり気なく github で開発継続してたんだなあ
2014/02/13(木) 17:12:56.16
>>86←
お馬鹿丸出し
お馬鹿丸出し
2014/02/14(金) 02:00:59.87
90デフォルトの名無しさん
2014/02/23(日) 18:39:31.98 すいません。Emacs Part 45から来ました。
質問させてください。
一定文字数、右にカーソルを移動させる方法はありますか。
「矩形、編集」などで調べましたがわかりませんでした。
図1)のテキストがあったときに、右側に対訳のような形で編集したいです。
図1)
あいうえ
かきくけこ
さしす
たちつてとなにぬねの
図2)
あいうえ aiue
かきくけこ kakikukeko
さしす <-ここにカーソルを移動させ段組みで編集したい
たちつてとなにぬねの
よろしくお願いします。
質問させてください。
一定文字数、右にカーソルを移動させる方法はありますか。
「矩形、編集」などで調べましたがわかりませんでした。
図1)のテキストがあったときに、右側に対訳のような形で編集したいです。
図1)
あいうえ
かきくけこ
さしす
たちつてとなにぬねの
図2)
あいうえ aiue
かきくけこ kakikukeko
さしす <-ここにカーソルを移動させ段組みで編集したい
たちつてとなにぬねの
よろしくお願いします。
2014/02/23(日) 21:16:16.11
お前ら、久々の仕事だぞ。
2014/02/23(日) 21:20:02.14
>>90
forward-char
forward-char
2014/02/23(日) 22:08:08.90
関数組めばいいのに
それにショートカットきーを割り当てる
それにショートカットきーを割り当てる
2014/02/23(日) 22:09:51.03
> 「矩形、編集」などで調べましたがわかりませんでした。
もっと深く調べろ
もっと深く調べろ
2014/02/23(日) 22:12:44.44
矩形、編集で調べている時点であかん
もともと、そんな関数あるわけない。
カーソル制御で知らべろ
で、関数作れ(簡単にできる)
もともと、そんな関数あるわけない。
カーソル制御で知らべろ
で、関数作れ(簡単にできる)
9690のなりすまし
2014/02/23(日) 22:49:00.932014/02/25(火) 03:36:47.58
今だにemacsとか使ってるバカいるのか。
Common Lispでなければ
意味ない。
Common Lispでなければ
意味ない。
2014/02/25(火) 03:54:33.31
そうかな?
俺自身はCommon Lisp系のxyzzyを使っているが
emacsはemacsで良さがある
俺自身はCommon Lisp系のxyzzyを使っているが
emacsはemacsで良さがある
2014/02/25(火) 09:22:57.05
>>97
(require `cl)
(require `cl)
100デフォルトの名無しさん
2014/02/25(火) 15:01:22.07 >>90
(info "(emacs) Two-Column")
かな。
<F2> s or C-x 6 s
で、split して
<F2> 1 or C-x 6 1
で、merge
C-x C-n set-goal-column
という、手もある。
これだと、行末に空白が足りない時そのcolumn に飛んでくれないから、
こんな関数を、作っておいて、適当な Key に bind しておくといいかも
(defun fill-to-goal-column ()
""
(interactive)
(when goal-column
(end-of-line)
(let ((len (- goal-column (current-column))))
(when (> len 0)
(insert (make-string len ?\ ))))))
;; two-column mode の懐かしさに、久しぶりの書き込みでござる。
(info "(emacs) Two-Column")
かな。
<F2> s or C-x 6 s
で、split して
<F2> 1 or C-x 6 1
で、merge
C-x C-n set-goal-column
という、手もある。
これだと、行末に空白が足りない時そのcolumn に飛んでくれないから、
こんな関数を、作っておいて、適当な Key に bind しておくといいかも
(defun fill-to-goal-column ()
""
(interactive)
(when goal-column
(end-of-line)
(let ((len (- goal-column (current-column))))
(when (> len 0)
(insert (make-string len ?\ ))))))
;; two-column mode の懐かしさに、久しぶりの書き込みでござる。
101デフォルトの名無しさん
2014/03/01(土) 08:13:00.51 質問です。
実行後、空白行で区切った段落を1行で省略表示させて、
カーソル行が省略表示されている段落と同じ範囲内に来た場合に
展開してくれるというものが作りたいのですが、可能でしょうか?
【実行前】
テキストテキストテキストテキストテキストテキストテキスト
テキストテキストテキストテキストテキストテキストテキスト
テキストテキストテキストテキストテキストテキストテキスト
テキストテキストテキストテキストテキストテキストテキスト
□←カーソル位置
テキストテキストテキストテキストテキストテキストテキスト
テキストテキストテキストテキストテキストテキストテキスト
【実行後】
テキストテキストテキストテキストテキストテキスト...
□テキストテキストテキストテキストテキストテキストテキスト
テキストテキストテキストテキストテキストテキストテキスト
実行後、空白行で区切った段落を1行で省略表示させて、
カーソル行が省略表示されている段落と同じ範囲内に来た場合に
展開してくれるというものが作りたいのですが、可能でしょうか?
【実行前】
テキストテキストテキストテキストテキストテキストテキスト
テキストテキストテキストテキストテキストテキストテキスト
テキストテキストテキストテキストテキストテキストテキスト
テキストテキストテキストテキストテキストテキストテキスト
□←カーソル位置
テキストテキストテキストテキストテキストテキストテキスト
テキストテキストテキストテキストテキストテキストテキスト
【実行後】
テキストテキストテキストテキストテキストテキスト...
□テキストテキストテキストテキストテキストテキストテキスト
テキストテキストテキストテキストテキストテキストテキスト
102デフォルトの名無しさん
2014/03/01(土) 08:23:12.92 >>101
出来るでしょう。
テキストプロパティやオーバーレイには
表示内容だけ一時的に変更するってのと、カーソルが上に乗った時/いなくなった時に任意の関数を呼び出すって属性があるから
それを設定してやればいいんじゃないかな。
hs-minor-mode あたりを設定を変えつつ使うのが楽でいいんじゃないでしょうか。
隠す区切りを改行が連続している領域に変更して、
隠す処理を行ってる関数あたりに point-entered/point-left で表示をトグルする処理を追加してやると。
出来るでしょう。
テキストプロパティやオーバーレイには
表示内容だけ一時的に変更するってのと、カーソルが上に乗った時/いなくなった時に任意の関数を呼び出すって属性があるから
それを設定してやればいいんじゃないかな。
hs-minor-mode あたりを設定を変えつつ使うのが楽でいいんじゃないでしょうか。
隠す区切りを改行が連続している領域に変更して、
隠す処理を行ってる関数あたりに point-entered/point-left で表示をトグルする処理を追加してやると。
103デフォルトの名無しさん
2014/03/01(土) 10:46:01.33 hs-set-up-overlay に出入りした時に隠したり表示したりするプロパティ追加する関数せっていすりゃいいんじゃね。
104デフォルトの名無しさん
2014/03/02(日) 21:33:23.49 >>103
具体的にどのようにすればよろしいでしょうか?
具体的にどのようにすればよろしいでしょうか?
105デフォルトの名無しさん
2014/03/02(日) 21:48:51.04 まずorg.elを開きます
106デフォルトの名無しさん
2014/03/02(日) 21:56:23.12 point-entered は残念ながら overlay では機能しないらしいから
気合入れて text-property に追加してまわるしかないんじゃないかなあ
post-command-hook でいちいちチェックして hs-hide-block/hs-show-block もいいかもね
気合入れて text-property に追加してまわるしかないんじゃないかなあ
post-command-hook でいちいちチェックして hs-hide-block/hs-show-block もいいかもね
107デフォルトの名無しさん
2014/03/10(月) 07:20:52.21 一度elispの拡張の楽しさを覚えると、他のエディタに移れない
108デフォルトの名無しさん
2014/03/10(月) 07:48:40.35 ひょえー
固まっていくんだ
固まっていくんだ
109デフォルトの名無しさん
2014/03/10(月) 16:22:33.05 >>107
vimやsublimetextはpythonで拡張できるけどそれと比較してどうよ?
vimやsublimetextはpythonで拡張できるけどそれと比較してどうよ?
110デフォルトの名無しさん
2014/03/10(月) 16:28:12.11 Pymacs動くから普通にPythonでも拡張できるよ
111デフォルトの名無しさん
2014/03/11(火) 20:38:09.46 Lispで拡張子できるのに、ナニが悲しゅうてパイソンつかうんや?
Lisp使えへんからか?
ひょっとしてナニがうずくんか?
「リストは飽きた、パイもませろ」
エッヂね、あなた
Lisp使えへんからか?
ひょっとしてナニがうずくんか?
「リストは飽きた、パイもませろ」
エッヂね、あなた
112デフォルトの名無しさん
2014/03/11(火) 20:39:25.89 リスト × L
リスト ○ R
リスト ○ R
113デフォルトの名無しさん
2014/03/25(火) 18:27:18.16ID:Ye296TBS なんか話題ない?
114デフォルトの名無しさん
2014/03/26(水) 23:27:38.28ID:LML8JeED >>109
Vim ってpythonで拡張できるん?
Vim ってpythonで拡張できるん?
115デフォルトの名無しさん
2014/03/26(水) 23:31:15.83ID:6UDaHe6u emacsは遅めだな
116デフォルトの名無しさん
2014/03/27(木) 00:13:29.55ID:/J3FM59H >>114
python だけじゃなく ruby とか lua でも拡張出来るよ
ただしコンパイル時に if_python とか if_lua とか組み込まないとだめだけど
オリジナルの Vim scriptは海外ではウケが悪いんだとさ
python だけじゃなく ruby とか lua でも拡張出来るよ
ただしコンパイル時に if_python とか if_lua とか組み込まないとだめだけど
オリジナルの Vim scriptは海外ではウケが悪いんだとさ
117デフォルトの名無しさん
2014/03/27(木) 02:09:44.05ID:FdT+1cD1 24.4から (< a b c …) できるって。
118デフォルトの名無しさん
2014/03/27(木) 13:12:09.80ID:rnycJJoD 今までできなかったのかよ
119デフォルトの名無しさん
2014/03/27(木) 13:16:52.73ID:qdz8LPjI 定義すれば済むことだな
120デフォルトの名無しさん
2014/03/27(木) 21:55:07.06ID:4xfA40Vl121デフォルトの名無しさん
2014/04/03(木) 22:08:59.03ID:PIEAAVmi122デフォルトの名無しさん
2014/04/03(木) 22:37:18.61ID:DQUVbJjr そういう意味ではリーダーマクロのない elisp はいまいち
123デフォルトの名無しさん
2014/04/03(木) 22:44:26.98ID:PIEAAVmi >>122
Emacs Lisp にリーダーマクロを実装してみた
http://dev.ariel-networks.com/Members/matsuyama/implement-emacs-lisp-reader-macro/
Emacs Lisp にリーダーマクロを実装してみた
http://dev.ariel-networks.com/Members/matsuyama/implement-emacs-lisp-reader-macro/
124デフォルトの名無しさん
2014/04/20(日) 18:24:46.84ID:RjB2Ff6v125デフォルトの名無しさん
2014/04/25(金) 08:03:24.78ID:xiFjVo8G Latexのコードの特殊文字(?)を取り除いて文字だけにしたい
例えば
This figure ¥ref{fig:some} show someone.
を
This figure 321 show someone.
に変換したい
どんな正規表現置換すればいいでしょうか
例えば
This figure ¥ref{fig:some} show someone.
を
This figure 321 show someone.
に変換したい
どんな正規表現置換すればいいでしょうか
126デフォルトの名無しさん
2014/04/29(火) 06:14:21.54ID:hZWbnKFL パッケージが使えるようになってから
ライブラリ関係が整理されてきたね
http://www.wilfred.me.uk/blog/2013/03/31/essential-elisp-libraries/
ライブラリ関係が整理されてきたね
http://www.wilfred.me.uk/blog/2013/03/31/essential-elisp-libraries/
127デフォルトの名無しさん
2014/05/05(月) 22:14:00.15ID:rH4KCYSG >>125
321はどっから出てきた?
321はどっから出てきた?
128デフォルトの名無しさん
2014/05/08(木) 04:12:16.26ID:gIosECTp あああ
129デフォルトの名無しさん
2014/05/08(木) 20:38:27.07ID:APfGLDmZ あああじゃねえよ321は決め打ち?
130デフォルトの名無しさん
2014/05/29(木) 22:57:32.74ID:lRFHqZI8 iii
131みつを
2014/06/04(水) 19:55:43.06ID:1mti/jFC >>130
iiiじゃねえよ。決め打ちね。
ちいさいことからこつこつやっていくしかないよなぁ
(replace-regexp-in-string "[\\]ref\{.*\}" "321" "This figure \\ref{fig:some} show someone.")
そもそも\refを先に\\refにしないとイカンかもな。\rになってまうもんなぁ
iiiじゃねえよ。決め打ちね。
ちいさいことからこつこつやっていくしかないよなぁ
(replace-regexp-in-string "[\\]ref\{.*\}" "321" "This figure \\ref{fig:some} show someone.")
そもそも\refを先に\\refにしないとイカンかもな。\rになってまうもんなぁ
132みつを
2014/06/04(水) 19:57:17.25ID:1mti/jFC133デフォルトの名無しさん
2014/06/04(水) 21:16:48.17ID:40jNRALG むしろそれが今の Emacs の成長率みたいなもんなんじゃないのかな
134デフォルトの名無しさん
2014/06/13(金) 21:28:22.09ID:9IC9OAVr あああ
iii
uuu
iii
uuu
135デフォルトの名無しさん
2014/09/10(水) 14:59:47.34ID:TJ7Vp+Yk 最近なんか話題ある?
136デフォルトの名無しさん
2014/09/10(水) 23:18:57.46ID:7cU3np3J きちさんが元気になった。
137デフォルトの名無しさん
2014/09/12(金) 06:48:41.92ID:pwXLQ7qz カーソル位置の単語または選択範囲の文字をisearcの検索対象にする
http://nicolas-petton.fr/blog/isearch-thing.html
http://nicolas-petton.fr/blog/isearch-thing.html
138デフォルトの名無しさん
2014/09/13(土) 00:21:10.93ID:3yBdenhy >>136
どんなふうに?
どんなふうに?
139デフォルトの名無しさん
2014/10/12(日) 21:42:50.50ID:QLTYsLQy Ymacs
140デフォルトの名無しさん
2014/10/16(木) 00:29:06.56ID:9sgE7fDV windows の emacs で find-name-dired をやりたかったんだけど、cmd の find は挙動が違うし、外部から find.exe をもってくるのも難しいしということで、elisp で find-name-dired っぽいものを自作した。
それは、条件に合致したものを cons で繋げていく原始的なものだったんだけど、その後、「リストよりもベクトルの方が参照が速い」ことや、mapcar 関数の存在を知って、自作 find を書き換えた。
修正の結果、find に要する時間は長くなってしまった。
その後、remove-if なる関数があることをしって、先のコードの mapcar を remove-if にすげ替えた。
結果さらに遅くなった。
やっぱりコンスセル単位で操作していくのが一番速いのですか?
それは、条件に合致したものを cons で繋げていく原始的なものだったんだけど、その後、「リストよりもベクトルの方が参照が速い」ことや、mapcar 関数の存在を知って、自作 find を書き換えた。
修正の結果、find に要する時間は長くなってしまった。
その後、remove-if なる関数があることをしって、先のコードの mapcar を remove-if にすげ替えた。
結果さらに遅くなった。
やっぱりコンスセル単位で操作していくのが一番速いのですか?
141デフォルトの名無しさん
2014/10/16(木) 09:04:05.88ID:ML6o1wZC > やっぱりコンスセル単位で操作していくのが一番速いのですか?
ベクトルは参照は早いけど追加操作は遅い。リストはその逆と思っておけばいい。
ケースバイケースだからソース公開するといいよ。
ベクトルは参照は早いけど追加操作は遅い。リストはその逆と思っておけばいい。
ケースバイケースだからソース公開するといいよ。
142デフォルトの名無しさん
2014/10/16(木) 09:56:15.97ID:9sgE7fDV >>141
ありがとうございます。まず、最初に作ったコードです。最後の reverse は無意味でした。
;; M-x myfind
(defvar myfind-ffile-map (make-sparse-keymap))
(define-key myfind-ffile-map [return]
(lambda ()
(interactive)
(find-file (buffer-substring
(line-beginning-position)
(line-end-position)))))
(define-key myfind-ffile-map "\C-m"
(lambda ()
(interactive)
(find-file (buffer-substring
(line-beginning-position)
(line-end-position)))))
(define-key myfind-ffile-map "f"
(lambda ()
(interactive)
(find-file (buffer-substring
(line-beginning-position)
(line-end-position)))))
(define-key myfind-ffile-map "v"
(lambda ()
(interactive)
(view-file (buffer-substring
(line-beginning-position)
(line-end-position)))))
;; 続きます
ありがとうございます。まず、最初に作ったコードです。最後の reverse は無意味でした。
;; M-x myfind
(defvar myfind-ffile-map (make-sparse-keymap))
(define-key myfind-ffile-map [return]
(lambda ()
(interactive)
(find-file (buffer-substring
(line-beginning-position)
(line-end-position)))))
(define-key myfind-ffile-map "\C-m"
(lambda ()
(interactive)
(find-file (buffer-substring
(line-beginning-position)
(line-end-position)))))
(define-key myfind-ffile-map "f"
(lambda ()
(interactive)
(find-file (buffer-substring
(line-beginning-position)
(line-end-position)))))
(define-key myfind-ffile-map "v"
(lambda ()
(interactive)
(view-file (buffer-substring
(line-beginning-position)
(line-end-position)))))
;; 続きます
143デフォルトの名無しさん
2014/10/16(木) 10:00:45.11ID:9sgE7fDV (defun myfind (dir pattern)
"find by elisp"
(interactive
"DDirectory: \nspattern: ")
;; define variable
(let ((case-fold-search t)
(myfind-temp (sort (myfind-store-files dir pattern)
'string<)))
;; make buffer
(let ((temp-buffer-show-function 'switch-to-buffer))
(with-output-to-temp-buffer "*Myfind*"
(set-buffer "*Myfind*")
(font-lock-mode 0)
(setq buffer-read-only nil)
(princ (format "%d matches for \"%s\" in dir: %s\n"
(length myfind-temp) pattern dir))
(dolist (temp myfind-temp)
(princ (concat "\n" temp))
(goto-char (1- (point-max)))
(put-text-property
(line-beginning-position)
(line-end-position) 'face 'underline)
(put-text-property
(line-beginning-position)
(line-end-position) 'keymap myfind-ffile-map)
(when (file-directory-p temp)
(put-text-property
(line-beginning-position)
(line-end-position) 'face 'link))
(goto-char (point-max)))
(view-mode t)))))
"find by elisp"
(interactive
"DDirectory: \nspattern: ")
;; define variable
(let ((case-fold-search t)
(myfind-temp (sort (myfind-store-files dir pattern)
'string<)))
;; make buffer
(let ((temp-buffer-show-function 'switch-to-buffer))
(with-output-to-temp-buffer "*Myfind*"
(set-buffer "*Myfind*")
(font-lock-mode 0)
(setq buffer-read-only nil)
(princ (format "%d matches for \"%s\" in dir: %s\n"
(length myfind-temp) pattern dir))
(dolist (temp myfind-temp)
(princ (concat "\n" temp))
(goto-char (1- (point-max)))
(put-text-property
(line-beginning-position)
(line-end-position) 'face 'underline)
(put-text-property
(line-beginning-position)
(line-end-position) 'keymap myfind-ffile-map)
(when (file-directory-p temp)
(put-text-property
(line-beginning-position)
(line-end-position) 'face 'link))
(goto-char (point-max)))
(view-mode t)))))
144デフォルトの名無しさん
2014/10/16(木) 10:06:43.79ID:9sgE7fDV (defun myfind-dir (input-list input-dir-box)
(let (dir-box)
(dolist (x input-list)
(when (file-directory-p x)
(unless (equal "." (substring x -1))
(if dir-box
(setq dir-box (cons x dir-box))
(setq dir-box (cons x input-dir-box))))))
(if dir-box
(setq dir-box (reverse dir-box))
input-dir-box)))
(defun myfind-store (input-list input-store-box pattern)
(let ((store-box)
(case-fold-search t))
(dolist (x input-list)
(unless (equal "." (substring x -1))
(when (string-match pattern (file-name-nondirectory x))
(if store-box
(setq store-box (cons x store-box))
(setq store-box (cons x input-store-box))))))
(if store-box
store-box input-store-box)))
(defun myfind-store-files (dir pattern)
(let ((tmp-files (directory-files dir t)))
(let ((dir-box (reverse (myfind-dir tmp-files nil))) (store-box (myfind-store tmp-files nil pattern)) (dir-temp-box))
(while (> (length dir-box) 0)
(setq dir-temp-box ())
(dolist (x dir-box)
(setq store-box (myfind-store (directory-files x t) store-box pattern))
(setq dir-temp-box (myfind-dir (directory-files x t) dir-temp-box)))
(setq dir-box (reverse dir-temp-box)))
(reverse store-box))))
(let (dir-box)
(dolist (x input-list)
(when (file-directory-p x)
(unless (equal "." (substring x -1))
(if dir-box
(setq dir-box (cons x dir-box))
(setq dir-box (cons x input-dir-box))))))
(if dir-box
(setq dir-box (reverse dir-box))
input-dir-box)))
(defun myfind-store (input-list input-store-box pattern)
(let ((store-box)
(case-fold-search t))
(dolist (x input-list)
(unless (equal "." (substring x -1))
(when (string-match pattern (file-name-nondirectory x))
(if store-box
(setq store-box (cons x store-box))
(setq store-box (cons x input-store-box))))))
(if store-box
store-box input-store-box)))
(defun myfind-store-files (dir pattern)
(let ((tmp-files (directory-files dir t)))
(let ((dir-box (reverse (myfind-dir tmp-files nil))) (store-box (myfind-store tmp-files nil pattern)) (dir-temp-box))
(while (> (length dir-box) 0)
(setq dir-temp-box ())
(dolist (x dir-box)
(setq store-box (myfind-store (directory-files x t) store-box pattern))
(setq dir-temp-box (myfind-dir (directory-files x t) dir-temp-box)))
(setq dir-box (reverse dir-temp-box)))
(reverse store-box))))
145デフォルトの名無しさん
2014/10/16(木) 10:11:33.46ID:9sgE7fDV 連投すみません。どこか外部にアップして、url を貼るべきでした。以上に対して、新しいコードでは、上記の関数 myfind-dir, myfind-store, myfind-store-files を以下に差し替えました。
(defun myfind-store-files (dir pattern)
(let* ((tmp-files (directory-files dir t))
(dir-box)
(dir-store)
(store-box (vconcat tmp-files))
(i 0))
(setq dir-box (remove-if '(lambda (x)
(or (not (file-directory-p x))
(equal "." (substring x -1))))
(vconcat tmp-files)))
(while (> (length dir-box) 0)
(while (< i (length dir-box))
(setq store-box (vconcat store-box (directory-files
(aref dir-box i) t)))
(setq dir-store (vconcat
dir-store
(remove-if
'(lambda (x)
(or (not (file-directory-p x))
(equal "." (substring x -1))))
(vconcat (directory-files (aref dir-box i) t)))))
(setq i (1+ i)))
(setq i 0)
(setq dir-box dir-store)
(setq dir-store nil))
(append (remove-if '(lambda (x)
(or (equal "." (substring x -1))
(not (string-match
pattern (file-name-nondirectory x)))))
(delete nil store-box)) nil)))
(defun myfind-store-files (dir pattern)
(let* ((tmp-files (directory-files dir t))
(dir-box)
(dir-store)
(store-box (vconcat tmp-files))
(i 0))
(setq dir-box (remove-if '(lambda (x)
(or (not (file-directory-p x))
(equal "." (substring x -1))))
(vconcat tmp-files)))
(while (> (length dir-box) 0)
(while (< i (length dir-box))
(setq store-box (vconcat store-box (directory-files
(aref dir-box i) t)))
(setq dir-store (vconcat
dir-store
(remove-if
'(lambda (x)
(or (not (file-directory-p x))
(equal "." (substring x -1))))
(vconcat (directory-files (aref dir-box i) t)))))
(setq i (1+ i)))
(setq i 0)
(setq dir-box dir-store)
(setq dir-store nil))
(append (remove-if '(lambda (x)
(or (equal "." (substring x -1))
(not (string-match
pattern (file-name-nondirectory x)))))
(delete nil store-box)) nil)))
146デフォルトの名無しさん
2014/10/16(木) 10:26:10.93ID:ML6o1wZC いや、github とかにだね。。
147デフォルトの名無しさん
2014/10/16(木) 10:42:49.66ID:ML6o1wZC vconcat して新しいベクトルをいっぱい生成してるけど、それぐらいならリス
トをそのまま使った方がましだろうね。走査する速度が速くなるよりもベクト
ルを生成するコストの方が高い気はする。
それから mapcar は C の関数だからベクトルでもリストでも気にするほどのパ
フォーマンスの違いはない。elisp でパフォーマンスを気にしてプログラミン
グするときは C で書いてあるか否かも意識するとよいね。
(let ((vec (make-vector 1000 nil)))
(benchmark 100
`(mapcar 'identity vec)))
(let ((lis (make-list 1000 nil)))
(benchmark 100
`(mapcar 'identity lis)))
ざっと見る限りひたすらプログラミング初心者なのでとりあえずパフォーマン
スなんか気にしないで「リスト」を使って富豪的にどんどん書いてく方がいい
よ。
トをそのまま使った方がましだろうね。走査する速度が速くなるよりもベクト
ルを生成するコストの方が高い気はする。
それから mapcar は C の関数だからベクトルでもリストでも気にするほどのパ
フォーマンスの違いはない。elisp でパフォーマンスを気にしてプログラミン
グするときは C で書いてあるか否かも意識するとよいね。
(let ((vec (make-vector 1000 nil)))
(benchmark 100
`(mapcar 'identity vec)))
(let ((lis (make-list 1000 nil)))
(benchmark 100
`(mapcar 'identity lis)))
ざっと見る限りひたすらプログラミング初心者なのでとりあえずパフォーマン
スなんか気にしないで「リスト」を使って富豪的にどんどん書いてく方がいい
よ。
148ID:9sgE7fDV
2014/10/16(木) 11:15:16.59ID:DN4MHL3l149ID:9sgE7fDV
2014/10/28(火) 15:57:32.52ID:XuuTzEP8 elisp による find を書き直しました。
https://gist.github.com/anonymous/e0d440b0be2ab4106390
M-x efind
で、ディレクトリとパターンをいれると、
指定したディレクトリ以下にあるファイルもしくはディレクトリのうち、
パターンにマッチするものを列挙します。
下線がひいてあるところは、enter を押すとリンクできます。
「ここは普通こう書くよ」など、コメントをいただけないでしょうか。
https://gist.github.com/anonymous/e0d440b0be2ab4106390
M-x efind
で、ディレクトリとパターンをいれると、
指定したディレクトリ以下にあるファイルもしくはディレクトリのうち、
パターンにマッチするものを列挙します。
下線がひいてあるところは、enter を押すとリンクできます。
「ここは普通こう書くよ」など、コメントをいただけないでしょうか。
150デフォルトの名無しさん
2014/10/28(火) 16:53:12.91ID:BaOL+HSr >>149
普通のdiredじゃ駄目な理由がわからん
普通のdiredじゃ駄目な理由がわからん
151デフォルトの名無しさん
2014/10/28(火) 20:47:19.78ID:ABQvesFS152デフォルトの名無しさん
2014/10/30(木) 22:47:05.96ID:ZUGQOqFu 久々に来たけどなんかもりあがってるね。
153デフォルトの名無しさん
2014/11/16(日) 21:37:23.05ID:ifD0nPmW >>149
君、すごうぃーね〜
君、すごうぃーね〜
2014/11/16(日) 23:28:59.20ID:moSkozbZ
無駄多し、バグありの find-lisp-find-dired ってのが大昔からあるよ
155ID:9sgE7fDV
2014/11/19(水) 11:27:44.63ID:De3REAga156デフォルトの名無しさん
2014/11/23(日) 11:20:51.79ID:3HkxdKNj LispとPrologやれば
Cでの再帰プログラムが得意になる
Cでの再帰プログラムが得意になる
157デフォルトの名無しさん
2014/11/24(月) 06:26:03.94ID:eOmEBZPc べつに
lisp/prologの経験と
再帰の得手不得手は無関係だと思う
lisp/prologの経験と
再帰の得手不得手は無関係だと思う
158デフォルトの名無しさん
2015/01/11(日) 18:20:45.19ID:NEH94HBN なんか話題ない?
159デフォルトの名無しさん
2015/01/13(火) 10:50:02.39ID:NDLkVK0s マイナーモードの作成について、こちらが意図しないアクション (とくに keyboard-quit) をされたら、そのマイナーモードを抜けるようにしたいんだけど、どうすればいいですか?
できれば pre-command-hook や post-command-hook は使いたくないです。
できれば pre-command-hook や post-command-hook は使いたくないです。
160デフォルトの名無しさん
2015/01/13(火) 15:38:25.07ID:8CwIIHPp >>159
> マイナーモードを抜ける
の意味がわからない。
minor-mode のコマンドを途中でやめて元のキーシーケンスに戻るってことなら
auto-complete.el の ac-fallback-command あたりを見るとよろしかろう。
> マイナーモードを抜ける
の意味がわからない。
minor-mode のコマンドを途中でやめて元のキーシーケンスに戻るってことなら
auto-complete.el の ac-fallback-command あたりを見るとよろしかろう。
161デフォルトの名無しさん
2015/01/13(火) 16:45:00.86ID:NDLkVK0s >>160
コメントありがとうございます。
ご提示いただいたソースを読みたいと思います。
ちなみに、
(add-hook ’post-command-hook ’(lambda () (when hoge-mode (hoge-mode -1))))
のような処理を意図しております。
コメントありがとうございます。
ご提示いただいたソースを読みたいと思います。
ちなみに、
(add-hook ’post-command-hook ’(lambda () (when hoge-mode (hoge-mode -1))))
のような処理を意図しております。
162デフォルトの名無しさん
2015/01/13(火) 17:30:12.89ID:8CwIIHPp >>161
> (add-hook ’post-command-hook ’(lambda () (when hoge-mode (hoge-mode -1))))
それなら auto-complete.el の例は関係ないかな…
post-command-hook 使うか timer で意図しないコマンドを監視するかしかないのではなかろうか。
何やろうとしてるか分からないから余計なことかもしれないけど、
minor-mode を使うという発想をやめるのも解に繋がるかもしれないよ。
> (add-hook ’post-command-hook ’(lambda () (when hoge-mode (hoge-mode -1))))
それなら auto-complete.el の例は関係ないかな…
post-command-hook 使うか timer で意図しないコマンドを監視するかしかないのではなかろうか。
何やろうとしてるか分からないから余計なことかもしれないけど、
minor-mode を使うという発想をやめるのも解に繋がるかもしれないよ。
163デフォルトの名無しさん
2015/01/13(火) 17:45:35.15ID:NDLkVK0s >>162
ありがとうございます。
minor-mode を使うなら、あまり選択肢がないのですね。
> minor-mode を使わない
なるほど!なんとなく、とりあえずでマイナーモードを利用していたのですが、使わないという発想も大事なのですね。
ありがとうございます。
minor-mode を使うなら、あまり選択肢がないのですね。
> minor-mode を使わない
なるほど!なんとなく、とりあえずでマイナーモードを利用していたのですが、使わないという発想も大事なのですね。
164デフォルトの名無しさん
2015/01/13(火) 18:03:40.40ID:Wsh3Ajof そのものずばり何をしたいか書いちゃった方がいい気もする
165デフォルトの名無しさん
2015/01/13(火) 19:16:25.85ID:NDLkVK0s はい、ありがとうございます。
自分用に ace-jump を拡張してます。
勉強のため、通常の ace-jump 部分も最初から作っております。
今回は、hoge-jump というマイナーモードを定義しておりました。
マイナーモードという形を選択した理由は、なんとなくなのですが、他に、マイナーモードを抜ける時点に hook をかけたいという理由があります。
具体的には、hoge-jump によってバッファに付加したオーバーレイを、hoge-jump の去り際にリムーブしております。
(ただ、本家の ace-jump もマイナーモードを使ってないのですね。
本家のほうをもっと検討したいと思います)。
自分用に ace-jump を拡張してます。
勉強のため、通常の ace-jump 部分も最初から作っております。
今回は、hoge-jump というマイナーモードを定義しておりました。
マイナーモードという形を選択した理由は、なんとなくなのですが、他に、マイナーモードを抜ける時点に hook をかけたいという理由があります。
具体的には、hoge-jump によってバッファに付加したオーバーレイを、hoge-jump の去り際にリムーブしております。
(ただ、本家の ace-jump もマイナーモードを使ってないのですね。
本家のほうをもっと検討したいと思います)。
166デフォルトの名無しさん
2015/01/17(土) 10:12:31.67ID:IkrGJUzn ace-jumpで
1. (ace-jump-char-mode) 実行
2. Query char を mini-bufferから選択
3. a-Zの選択
の2の作業を省いて、
1. (ace-jump-char-selected-mode "A") みたいなの作って実行
2. a-Zの選択
のように。単語を指定した状態で実行したいのですが、
やり方が分からず。
わかる方いらっしゃいますか?
1. (ace-jump-char-mode) 実行
2. Query char を mini-bufferから選択
3. a-Zの選択
の2の作業を省いて、
1. (ace-jump-char-selected-mode "A") みたいなの作って実行
2. a-Zの選択
のように。単語を指定した状態で実行したいのですが、
やり方が分からず。
わかる方いらっしゃいますか?
167デフォルトの名無しさん
2015/01/17(土) 15:43:11.36ID:mj45QIEF >>166
ace-jump 使ってないからコメントしづらいけど
数日経ってこの調子だとすごく低いレベルで推移もしていないように見える。(まるで成長していない)
何をしようとしてどうだめだったのか書きたまえ。
ソースを見る限りだと ace-jump-char-mode の引数に目的の char を渡すだけ
にも思える。
(ace-jump-char-mode ?A)
ace-jump 使ってないからコメントしづらいけど
数日経ってこの調子だとすごく低いレベルで推移もしていないように見える。(まるで成長していない)
何をしようとしてどうだめだったのか書きたまえ。
ソースを見る限りだと ace-jump-char-mode の引数に目的の char を渡すだけ
にも思える。
(ace-jump-char-mode ?A)
レスを投稿する
ニュース
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★6 [BFU★]
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★7 [BFU★]
- 【千葉】コンビニに尿入りペットボトル並べた疑い、26歳男「むしゃくしゃして」…購入した客が飲もうとしたところ臭いに違和感 [ぐれ★]
- 高市首相が異例の“買春行為の罰則化の検討”に言及…世界では“買う側”に罰則を科すのが先進国のスタンダード ★2 [樽悶★]
- 【サッカー】U-17W杯 日本代表、無念のベスト8敗退… チャンスは多く作ったが仕留め切れず オーストリアに0-1で敗戦 [冬月記者★]
- 中国官製報道「日本経済はもう持たない」にネット民ツッコミ「ニュースだけ見てたら日本はもう百回くらい爆発してる」 [1ゲットロボ★]
- 現役JKのお茶会スレ( ¨̮ )︎︎𖠚ᐝ158
- 現役JKのお茶会スレ( ¨̮ )︎︎𖠚ᐝ157
- 【ガチ正論】一般人「中国に規制制裁されて、『中国ムカつく』じゃなくて矛先が『許さんぞ高市』になってる奴、頭おかしいの?」 ★2 [153490809]
- NHKニュースウオッチ9「日本側は対話にオープンな姿勢で安定した日中関係を築きたい考えなのに中国が意固地で糸口が見いだせない」 [904151406]
- 【ぺこ専🐰】なんG 兎田ぺこら突発配信実況スレ🏡【ホロライブ▶】
- 急におしりの穴グッて広げるのやめて
