LINUX.ORG.RU

emacs для навигации по yaml

 ,


0

3

Народ, у кого emacs под рукой, подскажите, в режиме редактирования YAML работает ли навигация: переход к определению макроса? И как это сделать.

Вот пример кода test.yaml:

.add_gh_key: &add_gh_key |
  which ssh-agent || ( apt-get update -y -q && apt-get install -y -q --no-install-recommends openssh-client )
  eval $(ssh-agent -s)
  echo "${GH_KEY}" | tr -d '\r' | ssh-add - > /dev/null
  mkdir -p ~/.ssh && chmod 700 ~/.ssh
  [[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config || true

.add_gh_remote: &add_gh_remote |
  git remote remove github || true
  git remote add github git@github.com:user/repo.git

push_to_github:
  stage: deploy
  only:
    - master
  when: on_success
  script:
    - *add_gh_key
    - *add_gh_remote
    - git push github HEAD:master

Когда мы в строке - *add_gh_key, хотелось бы прыгнуть на определение .add_gh_key: &add_gh_key |

Спасибо

Deleted

В Емаксе вообще нет режима для YAML.

А если имеется в виду yaml-mode с Мельпы, то подкорректируйте yaml-imenu-generic-expression.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

YAML is easy to write but complex to parse, and this mode doesn't even really try.

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

Бич современности: язык ini-файлов для systemd юнитов и yaml для gitlab-ci - прямо в учебники по неудачным решениям и архитектурам просятся. Языки явно ущербные и не подходят под задачи.

Ладно, надо в очередной раз позадрачивать emacs. Imenu вот, отличная штука, надо разобраться

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

надо в очередной раз позадрачивать emacs

А чего там озадачиваться...

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

Ну, пусть для примера это будет почти то же, что из коробки, только с необязательной точкой в самом начале:

(setq yaml-imenu-generic-expression
      (list (list nil
                  (rx line-start
                      (optional ".")
                      (group (optional ":")
                             (one-or-more
                              (any (?a . ?z) (?A . ?Z) ?_ ?-)))
                      ":")
                  1)))
Zmicier ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.