Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » TMF (Xtext) » Code Completion / Content Assist not working for second grammer
Code Completion / Content Assist not working for second grammer [message #1797426] Tue, 30 October 2018 18:21 Go to next message
Mehmetcan Sinir is currently offline Mehmetcan SinirFriend
Messages: 55
Registered: September 2018
Member
I have a VSCode Extension with a language server built with XText

The language server contains 2 grammars below is the mwe2 workflow

module de.bmw.rhmi.GenerateHmi

import org.eclipse.xtext.xtext.generator.*
import org.eclipse.xtext.xtext.generator.model.project.*
import org.eclipse.emf.mwe.utils.*

var rootPath = ".."
var projectName = "de.bmw.rhmi"
var grammarURI = "src/main/java/de/bmw/rhmi/Hmi.xtext"
var appGrammarURI = "src/main/java/de/bmw/rhmi/App.xtext"
var runtimeProject = "../${projectName}"

Workflow {

	bean = StandaloneSetup {
		scanClassPath = true
		platformUri = "${rootPath}"
		registerGenModelFile = "platform:/resource/de.bmw.rhmi.resource/model/generated/Strings.genmodel"
		registerGenModelFile = "platform:/resource/de.bmw.rhmi.resource/model/Image.genmodel"
		registerGeneratedEPackage = "de.bmw.rhmi.resource.image.ImagePackage"
		registerGeneratedEPackage = "de.bmw.rhmi.resource.strings.StringsPackage"
	}
	
	component = DirectoryCleaner {
		directory = "${runtimeProject}/xtext-gen"
	}
	

	component = XtextGenerator {
		configuration = {
			project = StandardProjectConfig {
				baseName = "de.bmw.rhmi"
				rootPath = rootPath
				runtimeTest = {
					enabled = true
				}
				genericIde = {
					enabled = true
				}
				mavenLayout = true
			}
			code = {
				encoding = "UTF-8"
				lineDelimiter = "\n"
				fileHeader = "/*\n * generated by Xtext \${version}\n */"
			}
		}

		language = XtextGeneratorLanguage {
			grammarUri = appGrammarURI
			name = "de.bmw.rhmi.App"
			fileExtensions = "rapp"
			referencedResource = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel"
			fragment = grammarAccess.GrammarAccessFragment2 {}
			fragment = ecore.EMFGeneratorFragment2 {}
			fragment = serializer.SerializerFragment2 {}
			fragment = resourceFactory.ResourceFactoryFragment2 {}
			fragment = parser.antlr.XtextAntlrGeneratorFragment2 {
				options = {
					classSplitting = true
					fieldsPerClass = "500"
				}
				antlrParam = "-Xconversiontimeout" antlrParam = "10000"
			}
			fragment = validation.ValidatorFragment2 {}
			fragment = scoping.ImportNamespacesScopingFragment2 {}
			fragment = exporting.QualifiedNamesFragment2 {}
			fragment = builder.BuilderIntegrationFragment2 {}
			fragment = formatting.Formatter2Fragment2 {}
			fragment = ui.labeling.LabelProviderFragment2 {}
			fragment = ui.outline.QuickOutlineFragment2 {}
			fragment = ui.outline.OutlineTreeProviderFragment2 {}
			fragment = ui.quickfix.QuickfixProviderFragment2 {}
			fragment = ui.contentAssist.ContentAssistFragment2 {}
			fragment = junit.JUnitFragment {}
			fragment = ui.refactoring.RefactorElementNameFragment2 {}
			fragment = ui.templates.CodetemplatesGeneratorFragment2 {}
			fragment = types.TypesGeneratorFragment2 {}
			fragment = xbase.XtypeGeneratorFragment2 {}
    		fragment = xbase.XbaseGeneratorFragment2 {}
			fragment = ui.compare.CompareFragment2 {}
			fragment = idea.parser.antlr.XtextAntlrIDEAGeneratorFragment {}
			fragment = ui.projectWizard.TemplateProjectWizardFragment {}
			fragment = ui.fileWizard.TemplateFileWizardFragment {}
		}

		language = XtextGeneratorLanguage {
			grammarUri = grammarURI
			referencedResource = "platform:/resource/de.bmw.rhmi/src/main/java/de/bmw/rhmi/App.xtext"
			name = "de.bmw.rhmi.Hmi"
			fileExtensions = "hmi"
			referencedResource = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel"
			fragment = grammarAccess.GrammarAccessFragment2 {}
			fragment = ecore.EMFGeneratorFragment2 {}
			fragment = serializer.SerializerFragment2 {}
			fragment = resourceFactory.ResourceFactoryFragment2 {}
			fragment = parser.antlr.XtextAntlrGeneratorFragment2 {
				options = {
					classSplitting = true
					fieldsPerClass = "500"
				}
				antlrParam = "-Xconversiontimeout" antlrParam = "10000"
			}
			fragment = validation.ValidatorFragment2 {}
			fragment = scoping.ImportNamespacesScopingFragment2 {}
			fragment = exporting.QualifiedNamesFragment2 {}
			fragment = builder.BuilderIntegrationFragment2 {}
			fragment = formatting.Formatter2Fragment2 {}
			fragment = ui.labeling.LabelProviderFragment2 {}
			fragment = ui.outline.QuickOutlineFragment2 {}
			fragment = ui.outline.OutlineTreeProviderFragment2 {}
			fragment = ui.quickfix.QuickfixProviderFragment2 {}
			fragment = xbase.XtypeGeneratorFragment2 {}
    		fragment = xbase.XbaseGeneratorFragment2 {}
			fragment = ui.contentAssist.ContentAssistFragment2 {}
			fragment = junit.JUnitFragment {}
			fragment = ui.refactoring.RefactorElementNameFragment2 {}
			fragment = ui.templates.CodetemplatesGeneratorFragment2 {}
			fragment = ui.compare.CompareFragment2 {}
			fragment = ui.projectWizard.TemplateProjectWizardFragment {}
			fragment = types.TypesGeneratorFragment2 {}
			fragment = idea.parser.antlr.XtextAntlrIDEAGeneratorFragment {}
			fragment = ui.fileWizard.TemplateFileWizardFragment {}
		}
	}
}



In my VsCode Extension, I have good content assist / code completion support for the second grammer (hmi) but no code completion support for the first grammer (app)

Here is the relevant part of the VS-Code Extension

"activationEvents": [
        "onLanguage:hmi",
        "onLanguage:rapp"
    ],
    "main": "out/extension",
    "contributes": {
        "languages": [
            {
                "id": "hmi",
                "aliases": [
                    "hmi"
                ],
                "extensions": [
                    ".hmi"
                ],
                "configuration": "./language.configuration.json"
            },
            {
                "id": "rapp",
                "aliases": [
                    "rapp"
                ],
                "extensions": [
                    ".rapp"
                ],
                "configuration": "./language-configuration.json"
            }
            
        ],
        "grammars": [
            {
                "language": "hmi",
                "scopeName": "source.hmi",
                "path": "./syntaxes/hmi.tmLanguage.json"
            },
            {
                "language": "rapp",
                "scopeName": "source.rapp",
                "path": "./syntaxes/rapp.tmLanguage.json"
            }
        ],
        "commands": [
            {
                "command": "hmi.a.proxy",
                "title": "Hmi Command A"
            },
            {
                "command": "hmi.b",
                "title": "Hmi Command B"
            }
        ]
    }


Validation and everything else is working for the rapp grammar, but not code completion. I think it has to do with my language server. What am I missing?
Re: Code Completion / Content Assist not working for second grammer [message #1797428 is a reply to message #1797426] Tue, 30 October 2018 18:25 Go to previous message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14716
Registered: July 2009
Senior Member
do you have the workaround for the current 2.15 bug in place in the relevant runtime modules?
https://github.com/itemis/xtext-languageserver-example/blob/60625bb121e792b4d9577b66ee6ca965b97fd07c/org.xtext.example.mydsl.ide/src/org/xtext/example/mydsl/ide/MyDslIdeModule.xtend#L30
if yes did you debug into content assist service?


Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
Previous Topic:Error creating Xtext artefacts
Next Topic:ignore the "No EObjectDescription could be found in Scope" error
Goto Forum:
  


Current Time: Fri Sep 20 20:40:11 GMT 2024

Powered by FUDForum. Page generated in 0.03648 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top