You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{-# LANGUAGE SomeExtension #-}
module App where
-- one line comment
main :: IO ()
main = undefined
When you call shm/comment while on line -- one line comment - instead of uncommenting this one-line comment, it will 'uncomment' {-# LANGUAGE SomeExtension -#} into # LANGUAGE SomeExtension #.
What expected - uncomment one-liner via comment-dwim or do nothing. But anyway, don't uncomment pragma.
Some additional information.
Looks like shm/comment uses shm-in-comment to decide either it's in comment or not. And the latter function handles pragmas properly. But shm/comment uses (search-backward-regexp "{-" nil nil 1), so in situation with one liner it finds {- from the pragma - and uncomments it. I think instead of searching for {- it should search for {-[^#]. But it would just throw error in case of one-line comment. Probably it's better to handle them.
What I am using right now as a workaround is following function
(defun my-shm/comment ()
"Comment the current node, or if there is none, or some error,
fall back to `comment-dwim'. If the region is active, uses
`comment-dwim'."
(interactive)
(if (region-active-p)
(call-interactively 'comment-dwim)
(let ((is-multiline-comment nil)
(current (shm-current-node)))
(cond
((shm-in-comment)
(save-excursion
(unless (looking-at "[-{]-[^#]")
(search-backward-regexp "[-{]-[^#]" nil nil 1))
(when (looking-at "{-[^#]")
(setq is-multiline-comment t))
(delete-region (point) (+ 2 (point)))
(if is-multiline-comment
(search-forward-regexp "-}" nil nil 1)
(search-forward-regexp "\n" nil nil 1))
(if (string-equal (match-string 0) "-}")
(delete-region (- (point) 2) (point))
(delete-region (- (point) 0) (point)))))
(current
(save-excursion
(goto-char (shm-node-start current))
(insert "{-")
(goto-char (shm-node-end current))
(insert "-}")
(font-lock-fontify-region (shm-node-start current)
(shm-node-end current))))
(t (call-interactively 'comment-dwim))))))
The text was updated successfully, but these errors were encountered:
Hey,
Consider following code:
When you call
shm/comment
while on line-- one line comment
- instead of uncommenting this one-line comment, it will 'uncomment'{-# LANGUAGE SomeExtension -#}
into# LANGUAGE SomeExtension #
.What expected - uncomment one-liner via
comment-dwim
or do nothing. But anyway, don't uncomment pragma.Some additional information.
Looks like
shm/comment
usesshm-in-comment
to decide either it's in comment or not. And the latter function handles pragmas properly. Butshm/comment
uses(search-backward-regexp "{-" nil nil 1)
, so in situation with one liner it finds{-
from the pragma - and uncomments it. I think instead of searching for{-
it should search for{-[^#]
. But it would just throw error in case of one-line comment. Probably it's better to handle them.What I am using right now as a workaround is following function
The text was updated successfully, but these errors were encountered: