Emacs Part 54 (849レス)
1-

12: 名無しさん@お腹いっぱい。 [sage] 2022/12/08(木) 10:57:16.92 AAS
>>10
10(1): 名無しさん@お腹いっぱい。 [] 2022/12/07(水) 11:11:19.50 AAS
emacsを長らく使ってます(テキスト書き、プログラミングなどメイン使いのエディタ)。

何か新しいもの触ってみたくて spacemacs と doomemacsを知ったのですが、どっちがおすすめですか?
(どっちがメンテされてる、など)
どちらもクレカの番号を抜けないのでおすすめできません。
13: 名無しさん@お腹いっぱい。 [sage] 2022/12/08(木) 12:25:45.31 AAS
Meet the Text Editor used by Linus Torvalds
外部リンク:terminalroot.com

RubyのMatzさんがEmacsを愛用されてると聞いて嬉しくなりました。
外部リンク:jp.quora.com
14: 名無しさん@お腹いっぱい。 [sage] 2022/12/08(木) 12:45:47.08 AAS
WSL の emacs(GNU Emacs 25.2.2 (x86_64-pc-linux-gnu) of 2017-09-23, modified by Debian)に
markdown-mode 入れようとしてるんだが、packagelist 上では

markdown-mode 20221105.236 incompat melpa Major mode for Markdown-formatted text

と表示されてインストールできない。
何か互換性の問題ってあったっけ?
15: 名無しさん@お腹いっぱい。 [sage] 2022/12/08(木) 12:56:36.47 AAS
Version: 20221105.236
Summary: Major mode for Markdown-formatted text
Requires: emacs-26.1

って出てるな。
16: 名無しさん@お腹いっぱい。 [sage] 2022/12/08(木) 13:14:51.98 AAS
25って、なぜ25使うの
17: 名無しさん@お腹いっぱい。 [sage] 2022/12/08(木) 14:25:10.58 AAS
いまだに Windows XP 使い続けてる老人と一緒でしょ
18
(7): 名無しさん@お腹いっぱい。 [sage] 2022/12/10(土) 23:11:44.74 AAS
次のように引数の必要な関数を関数名のシンボルの代わりに指定するときに、
lambda式で書くとエラーになる場合はどうするのがいいんでしょうか?

Wrong type argument: symbolp, #'(lambda nil (dabbrev-expand nil))

(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
(3): 名無しさん@お腹いっぱい。 [] 2022/12/10(土) 23:33:02.45 AAS
うーん多分それ先頭の#'全く場違いなんじゃね?
それシンボルのfunctionPartにアクセスするfunctionというかaliasというかsyntax sugarというべきかのものだしquoteされてたらそもそもなんも意味をなさん
quote内部のpartial evalみたいのは先頭をbackquoteにして`(sym1 sym2 ,evaled)みたいに先頭にcommaを付記する
defmacroとかのときによく使う手法だな。まぁ、俺はlispyじゃないと思うからあんま好きじゃないけど

単純に(list (cons 'someone 'something) (cons 'anyone (lambda (x) (some-over x))))みたいに書くか
`((someone . something) (anyone . ,(lambda (x) (some-over x))とかじゃね(´・ω・`)
20
(1): 18 [sage] 2022/12/11(日) 00:30:06.60 AAS
まだよく理解できていないので一部だけ補足しますが、
#'(lammda ...は(lambda ...でも一緒なのかと思ったんですが。

外部リンク[html]:www.gnu.org

で、そもそもこんな風に書いたのは次のような書法を参考にしたんですが、
どうもここではまずいようです。

(add-hook 'text-mode-hook
(lambda ... ))
21: 名無しさん@お腹いっぱい。 [] 2022/12/11(日) 00:45:12.16 AAS
いまいち何が解決出来ないのか何が分からんのかが分からんな

ただhookにlambdaぶち込みたいならfbody 先頭に
(lambda () (interactive) (insert "hello hook fucker"))みたいにinteractive宣言が要るぞ
lambdaのargumentが必要な場合はこのinteractiveのargumentに別途それらにアサインする関数というか糞stringというかlist返すexpression書くんだけどこまけえ事は説明めんどい(´・ω・`)
22
(1): 名無しさん@お腹いっぱい。 [sage] 2022/12/11(日) 01:01:15.31 AAS
(quote symbol)は評価されないとsymbolにならないように、(function (lambda () ...) も評価されないと関数にならない。
>>20
評価される文脈なら一緒だけどリストの中にある場合はそうも行かない。
lambdaはそのままで関数として機能する(funcallできる)からややこしいのかな。
symbolは評価すると変数の値になってしまうけどlambdaは、まあ、closureになったりはするものの関数のままだしクォートの必要性を感じづらいというか。
23
(1): 18 [sage] 2022/12/11(日) 01:24:43.39 AAS
>>19
>>22
何となく引っかかっていたところがちょっとわかりかけました。
lambda式が評価せずそのまま飲み込んで関数として定義されていないことが、
関数名のシンボルを要求する文脈ではエラーになると。

ではつまり関数として定義してしまうしかないということですかね?
24
(1): 名無しさん@お腹いっぱい。 [sage] 2022/12/11(日) 01:51:45.28 AAS
バッククォートを使えルーク
25
(1): 名無しさん@お腹いっぱい。 [sage] 2022/12/11(日) 09:13:24.81 AAS
>>23
文脈と書いたのは>>18の#'(の部分が評価されない文脈だから。なぜなら'(で囲まれてる中だからね。
#'(lambda () ...)は(function (lambda () ...)の略記だから(ここが分かってない?) '(の中ではそのまま一つ目の要素がシンボルfunctionで二つ目の要素が(lambda~のリストになってしまう。そしてそれはfuncall出来ない。例:(funcall '(function (lambda () 123)))

解決策は'(を使わずリストを組み立てることで、>>19>>24が言うように(listやバッククォートでリストを組み立てること。シンボルだけで無く、(functionで囲まれていない)lambda(やそれを評価すると出来るclosure)も問題なく使える。
まあdefunして良いならそれでもOK。
26: 18 [sage] 2022/12/11(日) 13:45:15.25 AAS
>>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)))))
27
(1): 名無しさん@お腹いっぱい。 [sage] 2022/12/11(日) 14:21:41.62 AAS
動いてはいない予感
28
(1): 18 [sage] 2022/12/11(日) 14:47:07.12 AAS
そうみたいですね。評価したら結果が変でした。
デフォルトでdabbrev-expandが呼ばれる仕様なんだった。
29: 18 [sage] 2022/12/11(日) 17:44:27.06 AAS
多分、こういうことだろうと思うんですが、

(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))
30: 18 [sage] 2022/12/11(日) 17:51:47.16 AAS
むしろその場合はこうするだけでいいんですね。

(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
> うーん多分それ先頭の#'全く場違いなんじゃね?

そもそも最初に指摘されていたこの点がまずかったと。
31: 名無しさん@お腹いっぱい。 [sage] 2022/12/11(日) 20:36:14.56 AAS
評価されたら (lambda 〜) も #'(lambda 〜) も完全に等価だよね
32
(1): 名無しさん@お腹いっぱい。 [sage] 2022/12/16(金) 12:44:00.30 AAS
何かの拍子で特定のバッファ(やてふモード)を閉じれなくなりました
* Message *を確認すると以下のメッセージが出ます
bm-buffer-save: Wrong type argument: listp, \.\.\.
他のやてふモードのバッファは問題ありません
とりあえず当該バッファを閉じたいと思い
*scratch*で
(remove-hook 'after-save-hook 'bm-buffer-save)
したのですが何ともなりません
何か解決方法はないでしょうか?
33: 名無しさん@お腹いっぱい。 [sage] 2022/12/16(金) 13:24:24.57 AAS
どこでどう評価するかでは
clのlambdaは評価するとレキシカルクロージャに化けるマクロだけど、(coerce '(lambda ...) 'function)でキャストすればcoerceはfunctionのように特殊形式でないからローカル関数を補足できないはず
el的にはどうだっけ?
そもそもクォートされたラムダ式を単にフォームとして受け取り、自分で勝手に解釈するだって全然アリ
34
(1): 名無しさん@お腹いっぱい。 [sage] 2022/12/16(金) 14:39:55.64 AAS
>>32
kill-buffer-hook とかじゃなくていいの?
35: 名無しさん@お腹いっぱい。 [sage] 2022/12/16(金) 16:15:13.66 AAS
>>34
ああ!そうですね! ボケボケでした
(remove-hook 'kill-buffer-hook 'bm-buffer-save)
で閉じれました
36: 名無しさん@お腹いっぱい。 [sage] 2022/12/16(金) 16:18:47.86 AAS
ただ今度は当該ファイルをfind-fileすると
初回に以下のエラーメッセージが出ます
bm-buffer-restore: Wrong type argument: number-or-marker-p, nil
連続で2回当該ファイルをfind-fileすると開くので問題はないのですが
これはbmのキャッシュが不整合を起こしているということでしょうかね?
1-
あと 813 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.697s*