水木某大牛写的emacs python代码折叠代码, 试了下, 非常好用.  感谢作者: jcjbrian

http://www.newsmth.net/nForum/#!article/Emacs/81688

代码如下:

发信人: jcjbrian (Brian Jiang), 信区: Emacs 
标  题: Re: python代码怎么折叠啊? 
发信站: 水木社区 (Sun Sep  6 16:59:38 2009), 转信 
  
最近刚好写了一个python的折叠功能。 能简单。 是基于emacs自带的python mode。可以支持各种类型的block (如if, for等)。  
关键是: mypython-fold/unfold-block。 我把它绑到了F10. 可以自己改。 其他都只是些支持代码。 
  
-------

(defface codepilot-folding-overlay '((default (:inherit region :box (:line-width 1 :color "DarkSeaGreen1" :style released-button))) (((class color)) (:background "DarkSeaGreen2" :foreground "black"))) "*Font used by folding overlay." :group 'codepilot) (defun cptree-ov-delete () (interactive) (dolist (o (overlays-at (point))) (cptree-delete-overlay o 'cptree))) (defvar cptree--overlay-keymap nil "keymap for folding overlay") (unless cptree--overlay-keymap (let ((map (make-sparse-keymap))) (define-key map [mouse-1] 'cptree-ov-delete) (define-key map "\r" 'cptree-ov-delete) (setq cptree--overlay-keymap map))) (defun cptree-delete-overlay(o prop) (when (eq (overlay-get o 'cptree-tag) prop) (delete-overlay o) t)) (defun cptree-hide-region (from to prop) "Hides a region by making an invisible overlay over it and save the
overlay on the hide-region-overlays \"ring\"" (interactive) (let ((new-overlay (make-overlay from to))) ;;(overlay-put new-overlay 'invisible nil) (overlay-put new-overlay 'cptree-tag prop) (overlay-put new-overlay 'face 'codepilot-folding-overlay) (overlay-put new-overlay 'display (propertize (format "...<%d lines>..." (1- (count-lines (overlay-start new-overlay) (overlay-end new-overlay)))))) (overlay-put new-overlay 'priority (- 0 from)) (overlay-put new-overlay 'keymap cptree--overlay-keymap) (overlay-put new-overlay 'pointer 'hand))) (require 'python) (defun mypython-fold/unfold-block () "fold the block" (interactive) (let (ret b e) (dolist (o (overlays-at (if (python-open-block-statement-p) (save-excursion (python-end-of-statement) (point) ) (point)))) (when (cptree-delete-overlay o 'cptree) (setq ret t))) (unless ret (save-excursion (unless (python-open-block-statement-p) (python-beginning-of-block)) (python-end-of-statement) (setq b (point)) (python-end-of-block) (setq e (1- (point))) (cptree-hide-region b e 'cptree))))) (define-key python-mode-map [(f10)] 'mypython-fold/unfold-block)

  

转载于:https://www.cnblogs.com/foreveryl/archive/2012/08/23/2652469.html

[emacs] python代码折叠相关推荐

  1. [emacs] Python代码补全的各种方法介绍以及对比

    Emacs的代码补全主要有以下几种选择: py-complete.el (只能用于python-mode.el) python-mode自带的pycomplete(包含一个pycomplete.el和 ...

  2. Emacs之hs-minor-mode折叠代码

    1.进入折叠代码模式 M-x hs-minor-mode代码折叠 C-c @ C-M-s //显示所有的代码 C-c @ C-s //显示当前代码区C-c @ C-M-h //折叠所有的代码 C-c ...

  3. Emacs代码折叠/显示

    hs-show-all:显示所有的代码 hs-hide-all:折叠所有的代码 hs-show-block:显示当前代码区 hs-hide-block:折叠当前代码区 hs-toggle-hiding ...

  4. emacs python开发环境_配置Emacs下的Python开发环境

    特性 在Linux论坛上总有人问Python用什么IDE比较好,然后总会有人回答说Emacs.最近开始学Python,也花了点时间研究怎么配置Emacs,发现没有想象中的那么麻烦.这篇文章大致上来自于 ...

  5. python代码编辑器、最好_这十大文本/代码编辑器最好用

    10款最著名的代码(文本)编辑器,作为程序员的你喜欢哪个,哪种代码编辑器最入你的法眼.代码编辑器对我们的用途有多大呢? 通常操作系统和软件开发包中都包含文本/代码编辑器,可以用来编辑配置文件,文档文件 ...

  6. python代码块-python代码块

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 开发准备cas 的 python sdk 包含了用于访问和操作 cas ...

  7. python代码大全下载-大神整理的python资源大全

    * Python号星际旅行船 著名Python社区,代码.文档.高人这里都有. * faqts.com的Python程序设计知识数据库 Python程序设计知识库,都是与Python有关的程序设计问题 ...

  8. 在 Windows上写 Python 代码的最佳组合!

    文章来源:机器之心 在 Windows 上怎样做 Python 开发?是像大神那样使用纯文本编辑器,还是用更加完善的 IDE?到底是用自带的命令行工具,还是需要装新的 Terminal?本文将带你了解 ...

  9. emacs python plugin_Windows上配置Emacs来开发Python及用Python扩展Emacs

    Windows下配置Emacs来开发Python去年在网上偶然的一个机会知道了Emacs的存在,在周围前辈们都在夸赞Sublime好用的时候,喜欢跟大众唱反调的我,突然觉得如果能用Emacs来编代码, ...

最新文章

  1. 在html表单中设置数组的方法是什么,js如何处理表单中的数组方式?
  2. 利用霍夫变换做直线检测的原理及OpenCV代码实现
  3. pdfparser java_如何使用java从PDF中提取内容?
  4. redis没有加密码导致服务器被当做矿机了
  5. Convolutional Neural Networks for Visual Recognition 1
  6. cmake mysql 编译参数_Cmake-MySQL编译参数说明
  7. LeetCode 938. 二叉搜索树的范围和(二叉树遍历+搜索剪枝)
  8. linux 系统启动级别,LINUX系统启动级别介绍与解释
  9. 使用命令强制关闭端口进程
  10. Spring事务(2)使用Spring事务完成转账小例子
  11. 华为交换机CPU处理报文原理
  12. Java 3种批量插入更新操作的效率横向比较
  13. HTML+CSS+JS实现 ❤️ 立方体旋转图片切换特效❤️
  14. C语言基础之4:字符串和格式化输入/输出
  15. 计算机知识和应用技能,计算机实用技能及应用
  16. Linux好书、经典书籍推荐
  17. 编写autojs脚本时,vscode连接不上手机解决办法
  18. python七大神级插件_Python常用插件之BeautifulSoup4使用
  19. 奥的斯 蓝牙模块 全套制作资料
  20. VMware 虚拟机设置nat网络

热门文章

  1. 函数创建对象(2)原型模式
  2. 网页 JavaScript的DOM操作
  3. Atitit php序列化 php的serialize序列化和json序列化
  4. JS中数据类型、内置对象、包装类型对象、typeof关系
  5. zabbix学习小结
  6. with 关键字实现递归查询
  7. Git 学习看这篇就够了!
  8. spring-boot 之 使用Admin监控应用
  9. MySQL · 引擎特性 · InnoDB 事务子系统介绍
  10. linux常用工具及命令