Ben bir dize alır ve geçici olarak arabellek metni sonra bir zaman aşımı ile görüntüler bir fonksiyonun çalışma örneği çırpılmış:
(defun my-momentarily-display-after-buffer-end (string &optional timeout)
(let ((ov (make-overlay (point-max) (point-max))))
(overlay-put ov 'after-string
(concat (propertize " " 'display
'(space :align-to (+ left-fringe 10)))
(propertize string 'display
'(raise -1))
"\n\n"))
(sit-for (or timeout 5))
(delete-overlay ov)))
Aşağıdaki büyütme, alt kırmızı kutu örneğinizle sonuçlanacaktır:
(my-momentarily-display-after-buffer-end "Nothing to see here...")
Bunun nedeni, bindirmelerin işaretleyicileri arasında görüntülenecek konumlar olarak kullanmalarıdır. En dıştaki konumu, yer paylaşımının başlangıç ve bitiş noktası olarak kullanmak, özelliği kullanarak metni görüntüledikten sonra görüntülemenizi sağlar after-string
. Kaplamalar düzgün metin içerebileceğinden, girintili ve çevresinde boşluk kalacak şekilde ayarladım.
Diğer örnek, satır sonundan sonra metni görüntülemek için aynı fikri kullanabilir:
(defun my-momentarily-display-after-line-end (string &optional timeout)
(let ((ov (make-overlay (line-end-position) (line-end-position))))
(overlay-put
ov 'after-string
(concat (propertize " " 'display
`(space :align-to (- right-fringe
,(1+ (length string)))))
string))
(sit-for (or timeout 5))
(delete-overlay ov)))
Aşağıdaki çağrı, sağ taraftaki kırmızı kutu örneğinizle sonuçlanacaktır:
(my-momentarily-display-after-line-end "annotation")
Bu kaplamaları arabellek metninden ayırmak için çok daha çılgınca gidebilir ve yüzler ekleyebilir, zaman aşımına göre daha uzun süre görüntüleyebilir, konumlarını ayarlayabilir, boş alan olmadığında algılayabilir ve normalleştirilmiş metinlerin normal katmanlarını kullanabilirsiniz, vb. şirket modunun kaynak kodu
çok okunabilir ve önerilen özelliklere sahip esnek bir açılır menü oluşturmak için kaplamaların daha ayrıntılı (ve çoğunlukla hatasız) kullanımını gösterir.