解决Firefox升级到36+后,在Emacs里无法打开链接的问题
Table of Contents
问题:Emacs打不开网页
前两天更新了一下ubuntu,firefox也随着更新到了36,昨天在家用电脑时发 现在emacs里打开的链接都成了空白页(之前是好的),当时也没有在意,想 想可能是哪配置起了冲突,也没去管它。
今天到公司,发现公司电脑上用emacs也不能正常打开链接了,一点链接就开 一个新窗口显示一个空白页面。
原因:Firefox升级到36后去掉了 -remote
参数
火狐是我设置的默认浏览器,emacs也是用的默认浏览器,想一想,家里的 电脑和公司的电脑也就前两天更新了一下,家里的更新了emacs的配置,但公 司的没有更新。所以,问题应该不在emacs的配置上。
在网上搜索了一下,中文无果!于是用英文搜索了下: emacs no opens
page in browser
有不少结果,基本确定是因为firefox升级到36后去掉了
-remote
参数造成的这个问题。
解决办法:重新定义 browse-url-firefox
函数
问题找到了,就好办了,Emacs浏览网页的相关设置及功能实现一般都在
browse-url.el
这个文件里, browse-url-firefox
主要用来拼接调用
firefox的命令,当然我们没必要去修改这个文件,只要在Emacs的配置文件里
重新定义一下这个函数就OK了。
(defun browse-url-firefox (url &optional new-window) "Ask the Firefox WWW browser to load URL. Default to the URL around or before point. The strings in variable `browse-url-firefox-arguments' are also passed to Firefox. When called interactively, if variable `browse-url-new-window-flag' is non-nil, load the document in a new Firefox window, otherwise use a random existing one. A non-nil interactive prefix argument reverses the effect of `browse-url-new-window-flag'. If `browse-url-firefox-new-window-is-tab' is non-nil, then whenever a document would otherwise be loaded in a new window, it is loaded in a new tab in an existing window instead. When called non-interactively, optional second argument NEW-WINDOW is used instead of `browse-url-new-window-flag'." (interactive (browse-url-interactive-arg "URL: ")) (setq url (browse-url-encode-url url)) (let* ((process-environment (browse-url-process-environment)) (window-args (if (browse-url-maybe-new-window new-window) (if browse-url-firefox-new-window-is-tab '("-new-tab") '("-new-window")))) (ff-args (append browse-url-firefox-arguments window-args (list url))) (process-name (concat "firefox " url)) (process (apply 'start-process process-name nil browse-url-firefox-program ff-args) )) ))