2012-07-09 32 views
7

Lấy cảm hứng từ chế độ lấy nét của ia Writer, tôi quan tâm đến việc sử dụng phông chữ + màu nền trong các emacs để làm nổi bật hàm mà con trỏ ở trong và trực quan trích đoạn mã còn lại làm nền (tôi sử dụng C++, nhưng nó sẽ đẹp nếu điều này làm việc bất kể ngôn ngữ lập trình).Emacs - làm thế nào để sử dụng màu sắc để làm nổi bật trực quan chức năng mà con trỏ đang ở?

Lý tưởng nhất là màu phông chữ của mã bên ngoài hàm sẽ bị mờ đi (đây là cách chế độ tiêu điểm hoạt động). Một giải pháp đơn giản hơn có thể là thay đổi màu nền một chút cho hàm mà con trỏ hiện đang ở. Làm thế nào điều này có thể được thực hiện?

+2

Không thực sự là một câu trả lời cho câu hỏi của bạn, nhưng bạn có thể làm 'Mx hẹp-to-defun' (hoặc 'Cx n d ') sẽ chỉ hiển thị chức năng hiện tại. Sau đó, 'M-x mở rộng' (hoặc 'C-x n w') để hiển thị lại toàn bộ tập tin. – scottfrazer

+0

1. Emacs cần theo dõi chức năng bạn đang ở. – aartist

+0

Một gợi ý dễ dàng hơn: bạn có thể sử dụng chế độ 'mà-func' hoặc sử dụng một số chức năng trong đó để viết chức năng tô màu của riêng bạn. 'which-func' sẽ hiển thị tên hàm trên dòng chế độ nếu con trỏ nằm trong một. Hoặc nó hiển thị một cái gì đó khác để gợi ý rằng con trỏ không có trong một hàm. – vpit3833

Trả lời

2

Không có điều gì giống như thế này tồn tại AFAIK. Nếu bạn muốn nó tự viết, dưới đây là một bản phác họa:

  1. Viết thường trình xác định ranh giới của hàm hiện tại. Cách dễ nhất để thực hiện việc này là với (bounds-of-thing-at-point 'defun).

  2. Viết thường trình khi được giới hạn vùng, gets the background face property of the region của vùng, làm tối và áp dụng khuôn mặt mới cho khu vực.

  3. Ghi đè font-lock-fontify-region-function (xem here) với một thói quen gọi giá trị ban đầu của biến này, chênh lệch múi giờ với khu vực hiện tại (sử dụng # 1) và sau đó áp dụng thủ tục thứ 2 cho vùng còn lại .

Tôi muốn ghi đè khóa phông chữ hơn, bằng cách sử dụng jit-lock-register vì bạn cần kiểm soát thứ tự phông chữ.

HTH!

1

Chế độ chức năng được sử dụng để làm nổi bật chức năng hiện tại. Hãy thử nó để xem nếu nó giúp bạn, và xem nếu bài này giúp bạn:

Emacs Setting which-function-mode

Các vấn đề liên quan