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
2013/12/29(日) 23:55:09.33
>>46
いいですね。一番しっくりきたのでこれにしました。
結構いじりやすいので
"C-j f" "f C-j" "YYY" "qj"
なども反応するようにできて満足です。
ただアルファベットも設定してしまうとself-insert-commandではなくなるのでタイピング時にauto-commandが実行されないのが残念ですが、仕方ないですかね。
いいですね。一番しっくりきたのでこれにしました。
結構いじりやすいので
"C-j f" "f C-j" "YYY" "qj"
なども反応するようにできて満足です。
ただアルファベットも設定してしまうとself-insert-commandではなくなるのでタイピング時にauto-commandが実行されないのが残念ですが、仕方ないですかね。
2013/12/30(月) 00:05:41.35
使ってないから詳しい事はわからないけど、
(mkie:set-keys 'with-self-key ... ) で設定したのに
self-insert-command に関する何かがおかしくなるんだとすると
仕様に漏れがあるのかもしれないね。
(mkie:set-keys 'with-self-key ... ) で設定したのに
self-insert-command に関する何かがおかしくなるんだとすると
仕様に漏れがあるのかもしれないね。
2013/12/30(月) 01:51:31.65
>>48
読み落とししてました。。。
(mykie:global-set-key …
で書いてました。
(mkie:set-keys 'with-self-key …
ならいけました!! ありがとうございます。
読み落とししてました。。。
(mykie:global-set-key …
で書いてました。
(mkie:set-keys 'with-self-key …
ならいけました!! ありがとうございます。
50デフォルトの名無しさん
2014/01/17(金) 19:22:13.14 どういたしまして。
2014/01/17(金) 19:58:14.55
いやいや誰だよw
52デフォルトの名無しさん
2014/01/17(金) 20:04:09.16 俺です。
2014/01/17(金) 20:06:45.37
貴方でしたか・・
2014/01/17(金) 20:46:42.74
Ctrlキーって小指で押すのと小指の付け根で押すのと、どちらが正しい流儀なんだろう?
TECOエディタは小指の付け根で押したなんて記述を見た気がしてきた
TECOエディタは小指の付け根で押したなんて記述を見た気がしてきた
2014/01/17(金) 20:51:58.59
emacs スレ向けだろうそれは流石に
56デフォルトの名無しさん
2014/01/21(火) 02:17:15.59 なんか話題ないの?
2014/01/25(土) 15:07:45.72
ない
2014/01/25(土) 16:39:38.15
59デフォルトの名無しさん
2014/02/07(金) 22:36:50.85 ソチオリンピックはじまったぞ
2014/02/08(土) 13:17:24.90
xyzzy Lispにsetcar/setcdrがなかった
ググったらrplaca/rplacdだとわかった
ググったらrplaca/rplacdだとわかった
61デフォルトの名無しさん
2014/02/11(火) 08:52:22.47 >>60
すごい!大発見だね
すごい!大発見だね
2014/02/11(火) 09:07:28.36
63デフォルトの名無しさん
2014/02/11(火) 09:24:32.31 キーボードから絵が描けるように拡張したった 後は音鳴るようにするー
64デフォルトの名無しさん
2014/02/11(火) 10:07:29.09 >>63
ソース見せて〜
ソース見せて〜
2014/02/11(火) 12:56:24.94
【入門】Common Lisp その10【質問よろず】スレから誘導されてきました。
Emacsで選択範囲部分の四則演算を行なえるようにしたいのですが、
どのように記述すればいけるでしょうか?
たとえば100*200+300*400を範囲選択すれば、140000を表示できるようにしたいです。
(defun my-calc-region (start end)
(interactive "r")
(if mark-active
(let ((str (buffer-substring start end)))
;;ここで選択範囲strの四則演算を行ないたい
(message str)
)))
Emacsで選択範囲部分の四則演算を行なえるようにしたいのですが、
どのように記述すればいけるでしょうか?
たとえば100*200+300*400を範囲選択すれば、140000を表示できるようにしたいです。
(defun my-calc-region (start end)
(interactive "r")
(if mark-active
(let ((str (buffer-substring start end)))
;;ここで選択範囲strの四則演算を行ないたい
(message str)
)))
2014/02/11(火) 12:58:36.81
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 とかにだね。。
レスを投稿する
ニュース
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★6 [BFU★]
- 【サッカー】U-17W杯 日本代表、無念のベスト8敗退… チャンスは多く作ったが仕留め切れず オーストリアに0-1で敗戦 [冬月記者★]
- 【千葉】コンビニに尿入りペットボトル並べた疑い、26歳男「むしゃくしゃして」…購入した客が飲もうとしたところ臭いに違和感 [ぐれ★]
- 中国官製報道「日本経済はもう持たない」にネット民ツッコミ「ニュースだけ見てたら日本はもう百回くらい爆発してる」 [1ゲットロボ★]
- 植田日銀総裁 「円安進行が物価高を起こしている」 ★4 [お断り★]
- 高市首相が異例の“買春行為の罰則化の検討”に言及…世界では“買う側”に罰則を科すのが先進国のスタンダード ★2 [樽悶★]
