xtext格式化程序问题,包括换行,关键字替换

时间:2013-09-04 20:55:28

标签: xtext

我对xtext的格式化程序几乎没有疑问。我正在处理类似SQL的语言。

  • 我正在使用三个默认的setLinewrap()命令进行注释。但是它会在SL_COMMENT
  • 之后插入一个空格

UPDATE plays SET scores = scores - [ 12, 21 ] WHERE id = '123-afde'; // removes all occurences of 12 and 21 from scores

SELECT * FROM myTable WHERE t = now(); 

成为

UPDATE plays SET scores = scores - [ 12, 21 ] WHERE id = '123-afde';
// removes all occurences of 12 and 21 from scores
 SELECT * FROM myTable WHERE t = now ( );

我可以删除多余的空间吗?

  • 如果行太长<=>,如何在特定地点包裹?我试过了setLinewrap(0, 1, 1)但是没有用。

例如

UPDATE table SET a = a + 1 WHERE a > 0;

UPDATE tablelongna SET c = c + 1 WHERE c IN (1, 2, 3, 4, 4, 5, 6, 7, 0, 7, 8);

成为

UPDATE table SET a = a + 1 WHERE a > 0;

UPDATE tablelongna SET c = c + 1 
WHERE c IN (1, 2, 3, 4, 4, 5, 6, 7, 0, 7, 8);
  • 我使用setLinewrap(2).after(T_SEMICOLON);,它适用于通常情况。但是对于批量查询
像这样

BEGIN BATCH
    UPDATE ......;

    UPDATE ......;

APPLY BATCH;

NEXT QUERY.....

我尝试使用setLinewrap(1).before(K_APPLY);来覆盖它,但它不起作用。无法使用setNoSpace()setNoLinewrap(),否则APPLY BATCH将无法使用自己的行。

  • 我可以在格式化程序中将所有关键字替换为大写吗?恩。 select * from foo;SELECT * FROM foo;。看起来所有API只能操作空格/换行符?

  • 不确定是不是我的问题,我无法在调试模式下热插拔格式化程序。这样我就不得不退出另一个Eclipse实例并再次运行以查看更改。

0 个答案:

没有答案