From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: Tobias Zawada Newsgroups: gmane.emacs.bugs Subject: bug#39354: enhancement request: hideshow should handle derived modes Date: Thu, 30 Jan 2020 10:24:35 +0100 (CET) Message-ID: <1405743405.6348.1580376275497@email.ionos.de> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="109755"; mail-complaints-to="usenet@ciao.gmane.io" To: 39354@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Thu Jan 30 10:25:13 2020 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ix64X-000SVC-1M for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 30 Jan 2020 10:25:13 +0100 Original-Received: from localhost ([::1]:57582 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ix64V-0008U2-Tb for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 30 Jan 2020 04:25:11 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:46529) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ix64P-0008Tn-03 for bug-gnu-emacs@gnu.org; Thu, 30 Jan 2020 04:25:06 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ix64M-0004Qx-Py for bug-gnu-emacs@gnu.org; Thu, 30 Jan 2020 04:25:03 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:57183) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ix64M-0004Qo-Ly for bug-gnu-emacs@gnu.org; Thu, 30 Jan 2020 04:25:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1ix64L-0004rP-RS for bug-gnu-emacs@gnu.org; Thu, 30 Jan 2020 04:25:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Tobias Zawada Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 30 Jan 2020 09:25:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 39354 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.158037628318654 (code B ref -1); Thu, 30 Jan 2020 09:25:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 30 Jan 2020 09:24:43 +0000 Original-Received: from localhost ([127.0.0.1]:34923 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ix643-0004qo-Cd for submit@debbugs.gnu.org; Thu, 30 Jan 2020 04:24:43 -0500 Original-Received: from lists.gnu.org ([209.51.188.17]:57591) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ix641-0004qh-UG for submit@debbugs.gnu.org; Thu, 30 Jan 2020 04:24:42 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:46304) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ix640-0008Rf-My for bug-gnu-emacs@gnu.org; Thu, 30 Jan 2020 04:24:41 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ix63y-0003u3-BB for bug-gnu-emacs@gnu.org; Thu, 30 Jan 2020 04:24:40 -0500 Original-Received: from mout.kundenserver.de ([217.72.192.74]:38257) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ix63y-0003pm-1V for bug-gnu-emacs@gnu.org; Thu, 30 Jan 2020 04:24:38 -0500 Original-Received: from oxbaltgw37.schlund.de ([172.19.246.45]) by mrelayeu.kundenserver.de (mreue107 [213.165.67.113]) with ESMTPSA (Nemesis) id 1MGygv-1ijbns2RFr-00E8aj for ; Thu, 30 Jan 2020 10:24:35 +0100 X-Priority: 3 Importance: Normal X-Mailer: Open-Xchange Mailer v7.10.1-Rev25 X-Originating-Client: open-xchange-appsuite X-Provags-ID: V03:K1:g3iBx1h/VH6EaggQwUIbPleh2kDLaQZ9nzsduXWLMqsHxSX7Bxz X97niuQDUHXxeQWOru1gekadEpsdW1FhVSQhmCXfrAwD6fa3QfiHiZj38x0KXAk+8i8QuKy 3KuL/fd3P4FRJHTdVecAT9WvANOLFMXeb85XUsLY017ippi6X9Auo7hhsetVlcM42hxPJLF KkG+daVWoT70R0VTls66g== X-UI-Out-Filterresults: notjunk:1;V03:K0:AgsBX2vc1gM=:K6PyiaHp40C9cfPqdzvd6n eQuQTjfdvkadz316xU9jHj7DkJpyj5EO40WO1pJsvYV4Qjc2sJkeje3dqItGW4fZqlytmPYwX UjjLwvFxy5jhKBZG2BzB1NIUXd9DVEkMt0SaotieG3ogInZhzKXsHuDeyoWXlITqat1T+Tpnc RyJRrBJekkTJ8DlN20Rkm2j5G7JtZpxJP2AVeLIVcZmk8QNAdWucadtI7tIX776orJBRaBVZx HoZxy4UTCy4HBkyvGtSO6/XOQtwKqXhrDeGR8s0hAOfLkxHE072b40RH8xS08fWKbawPC1MRz 8xvsVHE2P6UQc1zugY8G34MyB3YLo/GokwfzPx9eANvtk2Lxa/WJqjzaWN8k9ZFZPKTr9kLR0 OFGtMchBZ3k4GQ+pYkRZh5+qlE8mQUs5xu3pGpVdr+LmDCS9teWaNj/4eBEt+232tP3WwNu+i bY07/FefSxs2aKxyqavxvuCRchF36+aFBHbL2yfWBJEiuHcEHA49boaNTX88BVp1AgB4MF9k7 0ahdNeu5OKjJkjLzzqM5UeKit+J5Jpoq/rOy7nPh0WUfVx3Y0PBUXglzqFYbRQkI8dw6kg2/c /tUuYOTJOu6bqY9GU2enJ4kfzRKbERfFQDf14mjFJxH1aeGqgSLxdebFNC9LeIZ6KptfHC1SY FcdXwUQlZU7qpUxoKghgWCtUMwx2A78GYCmAB9Q9wjlyg8leCYoHa09BqfMsNtNpAWXGY/MHp y4kU5LZ7+MNOzzGdnXJylt39N5usGsvGrv0nIHvcy4eu4uRPuewTTYH64RMbrl4qJbQOHq+B X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:175431 Archived-At: Hi, hideshow.el should handle derived modes. See discussion on emacs.SE about hideshow in sage-shell-mode (link: https://emacs.stackexchange.com/questions/55129/hs-minor-mode-and-sage-shell-mode-derived-from-python-mode#comment86297_55129). I propose following change on `hs-grok-mode-type` (perma-link: https://github.com/jwiegley/emacs-release/blob/adfd5933358fdf6715423dee8169eb3cd7d982db/lisp/progmodes/hideshow.el#L666): @@ -7,7 +7,9 @@ (if (and (boundp 'comment-start) (boundp 'comment-end) comment-start comment-end) - (let* ((lookup (assoc major-mode hs-special-modes-alist)) + (let* ((lookup (cl-assoc-if (lambda (mode) + (derived-mode-p major-mode mode)) + hs-special-modes-alist)) (start-elem (or (nth 1 lookup) "\\s("))) (if (listp start-elem) ;; handle (START-REGEXP MDATA-SELECT) The new version of `hs-grok-mode-type` in full would be: (defun hs-grok-mode-type () "Set up hideshow variables for new buffers. If `hs-special-modes-alist' has information associated with the current buffer's major mode, use that. Otherwise, guess start, end and `comment-start' regexps; `forward-sexp' function; and adjust-block-beginning function." (if (and (boundp 'comment-start) (boundp 'comment-end) comment-start comment-end) (let* ((lookup (cl-assoc-if (lambda (mode) (derived-mode-p major-mode mode)) hs-special-modes-alist)) (start-elem (or (nth 1 lookup) "\\s("))) (if (listp start-elem) ;; handle (START-REGEXP MDATA-SELECT) (setq hs-block-start-regexp (car start-elem) hs-block-start-mdata-select (cadr start-elem)) ;; backwards compatibility: handle simple START-REGEXP (setq hs-block-start-regexp start-elem hs-block-start-mdata-select 0)) (setq hs-block-end-regexp (or (nth 2 lookup) "\\s)") hs-c-start-regexp (or (nth 3 lookup) (let ((c-start-regexp (regexp-quote comment-start))) (if (string-match " +$" c-start-regexp) (substring c-start-regexp 0 (1- (match-end 0))) c-start-regexp))) hs-forward-sexp-func (or (nth 4 lookup) 'forward-sexp) hs-adjust-block-beginning (nth 5 lookup))) (setq hs-minor-mode nil) (error "%s Mode doesn't support Hideshow Minor Mode" (format-mode-line mode-name)))) Best regards, Tobias Zawada