Closed jjkavalam closed 7 years ago
any updates on this issue? I am having the same problems. Not just with java, but other languages as well
@mengfoobar The linked PR above fixes this issue. I had to fork this library and draft-js-code and updated them to fit my use case. Both are pretty clean and comprehensible.
For the record, I doubt this project is actively maintained anymore since the author no longer uses draft-js: https://github.com/facebook/draft-js/pull/388#issuecomment-242704205
@echenley ahh i see. I ended up doing something similar to what @jjkavalam did. which fixes the issue for most languages, but still have some problems with markup (the prismjs tokenize functions creates some pretty messy stuff for markup). Once that was fixed, got into even more issues with multi-lang syntax such as JSX, HTML PHP...etc.
Once i have a more complete implementation, will submit a pull request. Thanks a lot for the help! Bummer that the author moved on
I've pinged the author and he's given me commit permissions and publish access on npm to take over maintaining this library. Did you ever get anywhere with that imlementation @mengfoobar?
@mxstbr awesome! I'll clean some stuff up and try to get a PR out this weekend
Awesome, can't wait @mengfoobar! Let me know if you need any help :blush:
Also, do note that #11, #14 and #18 have attempted to solve this problem, so it'd be great to hear what you think of those solutions and how yours is different/better?
Since I didn't get any response here and really needed this, I merged #17 which fixes this issue beautifully.
@mengfoobar if you still have some improvements on top of that I'd love to still have that followup PR!
My intention is to use draft-js-prism for Java syntax highlighting.
This is what I got with draft-js-prism in Java syntax:
As I have marked, certain characters appear in unexpected colors.
Here are the two steps to reproduce this output:
1. Using the browser save the page at http://samypesse.github.io/draft-js-code/ to local disk
2. Edit
dist.js
as follows:Here is the snippet that I added:
Prism.languages.java=Prism.languages.extend("clike",{keyword:/\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp\-]+\b|\b\d*\.?\d+(?:e[+-]?\d+)?[df]?\b/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<<?=?|>>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,lookbehind:!0}}),Prism.languages.insertBefore("java","function",{annotation:{alias:"punctuation",pattern:/(^|[^.])@\w+/,lookbehind:!0}});
It was copied over from http://prismjs.com/download.html by checking "Java" as a supported language.