Не могу изменить цвет курсора в emacsclient - PullRequest
13 голосов
/ 21 ноября 2011

Если я запускаю emacs --daemon.xinitrc или более поздней версии), а затем emacsclient -c, вновь созданный кадр имеет черный цвет курсора, независимо от цвета или других настроек.Точнее, прежде чем я что-то наберу, цвет курсора белый (или другой цвет), но при первых нажатиях клавиш он становится черным и не может быть изменен с помощью set-cursor-color.И стандартные, и мои пользовательские колортемы чёрные, поэтому редактирование становится очень неудобным.

Если вместо emacs --daemon вместо *1009* запустить M-x server-start, то эта проблема не появится.Но в этом случае мне нужно сохранить один «основной» фрейм 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 ]

7 голосов
/ 21 ноября 2011

Я считаю, что в недавнем Emacsen использование свойств фрейма для установки цвета курсора не является предпочтительным методом. Поэтому вместо использования set-cursor-color или initial-frame-alist / default-frame-alist, попробуйте:

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

Или, возможно:

(set-face-attribute 'cursor nil :background "red"`)
6 голосов
/ 31 декабря 2014

Хорошо. Эту проблему можно решить, добавив

(setq default-frame-alist '((cursor-color . "white")))

, хотя я не понимаю, почему раньше это не было проблемой.

См. это ветка форума.

5 голосов
/ 11 октября 2013

Bwahahaha!Я думаю, что никто не опубликовал решение за последние 2 года, потому что вы все пользователи emacs EVIL!

По правде говоря, я сам сейчас пробую злой режим и только что решил эту проблемув моей системе.Поместите это в ваш файл .emacs и покурите:

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

Я только что открыл ошибка в репозитории Evil в bitbucket.

Для себя я обнаружил, чтопосле шести лет или около того, чтобы стать опытным в emacs, многоключевые аккорды стали тяжелыми для моих сухожилий.Режим зла может позволить мне снова использовать emacs, и это хорошо.Как говорит Бенедикт (в контексте функционального программирования), " Для выполнения работы часто необходимо какое-то зло. " Похоже, это может относиться и к Emacs.

PS Для тех, кто считает, что этот ответ является просто DH0 или иным образом незрелым и неуместным, в большинстве случаев насмешливая вражда между пользователями Emacs и VI бушует годами.У Emacs есть своя собственная Церковь Emacs , у VI есть видеоигра, VI Мировая война .Поэтому неудивительно, что наиболее успешный порт привязок клавиш VI к Emacs был назван злым режимом (в зле есть слово VI).Мне нравятся оба редактора, и я приветствую злых разработчиков, которые наконец-то заставили привязки клавиш VI работать внутри emacs.

1 голос
/ 15 января 2014

Это сработало для меня:

(setq evil-default-cursor t) ;; Now evil takes the default cursors 
(set-cursor-color "white") ;; Set it to white
(set-mouse-color "white") ;; Same
0 голосов
/ 09 июля 2013

У меня тоже такая же проблема, вот уже много лет.

В моем случае я делаю:

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

Это работает для меня, но я должен делать это каждый раз, что достаточно ..

Вернувшись на свое старое рабочее место, я решил эту проблему, но у меня нет init.el, который у меня был на моем старом рабочем месте, и теперь мне нужно все это выяснить снова, надеюсь, кто-то здесь поймет это передо мной.

...