Yerel değişken yeniden düzenleme işlemini yeniden adlandırma


10

Yerel değişkenleri ve işlev bağımsız değişkenlerini yeniden adlandırabilen bir elisp yeniden düzenleme aracı var mı? Dönüş yapabilmek istiyorum:

(defun my-func (s r)
  ...
  (use s .. r))

içine:

(defun my-func (string replacement)
  ...
  (use string .. replacement))

değişken referansların nasıl bulunacağını bilen bir yöntem kullanarak. Süper hijyenik değilse sorun değil.


4
Birden çok imleç geçerli defun içindeki bir sembolün tüm örneklerini düzenleyebilir.
Malabarba

Ayrıca bkz. İedit.
InHarmsWay


4
Tüm kodlar bizim değil. Bazı kodlar eski.
Gracjan Polak

2
Genellikle \ bSYM \ b… bölgesinde yer değiştiririm
BRPocock

Yanıtlar:


2

TL; DR: erefactor-rename-symbol-in-buffer

Sözcüksel olarak akıllı bir yeniden adlandırma işlevi arıyorsunuz - değişkenleri yalnızca aptal bir bulma ve değiştirme değil, kapsamlarına göre yeniden adlandıran bir işlev arıyorsunuz. Bunun gibi paketler birçok dilde mevcuttur, ancak yazı itibarıyla (Nisan 2019), Emacs Lisp için pek fazla seçenek yoktur. erefactorPaket bildiğim sadece bir tanesidir.

erefactor-rename-symbol-in-bufferistediğiniz işlevdir. Geçerli kapsamdaki sembolleri (docstrings dahil) değiştirecek akıllı bir bul ve değiştir komutudur. Bu komutun sınırlaması, geçerli arabellek dışında arama yapmamasıdır. Akıllı, ama mükemmel değil. Son sonucun sıhhi olmasını sağlamak için her bir vakayı onaylamanızı isteyecektir.

Diğer yeniden adlandırma işlevi erefactor-rename-symbol-in-package. Bu aynı şekilde çalışmaz - sadece küresel semboller üzerinde çalışır. Paketinizin bir gruplama sistemi ve öneki ile doğru şekilde kurulmasına dayanır ve paketin önekiyle eşleşmesi için değişkene ihtiyaç duyar. Çok sağlam değil - bu işlevin beklediği şekilde bir şey ayarlamadıysanız başarısız olacaktır. Küresel bir sembolü yeniden adlandırıyorsanız, Elisp'teki küresel sembollerin bir ad alanı olmadığından, naif bir bul ve değiştir de kullanabilirsiniz. Sözcüksel anlayışın faydaları minimaldir. Bu komut, takas için çok kırılgandır. Sadece kullanmanızı öneririm projectile-replace.

Erefactor, yararlı bulabileceğiniz bir dizi diğer Elisp komutuna sahiptir. Benioku dosyasında (eksik) bir liste var .

GitHub sayfasında açıklanmaz, ancak erefactorMELPA ( M-x package-install RET erefactor) ' da mevcuttur . MELPA sayfasını burada bulabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.