Emacs从html文件跳转到css声明

时间:2013-02-08 23:20:51

标签: html css emacs elisp

我一直在寻找互联网,并没有提出解决方案。有没有人知道如何跳转到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)

虽然感觉这是一个黑客。

1 个答案:

答案 0 :(得分:3)

有一些事情使得这种非一般化:

  • 取决于您使用的HTML模式,您可能需要使用不同的方法来检测什么是
  • 你的CSS文件在哪里?人们有各种不同的项目结构
  • 您希望输出看起来如何?

话虽如此,这是一个例子,对于nxml模式(虽然它很容易适应)。

(defun find-css-defun ()
  (interactive)
  (when (memq 'nxml-attribute-value
              (get-text-property (point) 'face))
    (let ((css-buffers
           (mapcar
            (lambda (file)
              (find-file-noselect file))
            (directory-files default-directory t ".*\\.css$"))))
      (multi-occur css-buffers
                   (thing-at-point 'symbol)))))
  • 回答第一点,我们正在使用nxml以便我们检测我们是否依赖CSS属性
  • 回答第二点,我们只扫描与HTML相同的目录中的所有CSS文件,css-buffers是打开的CSS文件列表;显然这是适应性的
  • 我们使用multi-occurrence来呈现结果

一切正常。

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