Вам нужно поместить выражение в скобки, чтобы они не обрабатывались как параметры командлета:
Write-host ($assoc.Id + " - " + $assoc.Name + " - " + $assoc.Owner)
Сворачивание обычно не требуется для emacs, так как в нем есть инструменты, которые явно реализуют действия, которые люди делают вручную при сворачивании кода.
Большинство людей добиваются успеха с помощью простого инкрементного поиска. Видите где-то "foo"? Введите Cs foo
, найдите определение, нажмите Enter, прочтите его, а затем нажмите Cx Cx , чтобы вернуться туда, где вы были. Просто и очень полезно.
Большинство режимов поддерживают imenu . Mx imenu
позволит вам перейти к определению функции (и т. Д.) По имени. Вы также можете привязать его к щелчку мыши, чтобы получить меню функций (или добавить его в строку меню; см. Страницу «Информация» для более подробной информации). Он предоставляет данные для режима-функции, которые позволят вам увидеть, в какой функции вы сейчас находитесь в строке режима. Щелчок по результату переместит вас в эту позицию в файле.
Так или иначе, подумайте о том, чего вы действительно хотите достичь, и Emacs, вероятно, реализует это. Не сражайтесь несовершенными инструментами, которые заставляют вас постоянно складывать и раскладывать вещи.
Щелчок по результату переместит вас в эту позицию в файле.Так или иначе, подумайте о том, чего вы действительно хотите достичь, и Emacs, вероятно, реализует это. Не сражайтесь несовершенными инструментами, которые заставляют вас постоянно складывать и раскладывать вещи.
По-видимому, идеального решения не существует, но я думаю, что лучшим является следующее:
Я использую второстепенный режим структуры, чтобы сворачивать свой код на 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)
)
Вы также можете получить сворачивание кода, используя CEDET со следующим кодом в файле инициализации:
(global-semantic-folding-mode t)
После оценки этого кода маленький треугольник появится в области бахромы, так что вы сможете свернуть & развернуть код, используя его. Этот метод более точен, так как использует синтаксическую информацию, извлеченную из исходного кода
режим скрытия-показа ( hs-minor-mode
) с привязкой клавиш по умолчанию Cc @ CMh
для запуска сворачивания ( hs-hide -все
)
emacs поставляется с hs-minor-mode, который упрощает сворачивание кода между сбалансированными выражениями. http://www.emacswiki.org/emacs/HideShow
Я считаю, что ваше сравнение вашего "проекта" с фальцовкой не совсем удачно, потому что фальцовка - это изменение внешнего вида при сохранении содержимого буфера (текста). Ваш проект подразумевает показ дополнительного текста при сохранении содержимого буфера, AFAIU. Таким образом. это не реализуемо как композиция вставки текста и сворачивания (тогда содержимое буфера будет изменено).
Но, возможно, это действительно возможно с помощью того же механизма, с помощью которого выполняется сворачивание - "оверлеи"... Рассмотрим свойства "before-string" и "after-string" оверлеев; возможно, вы могли бы поместить определения ваших функций в эти строки, принадлежащие оверлею нулевой длины в точке. Посмотрите на функцию outline-flag-region, чтобы увидеть, как оверлеи используются в режиме контура.