我一直在寻找互联网,并没有提出解决方案.有没有人知道如何跳转到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)
感觉这是一个黑客.
解决方法
有几件事使这种非泛型:
>根据您使用的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