Di manakah aturan penyorotan khusus?

11

Kadang-kadang saya ingin mengesampingkan sintaks default yang menyoroti warna dan gaya dengan preferensi saya sendiri.

Saya membayangkan cara yang paling tepat untuk melakukan ini adalah dengan membuat skema warna saya sendiri. Namun saya punya beberapa pertanyaan.

  1. Jika saya ingin menetapkan sorotan untuk grup sintaksis tertentu dalam bahasa tertentu, apakah ini termasuk dalam skema warna saya, atau lebih baik meletakkannya after/syntax/[filetype].vim?

    highlight jsAssignExpIdent cterm=bold gui=bold
    

    Tampaknya agak aneh untuk menempatkan aturan khusus bahasa yang tidak jelas dalam colorscheme, karena mereka akan memuat bahasa apa pun yang saya kerjakan, tetapi tampaknya lebih buruk lagi untuk menempatkan aturan sorotan dalam file sintaks.

  2. Terkadang saya membuat aturan sintaksis baru untuk bahasa tertentu, di after/syntax/[filetype].vim. Jika pengguna lain ingin menggunakan ekstensi ini, apakah pantas bagi saya untuk memberikan aturan sorotan default di sana yang menautkan ke grup sorotan default umum? Jika pengguna lain ingin mengganti warna sorotan itu, bagaimana mereka harus melakukannya?

    ::::: after/syntax/asm.vim :::::
    
    syn match asmHexNumber /\(0x\|\$\)[0-9A-Fa-f]\+/
    highlight default link asmHexNumber Number
    
joeytwiddle
sumber

Jawaban:

9

Pertanyaan pertama

Definisi sorotan termasuk dalam skema warna Anda. Fakta bahwa mereka dimuat untuk setiap buffer, tidak peduli apa bahasa mereka, seharusnya tidak menjadi masalah sama sekali.

Jika Anda tidak ingin mengedit skema warna Anda, Anda dapat meletakkan definisi sorotan tersebut di plugin/myhighlights.vim:

function! MyHighlights()
    highlight ...
    highlight ...
endfunction

augroup MyHighlights
    autocmd!
    autocmd ColorScheme * call MyHighlights()
augroup END

Pertanyaan kedua

Sampel Anda persis seperti yang harus Anda lakukan dan bagaimana setiap skrip sintaks tidak. Metode ini memungkinkan pengembang plugin menentukan standar waras tanpa memaksakan warna tertentu ke tenggorokan pengguna mereka.

romainl
sumber
Terima kasih atas konfirmasinya. Tapi saya khawatir jika saya menempatkan highlight link ...perintah dalam file sintaks yang akan menimpa pengaturan dari colorscheme setiap kali file dengan tipe file itu dimuat. Haruskah saya hanya melakukan highlight link ...setelah memeriksa bahwa tidak ada aturan highlight untuk nama itu?
joeytwiddle
Ah, saya tidak perlu khawatir. Vim docs mengatakan: Jika sudah ada pengaturan highlight untuk {from-group}, tautan tidak dibuat, kecuali '!' diberikan. Untuk perintah ": sorot tautan" di file sumber, Anda tidak mendapatkan pesan kesalahan. Ini dapat digunakan untuk melewati tautan untuk grup yang sudah memiliki pengaturan.
joeytwiddle
Tetapi bagi orang-orang yang mengubah tema warna mereka, a highlight linkdalam skema warna dapat ditimpa kemudian oleh highlight linkdalam file sintaks. Untuk menghindari ini, argumen aktual (ctermbg, guifg, ...) dapat digunakan sebagai ganti tautan.
joeytwiddle
Pengguna harus memiliki kata terakhir tentang warna apa yang digunakan untuk kelompok sorotan yang diberikan. Untuk itu, tidak jarang melihat definisi sorotan khusus bahasa dalam tema warna. Anda hanya boleh menggunakan highlight link ...skrip sintaksis Anda dan membiarkan pengguna Anda menimpanya jika mereka mau.
romainl
Kekhawatiran saya adalah jika pengguna menggunakan highlight link ...dalam colorscheme mereka, maka file sintaksis mungkin mengatur ulang nanti dengan miliknya sendiri highlight link .... Saya melihat sekarang bahwa file sintaks yang baik menghindari ini dengan menggunakan highlight default link .... Itu mungkin harus menjadi koreksi terhadap asmHexNumberaturan dalam pertanyaan saya.
joeytwiddle