2011-11-20 38 views
13

Nếu tôi chạy emacs --daemon (trong .xinitrc hoặc cao hơn) và sau đó emacsclient -c, khung mới được tạo có màu con trỏ đen, bất kể trên colortheme hoặc bất kỳ cài đặt nào khác. Chính xác hơn, trước khi tôi gõ bất cứ điều gì, màu con trỏ là màu trắng (hoặc màu khác), nhưng với lần nhấn đầu tiên nó sẽ trở thành màu đen và không thể thay đổi thông qua set-cursor-color. Cả hai mặc định và colorthemes tùy chỉnh của tôi là màu đen, do đó, nó làm cho việc chỉnh sửa rất khó chịu.Không thể thay đổi màu con trỏ trong emacsclient

Nếu tôi chạy emacsM-x server-start thay vì emacs --daemon thì sự cố này không xuất hiện. Nhưng theo cách này tôi cần giữ một khung hình "chính" và không giết nó một cách ngẫu nhiên, điều này dường như không phải là một giải pháp tốt đẹp.

Tôi đã theo khối trong .emacs.d/init.el nhưng nó không giúp:

(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")))) 

Nếu tôi chạy M-x describe-face RET cursor tôi nhận được:

(...) 
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 
+0

bất kỳ tin tức nào về vấn đề này, bạn có tìm thấy bất kỳ thứ gì hoạt động không? Tôi đang đối mặt với một vấn đề tương tự, nơi chủ đề màu sắc sẽ không được tải bởi emacsclient, nhưng emacs sẽ hạnh phúc áp dụng con trỏ màu tím của tôi. – kristianlm

Trả lời

5

Được rồi .. Vấn đề này có thể được giải quyết bằng cách thêm

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

mặc dù tôi không hiểu tại sao nó không phải là một vấn đề trước.

Xem this chuỗi diễn đàn.

+0

cảm ơn, tôi sẽ thử lần khởi động lại X sau – modular

7

Tôi tin rằng trong Emacsen gần đây, sử dụng tài sản để thiết lập khung màu của con trỏ không phải là phương thức ưa thích. Vì vậy, thay vì của việc sử dụng set-cursor-color hoặc initial-frame-alist/default-frame-alist, hãy thử:

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

Hoặc, có lẽ:

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

Cảm ơn, điểm tốt. Nhưng không giúp đỡ trong trường hợp của tôi. – modular

+0

Hmm, kỳ quặc. Tôi sẽ xem liệu tôi có thể tái tạo nó không. – sanityinc

+1

Tôi đã thử cả hai quá, nhưng cũng không thành công. Tôi cũng bị ảnh hưởng bởi hành vi đặc biệt này. – plc

0

Tôi cũng có những vấn đề rất giống nhau, trong nhiều năm nay.

Trong trường hợp của tôi, tôi làm:

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

đó làm việc cho tôi, nhưng tôi phải làm mọi này, sux ..

Quay trở lại nơi làm việc cũ của tôi, tôi đã giải quyết này nhưng tôi don' Tôi có init.el mà tôi từng có ở nơi làm việc cũ của mình và bây giờ tôi cần tìm ra điều này một lần nữa, hy vọng một người nào đó ở đây sẽ tìm ra điều này trước mặt tôi.

5

Bwahahaha! Tôi nghĩ rằng không ai đã đăng một giải pháp cho 2 năm qua bởi vì bạn là tất cả người dùng EVIL emacs!

Sự thật là, tôi đang thử chế độ ác vào lúc này và tôi đã giải quyết vấn đề này trên hệ thống của mình. Đặt tệp này vào tệp .emacs của bạn và hút nó:

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

Tôi vừa mở a bug chống lại kho lưu trữ Evil trong bitbucket.

Đối với bản thân mình, tôi thấy rằng sau 6 năm hoặc lâu hơn nó đã thực sự trở thành thành thạo ở emacs, các hợp âm đa phím cứng trên gân của tôi. Chế độ ác có thể cho phép tôi sử dụng các emacs một lần nữa, đó là một điều tốt. Như Benedict nói (trong bối cảnh lập trình chức năng), "Some evil is often necessary to get work done." Dường như cũng có thể áp dụng cho Emacs.

P.S. Đối với bất cứ ai cảm thấy câu trả lời này chỉ là DH0 hoặc bằng cách khác chưa trưởng thành và không phù hợp, phần lớn lưỡi trong má feud giữa người dùng Emacs và VI đã phát nổ trong nhiều năm. Emacs có riêng Church of Emacs, VI có trò chơi video, World War VI.Vì vậy, nó không có gì ngạc nhiên khi cổng thành công nhất của VI keybindings Emacs được đặt tên là chế độ ác (ác có từ VI trong nó). Tôi thích cả hai biên tập viên và laud các nhà phát triển ác cuối cùng đã thực hiện VI keybindings làm việc bên trong emacs.

+0

Cảm ơn Glen, tôi là người dùng EVIL (mặc dù tôi không bao giờ sử dụng chế độ/trạng thái bình thường). Tôi đã sửa lệnh của bạn (thay thế ''' bằng 'setq'). Dường như nó hoạt động tốt cho tôi. Và thậm chí nếu vì một số lý do con trỏ chuyển sang màu đen một lần nữa, tôi có thể lặp lại lệnh. – modular

+0

Vì đây là giải pháp duy nhất phù hợp với tôi, tôi chấp nhận câu trả lời của bạn. Mặc dù đó là một chút không công bằng đối với người dùng emacs không phải là người hâm mộ EVIL. – modular

1

này đã làm việc cho tôi:

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