お薦めの書籍は?
4 :
デフォルトの名無しさん:2013/10/21(月) 08:41:04.63
るびきち本
5 :
デフォルトの名無しさん:2013/10/21(月) 12:51:30.26
6 :
デフォルトの名無しさん:2013/10/21(月) 13:19:32.90
7 :
デフォルトの名無しさん:2013/10/21(月) 13:24:59.87
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
10 :
デフォルトの名無しさん:2013/11/02(土) 13:54:03.16
* ワンポイント
**タイマー
(run-with-timer 時間 繰り返し 関数)
11 :
デフォルトの名無しさん:2013/11/05(火) 22:09:23.05
リストを処理するためのプログラミング言語
- Lisp
リストを処理するためのエディタ
- Emacs
前スレが今年早々に保守失敗してんのね
lispスレに統合するという話すら出ないうちに
>>2みたいな無知が偉そうに誘導している始末
全く人がいなくなってしまった様子
るびきちはすっかり教祖様なのに
おまえらときたらどこいったんだ・・・
そういえばこんなスレあったな
>>12見るまで前スレあること忘れてた
質問です。
-------------------------------------
310 <- 表示されている 最上段
311
312
313
314
315
316 <- 今ここ
317
.
.
.
.
350
-------------------------------------
表示されている最上段の行番号を知りたいのですが
どうすればいいでしょうか?
16 :
デフォルトの名無しさん:2013/11/11(月) 19:53:18.77
>>15 (line-number-at-pos (window-start))
Emacs Lispはなんでローカル関数ないのん?
20 :
デフォルトの名無しさん:2013/11/15(金) 18:54:42.44
21 :
デフォルトの名無しさん:2013/11/18(月) 13:14:39.57
elisperっていそうでいないんだけど、いったいどこにいるの?
地球上では3分間しかその能力を発揮できないからな
23 :
デフォルトの名無しさん:2013/11/18(月) 22:02:40.71
>>22 それってUltra-C のユーザじゃね?
>>21 elispなんて、今もうunix関連の企業で職人しか触らないんじゃない?
HHKのUS配列なんて、そこらの電器店で買えないし、
Swapするのも面倒だし、皆、Vimに移ったんじゃない?
vimに移るなんて何年前の話だよ?
移り先はsublimetextあたり。
でもEmacsはある一定のユーザは残る。その理由がlispで拡張できる点だろうな。
Emacs 対 Vim の宗教戦争は収拾がつかなくなる
>>27 だが、このスレはその戦争には無縁だな。
elispのスレなのだから。
エディタに関するスレではなく、
単なるいちプログラミング言語についての話。
あえていえば、elispをコマンドラインから起動させる前提ならvimmerがこのスレに参加してくれても構わない。
あくまでも、このスレはLispの一方言であるelispというプログラミング言語についてのスレなのだから。
こういうエディタを乗り換える人って、ろくすっぽマクロも書いてなさそう
JDEEのinstallに何時間もかけたものの、1、2ヶ月たっても使いこなせなかった
甘酸っぱい経験からすれば、javaはeclipseで良い
あんなにー♪いっしょぉ、だぁったぁのにぃー♬
ゆぅぐれぇはぁー、もぅーちぃがぁーういろぉー♫
33 :
デフォルトの名無しさん:2013/11/24(日) 16:04:23.53
termの中でvi使ってます♪
>>30 そのマクロはスレチ
ポールグレアムのマクロならこのスレであってる。
(let ((ningen '(:name "tarou" :age 20)))
(get-value :name ningen)) ; tarou
こんなことがしたいのですがget-valueのような関数はありますか?
それだとそのまんま plist-get が使える
(plist-get ningen :name) ; => tarou
すごい巨大になるなら hash もいいかもね。
>>37 リスト コロン なんかで検索しても出てこなかったので困ってました。
ありがとうございます!
何らかのキーを押した時点で実行されて
押したキー情報を取得できるようにしたいのですが、
可能でしょうか?
"C-a" "C-t" "0" "q" "w" "j" "j" "s" の様に
キーを押した時点でなんのキーを押したかを過去数回分取得したいです。
"C-a" "C-t"
"q" "w"
"j" "j" "s"
でそれぞれコマンド実行
のようなことがしたいです。
>>39 何かの入力があった後に実行する → post-command-hook
何か文字が入力された後に実行する → after-self-insert-hook
直前のキー入力 → last-input-event
過去のキー入力リスト → (recent-keys)
直前に何が入力されてたかで挙動を変える系の拡張だと key-combo ってのがあったけど
やりたいのはそういうのかね?
嘘書いてしまった
×after-self-insert-hook
○post-self-insert-hook
>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を分けたいのですが、
どのように書けばよいでしょうか?
>44
ありがとうございます。
emacs導入初期に全てのキー設定をいじって、self-insert-commandでない書き方にしてしまったため、一部入力支援系が試せず、キー設定を見直しているところです。
入力支援系を使えるようにするためには英数記号だけkey-comboに移せば改善されそうです。
C-a + C-t を例にだしたのは特に意味はなかったですが、そういう感じです。
sequential-command的なことは自分でやれるようにはしてます。
文字の同時入力は微妙に使いづらいのでやめました。
勉強がてら自分でいろいろ書いてみようと思います。
>>46 いいですね。一番しっくりきたのでこれにしました。
結構いじりやすいので
"C-j f" "f C-j" "YYY" "qj"
なども反応するようにできて満足です。
ただアルファベットも設定してしまうとself-insert-commandではなくなるのでタイピング時にauto-commandが実行されないのが残念ですが、仕方ないですかね。
使ってないから詳しい事はわからないけど、
(mkie:set-keys 'with-self-key ... ) で設定したのに
self-insert-command に関する何かがおかしくなるんだとすると
仕様に漏れがあるのかもしれないね。
>>48 読み落とししてました。。。
(mykie:global-set-key …
で書いてました。
(mkie:set-keys 'with-self-key …
ならいけました!! ありがとうございます。
50 :
デフォルトの名無しさん:2014/01/17(金) 19:22:13.14
どういたしまして。
いやいや誰だよw
52 :
デフォルトの名無しさん:2014/01/17(金) 20:04:09.16
俺です。
貴方でしたか・・
Ctrlキーって小指で押すのと小指の付け根で押すのと、どちらが正しい流儀なんだろう?
TECOエディタは小指の付け根で押したなんて記述を見た気がしてきた
emacs スレ向けだろうそれは流石に
56 :
デフォルトの名無しさん:2014/01/21(火) 02:17:15.59
なんか話題ないの?
ない
59 :
デフォルトの名無しさん:2014/02/07(金) 22:36:50.85
ソチオリンピックはじまったぞ
xyzzy Lispにsetcar/setcdrがなかった
ググったらrplaca/rplacdだとわかった
61 :
デフォルトの名無しさん:2014/02/11(火) 08:52:22.47
>>61 そうだね
君もいつか自分がクズだと気づけるといいね
63 :
デフォルトの名無しさん:2014/02/11(火) 09:24:32.31
キーボードから絵が描けるように拡張したった 後は音鳴るようにするー
64 :
デフォルトの名無しさん:2014/02/11(火) 10:07:29.09
【入門】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)
)))
>>65 calc-eval ってのがあるよ。
(setq str (calc-eval str)) で ok。
calc は無駄に多機能だから info 読んでみるといい。
67 :
65:2014/02/11(火) 17:47:10.31
68 :
デフォルトの名無しさん:2014/02/12(水) 09:38:07.02
>>66 こういう親切な人がいるところが2ちゃんの凄いところ
ム板ってマイナー言語とかのスレに凄い優しい人一杯いるよね
仲間が少なくなってきてるから寂しいんだろう
Sublime Textが
Emacs LispやCommon Lispで拡張できるようになったらどうするんだろうか。
Sublime TextがEmacsenになる
EmacsにとってEmacs Lispは拡張言語じゃないんだよ
C言語で作られたEmacs Lispがあって、そのEmacs LispでEmacsが作られている
Sublime TextがEmacs Lispを拡張言語として使えるようになってもあまり魅力は無い
Emacs Lispで作られたSublime Textがあればちょっと考える
>>73 なんだなら全部C言語なんだね!
pythonもC言語だから
全部既にできたことなんだね!
C言語を経由すれば全て可能!
ということだよね!
そりゃそうだろ
機械語最強伝説みたいなもんだ
>>74 プログラムの再起動とか無しに自身を書き換える機能が欲しい
コンパイルが必須な言語だとちょっと使い勝手が悪いかな
メモリ管理も自動でやってほしい
elisp も ffi が実装されたら素敵なんだが
Pymacsとかそれっぽい
pythonはインデントが嫌いなんだよなー、構文で文ブロック表さないようにしている所がどうしてもなじめない。
なのでいまだにEmacsラブラブなんであるよ。
あと基本の削除がKillRing無いと生きていけない
俺は逆
Pythonのインデントが美しい、見やすい。ブロック指示語無しでの表現がスマート
でも、Lisp使いになると東大女とやり放題と聞いたのでLispの勉強を始めた
>>71 理想的だな。
Emacsを使う理由が薄れる。
ここのスレの住人はLispで拡張できるからEmacsを使うって人が多いと思う。
目的がLispであってEmacsは手段でしかない。
できれば素のlisp,common lispが使えれば理想的だな。
俺はxyzzyだけど
xyzzy はより Common Lisp っぽいんじゃなかったっけ
emacs lisp は lisp 好きにはむしろ
Common Lispで実装されたEmacsみたいなエディタあるよ。
でもEmacsのように便利に使おうと思うと、自分でCommon Lispをバリバリ書かないといけない。
あったとしてもEmacsやVimくらい世界中からHackされようじゃないとねぇ。
zyzzyなんて海外じゃ誰も知らないだろうし。
xyzzy さり気なく github で開発継続してたんだなあ
>>88 煽るよりもこうすれば良いっていう提案をするのが吉だと信じてる。
>>80 構文からインデントを生成してくれる<言語名>.elにおんぶにだっこになるとPythonが辛いんよ。
90 :
デフォルトの名無しさん:2014/02/23(日) 18:39:31.98
すいません。Emacs Part 45から来ました。
質問させてください。
一定文字数、右にカーソルを移動させる方法はありますか。
「矩形、編集」などで調べましたがわかりませんでした。
図1)のテキストがあったときに、右側に対訳のような形で編集したいです。
図1)
あいうえ
かきくけこ
さしす
たちつてとなにぬねの
図2)
あいうえ aiue
かきくけこ kakikukeko
さしす <-ここにカーソルを移動させ段組みで編集したい
たちつてとなにぬねの
よろしくお願いします。
お前ら、久々の仕事だぞ。
関数組めばいいのに
それにショートカットきーを割り当てる
> 「矩形、編集」などで調べましたがわかりませんでした。
もっと深く調べろ
矩形、編集で調べている時点であかん
もともと、そんな関数あるわけない。
カーソル制御で知らべろ
で、関数作れ(簡単にできる)
>>91 てめーは何もやらないのかよ、使えねぇなカス
>>92 そんな関数1つだけで出来る訳ねーだろ、氏ね
>>93 抽象的なことだけ書き込んで悦に入ってんじゃねーよ
>>94 煽る以外に芸が無いのかよ、無脳
>>95 だったら、その関数をてめーが組んで、ここに貼り付けろ
ジョークだから本気に受け取らずに藁ってね
今だにemacsとか使ってるバカいるのか。
Common Lispでなければ
意味ない。
そうかな?
俺自身はCommon Lisp系のxyzzyを使っているが
emacsはemacsで良さがある
>>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 の懐かしさに、久しぶりの書き込みでござる。
質問です。
実行後、空白行で区切った段落を1行で省略表示させて、
カーソル行が省略表示されている段落と同じ範囲内に来た場合に
展開してくれるというものが作りたいのですが、可能でしょうか?
【実行前】
テキストテキストテキストテキストテキストテキストテキスト
テキストテキストテキストテキストテキストテキストテキスト
テキストテキストテキストテキストテキストテキストテキスト
テキストテキストテキストテキストテキストテキストテキスト
□←カーソル位置
テキストテキストテキストテキストテキストテキストテキスト
テキストテキストテキストテキストテキストテキストテキスト
【実行後】
テキストテキストテキストテキストテキストテキスト...
□テキストテキストテキストテキストテキストテキストテキスト
テキストテキストテキストテキストテキストテキストテキスト
>>101 出来るでしょう。
テキストプロパティやオーバーレイには
表示内容だけ一時的に変更するってのと、カーソルが上に乗った時/いなくなった時に任意の関数を呼び出すって属性があるから
それを設定してやればいいんじゃないかな。
hs-minor-mode あたりを設定を変えつつ使うのが楽でいいんじゃないでしょうか。
隠す区切りを改行が連続している領域に変更して、
隠す処理を行ってる関数あたりに point-entered/point-left で表示をトグルする処理を追加してやると。
hs-set-up-overlay に出入りした時に隠したり表示したりするプロパティ追加する関数せっていすりゃいいんじゃね。
>>103 具体的にどのようにすればよろしいでしょうか?
まずorg.elを開きます
point-entered は残念ながら overlay では機能しないらしいから
気合入れて text-property に追加してまわるしかないんじゃないかなあ
post-command-hook でいちいちチェックして hs-hide-block/hs-show-block もいいかもね
一度elispの拡張の楽しさを覚えると、他のエディタに移れない
ひょえー
固まっていくんだ
>>107 vimやsublimetextはpythonで拡張できるけどそれと比較してどうよ?
110 :
デフォルトの名無しさん:2014/03/10(月) 16:28:12.11
Pymacs動くから普通にPythonでも拡張できるよ
Lispで拡張子できるのに、ナニが悲しゅうてパイソンつかうんや?
Lisp使えへんからか?
ひょっとしてナニがうずくんか?
「リストは飽きた、パイもませろ」
エッヂね、あなた
リスト × L
リスト ○ R
113 :
デフォルトの名無しさん:2014/03/25(火) 18:27:18.16 ID:Ye296TBS
なんか話題ない?
>>109 Vim ってpythonで拡張できるん?
emacsは遅めだな
>>114 python だけじゃなく ruby とか lua でも拡張出来るよ
ただしコンパイル時に if_python とか if_lua とか組み込まないとだめだけど
オリジナルの Vim scriptは海外ではウケが悪いんだとさ
24.4から (< a b c …) できるって。
今までできなかったのかよ
定義すれば済むことだな
>>116 すげぇ!
Sublime Textなんていらなかったんや!
>>119 vimmerはエディタの拡張のために、好きな言語を「選択」できる。
しかし、lisperはエディタの拡張のために、好きに言語を「拡張」できる。
そういう意味ではリーダーマクロのない elisp はいまいち
>>123 おお、なんか凄そうだな
勉強すすんだら、それ勉強させてもらいます
来年かなあ
Latexのコードの特殊文字(?)を取り除いて文字だけにしたい
例えば
This figure ¥ref{fig:some} show someone.
を
This figure 321 show someone.
に変換したい
どんな正規表現置換すればいいでしょうか
あああ
あああじゃねえよ321は決め打ち?
130 :
デフォルトの名無しさん:2014/05/29(木) 22:57:32.74 ID:lRFHqZI8
iii
131 :
みつを:2014/06/04(水) 19:55:43.06 ID:1mti/jFC
>>130 iiiじゃねえよ。決め打ちね。
ちいさいことからこつこつやっていくしかないよなぁ
(replace-regexp-in-string "[\\]ref\{.*\}" "321" "This figure \\ref{fig:some} show someone.")
そもそも\refを先に\\refにしないとイカンかもな。\rになってまうもんなぁ
132 :
みつを:2014/06/04(水) 19:57:17.25 ID:1mti/jFC
むしろそれが今の Emacs の成長率みたいなもんなんじゃないのかな
あああ
iii
uuu
135 :
デフォルトの名無しさん:2014/09/10(水) 14:59:47.34 ID:TJ7Vp+Yk
最近なんか話題ある?
きちさんが元気になった。
138 :
デフォルトの名無しさん:2014/09/13(土) 00:21:10.93 ID:3yBdenhy
139 :
デフォルトの名無しさん:2014/10/12(日) 21:42:50.50 ID:QLTYsLQy
Ymacs
windows の emacs で find-name-dired をやりたかったんだけど、cmd の find は挙動が違うし、外部から find.exe をもってくるのも難しいしということで、elisp で find-name-dired っぽいものを自作した。
それは、条件に合致したものを cons で繋げていく原始的なものだったんだけど、その後、「リストよりもベクトルの方が参照が速い」ことや、mapcar 関数の存在を知って、自作 find を書き換えた。
修正の結果、find に要する時間は長くなってしまった。
その後、remove-if なる関数があることをしって、先のコードの mapcar を remove-if にすげ替えた。
結果さらに遅くなった。
やっぱりコンスセル単位で操作していくのが一番速いのですか?
> やっぱりコンスセル単位で操作していくのが一番速いのですか?
ベクトルは参照は早いけど追加操作は遅い。リストはその逆と思っておけばいい。
ケースバイケースだからソース公開するといいよ。
>>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)))))
;; 続きます
(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)))))
(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))))
連投すみません。どこか外部にアップして、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)))
いや、github とかにだね。。
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)))
ざっと見る限りひたすらプログラミング初心者なのでとりあえずパフォーマン
スなんか気にしないで「リスト」を使って富豪的にどんどん書いてく方がいい
よ。
>>147 コメントありがとうございます。
なるほど、パフォーマンスはかわらないのか。
elisp でいろいろ作ってみて、プログラミングを学んでいきたいと思います。
スレを汚してしまい、すみません。
>>149 普通のdiredじゃ駄目な理由がわからん
>>150 外部の find を呼ぶ find-name-dired などが、windows ではデフォルトでは使えないので作りました。
あれ、もしかして使えるのかも。もう少し調べてみます。
久々に来たけどなんかもりあがってるね。
153 :
デフォルトの名無しさん:2014/11/16(日) 21:37:23.05 ID:ifD0nPmW
無駄多し、バグありの find-lisp-find-dired ってのが大昔からあるよ
>>154 !!
ありがとうございます。
ソースコードをみて書き方を学びます。
LispとPrologやれば
Cでの再帰プログラムが得意になる
べつに
lisp/prologの経験と
再帰の得手不得手は無関係だと思う
158 :
デフォルトの名無しさん:2015/01/11(日) 18:20:45.19 ID:NEH94HBN
なんか話題ない?
マイナーモードの作成について、こちらが意図しないアクション (とくに keyboard-quit) をされたら、そのマイナーモードを抜けるようにしたいんだけど、どうすればいいですか?
できれば pre-command-hook や post-command-hook は使いたくないです。
>>159 > マイナーモードを抜ける
の意味がわからない。
minor-mode のコマンドを途中でやめて元のキーシーケンスに戻るってことなら
auto-complete.el の ac-fallback-command あたりを見るとよろしかろう。
>>160 コメントありがとうございます。
ご提示いただいたソースを読みたいと思います。
ちなみに、
(add-hook ’post-command-hook ’(lambda () (when hoge-mode (hoge-mode -1))))
のような処理を意図しております。
>>161 > (add-hook ’post-command-hook ’(lambda () (when hoge-mode (hoge-mode -1))))
それなら auto-complete.el の例は関係ないかな…
post-command-hook 使うか timer で意図しないコマンドを監視するかしかないのではなかろうか。
何やろうとしてるか分からないから余計なことかもしれないけど、
minor-mode を使うという発想をやめるのも解に繋がるかもしれないよ。
>>162 ありがとうございます。
minor-mode を使うなら、あまり選択肢がないのですね。
> minor-mode を使わない
なるほど!なんとなく、とりあえずでマイナーモードを利用していたのですが、使わないという発想も大事なのですね。
そのものずばり何をしたいか書いちゃった方がいい気もする
はい、ありがとうございます。
自分用に ace-jump を拡張してます。
勉強のため、通常の ace-jump 部分も最初から作っております。
今回は、hoge-jump というマイナーモードを定義しておりました。
マイナーモードという形を選択した理由は、なんとなくなのですが、他に、マイナーモードを抜ける時点に hook をかけたいという理由があります。
具体的には、hoge-jump によってバッファに付加したオーバーレイを、hoge-jump の去り際にリムーブしております。
(ただ、本家の ace-jump もマイナーモードを使ってないのですね。
本家のほうをもっと検討したいと思います)。
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の選択
のように。単語を指定した状態で実行したいのですが、
やり方が分からず。
わかる方いらっしゃいますか?
>>166 ace-jump 使ってないからコメントしづらいけど
数日経ってこの調子だとすごく低いレベルで推移もしていないように見える。(まるで成長していない)
何をしようとしてどうだめだったのか書きたまえ。
ソースを見る限りだと ace-jump-char-mode の引数に目的の char を渡すだけ
にも思える。
(ace-jump-char-mode ?A)
>>167 ちょっとまて、165 は私で別人ですよ。
169 :
168:2015/01/17(土) 20:58:25.28 ID:654N0mRZ
私のほうは、結局マイナーモードを使うにしろ使わないにしろ、keyboard-quit のタイミングを知るには post-command-hook に任意の hook をかけるしかないな、との考えに至りました。
なので、マイナーモードを使用し、それに入るタイミングと出るタイミングで add-hook と remove-hook をおこなうよう設定する予定です。
170 :
166:2015/01/19(月) 06:23:29.23 ID:q+OlVYly
>>170 s/asii/ascii/
ascii がどうとかはきっと本質的な問題じゃないよ。
基本的なことが理解できてない感じがするけど、
理解しようとする意欲が感じられない。0 点。
172 :
デフォルトの名無しさん:2015/01/19(月) 14:00:29.29 ID:KroxEeJe
釣り質問としては85点くらい
173 :
168:2015/01/20(火) 12:57:47.26 ID:TBaNt/xg
>>159 これ、unwind-protect でできるんですね。
(condition-case err
(keyboard-quit)
(quit
(message "My Quit! %s" err)))
(condition-case err
(keyboard-quit)
(error
(message "Not Quit")))
アッシー
symbolp()は'symと:symの両方tを返すけど
:symこれのみ真を返す述語あったっけ?
keywordp
178 :
デフォルトの名無しさん:2015/01/23(金) 02:16:59.21 ID:+QZK+ImI
>>177,178
キーワードか
プロパティでさがしてた、ありがと
180 :
デフォルトの名無しさん:2015/01/24(土) 13:37:32.69 ID:rWwk77U6
どういたしまして
181 :
デフォルトの名無しさん:2015/03/02(月) 23:35:21.61 ID:b1MuukTF
swift-modeどこかに落ちてませんか?
検索したら一瞬で出てくるが