How do we format code?
-
@Lorne_Kates said:
I'm not learning another markup language for a shitty piece of forum software. I already barely remember BBCode and wiki.
You forgot HTML - this is evolution on a timeline:BBCode ( [b] ) -> HTML ( <b> ) -> wiki ( ''' ) and now Discourse ( ** ).
As for why Discourse had to reinvent the wheel again... dunno, it's a way to put one's stamp on the world, innit?
@Lorne_Kates said:
And besides, it's 2014. I mean, one of these days someone will invent a WYSIWYG editor, right?
That would sure help, as the scrollbars in the editor and preview are not synched.And because the editor replaces emoticons with a small icon, it might be very helpful to see the preview of what you are posting... since the auto substitution of emoticons means you can't write (<b>) any more but to have to insert a something between the ; and the ).
TDWTF is a coder/programmer forum; people post code here. Using an editor that interpretes that posted code and replaces it with its own substitutions is really, really bad. As bad as using the asterisk as marker for bold / italic text.
Some C++ code with four asterisks: int x = **ptr; int y= **ptr2;
Broken. Fundamentally.
-
TDWTF is a coder/programmer forum; people post code here. Using an editor that interpretes that posted code and replaces it with its own substitutions is really, really bad. As bad as using the asterisk as marker for bold / italic text.
Some C++ code with four asterisks: int x = ptr; int y= ptr2;
Broken. Fundamentally.
int x = **ptr; int y= **ptr2;
That's one thing that isn't broken. And understandably - the editor seems to be based on the SO one, and imagine running a Q&A site about programming that doesn't let you post code. Now that's the level of insanity even Jeff hasn't reached yet.
-
int x = **ptr; int y= **ptr2;
That's one thing that isn't broken. And understandably - the editor seems to be based on the SO one, and imagine running a Q&A site about programming that doesn't let you post code. Now that's the level of insanity even Jeff hasn't reached yet.
An editor for a programming site that forces me to format code I post is fundamentally broken.I was well aware that there would probably be some markup that would show
int x = **ptr; int y= **ptr2;
correctly, I only didn't look it up.Having done so I can't but note that even that markup is fundamentally broken because the quote sign used to preformat code has a meaning in the bash.
Sorry, try as you might, you can't defend that editor.
-
CS didn't properly support brackets or chevrons without escaping. The triple backtick works OK, even if it's not very intuitive.
-
You can also indent your preformated code block with 4 spaces. Which breaks even more things, but oh well.
-
I was well aware that there would probably be some markup that would show int x = **ptr; int y= **ptr2; correctly, I only didn't look it up.
The indent one works well. There's even a button to help you with it (which looks like
</>
right now).Here, this() { is done with; that button! }
The only indents that I typed were the ones within the code itself. If I'd been copy-pasting the code from elsewhere, I wouldn't have even had to do those. (Is there a reasonable way to say which language the code is in and so pick up the right set of highlight rules? On SO I'd use
<!-- language: foobar -->
when the autodetect based on question tags didn't work, but there isn't the same sort of hinting here.)
-
function foo() { }
function foo() { }
Hinting seems to work OK, but I find the languages supported to be lacking.
-
Ah! You're using the triple-backtick form whereas I was using the space4 indent form.
Filed under: Markdown's an inconsistent mess
-
I find the languages supported to be lacking.
tdwtf(threadID)
n id,text,success
f id=$o(^POSTS("thread",threadID,id)) q:id="" q:'success d
. s text=$tr($$formatPost(id,ANSI_STD)," ","")
. s %=$$insrtVitriol(.text) s:% success=1
. i 'success d q
. . w !,"WTF"
. . k ^POSTS("thread")
d renderPost(text)
d complain
q 1
Agreed. I tried using < code > elements and had to use separate ones on each line, and the syntax highlighting is completely missing. And it totally collapsed my whitespace! This patch will never get accepted...
-
Agreed. I tried using < code > elements and had to use separate ones on each line, and the syntax highlighting is completely missing. And it totally collapsed my whitespace! This patch will never get accepted...
tdwtf(threadID) n id,text,success f id=$o(^POSTS("thread",threadID,id)) q:id="" q:'success d . s text=$tr($$formatPost(id,ANSI_STD)," ","") . s %=$$insrtVitriol(.text) s:% success=1 . i 'success d q . . w !,"WTF" . . k ^POSTS("thread") d renderPost(text) d complain q 1
What the hell language is that anyway?
-
One that's perfect for semi-sarcastic replies about broad syntax support. C-style languages are too easy.
What'd you do to get it in one block? It added some coloration in random places... oh I see, it took the apostrophes as string delimiters. Makes sense.
-
```
Your code here
```
-
def hello_world "hi there" end
# no I insist its bash def hello_world "hi there" end
We use highlight.js http://highlightjs.org/static/test.html
To hint a language use:
```language my awesome source code ```
-
POST / HTTP/1.1 X-I-Told-It-This-Was: Scala X-There-Might-Be-A: bug
-
So, to recapture, we have four ways to format code:
- Triple left-leaning single quote which works best if only used once:
<b>this is not bold</b> and there is no emoticon img after this :)
But is broken if used twice because someone seems to use regexes to parse the formatting and doesn't seem to know that regexes are greedy (I might actually submit this to TDWTF, a site that specializes in collecting such blunders). - Single left-leaning single quote which can be used inline
foobar :)
- 4-space indentation that does not seem to do much apart from
indenting text :) - And the </> button, which uses a single left-leaning single quote if you are past the first character but 4-space indentation if not.
So, if I use a button labeled "Preformatted text" post-typing on an entire line it is broken because
this is bold and there is an emoticon img after this :)And the knowledge needed to format code correctly (using triple left-leaning single quote) I had to get by reading comments, because there is no such thing as a help button in the editor's button bar.
I repeat it: this editor is broken as it is for a programming forum.
- Triple left-leaning single quote which works best if only used once:
-
I might actually submit this to TDWTF
You know, there is another option
Fix https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/dialects/github_code_dialect.js or its parent Discourse.Dialect.replaceBlock if needed.
-
So, to recapture, we have four ways to format code
If you're talking about not having to use excessive quoting methods, I believe you have missed <pre>.
Sort of (at least by what's going on in that preview window at the moment); I present two copies of
<pre> ** ;) **</pre>
. This first is on the same line as this text:** ;) **
However, when presented on a separate line:
** ;) **
with other text after it it renders differently.Hey - look - context sensitive HTML. Mixed in with markdown. Sometimes. What's not to love...
Especially on mobile where you don't even get the benefit of the preview window...
-
You know, there is another option
Fix https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/dialects/github_code_dialect.js or its parent Discourse.Dialect.replaceBlock if needed.
Good riposte, actually ;-)But tempted as I might be, I won't.
Reason 1: this is not fixing a typo like a misspelled var and I would need to fully grok the code before I started, because I would have to be able to gauge any side effects. So this is not done in a quiet moment after work.
Reason 2: I seem to recall from the thread on the beta test that some people were pretty frustrated because they fixed things and then had their changes rejected. Which is not exactly motivating.
-
I seem to recall from the thread on the beta test that some people were pretty frustrated because they fixed things and then had their changes rejected. Which is not exactly motivating.
I can assure you
- This never happened with any contributions that originated from TDWTF
- We very very rarely reject PRs, you can look through the repo and history of PRs to confirm this yourself.
I also fully acknowledge that just getting started contributing to Discourse can be hard, and am working on ways to improve this (hoping to get a Docker dev image up at some point)
-
Fix https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/dialects/github_code_dialect.js or its parent Discourse.Dialect.replaceBlock if needed.
Having at least looked at the github code, it actually might not be Discourse that is at fault here. To quote from dialect.js: "Discourse uses the Markdown.js as its main parser."So it could well be that markdown.js needs to be fixed. Can't check though, since that project's example html page doesn't seem to work and I don't have the time to figure out what all I have to install where to get it to work.
-
This post is deleted!