как изменить цвет курсора на Emacs - PullRequest
29 голосов
/ 10 января 2011

Я сделал некоторые изменения в цветах Emacs, и единственное, что сейчас не так, это черный курсор на черном фоне, и мне придется это изменить.Что мне делать?

Ответы [ 6 ]

39 голосов
/ 08 февраля 2011

Если вы используете последнюю версию emacs, вы можете использовать:

; Set cursor color to white
(set-cursor-color "#ffffff") 

Вместо #ffffff вы можете использовать любой понравившийся вам цвет. Для получения списка шестнадцатеричного кода Google говорит: http://www.tayloredmktg.com/rgb/


Может быть, вам нравится этот ... следующий код меняет цвет курсора на каждый мигает . Просто eval код и его запуск:

; Using in Emacs 24.0 

(defvar blink-cursor-colors (list  "#92c48f" "#6785c5" "#be369c" "#d9ca65")
  "On each blink the cursor will cycle to the next color in this list.")

(setq blink-cursor-count 0)
(defun blink-cursor-timer-function ()
  "Zarza wrote this cyberpunk variant of timer `blink-cursor-timer'. 
Warning: overwrites original version in `frame.el'.

This one changes the cursor color on each blink. Define colors in `blink-cursor-colors'."
  (when (not (internal-show-cursor-p))
    (when (>= blink-cursor-count (length blink-cursor-colors))
      (setq blink-cursor-count 0))
    (set-cursor-color (nth blink-cursor-count blink-cursor-colors))
    (setq blink-cursor-count (+ 1 blink-cursor-count))
    )
  (internal-show-cursor nil (not (internal-show-cursor-p)))
  )

Обратите внимание, что этот код заменяет функцию emacs 'blink-cursor-timer-function' из 'frame.el'.

14 голосов
/ 16 июня 2014

Ничто из вышеперечисленного не помогло мне, поэтому я провел небольшое исследование самостоятельно.Из EmacsWiki:

14.20 Отображение курсора

На текстовом терминале внешний вид курсора контролируется терминалом , в значительной степени вне контроля Emacs.Некоторые терминалы предлагают два разных курсора: «видимый» статический курсор и «очень видимый» мигающий курсор.По умолчанию Emacs использует очень видимый курсор и переключается на него при запуске или возобновлении Emacs.Если переменная visible-cursor равна нулю, когда Emacs запускается или возобновляет работу, он использует обычный курсор.

На графическом дисплее можно изменить многие другие свойства текстового курсора.Чтобы настроить его цвет, измените атрибут: background лица с указанным курсором (см. Настройка лица).(Другие атрибуты этой грани не действуют; текст, показанный под курсором, рисуется с использованием цвета фона рамки.) Чтобы изменить его форму, настройте переменную курсора-локальную переменную курсора;Возможные значения: box (по умолчанию), hollow (пустое поле), bar (вертикальная черта), (bar. n) (вертикальная черта n пикселей в ширину), hbar (горизонтальная черта), (hbar. n) (горизонтальная полоса высотой n пикселей) или nil (курсор вообще отсутствует).

Чтобы отключить мигание курсора, измените переменную blink-cursor-mode на nil (см. Простая настройка) или добавьте строку (мигание-cursor-mode 0) в ваш файл инициализации.Кроме того, вы можете изменить внешний вид курсора, когда он «мигает», настроив переменную списка blink-cursor-alist.Каждый элемент в списке должен иметь форму (on-type. Off-type);это означает, что если курсор отображается как включенный, когда он мигает (где on-type - один из описанных выше типов курсора), то он отображается как выключенный, когда мигает.

Некоторые символы, такие как символы табуляции, являются «очень широкими».Когда курсор расположен над таким символом, он обычно рисуется с шириной символа по умолчанию.Вы можете растянуть курсор для охвата широких символов, изменив переменную x-stretch-cursor на значение, отличное от nil.

Курсор обычно отображается в невыбранных окнах как не мигающее пустое поле.(Для курсора полосы он вместо этого выглядит как более тонкая полоса.) Чтобы отключить курсоры в невыбранных окнах, измените переменную cursor-in-non-selected-windows на nil.

Чтобы сделать курсореще более заметным, вы можете использовать режим линии HL, второстепенный режим, который выделяет линию, содержащую точку.Используйте Mx hl-line-mode, чтобы включить или отключить его в текущем буфере.Mx global-hl-line-mode включает или отключает один и тот же режим глобально.

Итак, вот способ сделать это: 1. M-x customize-face, введите 2. cursor введите 3. выберитецвет фона вам по душе.4. нажмите на состояние, сохраните для будущих сессий.

Скриншоты здесь:

enter image description here

enter image description here

enter image description here

enter image description here

9 голосов
/ 10 января 2011

Попробуйте:

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

Если вы хотите сохранить другие значения в default-frame-alist, вы можете использовать предложение Марка:

(add-to-list 'default-frame-alist '(cursor-color . "palegoldenrod"))
5 голосов
/ 26 сентября 2011

Если вы используете X Window System, попробуйте поставить что-то вроде этого в .Xdefaults:

*cursorColor: #ff7700
1 голос
/ 08 января 2014

Существует также опция командной строки:

--cursor-color, -cr COLOR       color of the Emacs cursor indicating point
1 голос
/ 08 февраля 2011

Вы можете использовать это для настройки цветов Emacs:

(defun good-colors ()
  (progn
     ;; Set cursor color
     (set-cursor-color "Black")

     (set-background-color "grey46")
     (set-foreground-color "White")
     (set-border-color "dark orange")
     (set-mouse-color "dark orange") 
))

(good-colors)
...