Saya perlu menyorot fasilitas emacs untuk menandai beberapa baris dalam file saat bekerja dengannya. Seharusnya seperti M-s h l tetapi harus bekerja berdasarkan nomor baris, bukan pada regexp. Saya ingin menyorot baris saat ini, tetapi hl-line-mode
tidak cocok, karena saya perlu menyorot banyak baris, setiap kali saya menekan tombol tertentu pada masing-masing baris.
Bagaimana cara menyorot baris tertentu di emacs?
Jawaban (3)
Saya segera menulis yang berikut ini:
(defun find-overlays-specifying (prop pos)
(let ((overlays (overlays-at pos))
found)
(while overlays
(let ((overlay (car overlays)))
(if (overlay-get overlay prop)
(setq found (cons overlay found))))
(setq overlays (cdr overlays)))
found))
(defun highlight-or-dehighlight-line ()
(interactive)
(if (find-overlays-specifying
'line-highlight-overlay-marker
(line-beginning-position))
(remove-overlays (line-beginning-position) (+ 1 (line-end-position)))
(let ((overlay-highlight (make-overlay
(line-beginning-position)
(+ 1 (line-end-position)))))
(overlay-put overlay-highlight 'face '(:background "lightgreen"))
(overlay-put overlay-highlight 'line-highlight-overlay-marker t))))
(global-set-key [f8] 'highlight-or-dehighlight-line)
(Di sini find-overlays-specifying berasal dari halaman manual sebuah>)
Ini akan menyorot baris saat ini, dan ketika digunakan lagi akan menghapusnya.
Mungkin yang berikut ini bisa berguna juga: menghapus semua highlight Anda dari buffer (bisa berbahaya, Anda mungkin tidak menginginkannya jika Anda menyorot hal-hal penting)
(defun remove-all-highlight ()
(interactive)
(remove-overlays (point-min) (point-max))
)
(global-set-key [f9] 'remove-all-highlight)
Anda dapat menggunakan bm.el. Anda dapat menginstal bm.el dari MELPA.
bm.el menyediakan bm-toggle
untuk menyorot dan menghapus sorotan pada baris saat ini. bm.el juga menyediakan bm-bookmark-regexp
yang hanya menyorot baris yang cocok. Dan Anda dapat melompat di antara garis yang disorot dengan bm-previous
dan bm-next
Berikut adalah contoh konfigurasi bm.el
(require 'bm)
(global-set-key (kbd "<f5>") 'bm-toggle)
(global-set-key (kbd "<f6>") 'bm-previous)
(global-set-key (kbd "<f7>") 'bm-next)
(global-set-key (kbd "<f8>") 'bm-bookmark-regexp)
Bookmark+ melakukan apa yang Anda minta. Gunakan C-x p RET
(secara default) untuk menyetel bookmark pada titik tersebut. Dan Anda dapat mengonfigurasi jenis penyorotan yang Anda inginkan untuk bookmark tersebut. Ini mirip dengan apa yang bm.el
tawarkan (jawaban syohex), tetapi lebih fleksibel.
M-x customize-group bookmark-plus
, lalu ikuti (misalnya klik) tautan Send Bug Report
, yang membantu Anda menyiapkan email kepada saya. Terima kasih.
- person Drew; 16.05.2019
highlight.el
perpustakaan - person artscan   schedule 22.01.2013