Как достигнуть кода, сворачивающего эффекты в Emacs?

Вам нужно поместить выражение в скобки, чтобы они не обрабатывались как параметры командлета:

Write-host ($assoc.Id + "  -  "  + $assoc.Name + "  -  " + $assoc.Owner)
112
задан tshepang 29 January 2014 в 20:40
поделиться

7 ответов

Сворачивание обычно не требуется для emacs, так как в нем есть инструменты, которые явно реализуют действия, которые люди делают вручную при сворачивании кода.

Большинство людей добиваются успеха с помощью простого инкрементного поиска. Видите где-то "foo"? Введите Cs foo , найдите определение, нажмите Enter, прочтите его, а затем нажмите Cx Cx , чтобы вернуться туда, где вы были. Просто и очень полезно.

Большинство режимов поддерживают imenu . Mx imenu позволит вам перейти к определению функции (и т. Д.) По имени. Вы также можете привязать его к щелчку мыши, чтобы получить меню функций (или добавить его в строку меню; см. Страницу «Информация» для более подробной информации). Он предоставляет данные для режима-функции, которые позволят вам увидеть, в какой функции вы сейчас находитесь в строке режима. Щелчок по результату переместит вас в эту позицию в файле.

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

Щелчок по результату переместит вас в эту позицию в файле.

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

148
ответ дан 24 November 2019 в 02:45
поделиться

По-видимому, идеального решения не существует, но я думаю, что лучшим является следующее:

http://www.emacswiki.org/emacs/FoldingMode

7
ответ дан 24 November 2019 в 02:45
поделиться

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

http://www.gnu.org/software/emacs/manual/html_node/emacs/Outline- Mode.html http://www.emacswiki.org/emacs/OutlineMinorMode

Я почти уверен, что он поставляется с emacs. Затем я добавляю это в свой .emacs

;;======= Code folding =======
(add-hook 'python-mode-hook 'my-python-outline-hook)
; this gets called by outline to deteremine the level. Just use the length of the whitespace
(defun py-outline-level ()
  (let (buffer-invisibility-spec)
    (save-excursion
      (skip-chars-forward "    ")
      (current-column))))
; this get called after python mode is enabled
(defun my-python-outline-hook ()
  ; outline uses this regexp to find headers. I match lines with no indent and indented "class"
  ; and "def" lines.
  (setq outline-regexp "[^ \t]\\|[ \t]*\\(def\\|class\\) ")
  ; enable our level computation
  (setq outline-level 'py-outline-level)
  ; do not use their \C-c@ prefix, too hard to type. Note this overides some bindings.
  (setq outline-minor-mode-prefix "\C-t")
  ; turn on outline mode
  (outline-minor-mode t)
  ; initially hide all but the headers
  ;(hide-body)
  ; make paren matches visible
  (show-paren-mode 1)
)
22
ответ дан 24 November 2019 в 02:45
поделиться

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

(global-semantic-folding-mode t)

После оценки этого кода маленький треугольник появится в области бахромы, так что вы сможете свернуть & развернуть код, используя его. Этот метод более точен, так как использует синтаксическую информацию, извлеченную из исходного кода

12
ответ дан 24 November 2019 в 02:45
поделиться

режим скрытия-показа ( hs-minor-mode ) с привязкой клавиш по умолчанию Cc @ CMh для запуска сворачивания ( hs-hide -все )

95
ответ дан 24 November 2019 в 02:45
поделиться

emacs поставляется с hs-minor-mode, который упрощает сворачивание кода между сбалансированными выражениями. http://www.emacswiki.org/emacs/HideShow

2
ответ дан 24 November 2019 в 02:45
поделиться

Я считаю, что ваше сравнение вашего "проекта" с фальцовкой не совсем удачно, потому что фальцовка - это изменение внешнего вида при сохранении содержимого буфера (текста). Ваш проект подразумевает показ дополнительного текста при сохранении содержимого буфера, AFAIU. Таким образом. это не реализуемо как композиция вставки текста и сворачивания (тогда содержимое буфера будет изменено).

Но, возможно, это действительно возможно с помощью того же механизма, с помощью которого выполняется сворачивание - "оверлеи"... Рассмотрим свойства "before-string" и "after-string" оверлеев; возможно, вы могли бы поместить определения ваших функций в эти строки, принадлежащие оверлею нулевой длины в точке. Посмотрите на функцию outline-flag-region, чтобы увидеть, как оверлеи используются в режиме контура.

2
ответ дан 24 November 2019 в 02:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: