Coder Social home page Coder Social logo

Comments (18)

tumashu avatar tumashu commented on August 18, 2024

原来 emacs-eim 有类似的功能,我fork的时候,把与这个功能相关的代码删除了,有两个原因:

  1. 相关的代码比较复杂,我看不懂,更别说维护了
  2. 功能开启后,和auto-complete,company-mode等冲突。
  3. overlay中文往往对不齐,太难看了。

未来,我没有打算再添加这个功能,因为Chinese-pyim的最终目标还是:备用输入法 ,简单的代码
以及较少的bug是我主要考虑的。

from pyim.

xuchunyang avatar xuchunyang commented on August 18, 2024

功能开启后,和auto-complete,company-mode等冲突。

确实有这个问题,不过输入中文的时候 auto-complete, company-mode 其实发挥不了多大作用。

overlay中文往往对不齐,太难看了。

我也遇到过这个(可能类似的)问题 [1],Emacs 中一个中文字符占两个英文字符的宽度,或许跟这个有关。

1: zwz/emacs-ydcv#1

from pyim.

tumashu avatar tumashu commented on August 18, 2024

我刚刚添加了 “联想词” 功能,其原理就是,搜索与当前拼音相近的词条,然后用外部补全系统显示,
我在 Chiense-pyim中包含了company相关的代码,同学可以试试。

from pyim.

xuchunyang avatar xuchunyang commented on August 18, 2024

@tumashu 我们的理解有差别,我开这个 issue 的原意其实只是想用类似于auto-completecompany显示补全_菜单_的方式显示候选词,也就是直接把现在 echo area 中的内容搬到_菜单_中。这个需求应该用auto-completepopup-el 比较方便实现。

比如前两天我把 Google 翻译的结果用_菜单_的方式显示:
http://i.imgur.com/kuuIn6v.gif

你的意思是直接给补全系统添加后端,这是我原来没想过的。我正在尝试你的最新代码,我对 company 不太了解,似乎还有稍微配置下 company-mode 才能用。

from pyim.

xuchunyang avatar xuchunyang commented on August 18, 2024

我还不知道如何激活,company-backends已经(自动)添加了。有个问题:输入特定的汉字还是拼音会出现补全?

from pyim.

tumashu avatar tumashu commented on August 18, 2024

这个功能需要 chinese-pyim 配合, 用pyim输入 “你好” 后,pyim同时会在词库中搜索与 "ni-hao" 词条
邻近的 中文词条,然后使用 company-mode 输入,供用户选择。

我个人感觉这种模式,既不会导致pyim代码太复杂,又可以显著的增强其中文输入能力。同时也有许多好玩的应用。比如: 我自己写了一个 pyim-company-dabbrev 后端,中文补全一下子好用了很多。 这个后端已经包含在 chinese-pyim中了。可以试试。

from pyim.

xuchunyang avatar xuchunyang commented on August 18, 2024

这个功能需要 chinese-pyim 配合, 用pyim输入 “你好” 后,pyim同时会在词库中搜索与 "ni-hao" 词条
邻近的 中文词条,然后使用 company-mode 输入,供用户选择。

你原意是_何时_(手动执行comapny-complete还是自动)激活 company-mode 的补全菜单?

我已经安装并配置了 company-mode 和(最新的) chinese-pyim,两者都能正常使用。我目前尝试的结果是:

  1. 切换输入法至 chinese-pyim

  2. 输入“ni-hao”(你好),此时未出现补全

  3. 选择“你好”,此时未出现补全

  4. M-x comapny-complete,有时能出现补全,有时不能出现补全,并提示以下的错误信息:

    Company: An error occurred in post-command
    Company: Front-end company-pseudo-tooltip-unless-just-one-frontend error "Args out of range: 0, 12" on command post-command
    
  5. 关闭 chinese-pyim 后,M-x comapny-complete 能一直出现补全而不出错。

Update: 在 3 的时候,仍然不能自动出现补全,但是会一直重复地弹出 4 中的错误信息。说明是 company-mode 是在尝试补全。

from pyim.

tumashu avatar tumashu commented on August 18, 2024

抱歉了,我又仔细查看了一下我的company配置。 用 emacs -Q 测试了一下, 发现需要做如下设置:

(require 'company)
(require 'company-dabbrev)
(require 'adaptive-wrap)
(setq company-idle-delay 0.1)
(setq company-minimum-prefix-length 2)
(setq company-selection-wrap-around t)
(setq company-dabbrev-downcase nil)
(setq company-dabbrev-ignore-case nil)
(setq company-require-match nil)

再一次感谢哥们的测试。。。。

from pyim.

tumashu avatar tumashu commented on August 18, 2024

在这里提醒一下同学,company默认开启了 “词法作用域” ,所以配置的时候注意了。

from pyim.

xuchunyang avatar xuchunyang commented on August 18, 2024

(require 'adaptive-wrap)

这个包是干嘛用的?Emacs 25 没自带,需要从 GNU ELPA 安装。

在这里提醒一下同学,company默认开启了 “词法作用域” ,所以配置的时候注意了

  1. “词法作用域”是指什么?
  2. 配置的时候哪里需要注意?

from pyim.

xuchunyang avatar xuchunyang commented on August 18, 2024

现在运行到 3 可以自动出现“联想词”补全了。:+1:

from pyim.

tumashu avatar tumashu commented on August 18, 2024

(require 'adaptive-wrap) 这个没用。

;;; company.el --- Modular text completion framework -- lexical-binding: t --

我的感觉是: 使用let来暂时调整一个全局变量来改变一个命令的行为,这种方式好像都没有效果了。

from pyim.

tumashu avatar tumashu commented on August 18, 2024

目前的联想算法太烂,所以联想得到的词几乎没什么用。不过这是一个好的开始。。。。。 折腾前途无限呀。

from pyim.

xuchunyang avatar xuchunyang commented on August 18, 2024

;;; company.el --- Modular text completion framework -- lexical-binding: t --

我的感觉是: 使用let来暂时调整一个全局变量来改变一个命令的行为,这种方式好像都没有效果了。

确实,我刚发现,

(setq lexical-binding t)
t

(setq a 1)
1

(defun say-a ()
  a)
say-a

(let ((a 3))
  (say-a))
1

这样的话只能用 setq 了。

from pyim.

tumashu avatar tumashu commented on August 18, 2024

想想就觉得比较麻烦。。。。 还的自己备份全局变量原来的值。

from pyim.

tumashu avatar tumashu commented on August 18, 2024

对了,你用什么软件做的emacs截图动画?

from pyim.

xuchunyang avatar xuchunyang commented on August 18, 2024

先录成视频(用了 Mac OS X 有自带的简单的录屏软件),再用 ffmpeg 和 ImageMagick 转化成 gif 图像:

ffmpeg -i input.mov -vf scale=800:-1 -r 10 -f image2pipe -vcodec ppm - | convert -delay 5 -layers Optimize -loop 0 - out.gif

PS. 以上的命令是直接从 https://gist.github.com/dergachev/4627207 抄来的。

from pyim.

tumashu avatar tumashu commented on August 18, 2024

恩,我试试。

from pyim.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.