Comments (19)
Hey,
Thanks for the analysis! I can certainly test this, yes :) It will just take me a little time to do so...
Cheers,
Markus
from lcdsl.
New build is available at https://mduft.github.io/lcdsl-latest/ - you can verify (and hopefully enjoy) your changes there :)
from lcdsl.
Such a result usually comes if the Xtext default formatter is used, but in LcDsl, a custom formatter implementation is already bound in the AbstractLcDslRuntimeModule, so I think this issue has been solved in the meantime and can be closed.
from lcdsl.
Yes, a formatter is bound and in place. However it does not fully work, and I haven't had time to look into the issue. It seems that indentation is only correctly applied for the first line of a block, but not for the others...
from lcdsl.
Thanks for the info. You are right, I experienced the same behaviour. I will take a look at it and try to provide a pull request to improve the formatter.
from lcdsl.
This would be really appreciated, thanks!
from lcdsl.
Hi Markus,
I analysed the problem and found out that in order to make the indentation properly work, the formatter should append a newline
to each line. A quick solution could be to override the void format(EObject it, extension IFormattableDocument document)
method in the LcDslFormatter
class:
class LcDslFormatter extends AbstractFormatter2 {
...
override dispatch void format(EObject it, extension IFormattableDocument document) {
regionForEObject.allSemanticRegions.last.append[newLine]
}
}
However, it could result in some unwanted side-effects when applying this customization to all EObjects
. Do you have the possibility to test it on some *.lc
files?
Thanks a lot for you feedback!
Tamás
from lcdsl.
I tried this out quickly, and it seems that once I remove indentation on any line within a launch configuration, format will not bring it back :| It seems this kind of override is also never called, since the other dispatch methods in the file get precedence when they match - at least a Syserr in the method was never called.
from lcdsl.
Hmm.. interesting. Actually it seems to work on my computer:
from lcdsl.
@mduft Could it be possible that your code base is different from that what is checked in in the master branch? https://github.com/mduft/lcdsl/blob/master/com.wamas.ide.launching/src/com/wamas/ide/launching/formatting2/LcDslFormatter.xtend
from lcdsl.
Nope, I just freshly cloned, maybe something else went wrong... You just added that method as it is shown at the end of the file, right? Because that's what I tried :D
from lcdsl.
Ah, I think I found it - will re-test :) There was a problem with my setup.
from lcdsl.
OK, now it works. The only problem I observed when formatting our lc files is that blank lines disappear... We have a lot of blank lines separating blocks of arguments belonging together, blank lines before comments, etc.
from lcdsl.
Preserving the already present new lines can be controlled by the setNewLines(int minNewLines, int defaultNewLines, int maxNewLines)
parameters.
/**
* Configures the given new lines for this hidden region. Keeps the current configuration if it is in the valid
* boundaries of {@code minNewLines} and {@code maxNewLines}. Applies {@code defaultNewLines} otherwise.
*/
void setNewLines(int minNewLines, int defaultNewLines, int maxNewLines);
Instead of calling regionForEObject.allSemanticRegions.last.append[newLine]
, you can call e.g.
regionForEObject.allSemanticRegions.last.append[setNewLines(1,1,2)]
Hint: In order to avoid org.eclipse.xtext.formatting2.ConflictingFormattingException: Conflicting values
, you may have to adapt the [newline]
parameters on other places as well.
from lcdsl.
Nice, thanks :) Can you provide a pull request? I would otherwise try to squeeze the changes in somewhere in the next days...
from lcdsl.
Yes, I will provide a PR soon.
from lcdsl.
This is great news, thanks :)
from lcdsl.
I created the PR
from lcdsl.
Thanks a lot. Will release ASAP.
from lcdsl.
Related Issues (20)
- Provide default ID for launch config
- new feature: Add required dependencies HOT 3
- Working Sets HOT 2
- Easy access to raw launch configuration file HOT 1
- Missing ignored plugins should not generate a warning
- Updating the Xtext Community Website HOT 3
- NPE with unknown launch types HOT 5
- Missing latest version of org.eclipse.debug.ui.launchview HOT 2
- Startlevels for workspacebundles HOT 6
- Test class not accepting all JUnit5 variants HOT 1
- Support launch type pure JUnit? HOT 1
- Application `[No Application] - Headless Mode` unsupported. - Should be default HOT 2
- regression: CI build hangs at "loading target platform" HOT 3
- Validation for test class is too strict
- Compile error due to using API 11, but 1.8 on classpath HOT 1
- Introduction of variables in lcdsl
- Test container plugin dependencies should be added automatically
- Plugins attribute should not be required if test container points to a plugin project
- Typing `${folder_prompt}` in `working-dir` crashes the IDE
- SwtBot launch is broken? HOT 4
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 lcdsl.