Я хочу змінити пакет, протестувати його і, сподіваюся, після цього надіслати запит на тягу. Як це зробити безпечним та ефективним способом? Питання може бути занадто широким, я прийму відповідь, яка охоплює такі питання:
Я очікував би встановити окрему гілку пакету і мати можливість перемикатися між ним та стабільною гілкою на примху, при цьому перекомпіляція виконується автоматично, коли це необхідно, але
package.el
, здається, не пропонує прямого способу зробити це. Ця відповідь на emacs-SE повідомляє нам, що "Якщо встановлено кілька копій пакета, то перша буде завантажена", тому я думаю, що можна було б вручну зіпсуватись,load-path
але це не відчуває себе надійним. Який стандартний спосіб вибрати конкретну версію пакета серед встановлених?Навіть якщо мені вдасться піднести кілька гілок до Emacs, для значних налаштувань мені потрібно переконатись, що незапалена гілка «вивантажена» та її побічні ефекти ізольовані. Чи
unload-feature
правильно поводитися з цим чи, можливо, в ньому є ідіосинкразії, про які повинен знати кожен тестер багатоверсійних пакетів?Як встановити та протестувати локальну версію? Здається, відповідь залежить від того, простий пакет (= один файл) або багатофайл. EmacsWiki говорить про багатофайлові пакети: " MELPA створює пакети для вас ". Я сумніваюся, що мені доводиться (або повинен) говорити з MELPA щоразу, коли я міняю
defun
форму в мультифайловому пакеті, але питання залишається. Принаймні мені потрібно розповісти менеджеру пакунків про локальну версію, і якщо так, то як це зробити?Які імена слід призначити локальним версіям пакетів? Припустимо, я хочу працювати над кількома функціями або помилками одночасно, а це означає мати кілька гілок. Emacs не дозволить називати версії в описовому порядку (по рядках
20170117.666-somebugorfeature
). Напевно, я міг би перейменувати сам пакет, суфікс на гілку, але знову ж таки, як вручну возитися зload-path
Q1, це некрасивий хак, тому я не намагатимусь із тим, що я маю намір відправити вгору, якщо це не є загальноприйнятою практикою .
Питання, ймовірно, наївні, оскільки я ніколи не писав патч, не застосовував жодного з git чи подібних vcs. Однак для багатьох користувачів Emacs виправлення пакету Emacs може бути їхнім першим (або, можливо, єдиним) починанням соціального програмування, саме тому, я вважаю, відповіді на це питання все-таки були б цінними.
emacs -L
підхід для завантаження локальної версії пакету, який я також встановив у всьому світі за допомогою Cask. Одне, що мене відкинуло, це те, що біг<package>-version
завжди повертає глобально встановлену версію, навіть коли я фактично запускаю локальну модифіковану версію. Виявляється, це було тому, що<package>-version
для цього пакета отримується версіяpackages.el
.