当我的缓冲区是只读的时候,我试图使用"n"和"p"键与"Cn"和"Cp"相同(是的,我很懒).
我在.emacs文件中使用此代码:
(when buffer-read-only (local-set-key "n" 'next-line))
(when buffer-read-only (local-set-key "p" 'previous-line))
Run Code Online (Sandbox Code Playgroud)
当缓冲区自动设置为只读时(即在w3m内),它正在工作但是当我运行Cx Cq(toggle-read-only)时它似乎不起作用.它一直在说
Buffer is read-only: #<buffer buffername>
Run Code Online (Sandbox Code Playgroud)
而且我不知道这怎么会起作用呢?
您的密钥定义在加载期间进行评估.emacs
,而您希望每次访问只读文件时评估它们,并且每次toggle-read-only
都执行.此外,只要缓冲区再次进行读写,您就希望它们被撤消.
您可以利用Emacs已支持view-mode
在只读缓冲区中自动激活的事实,而不是实现所有这些.您需要做的就是启用该功能,并在view-mode-map
以下位置定义您的密钥:
(setq view-read-only t) ; enter view-mode for read-only files
(define-key view-mode-map "n" 'next-line)
(define-key view-mode-map "p" 'previous-line)
Run Code Online (Sandbox Code Playgroud)