明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 57046|回复: 255

[【不死猫】] 任意Lisp编辑器实现函数自动完成功能(中文注解方法+制作程序+配置文件+模式切换方法)

  [复制链接]
发表于 2013-11-27 10:58:54 | 显示全部楼层 |阅读模式
本帖最后由 不死猫 于 2013-11-30 15:13 编辑

本文7楼在努力中。。。

猫老师配置库特点:
1 支持代码输入过程中任意字母数量都会显示函数;
2 支持VL- VLA- VLAX-函数类;
3 支持括号自动输入;
4 中文状态下从第二备选词开始,不影响平时打字;
5 通过vbs简单语句切换编程模式和正常办公模式;
6 支持中文注解!



==========下面都是搜狗输入法的内容(支持中文注解)============
==================================================
增加中文注释的方法是:新起一行作为注释
见下图 第一个(abs num)是上屏内容,下面的;abs求值是注解。上屏的话因为带有分号不影响程序执行。
也可以改为 ;|abs求值|; 在程序中间注释也不影响程序执行了。
或者
大家可以自定义。

原理:
现在的输入法都支持自定义短语的功能


以搜狗拼音输入法为例(搜狗也有五笔输入法)

===========版本1支持Autolisp===========
初步整理了语法库文件和制作语法库文件的程序代码

复制上面内容,【设置】【高级】【自定义短语设置】【直接编辑配置文件】粘贴在下面即可。
语法库文件制作程序代码:


这样
不管你用的哪种编辑器
都可以实现函数的自动完成和联想功能了。

==========不影响中文的办法==========
如果你怕影响平时中文的输入,很简单,把我的配置文件中的  ,1= 全部替换为 ,2=
这样平时输入第一个都是中文后面的才是函数,基本不影响你了.

==========我是版本2分割线============
经测试 大部分输入法不支持 vl- 和 vla-后面的 - 符号
因此猫老师特别调整了配置文件
第二版支持VL-和VLA-等函数
输入vl-string->list 函数的时候  你需要输入 vlst 即可 (注意中间的 - 就直接省略掉 还节约了输入时间!)
当然我提供的语法库lisp程序你可以稍稍修改即可生成配置文件.
喜欢偷懒的同学下载就顶一下好了.

==========好用在这里===============



==========我是版本3分割线=============
懒人版  本版本在写函数的时候()自动写上去,并且把函数降为输入法的第二备选词,免得影响我们日常输入.




==========日常工作和编程模式快捷键切换========
准备两个不同的配置文件放到输入法目录下,
一个是我们编程用的Phrases_Lisp.ini (里面是猫老师上面提供的配置文件)
一个是我们日常工作用的空的Phrases_Normal.ini (这里面不含lisp函数库,是原始的配置文件)

下面代码保存为lisp编程模式.vbs
  1. Set Fso = CreateObject("Scripting.FileSystemObject")
  2. path = "C:\Users\Administrator\AppData\LocalLow\SogouPY.users\00000001"
  3. fso.copyfile Path & "\Phrases_Lisp.ini",Path & "\Phrases.ini",true
复制代码
下面代码保存为日常工作.vbs
  1. Set Fso = CreateObject("Scripting.FileSystemObject")
  2. path = "C:\Users\Administrator\AppData\LocalLow\SogouPY.users\00000001"
  3. fso.copyfile Path & "\Phrases_Normal.ini",Path & "\Phrases.ini",true
复制代码

然后在桌面创建他们的快捷方式(不是源文件),并且在属性中设置自定义快捷键,就可以实现日常工作和编程模式的快速切换了.





-------用户自定义函数----------------
在设置-高级-自定义短语中

添加新的定义

例如

这样在以后输入法状态下就可以实现自动完成功能了




在中文状态下配合 英文标点  即可完成中文输入法下的编程了





==========下面都是百度输入法的内容============
==========由浮世小半生推荐=================
这百度输入法可以实现显示内容与输入内容分开,
实现中文注解显示,英文函数上屏的强大功能!
但是目前发现的百度输入法的bug包括:
1 不支持一个缩写多个单词
2 不支持VL VLA VLAX类
因此大家可以根据需要选择



前两行是输入上屏的结果,而选项显示的则是带有中文注解的内容!









本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

今天又有更新啊!好,太好了.vbs 可不可以让打开cad 或指定的编辑就执行"Lisp编程模式.vbs" 退出就执行 "日常工作模式.vbs"这个不是更先进?  发表于 2013-11-28 20:24
哦,那个帖子才看到,是一个思路.这个方法很早就讨论过,正好今天在群里讨论就顺手写了.  发表于 2013-11-27 23:05
好像首提是邹锋提的,http://bbs.mjtd.com/thread-108474-1-1.html  发表于 2013-11-27 20:09

评分

参与人数 7明经币 +7 金钱 +90 收起 理由
tigcat + 1 很给力!
CAD智能@未来 + 20 很给力!
仲文玉 + 1 赞一个!
zctao1966 + 1 很给力!
mccad + 1 + 20 赞一个!
Gu_xl + 2 很给力!
【KAIXIN】 + 1 + 50 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

发表于 2013-11-27 21:28:17 | 显示全部楼层
使用下面的函数可以输出所有加载的自定义函数的搜狗词库,包括加载的ARX定义函数 !然后按猫老师的方法将词库加到搜狗输入法里!
  1. ;;输出所有加载的自定义函数搜狗词库,包括加载的ARX定义函数 By Gu_xl
  2. (defun c:sgck (/ PARSE LST FN F S1 N)
  3.   (defun Parse (str del / pos lst)
  4.     (if  (/= "" str)
  5.       (progn
  6.   (while (setq pos (vl-string-search del str))
  7.     (setq  lst (cons (substr str 1 pos) lst)
  8.     str (substr str (+ pos 1 (strlen del)))
  9.     )
  10.   )
  11.   (if (= " " Del)
  12.     (vl-remove "" (reverse (cons str lst)))
  13.     (reverse (cons str lst))
  14.   )
  15.       )
  16.     )
  17.   )
  18.   (setq  lst
  19.    (vl-sort
  20.      (vl-remove-if
  21.        (function
  22.          (lambda (name /)
  23.      (or
  24.        (= (substr name 1 2) "c:")
  25.        (< (strlen name) 3)
  26.        (not
  27.          (or
  28.            (eq 'SUBR (type (eval (read name))))
  29.            (eq 'USUBR (type (eval (read name))))
  30.            (eq 'EXRXSUBR (type (eval (read name))))
  31.          )
  32.        )
  33.      )
  34.          )
  35.        )
  36.        (mapcar
  37.          '(lambda (x) (strcase x t))
  38.          (atoms-family 1)
  39.        )
  40.      )
  41.      '<
  42.    )
  43.   )
  44.   (setq fn (getfiled "" "myphrases.ini" "ini" 1))
  45.   (if fn
  46.     (progn
  47.       (setq f (open fn "w"))   
  48.       (foreach s lst
  49.   (setq s1 (VL-LIST->STRING (vl-remove-if '(lambda (x) (member x '(42 43 45 58 60 61 62 95))) (VL-STRING->LIST s))))
  50.   (if (VL-STRING-SEARCH "-" s)
  51.     (progn
  52.       (WRITE-LINE
  53.         (strcat
  54.       (apply 'strcat (mapcar '(lambda (x) (substr x 1 1)) (Parse s "-")))
  55.       ",3=" s) f)
  56.       )
  57.     )
  58.   
  59.   (setq n (strlen s1))
  60.   
  61.   (while (> n 0)
  62.     (WRITE-LINE (strcat (substr s1 1 n) ",3=" s) f)
  63.     (setq n (1- n))
  64.     )
  65.   )
  66.       (close f)
  67.       (startapp "notepad.exe" fn)
  68.       )
  69.     )
  70.   (princ)
  71.   )

评分

参与人数 1明经币 +1 收起 理由
不死猫 + 1 赞一个!

查看全部评分

发表于 2013-11-30 11:53:12 | 显示全部楼层
难道楼上的都试验成功了?我试验失败了。

试验过程如下:
原来老猫给的代码是搜狗用户有个人用户登录的情况下才可以的,因我没有搜狗用户登录,所以我修改代码,将C:\Users\DELL\AppData\LocalLow\SogouPY.users\00000001改为
C:\Users\DELL\AppData\LocalLow\SogouPY  
将Phrases_Lisp.ini  和Phrases_Normal.ini 放在C:\Users\DELL\AppData\LocalLow\SogouPY  工作目录下。

点击lisp编程模式.vbs 和日常工作.vbs 进行试验,在word中尝试输入失败,但在C:\Users\DELL\AppData\LocalLow\SogouPY 内打开Phrases.ini看, 切换是成功的!无奈。输入法配制中高级-自定义短语设置中打开,粘贴,关闭,应用,确定,则在word中尝试输入是成功的。

我以为是和用户是否登录有关,又注册搜狗用户,改回原目录C:\Users\DELL\AppData\LocalLow\SogouPY.users\00000001,还是失败了!
唯一跟老猫说的不一致的是,我没有在桌面创建快捷方式,而是直接点击lisp编程模式.vbs 和日常工作.vbs 原文件。我想lisp编程模式.vbs 和日常工作.vbs 的功能就是修改Phrases.ini的代码,应该没有其它功能了。修改代码是成功的,但搜狗没有实时监测Phrases.ini的变化!只能手动修改,那太麻烦了!

另外一个不好的地方是中文输入+英文() ,这个也要手动改,不好。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

貌似有这个问题,搜狗把字库读取到内存中,但是你更新的时候,他没有重新读取到内存。  发表于 2013-11-30 16:09
发表于 2021-8-7 15:32:10 | 显示全部楼层
fl202 发表于 2013-11-30 11:53
难道楼上的都试验成功了?我试验失败了。

试验过程如下:

翻了这么多页,就是想找找为什么失败?终于找到了答案,谢谢fl202大侠分享出来
发表于 2023-1-7 17:28:23 | 显示全部楼层
大赞,实现的方法很巧妙,另辟蹊径啊!
发表于 2013-11-27 11:01:56 | 显示全部楼层
好顶赞
发表于 2013-11-27 11:09:26 | 显示全部楼层
非常好,要是能直接整出配置文件,就更好了。
哈哈

点评

已整理好了 一楼下载  发表于 2013-11-27 16:12
发表于 2013-11-27 11:15:37 | 显示全部楼层
一大福利啊。。。
发表于 2013-11-27 12:01:12 | 显示全部楼层
好办法,等有时间,好好整整。
发表于 2013-11-27 12:58:19 | 显示全部楼层
太强大了,又可以偷懒了
 楼主| 发表于 2013-11-27 15:15:25 | 显示全部楼层
本帖最后由 不死猫 于 2013-11-30 15:11 编辑



这东西看着简单,做起来还是有点小麻烦。
有机会再搞一搞吧。
想要完美的输入法,只能自己定制了,

之前跟几家输入法反馈建议,怕是没什么下文了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2013-11-27 15:43:37 | 显示全部楼层
想法很前卫.膜拜大神.
发表于 2013-11-27 15:45:36 | 显示全部楼层
猫,你就是我的神!
发表于 2013-11-27 16:18:44 | 显示全部楼层
支持!虽然很久前有这种想法,但一直没去做
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-15 08:56 , Processed in 0.243152 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表