-1

だから私はこれに出くわしました

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py

そしてこれ

root --+---> child1
       +---> child2 --+--> subchild1
       |              +--> subchild2
       +---> child3

そして、そのような構造を簡単に/プログラムで概説して編集するために、どのツール(エディターパッケージ/バンドルなど)を使用するのか疑問に思っていました。

PS:私の好みはemacsですが、完全を期すために、他のエディター/ツールが回答に含まれていれば幸いです。

4

2 に答える 2

2

2 番目の例は明らかにより複雑であり、ここでは説明しませんが、outline-mode/minor-mode はインデント ベースのツリーでうまく機能します。任意の繰り返されるプレフィックス文字列 (この例では 4 つのスペースですが、必要に応じて構成可能)。

以下のコードをロード/評価してから、データ ファイル (ローカル変数を含む) をロードすると、分岐を非表示/表示し、 and (カーソル キー)を使用SHIFT+TABして分岐を昇格/降格できます。もちろん、他のすべての機能も利用できます。SHIFT+LEFTSHIFT+RIGHToutline-minor-mode

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
            urls.py
        wsgi.py

;;; Local Variables:
;;; my-outline-prefix: "    "
;;; eval: (my-outline-minor-mode 1)
;;; End:
(global-set-key (kbd "<S-tab>") 'outline-toggle-children)
(global-set-key (kbd "<S-left>") 'outline-promote)
(global-set-key (kbd "<S-right>") 'outline-demote)

(defvar my-outline-prefix "    "
  "Prefix string denoting a single outline level for `my-outline-minor-mode'.")

(defvar my-outline-max-level 20
  "Maximum number of levels for `my-outline-minor-mode'.")

(define-minor-mode my-outline-minor-mode
  "Outline levels based on repetitions of `my-outline-prefix'."
  0 nil nil
  (outline-minor-mode 1)
  (setq-local outline-level 'my-outline-level)
  (setq-local outline-regexp (format "\\(%s\\)*" 
                                     (regexp-quote my-outline-prefix)))
  (setq outline-heading-alist '())
  (let ((level 0)
        (level-prefix ""))
    (while (< level my-outline-max-level)
      (setq outline-heading-alist (cons (cons level-prefix level) 
                                        outline-heading-alist)
            level (1+ level)
            level-prefix (concat level-prefix my-outline-prefix)))
    (setq outline-heading-alist (nreverse outline-heading-alist))))

(defun my-outline-level ()
  "Counts how many times `my-outline-prefix' appears at the start of the line."
  (let* ((data (match-data))
         (start (car data))
         (end (cadr data))
         (indent (- end start)))
    (/ indent (length my-outline-prefix))))
于 2013-05-10T14:35:52.807 に答える
0

2 番目の例については、Emacs では Mx search-forward-regexp RET を使用してノードからノードにジャンプできます。\(-*\)\(\+\)\(-+>\)

狭い地域のようなものを使用するよりも。ナローイングの他に、Emacs は何かを隠すためのコマンドを提供します。

このノード検出に基づくいくつかの Lisp を使用すると、見つかったデータを含むリストを読み取ることができます。

于 2013-05-12T17:57:23.657 に答える