Отступ Emacs Actionscript 3 для функций, определенных в arglist - PullRequest
0 голосов
/ 01 октября 2009

Я использую actionscript-mode-connors.el для отступа кода ActionScript 3 в emacs.

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

Например:

var foo:int = some_function(
  bar,
  baz,
  function():void {
                              return qux();
                            },
  zap);

Я хочу, чтобы return qux () был одним отступом из объявления функции в предыдущей строке, а не одним отступом из открытого кода. Отступы 'bar' тоже были испорчены, но я исправил это с помощью

(add-hook 'actionscript-mode-hook
      (lambda ()
        (c-set-offset 'arglist-intro '+)
        (c-set-offset 'arglist-close 0)))

Обычно здесь я бы использовал C-c C-s, чтобы выяснить, какие синтаксические символы мне нужно изменить, но проблема в строке 'return qux ()' заключается в том, что контекст синтаксиса имеет значение

((arglist-cont-nonempty 731 758) (brace-list-intro 731))

где эти цифры относятся к строке some_function. «arglist-cont-nonempty» кажется ошибкой, и похоже, что это должен быть «arglist-cont», так как после открытой строки в этой строке нет ничего. Я не могу изменить отступ для «arglist-cont-nonempty», так как это повлияет на случай, когда открытая область также не заканчивает строку «some_function».

Как я могу это исправить?

Ответы [ 2 ]

2 голосов
/ 02 октября 2009

Я бы использовал режим эспрессо для ActionScript. Это правильно выравнивает ваш пример.

1 голос
/ 02 октября 2009

Как насчет косвенного ответа? Кажется, что вы относительно комфортно работаете с машиной для вдавливания Си. Возможно, вы захотите воспользоваться советом около 'c-guess-basic-syntax, чтобы распознать конкретную конфигурацию и изменить ее так, чтобы она соответствовала тому, что, по вашему мнению, имело бы наибольшее значение для этой ситуации.

Если вы посмотрите на этот ответ для настройки отступа для комментариев , я, по сути, сделал то же самое, только в точке отступа.

Что касается вашей специфики, я не могу воспроизвести ту же ошибку, что и у вас, мой отступ для этого куска кода (в 'actionscript-mode с вашими двумя изменениями) выглядит следующим образом:

var foo:int = some_function(
  bar,
  baz,
  function():void {
    return qux();
  },
  zap);

Кроме того, синтаксис для строки return qux();: ((brace-list-intro 319)).

Похоже, ваша догадка верна (что проблема заключается в списке arglist-cont-nonempty), и изменение вывода 'c-guess-basic-syntax кажется приемлемым решением.

Могу ли я также указать на очевидный тест? Вы начали без каких-либо настроек и загружали только action-скрипт? Я сделал это с последним сценарием action и Emacs 23.1 и получил результаты, которые вы видите выше. Протестировано с M-x c-version, показывая как 5.31.3, так и 5.31.7 (последний распространяется с Emacs 32.1).

...