[问题已解决]emacs中html代码的隐藏和折叠

Vim、Emacs配置和使用
回复
Neate
帖子: 32
注册时间: 2005-10-23 23:31

[问题已解决]emacs中html代码的隐藏和折叠

#1

帖子 Neate » 2006-07-28 8:20

在网上找了很多文章和配置,都不能顺利实现html中的代码隐藏.

有用过folding.el,hs-troggle-hiding.但都激活这些功能,却没有一点效果

请懂的给点提示,谢谢了~~~~

还有,我就想用emacs,把它用好,用精.如果不用的就不要再叫我换工具了 :)
上次由 Neate 在 2006-08-24 8:49,总共编辑 2 次。
bigapple
帖子: 99
注册时间: 2006-05-10 9:46

#2

帖子 bigapple » 2006-07-31 10:53

zfap
kardinal
帖子: 750
注册时间: 2006-03-19 11:39

#3

帖子 kardinal » 2006-07-31 14:02

M-x outline-minor-mode

开启 outline 辅模式 ( M-x outline-mode 是主模式,不要用它)


M-x hide-body
全部折叠

M-x show-all
全部展开


M-x hide-subtree
M-x show-subtree

对当前子节点进行折叠隐藏操作


其它的命令也多是以 hide 或者 show 起始的, 用TAB 补全,看看有哪些命令,自己试一下就知道了,常用的绑定一下就是


C-h r
Commands for Human Languages
* Outline Mode::
这里面的自己看看吧。。。
上次由 kardinal 在 2006-07-31 14:12,总共编辑 1 次。
kardinal
帖子: 750
注册时间: 2006-03-19 11:39

#4

帖子 kardinal » 2006-07-31 14:05

folding.el 似乎是以注释折叠的??? 反正我记得有一个以注释折叠的,这种不要用,对代码风格的要求比较高。。。自己写都很难达到要求,别人的就不要指望了
kardinal
帖子: 750
注册时间: 2006-03-19 11:39

#5

帖子 kardinal » 2006-07-31 14:32

王垠的主页上有说明啊。
下载一个 fold.el 文件,放到 load-path 路径里
可以在配置文件中自己定义
(add-to-list 'load-path "路径")


把下面代码加到 .emacs 文件中
注释我加的。。。基本瞎猜,如有雷同,纯属巧合。。。

代码: 全选

;;加载 fold.el 扩展;;好像需要手动加载  ;;通过 M-x load-library 命令
(load-library  "folding")
;; 变量赋值    应该下面条件控制的触发,所以多半要通过手动加载的。。。不太清楚,楼主试试。。。
(declare (special fold-fold-on-startup
		  fold-keys-already-setup
		  ))

;; 启动时开启 fold 模式    
(setq fold-fold-on-startup t)
;; 向 fold 模式中添加 find-file 接口?  
(folding-mode-add-find-file-hook)

;; 定义一个函数,如果开启了 fold 模式,设定下面的键绑定;;条件控制
(setq fold-keys-already-setup nil)
(add-hook 'folding-mode-hook
	  (function (lambda()
		      (unless fold-keys-already-setup
			(setq fold-keys-already-setup t)

                        ;;定义按键序列前缀变量  ;见下面
			(define-prefix-command 'ctl-f-folding-mode-prefix)
                        ;; 命令的键绑定;;上面定义的按键序列前缀,加双引号括起来的绑  ;一个单引号,引用的是命令
			(define-key 'ctl-f-folding-mode-prefix "f" 'fold-fold-region)
			(define-key  'ctl-f-folding-mode-prefix "e" 'fold-enter)
			(define-key 'ctl-f-folding-mode-prefix "x" 'fold-exit)
			(define-key  'ctl-f-folding-mode-prefix "b" 'fold-whole-buffer)
			(define-key 'ctl-f-folding-mode-prefix "o" 'fold-open-buffer)
			(define-key 'ctl-f-folding-mode-prefix "h" 'fold-hide)
			(define-key 'ctl-f-folding-mode-prefix "s" 'fold-show)
			(define-key 'ctl-f-folding-mode-prefix "t" 'fold-top-level)
			(define-key 'ctl-f-folding-mode-prefix "f" 'fold-fold-region)
			)
	              ;;定义序列前缀使用的组合键  ;;给刚才定义的前缀变量赋值
         	      (local-set-key "\C-f" 'ctl-f-folding-mode-prefix))))

;;不同主模式下,折叠时使用的关键词。使用 “元组”定义,第一个值是起始判断,第二个是结束判断,第三个是折叠起始点。
;;好像Html要用这种注释  <!-- {注释} --> 才能够折叠,并与普通注释相区别……没用过,楼主自己试试吧
(fold-add-to-marks-list 'sgml-mode
			"<!-- {" 
 			"<!-- } -->" " --> ")
(fold-add-to-marks-list 'c-mode "/* <" "/* > */" "*/")
(fold-add-to-marks-list 'c++-mode
			"//<" "//>" "")
(fold-add-to-marks-list 'LaTeX-mode "%%% {{{" "%%% }}}" " ")
(fold-add-to-marks-list 'latex2e-mode "%%% {{{" "%%% }}}" " ")
(fold-add-to-marks-list 'latex-mode "%%%% {{{" "%%%% }}}" " ")
(fold-add-to-marks-list 'BibTeX-mode "%%% {{{" "%%% }}}" " ")
(fold-add-to-marks-list 'lisp-mode ";;; {" ";;; }" "")
(fold-add-to-marks-list 'lex-mode" /* {{{ " " /* }}} */ " "*/")
(fold-add-to-marks-list 'html-mode "<!-- { " "<!-- } -->" "-->")
(fold-add-to-marks-list 'shell-script-mode "# {{{" "# }}}" nil)
(fold-add-to-marks-list 'sh-mode "# {{{ " "# }}}" nil)

不好意思,就扫过一眼Elisp的教程,不懂的说。。。说不定哪天我学会了的话,就能搞清楚了。。。不过恐怕楼主等不到那阵了 :lol:
上次由 kardinal 在 2006-07-31 18:45,总共编辑 1 次。
kardinal
帖子: 750
注册时间: 2006-03-19 11:39

#6

帖子 kardinal » 2006-07-31 15:03

兄弟看看我写的 <Emacs入门指南> ……当然,里面暂时还没有这部分内容,我会考虑的。。

最好给提点意见,越多越好。。。除了截图之外。。。
Neate
帖子: 32
注册时间: 2005-10-23 23:31

先谢谢了

#7

帖子 Neate » 2006-08-03 17:30

现在在外地,没有办法实现各位兄弟的方法
先谢一个先
过两天回学校在试
2楼说的
bigapple 写了:zfap
是什么东东?

kardinal
关于folding.el,我就是在王垠大哥那看到的,试了没有用,所以才问的....
关于
M-x outline-minor-mode
他对其他的语言也适用么?

我用的EMACS是23版的.用王垠的那个FOLDING会出错.所以我在EMACS官网上下了一个.但始终没有效果.只是提示功能被激活而已

M-x outline-minor-mode
我回去会去试试的 :D
kardinal
帖子: 750
注册时间: 2006-03-19 11:39

#8

帖子 kardinal » 2006-08-03 18:36

folding.el 那个我试过了,Emacs23也可以用,不过对代码风格的要求有点太变态了……

我下载了王垠那个页面,源码可以使用 folding.el 折叠,但是我自己写的,死活不行……

顺便说一下,folding的折叠是定义两种特殊格式的注释,例如

<!-- { xxxxxx -->






<!-- } -->


反正极端的不好用……


outline 对多数语言都是适用的吧,特别是具有嵌套结构的语言……看了下它的源文件,好像是根据正则表达式(通常根据括号)查找subtree……猜测……看不懂的说 :lol:
Neate
帖子: 32
注册时间: 2005-10-23 23:31

#9

帖子 Neate » 2006-08-17 20:28

好久没有上网了.

呵呵,学校这几天网络中心迁移,所以不能上网,现在才来

现在还没有时间学elips语言,所以也就没有研究它的代码.

谢谢 kardinal 兄的方法,很成功!!!
回复