Emacs'de bazen kbd-makro'yu yanlışlıkla çağırıyorum. Geri aldığımda, klavye makrolarının tüm etkisini atomik olarak geri almayı geri almayı beklerdim, ancak bu gerçekleşmez. Bunun yerine, her seferinde makrodaki her adımı geri almak zorunda kalıyorum. Makro yürütmeden önce arabellek durumuna dönmek için nasıl emacs alabilirim?Emacs içinde son-kbd-makro çağrısı nasıl geri alınır
cevap
Korkarım ki sadece yerleşik 'undo
mekanizması ile yapamazsınız. Emacs'teki makro sistemi, aslında kullanıcının tuş vuruşlarında (veya fare olaylarında) yazıyormuş gibi geri dönüyor ve undo history (buffer-undo-list
) normal olarak güncelleniyor.
Güncel undo
mekanizmasını istediğiniz gibi yapmak için nasıl genişleteceğinize dair bir öneri.
/geri alma listesindeki yeni bir giriş, bir
macro-begin
işaretleyici ve birmacro-end
elemanıtavsiye anlama makro oynatma başlangıcı/sonu işaretleri eklemek için makro oynatmayı değiştirmek için
'undo
uzatmaktüm bir birim olarak iki işaret arasındaki olayları geri almak ve hepsini geri (ve
redo
şeyler, hala olduğunuzda böylece geri alma tarihin ucunda uygun işaretleri eklemekundo
kod tedavi var
Uyarılar) tek bir blok olarak kabul:
- Bu sadece tek bir tampon maddesi içinde faaliyet makro çalışmak, makro tampon açık (ya da başka tampon içinde yan etkileri vardı), bu değişiklikler bir blok olarak ele alınmaz.
- Makronuz başlatılandan farklı bir arabelleğin içinde sona erdiyse, o zaman temiz bir şekilde işlemek zorunda kalırsınız - geri listeden "dengesiz"
macro-begin
vemacro-end
işaretlerini istemezsiniz.
Söylemeye gerek yok, bu karmaşık bir çabadır. Sana şans diliyorum.
- 1. svn nasıl geri alınır
- 2. String.fromCharCode nasıl geri alınır?
- 3. saveInBackground geri çağrısı çalışmıyor
- 4. Durum geri çağırma() içinde nasıl saklanır ve alınır?
- 5. Bir JPopupMenu çağrısı yapan bileşen nasıl alınır?
- 6. @ değeri mesajdan nasıl geri alınır?
- 7. Besteci güncellemesi nasıl geri alınır?
- 8. Cout'tan satırlar nasıl geri alınır?
- 9. NSMutableArray'deki veriler nasıl geri alınır?
- 10. Yapılmadığında "Atma" nasıl geri alınır
- 11. "hg qnew" nasıl geri alınır?
- 12. npm güncelleme nasıl geri alınır?
- 13. jquery change etkinlik geri çağrısı
- 14. Altpropetikler değiştiğinde DependencyProperty geri çağrısı
- 15. Scala REPL Emacs içinde
- 16. IMAP Emacs Rmail içinde?
- 17. Emacs
- 18. Emacs içinde C-`(backquote) nasıl bağlanır
- 19. ajax çağrısı içinde URL nasıl manipüle edilir?
- 20. sqlite içinde sqrt nasıl alınır
- 21. Activity URL geri çağrısı çalışmıyor 4.0.3 ICS
- 22. Emacs içinde Ctrl-Z vurmak her şeyi dondurur
- 23. Emacs arabelleği içinde OpenGL içeriği
- 24. Android'deki tüm ParseObject satırları nasıl geri alınır
- 25. SQL Roll, işlem günlüklerinden nasıl geri alınır
- 26. SAMAccountName Active Directory'den nasıl geri alınır
- 27. Git akış özelliği sonlandırması nasıl geri alınır?
- 28. Heroku'da veritabanı geçişi nasıl geri alınır
- 29. Perl ile tüm Gruplar nasıl geri alınır?
- 30. ActiveAdmin uygulamasına bir bağlantı nasıl geri alınır?
Teşekkürler Trey. Gerçekten karmaşık bir cevap. Aynı ruhta daha basit ama daha hacköz bir çözüm, geri arama listesindeki bir son no-op işaretleyici türünü son-kbd-makrosu (veya bir sarıcı) yapmaktır. Ardından, işarete ulaşılana kadar tüm değişiklikleri geri alabilecek yeni bir makro-işaretleyici işlevi oluşturun. –
Bu satırlar arasında, http://www.panix.com/~harley/elisp/undo-group.el adresinden bir işaretçi, yani bir "geri-grup" komutu için sınır olarak kullandığı iki 'nil' işareti vardır. . –