无法在emacsclient中更改光标颜色

时间:2011-11-20 20:06:55

标签: emacs emacs-faces

如果我运行emacs --daemon(在.xinitrc或更高版本中)然后emacsclient -c,则新创建的框架具有黑色光标颜色,无论是colortheme还是其他任何设置。更准确地说,在我输入任何内容之前,光标颜色是白色(或其他颜色),但是第一个按键变为黑色,无法通过set-cursor-color进行更改。默认和我的自定义colorthemes都是黑色,所以它使编辑非常不舒服。

如果我运行emacsM-x server-start而不是emacs --daemon,则不会出现此问题。但是这样我需要保留一个emacs“主”帧而不是偶然杀死它,这似乎不是一个很好的解决方案。

我在.emacs.d/init.el中有以下阻止,但它无效:

(set-cursor-color "red")
(setq initial-frame-alist '((cursor-color . "red")))
(setq default-frame-alist '((cursor-color . "red")))
(add-hook 'window-setup-hook '(lambda () (set-cursor-color "red")))
(add-hook 'after-make-frame-functions '(lambda (f) (with-selected-frame f (set-cursor-color "red"))))

如果我运行M-x describe-face RET cursor,我会:

(...)
Defined in `faces.el'.

        Family: unspecified
       Foundry: unspecified
         Width: unspecified
        Height: unspecified
        Weight: unspecified
         Slant: unspecified
    Foreground: unspecified
    Background: black
     Underline: unspecified
      Overline: unspecified
Strike-through: unspecified
           Box: unspecified
       Inverse: unspecified
       Stipple: unspecified
          Font: unspecified
       Fontset: unspecified
       Inherit: unspecified

5 个答案:

答案 0 :(得分:7)

我相信在最近的Emacsen中,使用框架属性设置光标颜色不是首选方法。因此 使用set-cursor-colorinitial-frame-alist / default-frame-alist,请尝试:

(set-face-background 'cursor "red")

或者,或许:

(set-face-attribute 'cursor nil :background "red"`)

答案 1 :(得分:6)

  

好吧..可以通过添加

解决此问题
(setq default-frame-alist '((cursor-color . "white")))
     

虽然我不明白为什么以前不是问题。

请参阅this论坛帖子。

答案 2 :(得分:5)

Bwahahaha!我认为过去两年没有人发布解决方案,因为你们都是EVIL emacs用户!

说实话,我现在正在尝试邪恶模式,我刚刚在我的系统上解决了这个问题。把它放在.emacs文件中并抽烟:

'(evil-default-cursor (quote (t "white")))

我刚刚在bitbucket中针对Evil存储库打开了a bug

对于我自己来说,我发现在6年左右的时间里,它已经真正精通emacs,多键的和弦对我的肌腱很难。邪恶模式可能允许我再次使用emacs,这是一件好事。正如Benedict所说(在函数式编程的上下文中),“Some evil is often necessary to get work done.”似乎也适用于Emacs。

P.S。 对于任何人来说,感觉这个答案只是DH0或其他不成熟和不合适的,Emacs和VI用户之间的大多数tongue feud已经肆虐多年。 Emacs有自己的Church of Emacs,VI有视频游戏World War VI。因此,对Emacs最成功的VI键绑定端口被命名为邪恶模式(邪恶中有VI这个词)也就不足为奇了。我喜欢这两位编辑,并赞扬那些最终使得VI键绑定在emacs中工作的邪恶开发者。

答案 3 :(得分:1)

这对我有用:

(setq evil-default-cursor t) ;; Now evil takes the default cursors 
(set-cursor-color "white") ;; Set it to white
(set-mouse-color "white") ;; Same

答案 4 :(得分:0)

我也有同样的问题,多年来。

就我而言,我这样做:

M-x
set-cursor-color
"white"<ENTER>

这对我有用但我必须每次都这样做,这是sux ..

回到我原来的工作场所,我已经解决了这个问题,但是我没有过去曾经在我的旧工作场所拥有的init.el现在我需要重新解决这个问题,希望有人会在这里找到这个在我面前。