Saya memiliki beberapa kode yang digunakan flet
untuk sementara mengubah perilaku fungsi.
;; prevent changing the window
(flet ((pop-to-buffer (buffer &rest args)
(switch-to-buffer buffer)))
(compilation-next-error-function n reset))
Namun, kompiler byte Emacs memberikan peringatan:
In ag/next-error-function:
ag.el:103:7:Warning: `flet' is an obsolete macro (as of 24.3); use either
`cl-flet' or `cl-letf'.
Namun, cl-flet
berfungsi secara berbeda dan tidak sesuai dengan beberapa kasus penggunaan, dan saya percaya ini adalah salah satu kasus tersebut.
Opsi yang bisa saya lihat adalah:
Katakan pada Emacs untuk mengabaikan peringatan itu.
Gulung sendiri
flet
.
Apa pendekatan terbaik?
my-flet
) dan menghapus peringatan usang, dan menggunakannya dalam paket apa pun yang sebelumnya diperlukan flet.Jawaban:
Untuk mendapatkan perilaku yang sama dengan yang Anda gunakan
flet
, gunakancl-letf
untuk mengubah nilai fungsi simbol.Jika Anda memutar sendiri
flet
, cara mudahnya adalah makro yang mengembang kecl-letf
formulir.Edit: menggulungnya
sumber
cl-letf
bukan alternatif yang tepat (IIRC, itu tidak bekerja untukflet
simbol yang belum adafboundp
). Yang mana itulah mengapa versi yang kompatibel dengan versiflet
agak ... berbelit-belit . "Artur Malabarba menulis ini baru-baru ini, di Understanding letf dan bagaimana ia menggantikan flet .
letf
adalah alias untukcl-letf
, dan sementara itu kemungkinan besar yang Anda inginkan, ada peringatan kecil yang ditunjukkan Artur:(
noflet
Paket Nic menyediakan fungsionalitas tambahan di sepanjang baris ini.)sumber