-
Notifications
You must be signed in to change notification settings - Fork 326
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
✨ Add "toggle block quote" #811
base: master
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Many thanks! Just a few comments.
@@ -45,6 +46,74 @@ function toggleCodeBlock() { | |||
return editor.insertSnippet(new SnippetString('```$0\n$TM_SELECTED_TEXT\n```')); | |||
} | |||
|
|||
enum QuoteState { | |||
// State 1: part of lines has been quoted, need to be quoted | |||
PARTIALQUOTED, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it is more natural to quote all the lines (not only the unquoted lines) in this case (thinking about doing multi-line comment).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In consideration of the selected text not always accurate, especially like i use three finder drag, i may select more lines which have been quoted. In this situation, what i need is just to quote the unquoted lines. There is no need to quote which have been quoted which may cause the text format disturbed. So could you share the example which is preferred to quote all selected lines?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In consideration of the selected text not always accurate, especially like i use three finder drag, i may select more lines which have been quoted. In this situation, what i need is just to quote the unquoted lines.
I agree this is probably a good design (for some people, or maybe the majority). But as a first step, I would like to make it consistent with other similar commands, e.g.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe add a switch to decide wthether need to only quote unquoted lines so that default quote behavior is the same as others?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Assuming you implement a separate unquoting command, @Sean10 can't the user just solve your case by hitting the unquoting command then hitting the quoting command? Same result.
I agree with @yzhang-gh there are many more instances when it's preferable to nest blockquotes.
src/formatting.ts
Outdated
if (line.startsWith("> ")) { | ||
return line.slice(2); | ||
} else { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
line.startsWith('>')
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, you're right. I thought adding a space is more beautiful and standard. But actually no such setting in github markdown.I will modify this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well, I think we can definitely advocate adding a space after >
(actually I like it). I meant we still need to handle the case if there isn't a space.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok~I will modify the space back and skip the line which it hasn't appended space.
… code, use eol to replace \n to fix different eol problem, fixredundant quote syntax
FYI, VS Code's The Spec is very permissive about spaces, which honestly, is often a headache. And remember leading spaces may have semantic meaning, for example, indentation. Given that indentation in Markdown is flexible, we cannot use My proposal: When a user run this command, the person implies all the lines support it, so we only need to detect indentation.
|
My previous comment looks pretty confusing. The actual procedure to determine indentation size
@yzhang-gh |
Things become more complex now... I don't want to add too much code only to deal with the corner cases for such a tiny feature. The simplest way is probably to stick with what VSCode does for comment/uncomment (not 100% accurate as VSCode seems to ignore blank lines?)
The difference (from the current implementation) is each line is not transformed independently. @Lemmingh What do you think of (case 1) adding Something interesting Input > - one
> - two Output
Input >- one
> - two Output
|
As far as I can tell, there are 2 major differences between VS Code's "Toggle Line Comment" and our "Toggle block quote":
I think "To calculate insertion points" (or "indentation size" or "indentation point") is the challenge now:
I think so. I believe our command should act on all the lines to produce only one block quote.
In step 1, I prefer not to op on leading and trailing blank lines. I mean we should exclude leading and trailing blank lines at analyzing stage, since user may select a lot of blank lines around the intended lines. In step 2, we should match block quote marker by Step 3 may break the document and sounds unnecessary. I prefer to drop it.
To be robust, I'm stubborn to always add Your interesting case exactly reflects the definition of block quote, and is one of the reasons that I said
|
Alright, I didn't really think of this case. Now I know what you mean, for example - one --> - one
nested quote 😱 > nested quote 😱
@Sean10 As you see, there are quite a few potential issues with the current implementation. I would suggest making a standalone extension for this feature. And if we find there are many users wanting this, we can then make an effort to resolve this properly. |
Yes, I understand this. I will temporarily make a standalone extension for my specific scene. |
@Sean10 did you end up making this? I came here looking for this feature. I may install https://marketplace.visualstudio.com/items?itemName=jebbs.markdown-extended as well, but not sure about extension interaction |
|
+1. I want this! |
I think all this is too complicated because of the misguided attempt to implement a "toggle". Not only does this bring up lots of undefined cases, but it's actually not useful IMO. What would be preferable is blockquote increase and decrease. In Markdown, there are many use cases for nested blockquotes. I use them all the time in Obsidian. For this blockquote functionality, I've been using this Obsidian plugin https://github.com/czottmann/obsidian-blockquote-levels for years and it works beautifully. Two separate commands are simpler to design and implement and actually give users a way to handle all cases, without ambiguity. |
done |
support scene
#704