Comments (5)
yes, but it still has a problem, the line after heredoc is indented wrong , more 4 chars indented than we expected. like this:
$str = <<<"EOT"
{$var1} hello
EOT;
$str2 = "hello, world";
from php-mode.
Thanks for pointing this out; it will help me make a test case. I am planning to fix the heredoc support for the next version, but right now I cannot say when that will be released. Very likely before the end of the year, but with holidays nearby I can't say where my time will end up.
from php-mode.
Just some thoughts, as I ran into this issue today.
As a workaround (or more inspiration), nxhtml-mode indents this correctly, except that the desired indentation level is not reverted after the closing delimiter.
Also, I didn't know about the double-quoted heredoc syntax. The RFC has some clear examples of the different types, which might help in creating test cases, although I think that the highlighting there is a bit wrong. Variables and such should be highlighted inside heredocs, but not nowdocs, reflecting their usage. Also, a nice thing that Sublime Text does with these is that it highlights both instances of LABEL
nicely.
from php-mode.
Huh, I didn't know about that aspect of heredocs either, that which the RFC shows. I have seen a couple of different approaches to supporting heredoc syntax, nxhtml-mode's being one of them, and am starting to think now we'll have to make some amalgamation of them to cover all of the actually allowed syntax. Thanks for bringing that RFC to my attention; never knew about that.
from php-mode.
Philippe Ivaldi graciously let me copy his work relating to heredoc support, which I will push out into master
soon. I will still need to go back and deal with nowdocs and other things described in the RFC above, though. But those can be addressed in separate Github issues.
from php-mode.
Related Issues (20)
- Please tag release (prerelease or beta is ok) for Emacs 28 compatibility HOT 1
- Error in ternary operator indentation HOT 1
- Unexpected syntax highlights after "new" in string HOT 1
- Automatic, overly-clever brace-matching is annoying and how to turn it off is non-obvious HOT 2
- Function faces HOT 1
- Commented out array elements break indentation HOT 2
- Drop Emacs 25 Support
- WordPress coding style removing spaces around function args HOT 1
- The last argument of the method is not highlighted
- PEAR method chaining wrong indentation HOT 5
- File mode specification error HOT 5
- Indentation issue with closure/anonymous functions
- Lineup Cascaded Calls doesn't work properly
- emacs master results in error HOT 2
- Drop Emacs 26 Support
- Newline Indentation aligning with equal sign HOT 3
- while keyword says 'At top level' HOT 2
- Remove `$` from face names for interoperability with treesit
- `php-function-call` face does not inherit from `font-lock-function-call-face` HOT 2
- Highlight of first heredoc with quotes broken depending on how many characters exists before it
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from php-mode.