Debugger entered--Lisp error: (void-variable my-frame)
(set-frame-parameter my-frame 'parent-frame (window-frame))
eval((set-frame-parameter my-frame 'parent-frame (window-frame)) nil)
elisp--eval-last-sexp(nil)
eval-last-sexp(nil)
funcall-interactively(eval-last-sexp nil)
call-interactively(eval-last-sexp nil nil)
command-execute(eval-last-sexp)
。。。 第一个 setq 要运行一下才能运行第二个。。。。
这个就没法了。。。。。。 可能是 emacs 的bug
EVAL下面这个函数,然后 再测试一下 pyim, 看看效果
(defun pyim-tooltip-show-with-child-frame (string position)
"在 POSITION 处使用 child-frame 显示 STRING."
(let* ((buffer (get-buffer-create " *pyim-child-frame-buffer*"))
(string-width-height (pos-tip-string-width-height string))
(string-width (car string-width-height))
(string-height (cdr string-width-height))
(x-and-y (pos-tip-compute-pixel-position position)))
(unless (frame-live-p pyim-tooltip-child-frame)
(setq pyim-tooltip-child-frame
(let ((after-make-frame-functions nil))
(make-frame
`(,@pyim-tooltip-child-frame-parameters
(parent-frame . ,(window-frame))
(no-accept-focus . t)
(min-width . t)
(min-height . t)
(border-width . 0)
(internal-border-width . 0)
(vertical-scroll-bars . nil)
(horizontal-scroll-bars . nil)
(left-fringe . 10)
(right-fringe . 0)
(menu-bar-lines . 0)
(tool-bar-lines . 0)
(line-spacing . 0)
(unsplittable . t)
(no-other-frame . t)
(undecorated . t)
(visibility . nil)
(cursor-type . nil)
(minibuffer . nil)
(width . 50)
(height . 2)
(no-special-glyphs . t)))))
(let ((window (frame-root-window pyim-tooltip-child-frame)))
(set-window-parameter window 'mode-line-format 'none)
(set-window-parameter window 'header-line-format 'none)
(set-window-buffer window buffer)))
(dolist (alist `( ;;(parent-frame . ,(window-frame))
(visibility . t)
(top . ,(+ (cdr x-and-y) 10))
(left . ,(+ (car x-and-y) 10))
(width . ,(+ string-width 1))
(height . ,(+ string-height 1))))
(let ((parameter (car alist))
(value (cdr alist)))
(set-frame-parameter
pyim-tooltip-child-frame parameter value)))
(with-current-buffer buffer
(erase-buffer)
(insert string)
(redisplay))))
速度怎么样?
怎用使用或者说调出emacs的pyim输入法?
去看pyim的README吧,写的很详细
那个网址在哪呢?
百度也行。
我更新了一下pyim,你可以再测试一下
在 linux 和window 下, child-frame 效果良好,响应速度比popup快不少, 没有mac的电脑,无法调试,所以禁用了。
1 个赞
抱歉现在才看到这个,可能是被前面的几个回帖刷屏了。还有就是因为我一直是用终端的,对这个问题的关注没那么积极。而且由于长期的忽略,我的配置在 GUI 底下有些不太对。所以才特地写了上面的最小配置来测 child-frame。
刚才重新获取了 pyim,把 pyim-tooltip-show 里的 darwin 限制去掉,再测了一遍:
- 速度不慢,但是有点闪烁(这应该是 GUI 库的问题:在 Mac 下……输入法……抖动 ?)
- 窗口样式有点阳春,并且位置有点偏离光标(效果截图)
另外我有个体验(与child-frame无关)就是:手比眼快,有时候要往回翻页找字(但又不太确定),如果能展示多行,会比较了然:
.------------------. .------------------.
| 1. 2. 3. 4. | vs | 1. 2. 3. 4. |
'------------------' | 1. 2. 3. 4. |
|> 1. 2. 3. 4. |
| 1. 2. 3. 4. |
| 1. 2. 3. 4. |
'------------------'
这个功能好另类,在现有的框架下,是搞不了的。
这个我没法调试,因为没有 mac 机子,是 pyim-tooltip-compute-pixel-position 这个函数的 bug, 但具体什么原因,就不知道了,有兴趣你可以调试调试。。。
其实不算另类了,macOS & iOS 原生输入法都这样,翻页展示多行。
待我有空再调试吧。
话说回来 helm 应该以后也可以用这个。
这个很有可能
有点类似于sublime和vscode的那个多功能输入框了,我是希望helm可以改进一下,代替mac上的Alfred(这东西定制性不够,我要的功能没有)