【GNU】Emacs Lisp 【Elisp】

2013/10/20(日) 07:50:56.93
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
2013/10/20(日) 23:11:55.61
こっちでどーぞー
Emacs Part 43
http://toro.2ch.net/test/read.cgi/unix/1370754332/

Windows 依存部分ならここで
NTEmacs スレッド 3
http://anago.2ch.net/test/read.cgi/software/1325573999/

MAC関係の板にもあるのかもしれないけれど知らない
2013/10/20(日) 23:58:05.57
お薦めの書籍は?
4デフォルトの名無しさん
垢版 |
2013/10/21(月) 08:41:04.63
るびきち本
5デフォルトの名無しさん
垢版 |
2013/10/21(月) 12:51:30.26
Emacs Lispテクニックバイブル(るびきち)
http://www.amazon.co.jp/dp/4774148970
6デフォルトの名無しさん
垢版 |
2013/10/21(月) 13:19:32.90
やさしいEmacs‐Lisp講座(広瀬 雄二)
http://www.amazon.co.jp/dp/4877832718/
7デフォルトの名無しさん
垢版 |
2013/10/21(月) 13:24:59.87
Emacs Lispプログラミング入門(Robert J.Chassell)
http://www.amazon.co.jp/dp/4756118054/
8デフォルトの名無しさん
垢版 |
2013/10/21(月) 16:49:56.02
スクリプトの基本

EmacsをEmacs Lispインタプリタとして起動するには--scriptオプションを指定します。

$ emacs --script test.el

例:
hello.el:
(princ "Hello, World!\n")
実行
$ emacs --script hello.el
Hello, World!
9デフォルトの名無しさん
垢版 |
2013/10/21(月) 21:21:37.23
ElispCookbook
http://www.emacswiki.org/emacs/ElispCookbook
10デフォルトの名無しさん
垢版 |
2013/11/02(土) 13:54:03.16
* ワンポイント
**タイマー

(run-with-timer 時間 繰り返し 関数)
11デフォルトの名無しさん
垢版 |
2013/11/05(火) 22:09:23.05
リストを処理するためのプログラミング言語
- Lisp
リストを処理するためのエディタ
- Emacs
2013/11/09(土) 22:58:43.14
Emacs Lisp 3 [981res]
http://toro.2ch.net/test/read.cgi/tech/1191875993
http://unkar.org/r/tech/1191875993
1 2007/10/09(火) 05:39:53
981 2012/09/13(木) 19:32:44.10

Emacs Lisp 4 [6res]
http://toro.2ch.net/test/read.cgi/tech/1357029188
http://unkar.org/r/tech/1357029188
1 2013/01/01(火) 17:33:08.97
6 2013/01/21(月) 04:55:20.98
2013/11/09(土) 23:02:02.86
前スレが今年早々に保守失敗してんのね
lispスレに統合するという話すら出ないうちに
>>2みたいな無知が偉そうに誘導している始末
全く人がいなくなってしまった様子

るびきちはすっかり教祖様なのに
おまえらときたらどこいったんだ・・・
2013/11/09(土) 23:11:12.18
そういえばこんなスレあったな
>>12見るまで前スレあること忘れてた
2013/11/11(月) 10:37:09.91
質問です。

-------------------------------------
310 <- 表示されている 最上段
311
312
313
314
315
316 <- 今ここ
317
.
.
.
.
350
-------------------------------------

表示されている最上段の行番号を知りたいのですが
どうすればいいでしょうか?
16デフォルトの名無しさん
垢版 |
2013/11/11(月) 19:53:18.77
>>15
(line-number-at-pos (window-start))
2013/11/11(月) 22:47:59.75
>>16
ありがとうございます!
2013/11/11(月) 23:45:46.74
ニュー速VIP爆撃中の2ch定期書き込みツールqsocks
lispで書かれたこのツールを誰か改造してください。
他板でも使えるようにしてください。
お願いします。m(ーー)m

qsocks
https://anonfiles.com/file/3fcd3edbf6000ecf37b61e8af186c453

qsocksソースコード
http://codepad.org/uyuG7Ovg
2013/11/15(金) 15:42:25.09
Emacs Lispはなんでローカル関数ないのん?
20デフォルトの名無しさん
垢版 |
2013/11/15(金) 18:54:42.44
>>19
lambda使って
21デフォルトの名無しさん
垢版 |
2013/11/18(月) 13:14:39.57
elisperっていそうでいないんだけど、いったいどこにいるの?
2013/11/18(月) 16:15:26.64
地球上では3分間しかその能力を発揮できないからな
23デフォルトの名無しさん
垢版 |
2013/11/18(月) 22:02:40.71
>>22
それってUltra-C のユーザじゃね?
2013/11/24(日) 00:09:52.10
>>21
elispなんて、今もうunix関連の企業で職人しか触らないんじゃない?
2013/11/24(日) 00:13:08.19
HHKのUS配列なんて、そこらの電器店で買えないし、
Swapするのも面倒だし、皆、Vimに移ったんじゃない?
2013/11/24(日) 03:47:10.26
vimに移るなんて何年前の話だよ?
移り先はsublimetextあたり。

でもEmacsはある一定のユーザは残る。その理由がlispで拡張できる点だろうな。
2013/11/24(日) 08:28:32.93
Emacs 対 Vim の宗教戦争は収拾がつかなくなる
2013/11/24(日) 08:49:04.91
>>27
だが、このスレはその戦争には無縁だな。
elispのスレなのだから。
2013/11/24(日) 11:56:54.55
エディタに関するスレではなく、
単なるいちプログラミング言語についての話。
あえていえば、elispをコマンドラインから起動させる前提ならvimmerがこのスレに参加してくれても構わない。

あくまでも、このスレはLispの一方言であるelispというプログラミング言語についてのスレなのだから。
2013/11/24(日) 15:35:08.97
こういうエディタを乗り換える人って、ろくすっぽマクロも書いてなさそう
2013/11/24(日) 15:39:23.72
JDEEのinstallに何時間もかけたものの、1、2ヶ月たっても使いこなせなかった
甘酸っぱい経験からすれば、javaはeclipseで良い
2013/11/24(日) 15:45:28.88
あんなにー♪いっしょぉ、だぁったぁのにぃー♬
ゆぅぐれぇはぁー、もぅーちぃがぁーういろぉー♫
33デフォルトの名無しさん
垢版 |
2013/11/24(日) 16:04:23.53
termの中でvi使ってます♪
2013/11/24(日) 18:38:31.87
>>30
そのマクロはスレチ
ポールグレアムのマクロならこのスレであってる。
2013/12/01(日) 20:00:51.02
あなたがLispを無視することができない理由
http://blog.8arrow.org/entry/2013/12/01/120712
2013/12/11(水) 21:39:24.67
(let ((ningen '(:name "tarou" :age 20)))
(get-value :name ningen)) ; tarou

こんなことがしたいのですがget-valueのような関数はありますか?
2013/12/11(水) 21:51:07.33
それだとそのまんま plist-get が使える
(plist-get ningen :name) ; => tarou

すごい巨大になるなら hash もいいかもね。
2013/12/11(水) 22:27:05.81
>>37
リスト コロン なんかで検索しても出てこなかったので困ってました。
ありがとうございます!
2013/12/21(土) 08:17:51.09
何らかのキーを押した時点で実行されて
押したキー情報を取得できるようにしたいのですが、
可能でしょうか?

"C-a" "C-t" "0" "q" "w" "j" "j" "s" の様に
キーを押した時点でなんのキーを押したかを過去数回分取得したいです。

"C-a" "C-t"
"q" "w"
"j" "j" "s"
でそれぞれコマンド実行
のようなことがしたいです。
2013/12/21(土) 09:48:34.64
>>39
何かの入力があった後に実行する → post-command-hook
何か文字が入力された後に実行する → after-self-insert-hook

直前のキー入力 → last-input-event
過去のキー入力リスト → (recent-keys)

直前に何が入力されてたかで挙動を変える系の拡張だと key-combo ってのがあったけど
やりたいのはそういうのかね?
2013/12/21(土) 09:50:13.60
嘘書いてしまった
×after-self-insert-hook
○post-self-insert-hook
2013/12/21(土) 09:51:47.40
あとこれ結構まとまってるな
Emacsでキーボードイベントを扱う方法まとめ
http://d.hatena.ne.jp/uk-ar/20120213/1329138385
2013/12/21(土) 15:14:36.76
>40-42
ありがとうございます。
key-comboで大方は解決しそうです。

key-comboでできないのは触った限り
・C-a+C-t のような違うショートカットの組み合わせと
・C-a+a のようなショートカットとキー組み合わせ
だと思ったんですが、上記も書き方によっては可能ですか?

できなければ、
post-command-hook
(recent-keys)
single-key-description
らへんでいじって試してみようと思います。

あと、
key-comboで
・◯◯◯モードで(region-active-p)がtの状態
・◯◯◯モードで(region-active-p)がnilの状態
のようにそれぞれhookを分けたいのですが、
どのように書けばよいでしょうか?
2013/12/21(土) 17:22:18.88
key-combo はあくまで self-insert-key で入力される文字に特化したものっぽいね。
特にフックとか用意されていないみたいだから
リージョンの状態とかに応じて挙動を変えたいなんて場合はソースに直接手を入れるか
advice でも設定するしかないんでないかな。

他にも
・同じキーを連続入力した時に(文字ではなく)別なコマンドを割り当てる sequential-command
http://d.hatena.ne.jp/rubikitch/20090219/sequential_command
・プリフィクスキーの入力を一回でOKにする smartrep
http://sheephead.homelinux.org/2011/12/19/6930/
・文字キーの同時押しにキーバインドする key-chord
http://www.emacswiki.org/emacs/KeyChord

とか色々キー入力を見るのはあるみたいだけど、希望する動作のものはなさそう。
もっとも作る時の参考ぐらいにはなるかもしれない。
何か他にもあったような気もするんだけど記憶が定かでないな・・

C-a + C-t でってのは、C-a C-t に何か直接割り当てるんじゃなく
・普段の C-t は transpose-chars
・C-a は何も変わらず beginning-of-line
・C-a した後に C-t したら transpose-chars ではない何か別の挙動をしたい

ってことだよね?
2013/12/24(火) 06:05:38.74
>44
ありがとうございます。
emacs導入初期に全てのキー設定をいじって、self-insert-commandでない書き方にしてしまったため、一部入力支援系が試せず、キー設定を見直しているところです。
入力支援系を使えるようにするためには英数記号だけkey-comboに移せば改善されそうです。
C-a + C-t を例にだしたのは特に意味はなかったですが、そういう感じです。
sequential-command的なことは自分でやれるようにはしてます。
文字の同時入力は微妙に使いづらいのでやめました。
勉強がてら自分でいろいろ書いてみようと思います。
2013/12/26(木) 21:05:55.80
>>45
なんかこれが一番目的に近づいてる気がする
https://github.com/yuutayamada/mykie-el

キーをおしたときに条件に応じて挙動を変えるって拡張だけど
条件は自分で追加できるから、あるキーを押したあとだとこの挙動、なんてのは自在に作れると思う
リージョンがどうのとかも標準で用意されてるし。
2013/12/29(日) 23:55:09.33
>>46
いいですね。一番しっくりきたのでこれにしました。
結構いじりやすいので
"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 に関する何かがおかしくなるんだとすると
仕様に漏れがあるのかもしれないね。
2013/12/30(月) 01:51:31.65
>>48
読み落とししてました。。。
(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エディタは小指の付け根で押したなんて記述を見た気がしてきた
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
http://www.youtube.com/watch?v=0EBTn_3DBYo
59デフォルトの名無しさん
垢版 |
2014/02/07(金) 22:36:50.85
ソチオリンピックはじまったぞ
2014/02/08(土) 13:17:24.90
xyzzy Lispにsetcar/setcdrがなかった
ググったらrplaca/rplacdだとわかった
61デフォルトの名無しさん
垢版 |
2014/02/11(火) 08:52:22.47
>>60
すごい!大発見だね
2014/02/11(火) 09:07:28.36
>>61
そうだね
君もいつか自分がクズだと気づけるといいね
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)
)))
2014/02/11(火) 12:58:36.81
>>65
calc-eval ってのがあるよ。
(setq str (calc-eval str)) で ok。
calc は無駄に多機能だから info 読んでみるといい。
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況