Общий ответ сложен. Некоторые режимы сделают это более очевидным, чем другие, но в общем случае (так как они могут свободно выполнять отступы, как им хочется), я не думаю, что вы избавитесь от необходимости читать некоторые elisp.
Начиная с привязки для TAB будет работать, но может быть немного трудоемким в зависимости от количества слоев косвенного обращения.
Если вы знаете, что рассматриваемый основной режим реализует свои собственные отступы, то один (не строгий, но быстрый) подход, который вы могли бы попытаться помочь отследить вызываемые функции, заключается в использовании ELP, встроенного в профилировщик elisp. , elp-instrument-package
будет инструментом для профилирования всех функций с именами, соответствующими заданному вами аргументу строки префикса. Поэтому вы можете сделать что-то вроде следующего в PHP-файле (отметив, что php-mode сообщает вам, что он является производным от c-mode)
М-х elp-instrument-package
RET php-
RET
М-х elp-instrument-package
RET c-
RET
М-х elp-instrument-package
RET indent
RET
Теперь введите TAB в своем исходном коде и запустите M-x elp-results
, чтобы увидеть, какие из этих инструментальных функций были вызваны.
На данный момент вы сами - ищите вероятных подозреваемых и посмотрите, что делает код, - но это может быть удобным способом фильтрации поиска.
Как только вы закончите, используйте M-x elp-restore-all
, чтобы предотвратить дальнейшее профилирование.