Revision: 4817
http://sourceforge.net/p/vexi/code/4817
Author: mkpg2
Date: 2015-10-26 22:19:54 +0000 (Mon, 26 Oct 2015)
Log Message:
-----------
Support for multi line strings.
Separate .script editor.
Update vexi.
Modified Paths:
--------------
trunk/tools/org.vexi.vexidev/.classpath
trunk/tools/org.vexi.vexidev/.settings/org.eclipse.jdt.core.prefs
trunk/tools/org.vexi.vexidev/META-INF/MANIFEST.MF
trunk/tools/org.vexi.vexidev/build.properties
trunk/tools/org.vexi.vexidev/plugin.xml
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/debug/ui/ConsoleLineTracker.java
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/TemplateFilePartitionScanner.java
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/VSScanner.java
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/VexiEditor.java
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/VexiEditorConfiguration.java
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/actions/IndentActionDelegate.java
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/actions/ToggleCommentActionDelegate.java
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/outline/VexiOutlinePage.java
Added Paths:
-----------
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/AbstractVexiEditor.java
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/ScriptEditor.java
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/ScriptEditorConfiguration.java
Property Changed:
----------------
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/VexiEditor.java
Modified: trunk/tools/org.vexi.vexidev/.classpath
===================================================================
--- trunk/tools/org.vexi.vexidev/.classpath 2015-10-06 21:51:22 UTC (rev
4816)
+++ trunk/tools/org.vexi.vexidev/.classpath 2015-10-26 22:19:54 UTC (rev
4817)
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="src" path="src_junit"/>
- <classpathentry kind="src" path="src_dev"/>
- <classpathentry exported="true" kind="lib"
path="lib/vexidev_lib-working.jar"/>
- <classpathentry exported="true" kind="con"
path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry exported="true" kind="con"
path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
- <classpathentry combineaccessrules="false" kind="src"
path="/org.vexi-vexidev.conf"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="src_junit"/>
+ <classpathentry kind="src" path="src_dev"/>
+ <classpathentry kind="lib" path="lib/vexidev_lib-rev_4805.jar"/>
+ <classpathentry exported="true" kind="con"
path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry combineaccessrules="false" kind="src"
path="/org.vexi-vexidev.conf"/>
+ <classpathentry kind="con"
path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
Modified: trunk/tools/org.vexi.vexidev/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- trunk/tools/org.vexi.vexidev/.settings/org.eclipse.jdt.core.prefs
2015-10-06 21:51:22 UTC (rev 4816)
+++ trunk/tools/org.vexi.vexidev/.settings/org.eclipse.jdt.core.prefs
2015-10-26 22:19:54 UTC (rev 4817)
@@ -1,9 +1,9 @@
-#Sun Oct 05 19:24:28 BST 2008
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.codegen.unusedLocal=optimize out
-org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -63,4 +63,4 @@
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.compiler.source=1.7
Modified: trunk/tools/org.vexi.vexidev/META-INF/MANIFEST.MF
===================================================================
--- trunk/tools/org.vexi.vexidev/META-INF/MANIFEST.MF 2015-10-06 21:51:22 UTC
(rev 4816)
+++ trunk/tools/org.vexi.vexidev/META-INF/MANIFEST.MF 2015-10-26 22:19:54 UTC
(rev 4817)
@@ -84,7 +84,7 @@
Eclipse-AutoStart: true
Plugin-Class: org.vexi.vexidev.VexidevPlugin
Bundle-ClassPath: vexidev.jar,
- lib/vexidev_lib-working.jar
+ lib/vexidev_lib-rev_4805.jar
Bundle-Vendor: vexi.org
Import-Package: junit.framework
Modified: trunk/tools/org.vexi.vexidev/build.properties
===================================================================
--- trunk/tools/org.vexi.vexidev/build.properties 2015-10-06 21:51:22 UTC
(rev 4816)
+++ trunk/tools/org.vexi.vexidev/build.properties 2015-10-26 22:19:54 UTC
(rev 4817)
@@ -2,7 +2,7 @@
plugin.xml,\
icons/,\
vexidev.jar,\
- lib/vexidev_lib-working.jar
+ lib/vexidev_lib-rev_4805.jar
src.includes = src/,\
plugin.xml,\
icons/,\
Modified: trunk/tools/org.vexi.vexidev/plugin.xml
===================================================================
--- trunk/tools/org.vexi.vexidev/plugin.xml 2015-10-06 21:51:22 UTC (rev
4816)
+++ trunk/tools/org.vexi.vexidev/plugin.xml 2015-10-26 22:19:54 UTC (rev
4817)
@@ -161,11 +161,20 @@
name="Vexi XML Editor"
extensions="t"
icon="icons/vexi.png"
-
contributorClass="org.vexi.vexidev.editor.VexiEditorActionContributor"
+
contributorClass="org.eclipse.ui.texteditor.BasicTextEditorActionContributor"
class="org.vexi.vexidev.editor.VexiEditor"
id="org.vexi.vexidev.editor.VexiEditor">
<contentTypeBinding
contentTypeId="org.vexi.vexidev.contentTypeBinding1"/>
</editor>
+ <editor
+ name="Vexi Script Editor"
+ extensions="script"
+ icon="icons/vexi.png"
+
contributorClass="org.eclipse.ui.texteditor.BasicTextEditorActionContributor"
+ class="org.vexi.vexidev.editor.ScriptEditor"
+ id="org.vexi.vexidev.editor.ScriptEditor">
+ <contentTypeBinding
contentTypeId="org.vexi.vexidev.contentTypeBinding1"/>
+ </editor>
</extension>
<extension
point="org.eclipse.ui.editorActions">
Modified:
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/debug/ui/ConsoleLineTracker.java
===================================================================
---
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/debug/ui/ConsoleLineTracker.java
2015-10-06 21:51:22 UTC (rev 4816)
+++
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/debug/ui/ConsoleLineTracker.java
2015-10-26 22:19:54 UTC (rev 4817)
@@ -20,7 +20,7 @@
import org.eclipse.jface.text.IRegion;
import org.eclipse.ui.console.IHyperlink;
import org.vexi.vexidev.VexidevPlugin;
-import org.vexi.vexidev.editor.VexiEditor;
+import org.vexi.vexidev.editor.AbstractVexiEditor;
import org.vexi.vexidev.editor.model.ItemPointer;
import org.vexi.vexidev.editor.model.Location;
/*
@@ -62,9 +62,7 @@
public void linkExited() {}
public void linkActivated() {
- VexiEditor.open(pointer);
- //PyOpenAction open = new PyOpenAction();
- ///open.run(pointer);
+ AbstractVexiEditor.open(pointer);
}
public IRegion getHyperlinkRegion() {
Copied:
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/AbstractVexiEditor.java
(from rev 4816,
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/VexiEditor.java)
===================================================================
---
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/AbstractVexiEditor.java
(rev 0)
+++
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/AbstractVexiEditor.java
2015-10-26 22:19:54 UTC (rev 4817)
@@ -0,0 +1,199 @@
+package org.vexi.vexidev.editor;
+
+import java.io.File;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.ITextViewerExtension2;
+import org.eclipse.jface.text.TextSelection;
+import org.eclipse.jface.text.source.DefaultCharacterPairMatcher;
+import org.eclipse.jface.text.source.MatchingCharacterPainter;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.editors.text.TextEditor;
+import org.eclipse.ui.ide.IDE;
+import org.eclipse.ui.texteditor.ITextEditor;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+import org.vexi.vexidev.IConstants;
+import org.vexi.vexidev.VexidevPlugin;
+import org.vexi.vexidev.editor.model.ItemPointer;
+import org.vexi.vexidev.editor.model.Location;
+import org.vexi.vexidev.outline.VexiOutlinePage;
+
+
+public class AbstractVexiEditor extends TextEditor {
+ // REMARK - could this be made static? Disable disposing in which case
+ protected ColorManager colorManager = new ColorManager();
+
+ private VexiOutlinePage outline;
+
+
+ public void dispose() {
+ colorManager.dispose();
+ super.dispose();
+ }
+ @Override
+ public void createPartControl(Composite parent) {
+ super.createPartControl(parent);
+ MatchingCharacterPainter mcp = new MatchingCharacterPainter(
+ getSourceViewer(),
+ new DefaultCharacterPairMatcher(new char[] {'(', ')',
'{', '}', '[', ']'}));
+ mcp.setColor(colorManager.getColor(new RGB(125,125,125)));
+ ITextViewerExtension2 extension = (ITextViewerExtension2)
getSourceViewer();
+ extension.addPainter(mcp);
+ }
+
+ /*
+ protected void createActions() {
+ super.createActions();
+ IAction a = new FormatActionDelegate();
+ a.
+ createAction();
+ }
+
+
+ protected void editorContextMenuAboutToShow(IMenuManager menu) {
+ super.editorContextMenuAboutToShow(menu);
+ addAction(menu, "Format");
+ }*/
+
+
+ static private void showInEditor(
+ ITextEditor textEdit,
+ Location start,
+ Location end) {
+ try {
+ IDocument doc =
+ textEdit.getDocumentProvider().getDocument(
+ textEdit.getEditorInput());
+ int s;
+ s = start.toOffset(doc);
+ int e = end == null ? s : end.toOffset(doc);
+ TextSelection sel = new TextSelection(s, e - s);
+ textEdit.getSelectionProvider().setSelection(sel);
+ } catch (BadLocationException e1) {
+ VexidevPlugin.log(IStatus.ERROR, "Error setting
selection", e1);
+ }
+ }
+
+ /**
+ * Utility function that opens an editor on a given path.
+ *
+ * @return part that is the editor
+ */
+ static public IEditorPart doOpenEditor(IPath path, boolean activate) {
+ if (path == null)
+ return null;
+ VexidevPlugin plugin = VexidevPlugin.getDefault();
+ IWorkspace w = ResourcesPlugin.getWorkspace();
+ IFile file = w.getRoot().getFileForLocation(path);
+ IWorkbenchPage wp =
plugin.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ try {
+ if (file != null && file.exists()) {
+ // File is inside the workspace
+ VexiEditorInput input = new VexiEditorInput(file);
+ return IDE.openEditor(wp, input, IConstants.ID_EDITOR,
activate);
+ } else {
+ return openExternalFile(path, wp, activate);
+ }
+ } catch (Exception e) {
+ VexidevPlugin.log(IStatus.ERROR, "Unexpected error opening path
" + path.toString(), e);
+ return null;
+ }
+ }
+
+
+
+
+ private static IEditorPart openExternalFile(IPath location, IWorkbenchPage
wp, boolean activate) throws CoreException {
+ IWorkspace ws = ResourcesPlugin.getWorkspace();
+ IProject project = ws.getRoot().getProject("External Files");
+ if (!project.exists())
+ project.create(null);
+ if (!project.isOpen())
+ project.open(null);
+
+ //IWorkbenchWindow window =
PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+
+ IFile file = project.getFile(location.lastSegment());
+ file.createLink(location, IResource.NONE, null);
+ if (wp != null)
+ return IDE.openEditor(wp, file, activate);
+ return null;
+
+ // IStorage storage = new FileStorage(path);
+ // IEditorRegistry registry =
PlatformUI.getWorkbench().getEditorRegistry();
+ // IEditorDescriptor desc =
registry.getDefaultEditor(path.lastSegment());
+ // if (desc == null)
+ // desc =
registry.findEditor(IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID);
+ // IEditorInput input = new ExternalEditorInput(storage);
+ // return wp.openEditor(input, desc.getId());
+ }
+
+ static public void open(ItemPointer p) {
+ IEditorPart editor = null;
+ if (p.file instanceof IFile)
+ editor = doOpenEditor(((IFile)p.file).getFullPath(),
true);
+ else if (p.file instanceof IPath) {
+ editor = doOpenEditor((IPath)p.file, true);
+ }
+ else if (p.file instanceof File) {
+ Path path = new Path(((File)p.file).getAbsolutePath());
+ editor = doOpenEditor(path, true);
+ }
+ if (editor instanceof ITextEditor && p.start.line >= 0) {
+ showInEditor((ITextEditor)editor, p.start, p.end);
+ }
+ }
+
+ public void gotoLine(int l){
+ getSourceViewer().setTopIndex(l);
+ }
+
+
+ public int getTabWidth(){
+ return getSourceViewer().getTextWidget().getTabs();
+ }
+
+ public String[] getPrefix(String contentType) {
+ return
getSourceViewerConfiguration().getDefaultPrefixes(getSourceViewer(),
contentType);
+ }
+
+ public String getConfiguredDocumentPartitioning(){
+ return
getSourceViewerConfiguration().getConfiguredDocumentPartitioning(getSourceViewer());
+ }
+
+ public void doSave(IProgressMonitor monitor) {
+ super.doSave(monitor);
+ if (outline != null)
+ outline.update();
+ }
+
+ public Object getAdapter(Class key) {
+ if (key.equals(IContentOutlinePage.class)) {
+ IEditorInput input = getEditorInput();
+ if (input instanceof IFileEditorInput) {
+ outline = new VexiOutlinePage(this,((IFileEditorInput) input)
+ .getFile());
+ return outline;
+ }
+ }
+ return super.getAdapter(key);
+ }
+
+
+}
Added:
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/ScriptEditor.java
===================================================================
--- trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/ScriptEditor.java
(rev 0)
+++ trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/ScriptEditor.java
2015-10-26 22:19:54 UTC (rev 4817)
@@ -0,0 +1,16 @@
+package org.vexi.vexidev.editor;
+
+import org.vexi.vexidev.VexidevPlugin;
+
+public class ScriptEditor extends AbstractVexiEditor {
+
+
+ public ScriptEditor() {
+ super();
+ VexidevPlugin.trace("Script Editor created");
+ setSourceViewerConfiguration(new
ScriptEditorConfiguration(colorManager));
+ setDocumentProvider(new VexiDocumentProvider());
+ // initialize preferences
+ //VexidevPlugin.getDefault().getPluginPreferences();
+ }
+}
Property changes on:
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/ScriptEditor.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added:
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/ScriptEditorConfiguration.java
===================================================================
---
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/ScriptEditorConfiguration.java
(rev 0)
+++
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/ScriptEditorConfiguration.java
2015-10-26 22:19:54 UTC (rev 4817)
@@ -0,0 +1,91 @@
+package org.vexi.vexidev.editor;
+
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.ITextDoubleClickStrategy;
+import org.eclipse.jface.text.TextAttribute;
+import org.eclipse.jface.text.presentation.IPresentationReconciler;
+import org.eclipse.jface.text.presentation.PresentationReconciler;
+import org.eclipse.jface.text.rules.DefaultDamagerRepairer;
+import org.eclipse.jface.text.rules.Token;
+import org.eclipse.jface.text.source.ISourceViewer;
+import org.eclipse.jface.text.source.SourceViewerConfiguration;
+import org.vexi.vexidev.IConstants;
+
+public class ScriptEditorConfiguration extends SourceViewerConfiguration {
+ private VexiDoubleClickStrategy doubleClickStrategy;
+ private VSScanner scanner;
+ private ColorManager colorManager;
+
+ static final public String[] contentTypes = new String[] {
+ IDocument.DEFAULT_CONTENT_TYPE,
+ TemplateFilePartitionScanner.XML_COMMENT,
+ TemplateFilePartitionScanner.XML_TAG,
+ TemplateFilePartitionScanner.VS_COMMENT,
+ TemplateFilePartitionScanner.VS_ML_STRING
+
+ };
+
+ public ScriptEditorConfiguration(ColorManager colorManager) {
+ this.colorManager = colorManager;
+ }
+ public String[] getConfiguredContentTypes(ISourceViewer sourceViewer) {
+ return contentTypes;
+ }
+ public ITextDoubleClickStrategy getDoubleClickStrategy(
+ ISourceViewer sourceViewer,
+ String contentType) {
+ if (doubleClickStrategy == null)
+ doubleClickStrategy = new VexiDoubleClickStrategy();
+ return doubleClickStrategy;
+ }
+
+ protected VSScanner getScriptScanner() {
+ if (scanner == null) {
+ scanner = new VSScanner(colorManager);
+ scanner.setDefaultReturnToken(
+ new Token(
+ new TextAttribute(
+
colorManager.getPreferenceColor(IConstants.PREF_COL_DEFAULT))));
+ }
+ return scanner;
+ }
+
+ public IPresentationReconciler getPresentationReconciler(ISourceViewer
sourceViewer) {
+ PresentationReconciler reconciler = new
PresentationReconciler();
+
+ DefaultDamagerRepairer dr;
+
+ NonRuleBasedDamagerRepairer ndr;
+
+ dr = new DefaultDamagerRepairer(getScriptScanner());
+ reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE);
+ reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE);
+
+
+ ndr =
+ new NonRuleBasedDamagerRepairer(
+ new TextAttribute(
+
colorManager.getPreferenceColor(IConstants.PREF_COL_VS_COMMENT)));
+ reconciler.setDamager(ndr,
TemplateFilePartitionScanner.VS_COMMENT);
+ reconciler.setRepairer(ndr,
TemplateFilePartitionScanner.VS_COMMENT);
+
+
+ ndr = new NonRuleBasedDamagerRepairer(
+ new TextAttribute(
+
colorManager.getPreferenceColor(IConstants.PREF_COL_VS_STRING)));
+ reconciler.setDamager(ndr,
TemplateFilePartitionScanner.VS_ML_STRING);
+ reconciler.setRepairer(ndr,
TemplateFilePartitionScanner.VS_ML_STRING);
+
+ return reconciler;
+ }
+
+ static private final String[] COMMENT_PREFIXES = new String[]{"//"};
+
+ @Override
+ public String[] getDefaultPrefixes(ISourceViewer sourceViewer, String
contentType) {
+ if(IDocument.DEFAULT_CONTENT_TYPE.equals(contentType))
+ return COMMENT_PREFIXES;
+ return null;
+ }
+
+}
\ No newline at end of file
Property changes on:
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/ScriptEditorConfiguration.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Modified:
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/TemplateFilePartitionScanner.java
===================================================================
---
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/TemplateFilePartitionScanner.java
2015-10-06 21:51:22 UTC (rev 4816)
+++
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/TemplateFilePartitionScanner.java
2015-10-26 22:19:54 UTC (rev 4817)
@@ -15,21 +15,25 @@
public final static String VS_COMMENT = "__vs_comment";
+ public final static String VS_ML_STRING = "__vs_ml_string";
public TemplateFilePartitionScanner() {
IToken xmlComment = new Token(XML_COMMENT);
IToken commentToken = new Token(VS_COMMENT);
+ IToken mlstringToken = new Token(VS_ML_STRING);
- IPredicateRule[] rules = new IPredicateRule[3];
+ IPredicateRule[] rules = new IPredicateRule[]{
+ new MultiLineRule("<!--", "-->", xmlComment),
+ TagRule.create(),
+ new MultiLineRule("/*", "*/", commentToken),
+ new MultiLineRule("'''", "'''", mlstringToken),
+ new MultiLineRule("\"\"\"", "\"\"\"", mlstringToken)
+ };
- rules[0] = new MultiLineRule("<!--", "-->", xmlComment);
- rules[1] = TagRule.create();
-
-
- rules[2] = new MultiLineRule("/*", "*/", commentToken);
+
//VexiScript Strings
//rules[3] = new MultiLineRule("\"", "\"", stringToken);
Modified:
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/VSScanner.java
===================================================================
--- trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/VSScanner.java
2015-10-06 21:51:22 UTC (rev 4816)
+++ trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/VSScanner.java
2015-10-26 22:19:54 UTC (rev 4817)
@@ -55,6 +55,10 @@
}
rules.add(wordRule);
rules.add(new WordRule(new NumberDetector(), numberToken));
+ // REMARK done these as separate partitions instead since they
didn't seem
+ // to fully work here ...
+// rules.add(new MultiLineRule("'''", "'''", mlstringToken));
+// rules.add(new MultiLineRule("\"\"\"", "\"\"\"", mlstringToken));
rules.add(new SingleLineRule("\"", "\"", stringToken));
rules.add(new SingleLineRule("'", "'", stringToken));
Modified:
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/VexiEditor.java
===================================================================
--- trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/VexiEditor.java
2015-10-06 21:51:22 UTC (rev 4816)
+++ trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/VexiEditor.java
2015-10-26 22:19:54 UTC (rev 4817)
@@ -1,207 +1,16 @@
-package org.vexi.vexidev.editor;
-
-import java.io.File;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextViewerExtension2;
-import org.eclipse.jface.text.TextSelection;
-import org.eclipse.jface.text.source.DefaultCharacterPairMatcher;
-import org.eclipse.jface.text.source.MatchingCharacterPainter;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.editors.text.TextEditor;
-import org.eclipse.ui.ide.IDE;
-import org.eclipse.ui.texteditor.ITextEditor;
-import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
-import org.vexi.vexidev.IConstants;
-import org.vexi.vexidev.VexidevPlugin;
-import org.vexi.vexidev.editor.model.ItemPointer;
-import org.vexi.vexidev.editor.model.Location;
-import org.vexi.vexidev.outline.VexiOutlinePage;
-
-
-public class VexiEditor extends TextEditor {
-
- // REMARK - could this be made static? Disable disposing in which case
- private ColorManager colorManager = new ColorManager();
- private VexiOutlinePage outline;
-
-
- public VexiEditor() {
- super();
- VexidevPlugin.trace("VEXI EDITOR created");
- setSourceViewerConfiguration(new
VexiEditorConfiguration(colorManager));
- setDocumentProvider(new VexiDocumentProvider());
- // initialize preferences
- //VexidevPlugin.getDefault().getPluginPreferences();
- }
- public void dispose() {
- colorManager.dispose();
- super.dispose();
- }
- @Override
- public void createPartControl(Composite parent) {
- super.createPartControl(parent);
- MatchingCharacterPainter mcp = new MatchingCharacterPainter(
- getSourceViewer(),
- new DefaultCharacterPairMatcher(new char[] {'(', ')',
'{', '}', '[', ']'}));
- mcp.setColor(colorManager.getColor(new RGB(125,125,125)));
- ITextViewerExtension2 extension = (ITextViewerExtension2)
getSourceViewer();
- extension.addPainter(mcp);
- }
-
- /*
- protected void createActions() {
- super.createActions();
- IAction a = new FormatActionDelegate();
- a.
- createAction();
- }
-
-
- protected void editorContextMenuAboutToShow(IMenuManager menu) {
- super.editorContextMenuAboutToShow(menu);
- addAction(menu, "Format");
- }*/
-
-
- static private void showInEditor(
- ITextEditor textEdit,
- Location start,
- Location end) {
- try {
- IDocument doc =
- textEdit.getDocumentProvider().getDocument(
- textEdit.getEditorInput());
- int s;
- s = start.toOffset(doc);
- int e = end == null ? s : end.toOffset(doc);
- TextSelection sel = new TextSelection(s, e - s);
- textEdit.getSelectionProvider().setSelection(sel);
- } catch (BadLocationException e1) {
- VexidevPlugin.log(IStatus.ERROR, "Error setting
selection", e1);
- }
- }
-
- /**
- * Utility function that opens an editor on a given path.
- *
- * @return part that is the editor
- */
- static public IEditorPart doOpenEditor(IPath path, boolean activate) {
- if (path == null)
- return null;
- VexidevPlugin plugin = VexidevPlugin.getDefault();
- IWorkspace w = ResourcesPlugin.getWorkspace();
- IFile file = w.getRoot().getFileForLocation(path);
- IWorkbenchPage wp =
plugin.getWorkbench().getActiveWorkbenchWindow().getActivePage();
- try {
- if (file != null && file.exists()) {
- // File is inside the workspace
- VexiEditorInput input = new VexiEditorInput(file);
- return IDE.openEditor(wp, input, IConstants.ID_EDITOR,
activate);
- } else {
- return openExternalFile(path, wp, activate);
- }
- } catch (Exception e) {
- VexidevPlugin.log(IStatus.ERROR, "Unexpected error opening path
" + path.toString(), e);
- return null;
- }
- }
-
-
-
-
- private static IEditorPart openExternalFile(IPath location, IWorkbenchPage
wp, boolean activate) throws CoreException {
- IWorkspace ws = ResourcesPlugin.getWorkspace();
- IProject project = ws.getRoot().getProject("External Files");
- if (!project.exists())
- project.create(null);
- if (!project.isOpen())
- project.open(null);
-
- //IWorkbenchWindow window =
PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-
- IFile file = project.getFile(location.lastSegment());
- file.createLink(location, IResource.NONE, null);
- if (wp != null)
- return IDE.openEditor(wp, file, activate);
- return null;
-
- // IStorage storage = new FileStorage(path);
- // IEditorRegistry registry =
PlatformUI.getWorkbench().getEditorRegistry();
- // IEditorDescriptor desc =
registry.getDefaultEditor(path.lastSegment());
- // if (desc == null)
- // desc =
registry.findEditor(IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID);
- // IEditorInput input = new ExternalEditorInput(storage);
- // return wp.openEditor(input, desc.getId());
- }
-
- static public void open(ItemPointer p) {
- IEditorPart editor = null;
- if (p.file instanceof IFile)
- editor = doOpenEditor(((IFile)p.file).getFullPath(),
true);
- else if (p.file instanceof IPath) {
- editor = doOpenEditor((IPath)p.file, true);
- }
- else if (p.file instanceof File) {
- Path path = new Path(((File)p.file).getAbsolutePath());
- editor = doOpenEditor(path, true);
- }
- if (editor instanceof ITextEditor && p.start.line >= 0) {
- showInEditor((ITextEditor)editor, p.start, p.end);
- }
- }
-
- public void gotoLine(int l){
- getSourceViewer().setTopIndex(l);
- }
-
-
- public int getTabWidth(){
- return getSourceViewer().getTextWidget().getTabs();
- }
-
- public String[] getPrefix(String contentType) {
- return
getSourceViewerConfiguration().getDefaultPrefixes(getSourceViewer(),
contentType);
- }
-
- public String getConfiguredDocumentPartitioning(){
- return
getSourceViewerConfiguration().getConfiguredDocumentPartitioning(getSourceViewer());
- }
-
- public void doSave(IProgressMonitor monitor) {
- super.doSave(monitor);
- if (outline != null)
- outline.update();
- }
-
- public Object getAdapter(Class key) {
- if (key.equals(IContentOutlinePage.class)) {
- IEditorInput input = getEditorInput();
- if (input instanceof IFileEditorInput) {
- outline = new VexiOutlinePage(this,((IFileEditorInput) input)
- .getFile());
- return outline;
- }
- }
- return super.getAdapter(key);
- }
-
-
-}
+package org.vexi.vexidev.editor;
+
+import org.vexi.vexidev.VexidevPlugin;
+
+public class VexiEditor extends AbstractVexiEditor {
+
+
+ public VexiEditor() {
+ super();
+ VexidevPlugin.trace("VEXI EDITOR created");
+ setSourceViewerConfiguration(new
VexiEditorConfiguration(colorManager));
+ setDocumentProvider(new VexiDocumentProvider());
+ // initialize preferences
+ //VexidevPlugin.getDefault().getPluginPreferences();
+ }
+}
Property changes on:
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/VexiEditor.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Modified:
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/VexiEditorConfiguration.java
===================================================================
---
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/VexiEditorConfiguration.java
2015-10-06 21:51:22 UTC (rev 4816)
+++
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/VexiEditorConfiguration.java
2015-10-26 22:19:54 UTC (rev 4817)
@@ -22,7 +22,7 @@
TemplateFilePartitionScanner.XML_COMMENT,
TemplateFilePartitionScanner.XML_TAG,
TemplateFilePartitionScanner.VS_COMMENT,
- //TemplateFilePartitionScanner.VS_STRING
+ TemplateFilePartitionScanner.VS_ML_STRING
};
@@ -40,7 +40,7 @@
return doubleClickStrategy;
}
- protected VSScanner getXMLScanner() {
+ protected VSScanner getScriptScanner() {
if (scanner == null) {
scanner = new VSScanner(colorManager);
scanner.setDefaultReturnToken(
@@ -69,9 +69,6 @@
reconciler.setDamager(dr, TemplateFilePartitionScanner.XML_TAG);
reconciler.setRepairer(dr,
TemplateFilePartitionScanner.XML_TAG);
- dr = new DefaultDamagerRepairer(getXMLScanner());
- reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE);
- reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE);
NonRuleBasedDamagerRepairer ndr =
new NonRuleBasedDamagerRepairer(
@@ -80,6 +77,11 @@
reconciler.setDamager(ndr,
TemplateFilePartitionScanner.XML_COMMENT);
reconciler.setRepairer(ndr,
TemplateFilePartitionScanner.XML_COMMENT);
+ dr = new DefaultDamagerRepairer(getScriptScanner());
+ reconciler.setDamager(dr, IDocument.DEFAULT_CONTENT_TYPE);
+ reconciler.setRepairer(dr, IDocument.DEFAULT_CONTENT_TYPE);
+
+ // REMARK found that we need to do the vexi string things here
ndr =
new NonRuleBasedDamagerRepairer(
new TextAttribute(
@@ -87,13 +89,12 @@
reconciler.setDamager(ndr,
TemplateFilePartitionScanner.VS_COMMENT);
reconciler.setRepairer(ndr,
TemplateFilePartitionScanner.VS_COMMENT);
- /*ndr =
- new NonRuleBasedDamagerRepairer(
+
+ ndr = new NonRuleBasedDamagerRepairer(
new TextAttribute(
colorManager.getPreferenceColor(IConstants.PREF_COL_VS_STRING)));
- reconciler.setDamager(ndr,
TemplateFilePartitionScanner.VS_STRING);
- reconciler.setRepairer(ndr,
TemplateFilePartitionScanner.VS_STRING);*/
-
+ reconciler.setDamager(ndr,
TemplateFilePartitionScanner.VS_ML_STRING);
+ reconciler.setRepairer(ndr,
TemplateFilePartitionScanner.VS_ML_STRING);
return reconciler;
}
Modified:
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/actions/IndentActionDelegate.java
===================================================================
---
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/actions/IndentActionDelegate.java
2015-10-06 21:51:22 UTC (rev 4816)
+++
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/actions/IndentActionDelegate.java
2015-10-26 22:19:54 UTC (rev 4817)
@@ -15,12 +15,12 @@
import org.ibex.util.XML.Exn;
import org.vexi.format.Indenter;
import org.vexi.vexidev.VexidevPlugin;
-import org.vexi.vexidev.editor.VexiEditor;
+import org.vexi.vexidev.editor.AbstractVexiEditor;
public class IndentActionDelegate implements IEditorActionDelegate {
// Always points to the current editor
- protected VexiEditor targetEditor;
+ protected AbstractVexiEditor targetEditor;
protected IDocument doc;
@@ -32,8 +32,8 @@
public IndentActionDelegate(IDocument doc) {this.doc = doc;}
public void setActiveEditor(IAction action, IEditorPart targetEditor) {
- if (targetEditor instanceof VexiEditor) {
- this.targetEditor = (VexiEditor) targetEditor;
+ if (targetEditor instanceof AbstractVexiEditor) {
+ this.targetEditor = (AbstractVexiEditor) targetEditor;
this.doc =
this.targetEditor.getDocumentProvider().getDocument(
targetEditor.getEditorInput());
this.selection = (ITextSelection) this.targetEditor
Modified:
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/actions/ToggleCommentActionDelegate.java
===================================================================
---
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/actions/ToggleCommentActionDelegate.java
2015-10-06 21:51:22 UTC (rev 4816)
+++
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/editor/actions/ToggleCommentActionDelegate.java
2015-10-26 22:19:54 UTC (rev 4817)
@@ -26,7 +26,7 @@
import org.ibex.util.XML;
import org.vexi.format.Indenter;
import org.vexi.vexidev.VexidevPlugin;
-import org.vexi.vexidev.editor.VexiEditor;
+import org.vexi.vexidev.editor.AbstractVexiEditor;
/**
@@ -36,7 +36,7 @@
public class ToggleCommentActionDelegate implements IEditorActionDelegate {
// Always points to the current editor
- protected VexiEditor targetEditor;
+ protected AbstractVexiEditor targetEditor;
private ITextOperationTarget operationTarget;
protected IDocument doc;
@@ -48,8 +48,8 @@
public ToggleCommentActionDelegate(IDocument doc) {this.doc = doc;}
public void setActiveEditor(IAction action, IEditorPart targetEditor) {
- if (targetEditor instanceof VexiEditor) {
- this.targetEditor = (VexiEditor) targetEditor;
+ if (targetEditor instanceof AbstractVexiEditor) {
+ this.targetEditor = (AbstractVexiEditor) targetEditor;
this.doc =
this.targetEditor.getDocumentProvider().getDocument(
targetEditor.getEditorInput());
this.selection = (ITextSelection) this.targetEditor
Modified:
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/outline/VexiOutlinePage.java
===================================================================
---
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/outline/VexiOutlinePage.java
2015-10-06 21:51:22 UTC (rev 4816)
+++
trunk/tools/org.vexi.vexidev/src/org/vexi/vexidev/outline/VexiOutlinePage.java
2015-10-26 22:19:54 UTC (rev 4817)
@@ -10,14 +10,14 @@
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
import org.vexi.vexidev.VexidevPlugin;
-import org.vexi.vexidev.editor.VexiEditor;
+import org.vexi.vexidev.editor.AbstractVexiEditor;
public class VexiOutlinePage extends ContentOutlinePage {
IFile file;
- VexiEditor vexiEditor;
+ AbstractVexiEditor vexiEditor;
- public VexiOutlinePage(VexiEditor vexiEditor, IFile file) {
+ public VexiOutlinePage(AbstractVexiEditor vexiEditor, IFile file) {
this.file = file;
this.vexiEditor = vexiEditor;
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
_______________________________________________
Vexi-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/vexi-svn