-
-
Save dsjt/24fa4e68637f7927b1b720f505109aec to your computer and use it in GitHub Desktop.
| (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) |
Currently I use a different code. I modified 11th line at `hs-config-for-python.el' (and typo). Try it.
I have no idea without any information about your situaion such as error message.
Still doesn't work on newly added keyword like if, for etc. It doesn't give any warning or error, it just doesn't fold on those keywords.
The value of hs-special-modes-alist is
Here is a workable script
After comparison, it seems that the problem is the miss of (hs-grok-mode-type).
It seems correct.
In my environment, python-mode-hook invokes #'hs-minor-mode after #'my/replace-hs-special, so it works.
If not, it needs #'hs-grok-mode-type.
I added it. thx
python-mode-hook invokes #'hs-minor-mode after #'my/replace-hs-special
How do you know this, is there any tool to debug this?
It may not be accurate. I just confirmed that when I swapped the order of (add-hook 'python-mode-hook 'my/replace-hs-special) and (add-hook 'python-mode-hook 'hs-minor-mode), it didn't work.
I didn't use any debugging tools.
That's where the problem lies. I actually didn't config (add-hook 'python-mode-hook 'hs-minor-mode) at all.

I have tried it, but it seems it doesn't work. Any idea?