1

プログラムがルート アクセス権を持っていない場合に削除をプログラムで管理するには、「削除された」ファイルをユーザー ディレクトリのローカルの場所に移動するのが理にかなっています。

通常、Emacs は関数 を使用してこれを行いますmake-directory-internal()

ただし、私のEmacsは、最初に所有権をテストせずに、ユーザーが所有していない場所でこれを行います。

make-directory-internal("~/.local/share/Trash")

https://www.gnu.org/software/emacs/manual/html_node/elisp/Testing-Accessibility.htmlによると、ディレクトリへの書き込みを試みる前に、所有権を簡単にテストできます。

(file-accessible-directory-p "/foo")
     ⇒ nil

代わりに、この Emacs コードは、my ~ にあるが root が所有するフォルダーを使用しようとします。実際にアクセスできるフォルダーを使用して例外を処理することはありません。

たとえば、 の~/.local/share/Trash代わりに ,を使用してい~/.Trashます。

より良い例外処理がコードに組み込まれていない理由はありますか? パッチを提出する必要がありますか? それとも、これは通常の受け入れられているプログラミング方法ですか?

要するに、なぜこのコードはこれを行うのでしょうか?

@Erlaunis の質問、./.local/share/Trash (Unix) とは何ですか? によると、root が所有しているためemacs編集できません。~/.local/share/Trash

このため、次のような BS に遭遇します。

Debugger entered--Lisp error: (file-error "Creating directory" "Permission denied" "/Users/myusername/.local/share/Trash")

ここに完全なエラー出力を投稿しました: http://0bin.net/paste/YSQgBhxbFwBnaJer#vcTHnyC+BE-SepxK+5rLmNt73GUg9dZr1Kk6CekiqnQ [リンクは 2016 04 23 まで利用可能)

(注:この質問の一部はEmacs Lisp以外の一般的な関心があると思いますが、emacs.stackexchange.comに転送する提案にノーとは言いません。コメントでアドバイスしてください。)

4

0 に答える 0