spyder写python程序_用Spyder写python的时候怎么才能折叠代码

展开全部

最近刚好写了一个2113python的折叠功能。 能简单。 是基于5261emacs自带的python mode。可以支4102持各种类型1653的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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值