advice и el-patch
advice
(advice-add 'исходная-функция :override #'моя-функция)
Способ переопределить нечто у себя.
Плюсов сразу два:
- у себя. То есть, вот в моём случае - автор там что-то пишет в своём пакете, обновлять, может, будет. Так можно мирно обновляться, и пока в этом конкретном месте ничего существенного не меняется, всё будет работать без дополнительных действий.
- по сравнению с определением непосредственно поверх, advice правильнее тем, что его можно ещё и удалить без перезагрузки всего.
(advice-remove 'исходная-функция #'моя-функция)
https://www.gnu.org/software/emacs/manual/html_node/elisp/Advising-Functions.html
Ещё стоит отметить, что override
- это самый, наверное, простой и тупой способ. А их много: https://www.gnu.org/software/emacs/manual/html_node/elisp/Advice-Combinators.html
el-patch
- https://github.com/raxod502/el-patch - более умная замена эдвайсам.
- https://elpa.gnu.org/packages/advice-patch.html - вроде, ещё развитие этой мысли, но наоборот, в сторону «к корням».
В чём приятность, кроме того, что вообще умеет довольно ювелирно вписываться с изменениями - что можно проверить, не поменялось ли заменяемое. Начала использовать и вполне рада. 2022-01-12.