Emacs Part 54 (781レス)
Emacs Part 54 http://mevius.5ch.net/test/read.cgi/unix/1669946913/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
23: 18 [sage] 2022/12/11(日) 01:24:43.39 >>19 >>22 何となく引っかかっていたところがちょっとわかりかけました。 lambda式が評価せずそのまま飲み込んで関数として定義されていないことが、 関数名のシンボルを要求する文脈ではエラーになると。 ではつまり関数として定義してしまうしかないということですかね? http://mevius.5ch.net/test/read.cgi/unix/1669946913/23
24: 名無しさん@お腹いっぱい。 [sage] 2022/12/11(日) 01:51:45.28 バッククォートを使えルーク http://mevius.5ch.net/test/read.cgi/unix/1669946913/24
25: 名無しさん@お腹いっぱい。 [sage] 2022/12/11(日) 09:13:24.81 >>23 文脈と書いたのは>>18の#'(の部分が評価されない文脈だから。なぜなら'(で囲まれてる中だからね。 #'(lambda () ...)は(function (lambda () ...)の略記だから(ここが分かってない?) '(の中ではそのまま一つ目の要素がシンボルfunctionで二つ目の要素が(lambda~のリストになってしまう。そしてそれはfuncall出来ない。例:(funcall '(function (lambda () 123))) 解決策は'(を使わずリストを組み立てることで、>>19や>>24が言うように(listやバッククォートでリストを組み立てること。シンボルだけで無く、(functionで囲まれていない)lambda(やそれを評価すると出来るclosure)も問題なく使える。 まあdefunして良いならそれでもOK。 http://mevius.5ch.net/test/read.cgi/unix/1669946913/25
26: 18 [sage] 2022/12/11(日) 13:45:15.25 >>25 中途半端にあれこれ聞いてお手間を取らせました。 まだろくにわかってないんですが、 疑問は疑問としてとりあえずこうすると動きます。 consだといいの?何だか不思議だなあ。 (setq smart-tab-completion-functions-alist '((emacs-lisp-mode . lisp-complete-symbol) (lisp-interaction-mode . lisp-complete-symbol) (cons 'text-mode (lambda () (dabbrev-expand nil))))) http://mevius.5ch.net/test/read.cgi/unix/1669946913/26
27: 名無しさん@お腹いっぱい。 [sage] 2022/12/11(日) 14:21:41.62 動いてはいない予感 http://mevius.5ch.net/test/read.cgi/unix/1669946913/27
28: 18 [sage] 2022/12/11(日) 14:47:07.12 そうみたいですね。評価したら結果が変でした。 デフォルトでdabbrev-expandが呼ばれる仕様なんだった。 http://mevius.5ch.net/test/read.cgi/unix/1669946913/28
29: 18 [sage] 2022/12/11(日) 17:44:27.06 多分、こういうことだろうと思うんですが、 (setq smart-tab-completion-functions-alist `((emacs-lisp-mode . lisp-complete-symbol) (lisp-interaction-mode . lisp-complete-symbol) (text-mode . ,(lambda () (dabbrev-expand nil))) )) 今回の場合は条件がfboundpでチェックされるので同じエラーになりますが、 cond: Wrong type argument: symbolp, (lambda nil (dabbrev-expand nil)) これがなければfuncall以下はちゃんと動きます。 (cond ((fboundp smart-tab-mode-specific-completion-function) (funcall smart-tab-mode-specific-completion-function)) http://mevius.5ch.net/test/read.cgi/unix/1669946913/29
30: 18 [sage] 2022/12/11(日) 17:51:47.16 むしろその場合はこうするだけでいいんですね。 (setq smart-tab-completion-functions-alist '((emacs-lisp-mode . lisp-complete-symbol) (lisp-interaction-mode . lisp-complete-symbol) (text-mode . (lambda () (dabbrev-expand nil))))) >>19 > うーん多分それ先頭の#'全く場違いなんじゃね? そもそも最初に指摘されていたこの点がまずかったと。 http://mevius.5ch.net/test/read.cgi/unix/1669946913/30
31: 名無しさん@お腹いっぱい。 [sage] 2022/12/11(日) 20:36:14.56 評価されたら (lambda 〜) も #'(lambda 〜) も完全に等価だよね http://mevius.5ch.net/test/read.cgi/unix/1669946913/31
32: 名無しさん@お腹いっぱい。 [sage] 2022/12/16(金) 12:44:00.30 何かの拍子で特定のバッファ(やてふモード)を閉じれなくなりました * Message *を確認すると以下のメッセージが出ます bm-buffer-save: Wrong type argument: listp, \.\.\. 他のやてふモードのバッファは問題ありません とりあえず当該バッファを閉じたいと思い *scratch*で (remove-hook 'after-save-hook 'bm-buffer-save) したのですが何ともなりません 何か解決方法はないでしょうか? http://mevius.5ch.net/test/read.cgi/unix/1669946913/32
33: 名無しさん@お腹いっぱい。 [sage] 2022/12/16(金) 13:24:24.57 どこでどう評価するかでは clのlambdaは評価するとレキシカルクロージャに化けるマクロだけど、(coerce '(lambda ...) 'function)でキャストすればcoerceはfunctionのように特殊形式でないからローカル関数を補足できないはず el的にはどうだっけ? そもそもクォートされたラムダ式を単にフォームとして受け取り、自分で勝手に解釈するだって全然アリ http://mevius.5ch.net/test/read.cgi/unix/1669946913/33
34: 名無しさん@お腹いっぱい。 [sage] 2022/12/16(金) 14:39:55.64 >>32 kill-buffer-hook とかじゃなくていいの? http://mevius.5ch.net/test/read.cgi/unix/1669946913/34
35: 名無しさん@お腹いっぱい。 [sage] 2022/12/16(金) 16:15:13.66 >>34 ああ!そうですね! ボケボケでした (remove-hook 'kill-buffer-hook 'bm-buffer-save) で閉じれました http://mevius.5ch.net/test/read.cgi/unix/1669946913/35
36: 名無しさん@お腹いっぱい。 [sage] 2022/12/16(金) 16:18:47.86 ただ今度は当該ファイルをfind-fileすると 初回に以下のエラーメッセージが出ます bm-buffer-restore: Wrong type argument: number-or-marker-p, nil 連続で2回当該ファイルをfind-fileすると開くので問題はないのですが これはbmのキャッシュが不整合を起こしているということでしょうかね? http://mevius.5ch.net/test/read.cgi/unix/1669946913/36
37: 名無しさん@お腹いっぱい。 [sage] 2022/12/17(土) 14:40:56.90 前スレでDebianのunstableでEmacsパッケージのnative compilationが有効化されたって話があったけど その後色々問題があったものの解決されて有効化されたバージョンがTestingにやってきた模様 というわけでこのまま行けば来年出るであろうDebianの次の安定版ではEmacsパッケージは デフォルトでnative compilationが有効化されたものになるわけだ http://mevius.5ch.net/test/read.cgi/unix/1669946913/37
38: 名無しさん@お腹いっぱい。 [sage] 2022/12/17(土) 16:08:32.48 キャッシュのsaveにprincを使っていて print-lengthより長いリストが...になっているかもしれない (let ((aaa (list '(a) '(a) '(a))) (print-length 2)) (princ aaa)) ; => ((a) (a) ...) http://mevius.5ch.net/test/read.cgi/unix/1669946913/38
39: 名無しさん@お腹いっぱい。 [sage] 2022/12/19(月) 11:10:13.66 native compilationを有効にすると、 確かにごく偶に何も言わずに落ちることがあるから、 まったく問題がないわけでもないのかな。 まあ、最後に落ちたのも一月以上前だったりするけど。 http://mevius.5ch.net/test/read.cgi/unix/1669946913/39
40: 名無しさん@お腹いっぱい。 [sage] 2022/12/26(月) 12:16:18.67 companyと*Completions*バッファについて教えてください。 (use-package company)としてcompanyを使うようにすると、補完がcompany経由で行われる?と聞いたのですが、 例えば、 M-x shell ls ./[TAB] とすると、*Completions*バッファ内にカレントディレクトリのファイルが表示されます。 これはcompanyモードが効いてないのでしょうか?それともcompanyが補完するのは、こういう類の補完ではそもそもないのでしょうか? http://mevius.5ch.net/test/read.cgi/unix/1669946913/40
41: 名無しさん@お腹いっぱい。 [sage] 2022/12/28(水) 01:12:16.78 バッファでcompany-modeが有効になってないかキーバインドが定義されてないとか。 M-x company-completeするとどうなりますか? http://mevius.5ch.net/test/read.cgi/unix/1669946913/41
42: 名無しさん@お腹いっぱい。 [sage] 2022/12/28(水) 02:41:43.21 >>41 返信ありがとうございます。 shellのバッファで「M-x company-complete」するとカーソル位置で補完候補が現れました。 同じバッファでM-x describe-modeをすると、一覧にCompanyとGlobal-Companyが出てきています。 これは、単にキーバインドが定義されてないってことでしょうか? http://mevius.5ch.net/test/read.cgi/unix/1669946913/42
43: 名無しさん@お腹いっぱい。 [sage] 2022/12/28(水) 10:53:30.71 M-x describe-key で[TAB]押すとどうなんだろうか http://mevius.5ch.net/test/read.cgi/unix/1669946913/43
44: 名無しさん@お腹いっぱい。 [sage] 2022/12/28(水) 11:05:16.56 (global-company-mode 1) とかやっとけばいいんでないの? http://mevius.5ch.net/test/read.cgi/unix/1669946913/44
45: 名無しさん@お腹いっぱい。 [sage] 2022/12/28(水) 12:29:55.85 >>42 use-packageを使ってませんが、 とりあえずglobal-company-modeは有効にされてるんだと思います。 M-x company-completeで手動では起動できるわけだから、 どのキーにバインドするかは設定が必要だろうし、 tabでデフォルトのshellの補完を奪っていいかどうかも自分次第かと。 http://mevius.5ch.net/test/read.cgi/unix/1669946913/45
46: 40 [sage] 2022/12/28(水) 18:33:26.03 返信ありがとうございます。 >>43 ls ./[ここでdescribe-key TAB]すると、(completion-at-point)にバウンドされてるようです。 >>44 >>45 describe-modeした際にglobal-companyが出てきてるので、global-company-modeは有効になっているように見えます。 >どのキーにバインドするかは設定が必要だろうし、 >tabでデフォルトのshellの補完を奪っていいかどうかも自分次第かと。 なるほど。tabに対してキーバインドは設定していませんでした。 このあたりの仕組みがよくわかってないもので、company-modeを有効にすると自動的に*Completions*バッファが ツールチップで補完表示されるものかと思ってましたが、そういうものではなく、 自分で設定する必要があるんですね。 http://mevius.5ch.net/test/read.cgi/unix/1669946913/46
47: 名無しさん@お腹いっぱい。 [sage] 2022/12/28(水) 19:59:39.91 >>46 普段company-idle-delayをnilに設定してキーで起動していたので勘違いしましたが、 デフォルトのままだと入力するそばから自動的に補完候補を表示しますね。 私はそれが煩わしいので手動で起動するようにしてたんですが、 何かの設定がうまくいってないんですかね? http://mevius.5ch.net/test/read.cgi/unix/1669946913/47
48: 40 [sage] 2022/12/29(木) 06:59:04.84 >>47 頂いた情報を参考に色々調整した結果、 (setq company-idle-delay 0) (setq company-minimum-prefix-length 0) 上記設定を追加してみると、shellバッファで文字を打つたびに補完候補が表示されるようになりました。 試しに、 (setq company-minimum-prefix-length 5) とした場合、 (5文字未満) ls ./[TAB] # *Completions*バッファが表示される。 (5文字以上) ls ./../[TAB] # companyで補完候補が表示される。 という挙動になりました。 私がcompanyの機能を勘違いしている気がしてきました。 companyはemacs従来の「*Completions*バッファが表示される」動きをまるまる置き換えるものと思ってましたが、 そんなことはなく*Completions*バッファが表示されてしまう場面を完全に無くせるわけではないのでしょうか? http://mevius.5ch.net/test/read.cgi/unix/1669946913/48
49: 名無しさん@お腹いっぱい。 [sage] 2022/12/29(木) 11:52:47.76 companyは既存の設定だけでなく、 最終的には自分で補完に使用するbackendsまで作成すればほとんどどんな動作にもできるはずですが、 お話のようにデフォルトの補完completion-at-pointをcompanyで置き換えたいだけなら、 パッケージに同梱されたcompany-capfをcompany-backendsに設定すればよさそうですけどね。 http://mevius.5ch.net/test/read.cgi/unix/1669946913/49
50: 40 [sage] 2022/12/29(木) 14:40:30.55 company-backendsは以下のように設定されていました。 (company-bbdb company-semantic company-capf company-files (company-dabbrev-code company-gtags company-etags company-keywords) company-oddmuse company-dabbrev) リストの中にリストが含まれてるのが怪しいのですが、一応company-capfは入っているようです。 一つ気になったのが、 (use-package company :config ((global-set-key (kbd "TAB") 'company-complete)) と設定しても、shellバッファでdescribe-key [TAB]をすると、設定されているのは (completion-at-point) となっていました。これはキーバインドの設定の方が間違っている可能性がありますか? http://mevius.5ch.net/test/read.cgi/unix/1669946913/50
51: 名無しさん@お腹いっぱい。 [sage] 2022/12/29(木) 15:16:06.83 info 読まない縛りでもしてんの? http://mevius.5ch.net/test/read.cgi/unix/1669946913/51
52: 40 [sage] 2022/12/29(木) 21:40:29.93 質問ばかりですいません。 >>51 infoというのが、companyの公式ページの話であれば読んではいるもののなかなか理解できず苦労してます。 「emacsの情報」という意味であれば、すいません、emacsを使い始めたばかりなので拾いきれてないですね http://mevius.5ch.net/test/read.cgi/unix/1669946913/52
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 729 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.030s