5

私はインターネットを見回してきましたが、解決策を思いつきませんでした。HTMLファイル内のcss宣言にジャンプし、その宣言またはその近くに新しいバッファを開く方法を知っている人はいますか?

編集

さらに検索した後、文字列アプローチの検索オープンバッファを使用することにしました。

;; CSS search open buffers
(defun search-open-css-buffers-for-region-or-word ()
  "Use the current region/point and search open css buffers"
  (interactive)
  (let (searchTerm)
    (setq searchTerm
          (if (region-active-p)
              (buffer-substring-no-properties (region-beginning) (region-end))
            (thing-at-point 'symbol)))
    (multi-occur (mapcar (lambda (buf)
                           (if (string-match "\w*.css" (buffer-name buf))
                               buf)) (buffer-list))
                 searchTerm 5)))

(global-set-key (kbd "M-s-.") 'search-open-css-buffers-for-region-or-word)

しかし、これはハックのように感じます。

4

1 に答える 1

3

これが一般的でない理由がいくつかあります。

  • 使用する HTML モードに応じて、現在の状態を検出するさまざまな方法が必要になる場合があります。
  • CSSファイルはどこにありますか? 人々はあらゆる種類の異なるプロジェクト構造を持っています
  • 出力をどのように見せたいですか?

そうは言っても、nxml-mode の例を次に示します (ただし、簡単に適応させることができます)。

(defun find-css-defun ()
  (相互の作用)
  (when (memq 'nxml-attribute-value
              (get-text-property (point) 'face))
    (let ((css-buffers
           (マップカー
            (ラムダ (ファイル)
              (find-file-noselect file))
            (ディレクトリ ファイル デフォルト ディレクトリ t ".*\\.css$"))))
      (複数発生する css-buffers
                   (物-アット-ポイント'シンボル)))))
  • 最初のポイントへの答え、私たちは nxml を使用しているので、CSS 属性を使用しているかどうかを検出する方法です
  • 2 番目の点への回答です。HTML と同じディレクトリにあるすべての CSS ファイルをスキャンするだけです。css-buffers は、開いている CSS ファイルのリストです。明らかにこれは適応可能です
  • multioccur を使用して結果を表示します

それは正常に動作します。

PS最近はデフォルトでemacsにあるthing-at-pointが必要です

于 2013-02-25T09:54:49.203 に答える