mike-lischke / vscode-antlr4

ANTLR4 language support for Visual Studio Code
http://www.soft-gems.net
MIT License
422 stars 58 forks source link

A Bottom part of big digram can be hidden. #243

Open satabol opened 7 months ago

satabol commented 7 months ago

Proposal.

Problem:

Windows 11, vscode 1.86.0, vscode-antlr4 2.4.6.

Long rule:

https://github.com/mike-lischke/vscode-antlr4/assets/14288520/6201a106-15d6-4c2b-a800-3d58f166f653

If append this css code then all looks good: image

#container svg:last-child {
    width: 100%;
    margin-bottom: 50px;
}

https://github.com/mike-lischke/vscode-antlr4/assets/14288520/7a9450fc-5cbd-4c1a-9dcc-26cde462a142

mike-lischke commented 7 months ago

IIRC this is not only a problem for the last rule. I have seen this also for rules in the middle somewhere. Last time I looked it was so that the railroad library did not correctly compute the total height of the diagram. Needs investigation, but your proposal would only fix a part of the problem.

satabol commented 7 months ago

Do you have an example about rules in the middle somewhere? If not can you put them later?

satabol commented 7 months ago

I found something interesting. You build tab with next structure.

  1. semitransparent header with g4 info: image

  2. You have a container with rail structure: image

In 2 you use a property with name "padding" that has a parameter "60px". This has incorrect influence to "height:100vh" (100vh do not enlarge on 60px): (example: https://css-tricks.com/almanac/properties/p/padding/#aa-padding-and-element-width-calculations)

image

To fix this I found a property "box-sizing: border-box": image

Now all looks good: first element is not under a header and a last element is not hidden. What do you think?

info of a box-sizing:

satabol commented 7 months ago

that the railroad library did not correctly compute the total height of the diagram

Now I think that this railroad issue is another issue.

mike-lischke commented 7 months ago

My assumption was that the missing space at the end is the same problem like missing space in the middle of the document:

Bildschirmfoto 2024-02-13 um 09 30 01

But you might have a point in your analysis of other spacing and the boxing model. I'll have to investigate.

satabol commented 7 months ago

Can you give me this example? Or send it by email satabolxyz@gmail.com ? I promise not to show anyone.

mike-lischke commented 7 months ago

It's open source like everything I do on Github 😄

Note also the other display problems like in alterListItem:

Bildschirmfoto 2024-02-13 um 09 57 47

satabol commented 7 months ago

I'm sorry I found MySQLParser.g4 file with another syntax. Now I use your grammar. Can you show your extension settings?

mike-lischke commented 7 months ago

It probably doesn't make a difference, but here they are:

    "antlr4.rrd.saveDir": "/Users/Mike/Desktop/rrd",
    "antlr4.atn.saveDir": "",
    "antlr4.atn.maxLabelCount": 10,
    "antlr4.call-graph.saveDir": "/tmp/",
    "antlr4.debug": {
        "visualParseTreeHorizontal": true,
        "visualParseTreeClustered": true
    },
    "antlr4.generation": {
        "mode": "internal",
        "listeners": true,
        "visitors": false,
        "outputDir": "./generated"
    },
    "antlr4.format": {
        "disabled": false,
        "alignTrailingComments": true,
        "allowShortBlocksOnASingleLine": true,
        "breakBeforeBraces": false,
        "columnLimit": 150,
        "continuationIndentWidth": 4,
        "indentWidth": 4,
        "keepEmptyLinesAtTheStartOfBlocks": false,
        "maxEmptyLinesToKeep": 1,
        "reflowComments": false,
        "spaceBeforeAssignmentOperators": true,
        "tabWidth": 4,
        "useTab": false,
        "alignColons": "none",
        "singleLineOverrulesHangingColon": false,
        "allowShortRulesOnASingleLine": false,
        "alignSemicolons": "ownLine",
        "breakBeforeParens": false,
        "ruleInternalsOnSingleLine": false,
        "minEmptyLines": 1,
        "groupedAlignments": true,
        "alignFirstTokens": true,
        "alignLexerCommands": false,
        "alignActions": false,
        "alignLabels": true,
        "alignTrailers": false
    },
satabol commented 7 months ago

At last I got these errors after settings: image

Nice: image

)))

mike-lischke commented 7 months ago

Yes, that's the setting for wrapping long sequence lines in the diagram. Of course, if no wrapping occurs then the display is fine. IMO the RRD script does not fully cover some of the cases we use in these diagrams.

satabol commented 7 months ago

I found something - version of railroad.js file in this repo is too old. I try last (newest) version and all look good:

https://github.com/tabatkins/railroad-diagrams/blob/gh-pages/railroad.js image

and all look good

image

I use setting "wrapAfter"=60.

mike-lischke commented 7 months ago

That would be great news! This (just fixed) issue looks very much like the problems here. Unfortunately, this project neither releases packages nor bundles, so it's tricky to know when a new release comes out (if they even make releases).

satabol commented 7 months ago

Happy to help you. I just compare count of lines of code. Intuition. ))) Are you planning to update this library?

mike-lischke commented 6 months ago

Yes, I will update the library, but I'm pretty busy with other stuff. Need to find some time for it...