1

我对 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 实例并再次运行以查看更改。

4

0 回答 0