Зараз я витратив багато-багато годин, намагаючись змусити працювати будь-яке правило відступів SMEM / граматики / речі.
Чи є приклади невеликого режиму роботи на основі SMIE на основі іграшки або скелета з документацією про те, як він насправді працює, або будь-яка дискусія про те, як ним користуватися? Щось, що, скажімо, визначає вираз як рядок лексем, що закінчуються напівкрапкою та блоком, як деякі вирази між дужками та більше нічого. Дійсно, справді просто?
Конкретні питання: при використанні smie-config-show-indent 90% часу я отримую відповідь ': list-intro "" -> nil'. На чому введення списку засноване на його визначенні виразу чи списку виразів? Чому він говорить про нуль і досі відступає наступні рядки? Як це змінити?
По-друге: чи є зв’язок між моєю граматикою та моїми правилами smie? Я припускаю, що це відбувається тому, що вони обоє передаються в програму smie-setup, але я не можу знайти жодного способу сказати: "коли ви бачите" блок ", відступайте вміст", наприклад, на основі граматики, яка ідентифікує блок .
По-третє, SMIE, здається, має безліч правил, "запечених". Наприклад, лише натискання на нього дає загальне поводження з дужками, дужками і дужками. Чи є спосіб бачити ці правила чи змінювати їх? Або це так, що синтаксична таблиця робить все це, і SMIE буквально нічого не робить (про що я починаю підозрювати).
Нарешті, при спробі налагодження SMIE я намагаюся зробити "редагувати, буфер режиму eval, перейти до прикладу коду в іншому буфері, MX <мій режим>, тестувати" цикл, але здається, що кожна поїздка навколо не очищає правила від попередній цикл. Як я можу бути впевнений, що режим визначення визначеного походження починається з чистого аркуша? У мене є (kill-all-local-variables), але це, здається, недостатньо, і я закінчую, щоб закрити emacs.
Я не публікую жодних прикладів того, що у мене є, тому що я не маю нічого, що навіть розпливчато працює, окрім виділення (використовуючи шрифт-замок за замовчуванням, тому я навіть не дуже SMIE, я думаю). Мені потрібні справжні дитячі кроки.
lisp/progmodes/sh-script.el
здається, використовується smie.el
досить широко. Вони також здаються документувати їх використання так, можливо, це може бути дещо кращим прикладом?