Могу ли я использовать автозаполнение bash при редактировании сценариев оболочки в emacs? - PullRequest
0 голосов
/ 10 ноября 2019

В моем окружении я настроил автозаполнение bash, чтобы делать много удивительных вещей. Однако, когда я редактирую скрипт оболочки в emacs, вся эта магия автозаполнения исчезает.

Есть ли способ заставить emacs выполнять автозаполнение командной строки bash при редактировании скриптов оболочки?

Я бы принял ответ, который требует, чтобы я использовал другой редактор, если бы этот редактор был доступен в системах Linux. Я также принял бы ответ, который говорит мне, что мне нужно использовать автозаполнение другой оболочки.

1 Ответ

1 голос
/ 12 ноября 2019

bash-creation.el предоставляет интерфейс для обычного завершения bash, которое также можно расширить для работы в обычных sh-mode с добавлением к вашему completion-at-point-functions. Вот как это может работать, просто используя команду sh-beginning-of-command из sh-script для определения текущего кандидата на завершение (это может быть расширено для обработки более сложных команд оболочки при необходимости).

(require 'sh-script)                    ;sh-beginning-of-command
(require 'bash-completion)

(defun my-sh-completion-at-point ()
  (let ((end (point))
        (beg (save-excursion (sh-beginning-of-command))))
    (when (and beg (> end beg))
      (bash-completion-dynamic-complete-nocomint beg end t))))

(defun my-sh-hook ()
  (add-hook 'completion-at-point-functions #'my-sh-completion-at-point nil t))

(add-hook 'sh-mode-hook #'my-sh-hook)
...