The echon
dan echohl
perintah yang sangat berguna untuk keluaran baris teks dengan beberapa kelompok puncak dalam baris yang sama. Ini dapat digunakan untuk misalnya membuat pesan status yang bagus untuk plugin.
Dalam sebuah plugin yang sedang saya kerjakan, saya menggunakan metode yang tepat untuk menghasilkan pesan status berwarna. Namun, terkadang saya ingin menambahkan pesan-pesan ini ke message-history
dalam cara yang mirip dengan apa yang Anda dapatkan echomsg
. Apakah ini entah bagaimana mungkin? Saya tidak percaya ada fungsi intrinsik untuk ini, tetapi mungkin orang dapat menambahkan fungsionalitas dengan skrip vim?
statusline
highlight
Karl Yngve Lervåg
sumber
sumber
echon
danechomsg
bekerja sama, kecuali ituechomsg
menambah pesan ke riwayat? Anda menyebutkan "Saya telah mencoba beberapa waktu sekarang" , Anda harus memberi tahu kami apa sebenarnya yang sudah Anda coba, apa yang Anda harapkan terjadi, dan apa yang sebenarnya terjadi. Dengan begitu kami dapat mencoba dan memperbaiki masalah yang Anda alami (jika ada) atau menjelaskan beberapa kesalahpahaman yang mungkin Anda miliki.echon
fungsionalitas dikombinasikan dengan menambahkan pesan ke riwayat.Jawaban:
Ini saat ini tidak memungkinkan di Vim.
Secara internal,
:echomsg
diimplementasikan sebagai:execute
, kecuali ketika dipanggil sebagai:echomsg
hasil eksekusi ditampilkan dengan atribut yang terakhir:echohl
dan disimpan ke daftar pesan (src/eval.c
fungsi referensiex_echohl
danex_execute
), yang merupakan cara Anda mendapatkan warna pada pesan yang disimpan.Riwayat pesan yang sebenarnya adalah kumpulan (daftar yang ditautkan) string dengan atribut, dan disimpan dan diambil
src/message.c
. Setiap string adalah pesan (terdiri dari satu atau lebih baris), dan atribut menentukan, antara lain, grup sorotan yang akan digunakan untuk tampilan. Karena itu, setiap pesan harus disorot secara keseluruhan (grup sorotan tunggal), dan tidak lebih dari satu pesan yang berada di baris yang sama. (src/message.c
strukturmsg_hist
dan fungsi referensiex_messages
)Saya tidak dapat menemukan jalan keluarnya (saya berpikir untuk menggunakan
:echohl
dan:echon
menampilkan pesan, tetapi menyimpan pesan sederhana dalam histori. Sayangnya, kemampuan untuk menambah riwayat tanpa juga menampilkan pesan tampaknya tidak terkena eks -command) tanpa memodifikasi kode sumber Vim.sumber