Emacs Part 53
■ このスレッドは過去ログ倉庫に格納されています
>>320 足りてないんじゃなくて2行目の頭に (" が入ってるのがおかしいように見えるな っていうか自分でなんとかできないのであればdev版は使わないほうがいいと思うんですけど...? 雄牛が雌牛の上に乗っかって後尾してるようなロゴなんとかならんの? 後尾じゃなくて交尾の間違いでした。 申し訳ございませんでした。 交尾w どんだけ想像力がたくましいんだw 中坊の頃はスーパーのチラシでオ○れたがそんなピュアな心はとうに無くなったよ 言われてみれば見えなくもない gnuのもそうだけどマジでかわいくないよなこのマスコット あと俺環かもしれんがinit.elにtoggle-fram-fullscreen書いとくとこの交尾牛何故かスタートアップマニュアルから消える goのgopherの方が数万倍かわいい(´・ω・`) 赤色の部分は牛を元にデザインされているから 青色の部分も牛に見えたならわからんでもないが… https://www.ee.ryerson.ca/ ~elf/emacs/logo/logo.html >>331 牛ではなくgnuだろう マービン・ミンスキーがgnuの絵を見て、そばにgnuと書かれてるのに気付かず 「これは牛かな?水牛かな?」と言っていつまでたっても当てられなかったのでストールマンは笑い転げた って話を思い出した >>333 gnuとEmacsで GNU Emacs か 逆に考えるんだ 交尾の一体どこが不適切だというのだろうか もしわかる人がいれば教えてください。 MX21(Debian11)でemacs-gtk(1:27.1+1-3.1)をインストールしてEmacsは/usr/share/emacs以下にあります。 apel(flim/semi/wanderlustの前に)をソースからmake installするとなぜか/usr/local/share/emacs以下にインストールされ、 そのままflimをmake installすると今度はflimがapelを見付けられません。 PREFIX=/usrとしても無視されてしまい、 LISPDIR/VERSION_SPECIFIC_LISPDIRをそれぞれ指定しないと/usr/share/emacs以下にインストールされません。 これまでapelはmake installするだけでemacsの枝を見付けてくれたはずですが、 何が原因でしょうか? debianパッケージのagel flimじゃダメなの? apt-get install flim でapelも入るじゃん apel semi flim wanderlust wanderlust betaのソース一式をよく読もうよ。 手元にあるManjaroでも何もしなくても/usr/share/emacs以下に入る。 MX21(Debian11)で-q --no-site-fileで起動してAPEL-MKを読み込んで調べると、 PREFIXには最初から/usrが設定されるがLISPDIRは/usr/local/share/emacs/site-lispになる。 MX21(Debian11)では-q --no-site-fileで起動してもload-pathの先頭の方に/usr/local/share/emacs/site-lisp(空だが)が来る。 Manjaroの方は/usr/share/emacs/site-lispが来るからLISPDIRにこれが設定されるのかな。 なぜMX21(Debian11)では/usr/local...が先頭の方に追加されているのかは不明。 debain-startup.elというのを読まないようにしてもだめみたいだがどこから出て来るの? それほど詳しくないんだけど、 debian-startup.el*をよけても起動にはemacs.pdmpが使われるからだめなのかな? どうやらdebian-startupのパッチが当たらないソースなら問題がないように見えるので、 Debianのパッケージが原因ということでいいのかな。 MX18(Debian9)では問題なかったような気がしたけどはっきり憶えてない。 debianはパッケージを使うもの。 パッケージはdebianのファイル配置規則に沿ったディレクトリにインストールするように設定されてる そういうものなのかな。 MXみたいにDebianのLTSベースで3〜4年使うとパッケージも古くなるから、 Emacsに限らずソースからインストールすることは時々あるんだけど。 ともかく原因は多分わかったのでどちらでも対処できればよいかな。 MXがDebian11に未対応なんじゃない? Debianの場合自分でビルドするなら/usrとかじゃなくて/homeの自分のホームディレクトリにインストールするものだと思う。 Debianを使ったことがないからあれだけど、 emacs-gtkはDebianのリポジトリのパッケージだし、 apelはgitのソースでまだ何かあるのかな? emacsが/usr以下にあってもapelが/usr/local以下に入るのはDebianのソースのパッチだと思うけど。 つまりDebianのemacs-gtkパッケージのソースに適用されたパッチという意味。 >>340 の人は最新のwanderlustを使いたいだけみたいだからDebianパッケージのemacs-gtk使って wanderlust関連だけホームディレクトリにインストールしたら良いと思うのだけど もしかしてEmacsも最新の入れたいのかな。Emacsはホームディレクトリではない所に入れるものだね PREFIX=~/.localみたいにするということですか? それでapelを~/.local/share/emacs/site-lispにインストールして、 flimとsemiはLISPDIR=~/.local/share/emacs/site-lispで一応インストールできますが、 wanderlustはもう少し面倒みたいです。 いずれにしてもDebianパッケージでないEmacsなら sudo make installだけで/usr/share/emacs以下にインストールされるのに比べるとやや面倒ですね。 EmacsはDebianパッケージでいいんですがどうも釈然としません。 それに上記意外のelispパッケージのインストールでは特に問題は起きていません。 Emacsの無関係のDebian11パッケージで中途半端にディレクトリ変わってるのがあったから Emacsも中途半端にディレクトリ変更されてるのかもしれない。 Debian BTSでバグ報告すると解消してもらえるかも 他のelispパッケージで問題が出てないので、 Debianとapel/flim/semi/wanderlustどちらが問題なのか判断が難しそう。 多分、過去には問題がなかったのでDebianの変更と関係はあるんだろうけど、 もともとapel/flim/semi/wanderlustのパッケージの依存関係が面倒でこうなってる気もするし。 melpaとかはmalware対策どうなってんの? ノーガード戦法だ 最初登録申請するときはソースコードをチェックしてるけど、その後のアップデートは当然ながら追いきれるわけもなく、そのまんま各々のEmacsに降ってくる この辺の事情はVimとかも一緒だと思う この問題を解決しようとしたら、やるべき事が多すぎてかなり大変だろうね >>357 薄々は分かってたけど、サンドボックス化されてないemacsではすげー危険だよな。 chromeは限界はあるものの拡張の悪意を封じ込める機構があるからな。emacsは外部コマンドrmとか呼ばれたらどうにもならない。 >>358 ブラウザみたいに出来る事に制限を掛ければ幾分マシになるとは思う 大抵のpackageにはネットワークアクセスは必要無い訳だし、それを制限出来れば少なくともローカルデータの無断アップデートは防げる ただ、その仕組みを実装するのは簡単じゃないだろうね 取り敢えず、得たいの知れないpackageをインストールしないっていう自衛だけで今まで上手く行ってるし、これからもそうやって行くと思われる 頻繁に更新してるパッケージならメンテしてる人が悪コード混入に気付くだろうし 悪コード混入させる奴は広範囲に影響及ぼすのが目的だろうから利用者の少ないmelpaなんか眼中に無いと思う。 >>361 大筋は同意だけど、そこはなかなか単純に割り切れなくて難しい問題だと思うの。 俺が悪さしようと思ったら監視の少ないショボイ拡張にブラウザのクッキーを全部scpするようなスクリプト入れ込んで、幾つかアカウント盗めればいいかなとか思っちゃう。 個人の悪さとしては十分元が取れる。結局は手間と利益の天秤にすぎないから。 じゃあ何でEmacsでインシデントが起きてないかは知らんww メジャーなプロジェクトでも、よからぬことが意外とあり得る、というのはいくつかあったやろ。 結局、安心の根拠探しはムリ! 我々利用者が思ってる以上に世間でEmacsは使われてないんだと思う emacs使ってるやつの環境がばらばらでcookie取りに行こうとしてもパスがわからない説 おい、Emacs使いは年収1000万円以上が12.60%もいるんだぞ!悪者に狙われるに決まってるだろ!(違う) https://job-draft.jp/articles/323 native compilationてあまり話題にならないのかな? まあ、どれほど違うのか測りかねるところもあるけど。 navi2chだとはっきりと体感できるほどの差がある 少なくともEmacs-lispなら出来上がりがかなり不自然になるので 使う前に誰かがきずくと思う 変なところをアクセスしたり、変なポートを開けたり、通信したり することになるわけだから >>378 世の中の多くのよくない行為はふつうの人によるものだと思うが。 emacsconf.org/2021/ EmacsConf 2021 が今日ですね YouTuberのヒカキンがヒカキンIRCとかIRCチャンネル始めたらIRC人口増えるかも 所有者がrootのファイルを編集して保存するとバックアップに失敗します。 C-x C-f /sudo::/etc/secret.txt Auto-saving...done Saving file /sudo:root@****:/etc/secret.txt... Renaming /sudo:root@****:/etc/secret.txt to /home/****/.emacs.d/backup/!sudo:root@****:!etc!secret.txt~...failed Cannot write backup file; backing up in ~/.emacs.d/%backup%~ Copying /sudo:root@****:/etc/secret.txt to /home/****/.emacs.d/%backup%~...done Copying /tmp/tramp.ICQiuU.txt to /sudo:root@****:/etc/secret.txt...done Wrote /sudo:root@****:/etc/secret.txt バックアップの場所は固定しています。 (setq backup-directory-alist '(("." . "~/.emacs.d/backup/"))) (setq auto-save-file-name-transforms '((".*" "~/.emacs.d/backup/" t))) tramp-backup-directory-alistは設定していません。 自動保存は設定通り~/.emacs.d/backup/に作成されています。 Emacs29.0.50ですが何が問題でしょうか? 次のコマンドも失敗するので何か制限があるんでしょうか? % touch /home/****/.emacs.d/backup/!sudo:root@****:!etc!secret.txt~ zsh: modifier failed: r bashでも失敗します。 % touch /home/****/.emacs.d/backup/!sudo:root@****:!etc!secret.txt~ bash: !etc!secret.fxt~: event not found make-backup-file-nameにadviceして通常なら書き込めるファイル名にしても失敗する。 Saving file /sudo:root@asus:/etc/secret.txt... Renaming /sudo:root@asus:/etc/secret.txt to /home/tosh/.emacs.d/backup/^sudo:root@asus:^etc^secret.txt~...failed Cannot write backup file; backing up in ~/.emacs.d/%backup%~ Copying /sudo:root@asus:/etc/secret.txt to /home/tosh/.emacs.d/%backup%~...done Copying /tmp/tramp.rIzC8d.txt to /sudo:root@asus:/etc/secret.txt...done Wrote /sudo:root@asus:/etc/secret.txt こうしてしまえば/root/.emacs.d/backup/にバックアップされるから、 バックアップしてファイルの所有者が変わるとだめなのかな? (setq tramp-backup-directory-alist backup-directory-alist) るびきちの本買ったけど、古くて使えないのかな auto-install入れても、空テキストしか持ってこないよ >>391 るびきちの本で今でも使えるとすればelispの方だけでは? >>392 そっちは持ってないんですよ 買いですか? >>394 オレはelispをこれで勉強した。既に古くなっているところもあるけど、まだ参考になる本だと思おうよ。 あと、こんなのがある。 https://ayatakesi.github.io/ >>396 ELisp使えるようになりたいたいんですよねー 一応「ヌー」本第三版は持ってるものの、25使ってて、27にアップデートするのがめんどくさいですw でもリンクサンクスです そこに25のマニュアルもあるんですね参考にします るびきち本はレイアウトとかが割と気に入ってるので、多分Lispの方も買うと思います >>397 lispはlexical scopeとdynamic scopeどちらも使えるのがいいよね。 dynamic scope使えるおかげで、既存コードの挙動を簡単に変えることができ、emacsのカスタマイズを容易にしている。 コードを追いづらくなるから他の言語では殆どサポートされていない機能だけど。 また、lexical scopeもサポートされているのでクロージャも使える。 >>399 今のElispは全部レキシカルスコープがデフォルトだから、ダイナミックスコープの恩恵は受けてないでしょ 古いソースコードでもダイナミックスコープじゃないと動かないコードはごく僅かだよ 内部設定がデフォルトということではなくて、ソースコードの一番上にレキシカルスコープの宣言を書くことが当たり前になってるから、運用的にデフォルトということか >>400 emacsのカスタマイズの容易性のこと言っている。defver、let使わんか? >>403 言いたい事は分かるけど、それをダイナミックバインディングとは言わないんだよね 強いて言うならスペシャル変数のバインディングという感じか ダイナミックバインディングと挙動が似てるから混同しがち ひとつ例を出すと ;; -*- lexical-binding: t -*- (setq hoge 1) (defun print-hoge () (print hoge)) (defun foo () (let ((hoge 2)) (print-hoge) (print hoge))) (foo) => 1 2 となる setqで強引に作ったグローバル変数はスペシャル変数じゃないのでこうなるけど、一番上のコメント行を削除するとダイナミックバインディンになって (foo) => 2 2 となる ちなみにCommon Lispでも同じ挙動だ でもCommon Lispをダイナミックバインドの言語とは言わないだろう(設定で出来るらしいが詳しくは知らん) defvarとletの挙動はスペシャル変数のバインドと言えばいいだろう >>407 スペシャル変数はダイナミックスコープで管理されると言えばいいんだな そもそもダイナミックバインディングとダイナミックスコープの用語を一緒くたにするというアホなことしてた 昔のEmacsはスペシャル変数でなくても、letで定義された変数を全てダイナミックスコープで扱うダイナミックバインディングだった 今はスペシャル変数のみダイナミックスコープで扱う、レキシカルバインディングが(運用上)デフォルトになっている と言えばいいのかね しばらく触ってなかったが、今のEmacsLispはレキシカル・スコープなの? >>409 今でもデフォルトはダイナミックスコープだけど、24あたりのバージョンでレキシカルスコープの対応がされたであってるかな? https://www.emacswiki.org/emacs/LexicalBinding .elの一行目に ;; -*- lexical-binding: t -*- を書くとレキシカルバインディングになる 今は全部の.elに書かれてるから、もうデフォルトと言って間違いない # cd /usr/share/emacs/27.1/lisp # ls *.el.gz | wc -l 265 # zgrep -l lexical *.el.gz | wc -l 149 /usr/share/emacs/27.1/lisp 配下のファイルでは、lexical の宣言がされているのは、半分強くらいなようです。 dynamic bindingは関数を弄らずに呼び出し側から出力先を変更出来るのが一番の恩恵だと思う シェルのリダイレクトに似てるな >>414 今pretestがリリースされている28からだった $ ls *.el | wc -l 268 $ grep -l lexical-binding *.el | wc -l 268 ちゃんと全部レキシカルバインディングになってるよ! しかもNEWSには ** The 'lexical-binding' local variable is always enabled. とも書いてある これで内部もデフォルトになったよ >>415 もうdynamic bindingの話はするな するのならdynamic scopeというべし デフォルトの意味が分かってない人がいるってマジ...? dynamic binding と dynamic scope の違いが分からん。教えて。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる