分页: 1 / 1
[问题已解决]emacs中html代码的隐藏和折叠
发表于 : 2006-07-28 8:20
由 Neate
在网上找了很多文章和配置,都不能顺利实现html中的代码隐藏.
有用过folding.el,hs-troggle-hiding.但都激活这些功能,却没有一点效果
请懂的给点提示,谢谢了~~~~
还有,我就想用emacs,把它用好,用精.如果不用的就不要再叫我换工具了 :)
发表于 : 2006-07-31 10:53
由 bigapple
zfap
发表于 : 2006-07-31 14:02
由 kardinal
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::
这里面的自己看看吧。。。
发表于 : 2006-07-31 14:05
由 kardinal
folding.el 似乎是以注释折叠的??? 反正我记得有一个以注释折叠的,这种不要用,对代码风格的要求比较高。。。自己写都很难达到要求,别人的就不要指望了
发表于 : 2006-07-31 14:32
由 kardinal
王垠的主页上有说明啊。
下载一个 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的教程,不懂的说。。。说不定哪天我学会了的话,就能搞清楚了。。。不过恐怕楼主等不到那阵了

发表于 : 2006-07-31 15:03
由 kardinal
兄弟看看我写的 <Emacs入门指南> ……当然,里面暂时还没有这部分内容,我会考虑的。。
最好给提点意见,越多越好。。。除了截图之外。。。
先谢谢了
发表于 : 2006-08-03 17:30
由 Neate
现在在外地,没有办法实现各位兄弟的方法
先谢一个先
过两天回学校在试
2楼说的
bigapple 写了:zfap
是什么东东?
kardinal
关于folding.el,我就是在王垠大哥那看到的,试了没有用,所以才问的....
关于
M-x outline-minor-mode
他对其他的语言也适用么?
我用的EMACS是23版的.用王垠的那个FOLDING会出错.所以我在EMACS官网上下了一个.但始终没有效果.只是提示功能被激活而已
M-x outline-minor-mode
我回去会去试试的

发表于 : 2006-08-03 18:36
由 kardinal
folding.el 那个我试过了,Emacs23也可以用,不过对代码风格的要求有点太变态了……
我下载了王垠那个页面,源码可以使用 folding.el 折叠,但是我自己写的,死活不行……
顺便说一下,folding的折叠是定义两种特殊格式的注释,例如
<!-- { xxxxxx -->
被
折
叠
的
内
容
<!-- } -->
反正极端的不好用……
outline 对多数语言都是适用的吧,特别是具有嵌套结构的语言……看了下它的源文件,好像是根据正则表达式(通常根据括号)查找subtree……猜测……看不懂的说

发表于 : 2006-08-17 20:28
由 Neate
好久没有上网了.
呵呵,学校这几天网络中心迁移,所以不能上网,现在才来
现在还没有时间学elips语言,所以也就没有研究它的代码.
谢谢 kardinal 兄的方法,很成功!!!