emacs:调用chmod导致“文件不再可读”警告

时间:2013-04-18 15:37:26

标签: emacs

我正在编写一个函数,旨在使当前缓冲区中的任何文件都可写,而不会被提示输入其名称或模式(我总是希望为644)。我还希望自动刷新缓冲区以反映其内容现在是可写的这一事实。

我的.emacs文件中有以下代码:

;; from http://www.stokebloke.com/wordpress/2008/04/17/emacs-refresh-f5-key/
(defun refresh-file ()
  "Refresh the buffer from the disk (prompt if modified)."
  (interactive)
  (revert-buffer t (not (buffer-modified-p)) t))

(defun my-make-writable ()
   "make file writable to owner"
   (interactive)
   (chmod buffer-file-name 644)
   (refresh-file))

但是,当我执行该功能时,emacs会在迷你缓冲区中显示以下错误消息:

文件文件名不再可读

这令人非常不安。但是,我仍然可以执行“chmod”命令来使文件可读和可写。

如何使我的功能正常工作?

1 个答案:

答案 0 :(得分:5)

unix权限位以八进制表示,您输入的是十进制数。

您正在将文件模式设置为1204(即“粘贴位,用户可以写入,组没有权限,其他人都可以读取)。”如果您使用(chmod buffer-file-name #o644)(chmod buffer-file-name 420)可能会得到你期望的结果。