Skip to content

Instantly share code, notes, and snippets.

@QiangF
Forked from dsjt/hideshow-config.el
Created February 10, 2024 06:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save QiangF/452a1f9fa3decb9c1690aa5a0afcef1b to your computer and use it in GitHub Desktop.
Save QiangF/452a1f9fa3decb9c1690aa5a0afcef1b to your computer and use it in GitHub Desktop.
hideshow config for python
(require 'hideshow)
(define-key hs-minor-mode-map (kbd "C-^") 'hs-toggle-hiding)
(add-hook 'python-mode-hook 'hs-minor-mode)
(defun display-code-line-counts (ov)
(when (eq 'code (overlay-get ov 'hs))
(overlay-put ov 'display
(format " ... [%d]"
(count-lines (overlay-start ov)
(overlay-end ov))))
(overlay-put ov 'face '(:foreground "yellow green"))))
(setq hs-set-up-overlay 'display-code-line-counts)
(defvar my/py-hide-show-keywords '("class" "def" "elif" "else" "except"
"for" "if" "while" "finally" "try" "with"))
(defun my/replace-hs-special ()
(setq hs-special-modes-alist
(remove-if #'(lambda (x) (equal 'python-mode (car x)))
hs-special-modes-alist))
(push (list
'python-mode
(mapconcat #'(lambda (x) (concat "^\\s-*" x "\\>"))
my/py-hide-show-keywords "\\|")
"^\\s-*"
"#"
#'(lambda (x) (python-nav-end-of-block))
nil)
hs-special-modes-alist)
(hs-grok-mode-type))
(add-hook 'python-mode-hook 'my/replace-hs-special)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment