Протягом дня я постійно використовую C-h f
або C-h v
( describe-function
і describe-variable
) шукаю документацію щодо функцій та змінних. Найчастіше, якщо я не отримаю всієї необхідної інформації, я натискаю посилання на файл наприкінці:
some-random-command is an interactive compiled Lisp function in `some-mode.el'.
і перейдіть до вихідного коду. Це працює для встановлених пакетів, але, здається, не працює для вбудованих пакетів. Наприклад, у верхній частині довідкової сторінки для команди, що describe-function
я отримую, є:
describe-function is an interactive compiled Lisp function.
без посилання на вихідний код. Чи є спосіб швидко перейти до вихідного коду вбудованого пакета?
Я знаю, що можу знайти вихідний код, наприклад, /usr/share/emacs/24.5/lisp
і придумати будь-яку кількість способів швидкого доступу до цього каталогу, але мені цікаво, чи є швидкий і простий спосіб перейти до вбудованого визначення функції / змінної у вихідний код. Дякую!
M-x describe-function
: описати-функція являє собою інтерактивну функцію автозавантаження скомпільований Лисп в «довідковому-fns.el». І звідти я можу натиснути (або натиснути клавішу введення) help-fns.el
і потім перенестись у відповідний розділ коду. Можливо, у вас є кілька версій Emacs, а в тій, яку ви використовуєте на даний момент, не встановлено весь вихідний код?
emacs -Q
(без файлу init) або якщо ви можете спростувати його за допомогою рецепта, який починається з emacs -Q
(наприклад, кажучи, які бібліотеки ви завантажуєте і як ви завантажуєте їх тощо), тоді, будь ласка, подумайте про подачу помилки доповідаю: M-x report-emacs-bug
.
.el
файли (трактуються як необов'язкові) від .elc
файлів (обов'язково), таким чином, щоб отримати їх, вам потрібно встановити один або кілька додаткових пакетів. Якщо ви отримали Emacs від свого менеджера пакунків ОС, можливо, це пояснюється.
/usr/bin/emacs
і у /usr/bin/emacsclient
мене є версія, добре упакована в папку додатків OSX, що закінчується в .app - тобто /Applications/Emacs.app
(всередині цього Emacs.app - це бінарні файли та всі файли вихідного коду).
M-x find-function
;M-x find-variable
;M-x find-face
;M-x find-library
. Я завжди використовую повну установку Emacs, щоб мати доступ до всього, і відразу після створення власного Emacs я копіюю код C-джерела та встановлюю його розташування, щоб я також міг визначити визначення C-Source коду. Див. Змінну,find-function-C-source-directory
щоб встановити розташування коду С-джерела після його копіювання.