CnPack Forum


 
Subject: 代码格式化专家设置空格数只能调到1,最好能调到0,代表不需要空格
wuguan
新警察
Rank: 1



UID 331048
Digest Posts 0
Credits 26
Posts 11
点点分 26
Reading Access 10
Registered 2016-7-8
Status Offline
Post at 2016-7-8 01:12  Profile | Blog | P.M. 
代码格式化专家设置空格数只能调到1,最好能调到0,代表不需要空格

代码格式化专家是D6上用得很开心的工具了,但其功能设置有点笨笨的,那些空格数,有时想不要空格,为什么不能调到0呢?只能调到1至少有一只空格,其实应该也要可以调到0,不需要空格,以满足各种特殊口味的需要!
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6750
Posts 3551
点点分 6750
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2016-7-8 06:09  Profile | Blog | P.M. 
好,下一每日构建版。
Top
wuguan
新警察
Rank: 1



UID 331048
Digest Posts 0
Credits 26
Posts 11
点点分 26
Reading Access 10
Registered 2016-7-8
Status Offline
Post at 2016-7-8 09:11  Profile | Blog | P.M. 
回复 #2 Passion 的帖子

太好了!!还有一个,代码编辑器扩展专家设置中,最好有可以自定义缩进的空格数的设置,现在只能是默认2空格,其实这个也最好能自定义0-?个空格。这样的自由度就更高啦!
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6750
Posts 3551
点点分 6750
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2016-7-8 10:03  Profile | Blog | P.M. 
上面这个使用的是IDE的缩进空格值,因为和IDE的缩进行为保持一致,调IDE的就行了。
Top
wuguan
新警察
Rank: 1



UID 331048
Digest Posts 0
Credits 26
Posts 11
点点分 26
Reading Access 10
Registered 2016-7-8
Status Offline
Post at 2016-7-8 14:43  Profile | Blog | P.M. 
回复 #4 Passion 的帖子

非常感谢!补充具体操作方法如下:
菜单->Tools->Editor Options->Editor Properties窗口的General页->Block indent编辑框!
Top
wuguan
新警察
Rank: 1



UID 331048
Digest Posts 0
Credits 26
Posts 11
点点分 26
Reading Access 10
Registered 2016-7-8
Status Offline
Post at 2016-7-9 14:15  Profile | Blog | P.M. 
最新构建版试了,果然实现了功能!赞美!
用的是Delphi 6

请看以下代码:
procedure TForm1.Button1Click(Sender: TObject);
var
A: integer;
begin
A:=3+5*5;
messagebox(Form1.Handle, 'a', '123', 0);
A:=a+A;
Form1.Caption:=inttostr(A);
end;

最新版成功地实现了:=,+,*这些符合两边可以设置没有空格,并且行缩进为可以设为1空格。
但是像sender: ,A: 又或者函数参数内的,号分隔符后的空格数固定为1,这个好像不能更改。





还有一个是:
根据IDE内部符号表来纠正标识符的大小写 这个功能有点意思。

Ctrl+W 格式化当前源文件或选择区。

第3行,好像只有光标处于integer这条字符上面,才能被正确地格式化为:Integer,其它位置或格式化当前源文件都对其无效。
而下面的messagebox,A:=a+A;则只有光标处于begin到end;区域中时,才能被正确格式化为MessageBox,A:=A+A;
而inttostr则永远都不会被格式化为IntToStr

以上使用格式化当前源文件,或选择一片区域时,想纠正标识符都不是那么有效,好像只有确实想纠正某一段内标识符时,当标必须放到该段内,才生效。

所以说[根据IDE内部符号表来纠正标识符的大小写]有点奇怪,请问设计的初衷就是这样子的吗?



还有的是在单元尾一般都有end.结尾,当选择一个区域的文本进行格式化的时候,只要选到了这个end.就会出现错误指示。

---------------------------
错误
---------------------------
格式化错误(0,0):未知错误。



当前标识符:''''
---------------------------
确定   
---------------------------
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6750
Posts 3551
点点分 6750
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2016-7-11 09:50  Profile | Blog | P.M. 
感谢详细报告,我挨个查一下。
Top
wuguan
新警察
Rank: 1



UID 331048
Digest Posts 0
Credits 26
Posts 11
点点分 26
Reading Access 10
Registered 2016-7-8
Status Offline
Post at 2016-7-11 15:23  Profile | Blog | P.M. 
回复 #7 Passion 的帖子


再补充一下:>符后的空格数设置也是
if A=5 then
  if A> 5 then   //这里也不能为0空格
   if A<5 then
    if A>=5 then
     if A<=5 then
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6750
Posts 3551
点点分 6750
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2016-7-11 22:54  Profile | Blog | P.M. 
逗号、冒号、分号等在Pascal语言中不作为运算符使用,因此是固定格式的前面不留空格后面留一个空格,不遵循双目运算符的前后空格规则。
IDE中能取到的符号列表和代码上下文有比较大的关系,在格式化时能取到的符号表很有限,许多局部变量都没法取出来,因此格式化时没能覆盖每一处代码的每一处标识符,这是一个局限。短期内无法修复。

if A> 5 then,这地方的大于号和泛型的<>被CnPack给混淆了,而泛型的<>后面需要用空格来分隔,所以出现了这个问题,我们想想办法看如何处理。
end.的选择问题能复现,我们也在看如何修复。
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6750
Posts 3551
点点分 6750
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2016-7-13 12:05  Profile | Blog | P.M. 
> 后带空格的问题,最新844版已经修复。可以下载试一试。end.的选择问题比较奇怪,还没找到线索。
Top
wuguan
新警察
Rank: 1



UID 331048
Digest Posts 0
Credits 26
Posts 11
点点分 26
Reading Access 10
Registered 2016-7-8
Status Offline
Post at 2016-7-16 10:11  Profile | Blog | P.M. 
回复 #9 Passion 的帖子

逗号、冒号、分号等在Pascal语言中不作为运算符使用,因此是固定格式的前面不留空格后面留一个空格,不遵循双目运算符的前后空格规则。
---------------------------
能够另单独开一个设置对于这种标点符号前后的空格进行设置吗?谢谢!



if A> 5 then,这地方的大于号和泛型的<>被CnPack给混淆了,而泛型的<>后面需要用空格来分隔,所以出现了这个问题,我们想想办法看如何处理
---------------------------
嗯,已下载试用 好!cnpack完善又进了一步! 赞美!
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6750
Posts 3551
点点分 6750
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2016-8-2 22:49  Profile | Blog | P.M. 
end.的选择问题846版本已修复。可以下载试用一下。
Top
wuguan
新警察
Rank: 1



UID 331048
Digest Posts 0
Credits 26
Posts 11
点点分 26
Reading Access 10
Registered 2016-7-8
Status Offline
Post at 2016-8-3 19:54  Profile | Blog | P.M. 
回复 #12 Passion 的帖子

恭喜问题解决。

虽然啰嗦!但还是希望对于, :这两个符号后的空格可以设为0。呵呵!!因为delphi本身是允许这样子写的。

另外还有问题报告:

1. 对于or and 这类英文的运算符号,设为空格数为0的时候,这个才是要真正考虑不受为0影响。
例如A:=5 or 3;
一格式化之后
A:=5or3;
因为delphi不能识别

2.按下[设置CnpackIDE专家工具] 之后确认,回到代码编辑器,小键盘就不能用了。不知是不是我这台电脑的特例。
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6750
Posts 3551
点点分 6750
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2016-8-3 22:40  Profile | Blog | P.M. 
由于精力所限,原则上我们不增加新的设置选项了。
不过对于and or等双目运算符,的确要考虑到空格数为0时的问题,这个我修复一下。
Top
wuguan
新警察
Rank: 1



UID 331048
Digest Posts 0
Credits 26
Posts 11
点点分 26
Reading Access 10
Registered 2016-7-8
Status Offline
Post at 2016-8-12 13:38  Profile | Blog | P.M. 
嗯!已试用最新!问题已被解决!非常有用!
Top
 




All times are GMT++8, the time now is 2024-3-28 20:45

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.010019 second(s), 8 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP