2016-11-03 7 views

ответ

1

Посмотрите на хороший особенность autoedit

public class MyDslDefaultAutoEditStrategyProvider extends DefaultAutoEditStrategyProvider { 

    @Inject 
    protected Provider<ShortCutEditStrategy> shortCut; 

    @Override 
    protected void configureStringLiteral(IEditStrategyAcceptor acceptor) { 
     acceptor.accept(shortCut.get().configure("->", "\\rightarrow"), IDocument.DEFAULT_CONTENT_TYPE); 
    } 

} 

и не забудьте связывающую

override Class<? extends AbstractEditStrategyProvider> bindAbstractEditStrategyProvider() { 
    MyDslDefaultAutoEditStrategyProvider 
} 
+0

Я просто заменил «\\ rightarrow» символом кода Unicode :-) – Johan

0

Это довольно просто, используя JavaScript. Этот простой сценарий должен помочь:

replaceText('->', '\rightarrow'); 

var replaceText = function (search, replaceWith) { 
    var area = document.getElementById("area"); 

    var getCount = function (str, search) { 
     return str.split(search).length - 1; 
    }; 
    if (area.value.indexOf(search) >= 0) { 
      var start = area.selectionStart; 
      var end = area.selectionEnd; 
      var textBefore = area.value.substr(0, end); 
      var lengthDiff = (replaceWith.length - search.length) * getCount(textBefore, search); 
      area.value = area.value.replace(search, replaceWith); 
      area.selectionStart = start + lengthDiff; 
      area.selectionEnd = end + lengthDiff; 
     } 
    }; 

Этот полный текст может быть легко адаптирован для вашего использования - вот полный пример.

<textarea id="area"></textarea> 



<script> 
function keyDownTextField() { 
replaceText('->', '\u2192'); 
} 


var replaceText = function (search, replaceWith) { 
var area = document.getElementById("area"); 

var getCount = function (str, search) { 
    return str.split(search).length - 1; 
}; 

    if (area.value.indexOf(search) >= 0) { 
      var start = area.selectionStart; 
      var end = area.selectionEnd; 
      var textBefore = area.value.substr(0, end); 
      var lengthDiff = (replaceWith.length - search.length) * getCount(textBefore, search); 
      area.value = area.value.replace(search, replaceWith); 
      area.selectionStart = start + lengthDiff; 
      area.selectionEnd = end + lengthDiff; 
     } 
    }; 


    document.addEventListener("keydown", keyDownTextField, false); 

</script> 
+0

это о javascript или о xtext? –

+0

Вопрос про Xtext в Eclipse – Johan

+0

@ Johan- извините, вы не сделали этого ясно – Zackh105

Смежные вопросы