首页后端开发Pythonpython代码怎么折叠

python代码怎么折叠

时间2023-06-02 22:18:01发布访客分类Python浏览925
导读:python代码怎么折叠?最近刚好写了一个python的折叠功能。 能简单。 是基于emacs自带的python mode。可以支持各种类型的block (如if, for等)。关键是: mypython-fold/unfold-block...

python代码怎么折叠?

最近刚好写了一个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 "

" '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)

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: python代码怎么折叠
本文地址: https://pptw.com/jishu/58793.html
python父串编码是什么 R语言和Python一块学习会弄混吗

游客 回复需填写必要信息