Подтвердить что ты не робот

Невозможно изменить цвет курсора в emacsclient

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

Если я запустил emacs и M-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
4b9b3361

Ответ 1

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

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

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

Смотрите этот форум.

Ответ 2

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

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

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

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

Ответ 3

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

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

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

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

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

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

Ответ 4

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

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

Ответ 5

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

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

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

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

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