Генерация таблицы уценок с привязками клавиш в Spacemacs - PullRequest
0 голосов
/ 24 апреля 2019

Каков наилучший способ создания таблицы уценки с привязками клавиш в Spacemacs (злой режим)?

Обновление: Чтобы уточнить, этот вопрос не касается редактирования уценки, но автоматически генерирует содержимое таблицы для большого количества привязок клавиш.

Это может быть функция elisp, перебирающая возможные одиночные нажатия клавиш (буквы, цифры, знаки препинания и, возможно, пробел и некоторые управляющие символы, с клавишами-модификаторами и без них), видя, с какой функцией связана каждая клавиша (еслилюбой), и получить описание функции.

Вы можете сделать это вручную, используя SPC h d k, но было бы удобно сгенерировать таблицу, учитывая количество возможных привязок клавиш и то, как они могут зависеть от режима буфера и состояния.

В таблице должны отображаться одиночные нажатия клавиш (буквы, цифры, знаки пунктуации) с модификаторами и без них, привязанная к ним функция и первая строка описания функции.

Результат должен выглядеть примерно таквот так:

https://github.com/cjolowicz/howto/blob/master/spacemacs.md

| Key    | Mnemonic     | Description                                                     | Function                   |
| ------ | --------     | --------------------------------------------------------------- | ------------------------   |
| a      | *append*     | Switch to Insert state just after point.                        | `evil-append`              |
| b      | *backward*   | Move the cursor to the beginning of the COUNT-th previous word. | `evil-backward-word-begin` |
| c      | *change*     | Change text from BEG to END with TYPE.                          | `evil-change`              |
| d      | *delete*     | Delete text from BEG to END with TYPE.                          | `evil-delete`              |
| e      | *end*        | Move the cursor to the end of the COUNT-th next word.           | `evil-forward-word-end`    |
| f      | *find*       | Move to the next COUNT’th occurrence of CHAR.                   | `evil-find-char`           |
| g      | *goto*       | (prefix)                                                        |                            |
| h      |              | Move cursor to the left by COUNT characters.                    | `evil-backward-char`       |
| i      | *insert*     | Switch to Insert state just before point.                       | `evil-insert`              |
| j      |              | Move the cursor COUNT lines down.                               | `evil-next-line`           |
| k      |              | Move the cursor COUNT lines up.                                 | `evil-previous-line`       |
| l      |              | Move cursor to the right by COUNT characters.                   | `evil-forward-char`        |
| m      | *mark*       | Set the marker denoted by CHAR to position POS.                 | `evil-set-marker`          |
| n      | *next*       | Goes to the next occurrence.                                    | `evil-ex-search-next`      |
| o      | *open*       | Insert a new line below point and switch to Insert state.       | `evil-open-below`          |
| p      | *paste*      | Disable paste transient state if there is more than 1 cursor.   | `evil-mc-paste-after`      |
| q      |              | Record a keyboard macro into REGISTER.                          | `evil-record-macro`        |
| r      | *replace*    | Replace text from BEG to END with CHAR.                         | `evil-replace`             |
| s      | *substitute* | Change a character.                                             | `evil-substitute`          |
| t      | *to*         | Move before the next COUNT’th occurrence of CHAR.               | `evil-find-char-to`        |
| u      | *undo*       | Undo changes.                                                   | `evil-tree-undo`           |
| v      | *visual*     | Characterwise selection.                                        | `evil-visual-char`         |
| w      | *word*       | Move the cursor to the beginning of the COUNT-th next word.     | `evil-forward-word-begin`  |
| x      | *cross*      | Delete next character.                                          | `evil-delete-char`         |
| y      | *yank*       | Saves the characters in motion into the kill-ring.              | `evil-yank`                |
| z      | *scroll*     | (prefix)                                                        |                            |

(столбец Mnemonic , конечно, может быть изготовлен вручную).

1 Ответ

0 голосов
/ 24 апреля 2019

orgtbl-mode второстепенный режим , который поставляется с Org (и, следовательно, с самим Emacs), должен быть в состоянии помочь здесь.Активируйте его, затем используйте Tab и Ret , чтобы перемещаться между ячейками, позволяя orgtbl создавать и балансировать ячейки по мере продвижения.(Балансировка происходит, когда вы переходите к новой ячейке, например, с помощью Tab .)

Вам придется начинать таблицу самостоятельно, например, с чего-то вроде

| Key | Mnemonic | Description | Function |
|-

но оттуда orgtbl может взять на себя.Вы также можете использовать такие вещи, как org-table-insert-column и org-table-move-row-down для внесения других видов табличных изменений.

Я не совсем уверен, насколько хорошо это будет работать с evil-mode или какие привязки будут использоватьсякоробки, но стоит попробовать.

...