(defun some-function (beginning end)
(interactive "r")
(if (use-region-p)
(message "The region is active, and is from %d to %d" beginning end)
(message "The region is still there (from % d to %d), but it is inactive"
beginning end)))
Kullanımı (interactive "r")
parametreleri olduğunu araçlarla beginning
ve end
otomatik bölge başında ve bölge sonuna değerlerini alacak sırasıyla işlev çağrıldığında. (Ayrıca bu değerler her zaman işlevleri kullanarak alabilirsiniz region-beginning
ve region-end
sırasıyla.)
Bölge her zaman mevcuttur (geçerli arabellekte bir işaret varsa), ancak olduğunu düşünmeyebilirsiniz. Bölge vurgulandığında etkindir (metin seçilidir). Yüklemeyi kullanarak bölgenin etkin olup olmadığını test edebilirsiniz region-active-p
. Ancak genellikle daha iyi bir testtir use-region-p
, çünkü (varsayılan olarak nil
) yalnızca bölge hem aktif hem de boş olduğunda (nokta ve işaret farklı olduğunda) true değerini döndürür .
Başlangıçta bölgenin vurgulanması yoktu. Ve uzun süre, vurgulama mevcut olsa da, varsayılan davranış değildi. Vurgulamanın gerçekleşmesi için, transient-mark-mode
açık (veya en azından geçici olarak açılmış) olmanız gerekir . Varsayılan olarak, transient-mark-mode
son Emacs sürümlerinde açıktır.
Yüklemin tanımına bakmak yardımcı olur use-region-p
:
(defun use-region-p ()
(and (region-active-p)
(or use-empty-active-region
(> (region-end) (region-beginning)))))
use-empty-active-region
varsayılan değeri nil
(true) olan bir kullanıcı seçeneğidir, yani use-region-p
bölge boşsa varsayılan olarak true değerini döndürmez. Bu durumda, bölgenin geri dönmesi için, bölgenin sonu başlangıçtan daha büyük olmalıdır (yukarıda tarif ettiğim davranış).
Ve eğer tanımına bakarsak region-active-p
:
(defun region-active-p ()
(and transient-mark-mode
mark-active
(mark)))
nil
Tüm bunlar doğru olduğunda bunun true (non- ) döndürdüğünü görüyoruz :
transient-mark-mode
açık.
- İşareti etkin (
mark-active
).
- Geçerli tamponda bir işaret var.
Aktif olma işareti gerçekten aktif olan bölgenin ne olduğudur. Aktif olduğunda, aktif transient-mark-mode
olduğu ve mevcut tamponda bir işaret olduğu varsayılarak , bölge vurgulanır.