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 ()
  (交互的)
  (当(memq'nxml-attribute-value
              (get-text-property (point) 'face))
    (让((css缓冲区
           (地图车
            (拉姆达(文件)
              (查找文件不选择文件))
            (目录文件默认目录 t ".*\\.css$"))))
      (多次出现的 css 缓冲区
                   (事物点的符号)))))
  • 回答第一点,我们正在使用 nxml,这就是我们检测我们是否在 CSS 属性上的方式
  • 回答第二点,我们只是扫描与 HTML 相同目录下的所有 CSS 文件,css-buffers 是打开的 CSS 文件的列表;显然这是适应性强的
  • 我们使用多事件来呈现结果

它工作正常。

PS它需要这些天默认情况下在emacs中的东西

于 2013-02-25T09:54:49.203 回答