tutorial terminals portable org instalar descargar como common eclipse-plugin xtext xtend

eclipse-plugin - terminals - xtext install



formato auto bonito en xtext (1)

Hay una manera de hacer eso que se llama "AutoEdit". No es exactamente cuando el usuario completa la escritura, sino que está con cada token. Eso es al menos lo que he hecho. Puede seguramente cambiar eso. Le daré un ejemplo que implementé para mi proyecto. Básicamente capitaliza cada palabra clave a medida que el usuario escribe (activado por espacios y líneas finales).

Es una cosa de UI. Entonces, en tu proyecto de UI:

en MyDslUiModule.java necesita adjuntar su clase hecha a medida AutoEdit hacerlo así:

public Class<? extends DefaultAutoEditStrategyProvider> bindDefaultAutoEditStrategyProvider() { return MyDslAutoEditStrategyProvider.class; }

Nuestra clase se llamará MyDslAutoEditStrategyProvider, así que adelante, créelo en un archivo MyDslAutoEditStrategyProvider.java. El mío hizo esto para hacer lo que expliqué en la introducción:

import java.util.Set; import org.eclipse.jface.text.DocumentCommand; import org.eclipse.jface.text.IAutoEditStrategy; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IRegion; import org.eclipse.xtext.GrammarUtil; import org.eclipse.xtext.IGrammarAccess; import org.eclipse.xtext.ui.editor.autoedit.DefaultAutoEditStrategyProvider; import org.eclipse.xtext.ui.editor.model.XtextDocument; import com.google.inject.Inject; import com.google.inject.Provider; public class MyDslAutoEditStrategyProvider extends DefaultAutoEditStrategyProvider { @Inject Provider<IGrammarAccess> iGrammar; private Set<String> KWDS; @Override protected void configure(IEditStrategyAcceptor acceptor) { KWDS = GrammarUtil.getAllKeywords(iGrammar.get().getGrammar()); IAutoEditStrategy strategy = new IAutoEditStrategy() { @Override public void customizeDocumentCommand(IDocument document, DocumentCommand command) { if ( command.text.length() == 0 || command.text.charAt(0) > '' '') return; IRegion reg = ((XtextDocument) document).getLastDamage(); try { String token = document.get(reg.getOffset(), reg.getLength()); String possibleKWD = token.toLowerCase(); if ( token.equals(possibleKWD.toUpperCase()) || !KWDS.contains(possibleKWD) ) return; document.replace(reg.getOffset(), reg.getLength(), possibleKWD.toUpperCase()); } catch (Exception e) { System.out.println("AutoEdit error./n" + e.getMessage()); } } }; acceptor.accept(strategy, IDocument.DEFAULT_CONTENT_TYPE); super.configure(acceptor); } }

Supongo que usted dice que "el usuario completa la escritura" puede ser como "el usuario guarda el archivo". Si es así, aquí está cómo activar el formateador al guardar:

en MyDslUiModule.java:

public Class<? extends XtextDocumentProvider> bindXtextDocumentProvider() { return MyDslDocumentProvider.class; }

Crear la clase MyDslDocumentProvider:

import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.text.IDocument; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.handlers.IHandlerService; import org.eclipse.xtext.ui.editor.model.XtextDocumentProvider; public class MyDslDocumentProvider extends XtextDocumentProvider { @Override protected void doSaveDocument(IProgressMonitor monitor, Object element, IDocument document, boolean overwrite) throws CoreException { IHandlerService service = (IHandlerService) PlatformUI.getWorkbench().getService(IHandlerService.class); try { service.executeCommand("org.eclipse.xtext.ui.FormatAction", null); } catch (Exception e) { e.printStackTrace(); } super.doSaveDocument(monitor, element, document, overwrite); } }

Quiero preguntar que hay una forma de hacer un formato bonito en xtext automáticamente sin (ctrl + shift + f) o encenderlo desde el menú de preferencias. Lo que realmente quiero es que cada vez que un usuario termine de escribir el código, esté automáticamente formateado (o en tiempo de ejecución) sin (ctrl + shift + f).