Closed Eason0210 closed 2 years ago
可以像类似这样设置翻译完成后调整 buffer 属性:
;; fixed
(cl-defmethod gts-me-out :after ((_ gts-buffer-render) translator task)
(when (= (oref translator state) 3)
(with-current-buffer gts-buffer-name
(read-only-mode 1))))
我是特意保留了翻译完成之后非只读的状态,因为很多时候,翻译完成后需要在翻译的结果上进行少许修改再复制到目的地,这样比较方便。
多谢指点,不过我按你说的设置,执行完翻译命令后,我的当前buffer 变成只读了,显示翻译的buffer并没有变化。
你可以仔细检查下,我这里没发现问题。
我这边还是不行,感觉没有执行 gts-me-out,我在里面加了 message 函数,也没见打印内容。
我正常是执行下面这个自己定义的函数进行翻译:
;; Pick directly and use Google RPC API to translate
(defun go-translate-at-point ()
(interactive)
(gts-translate (gts-translator
:picker (gts-noprompt-picker)
:engines (gts-google-rpc-engine)
:render (gts-buffer-render))))
会不会是因为我定制了这个函数的关系?
哦,你配置使用的是单引擎的话,配置 gts-out
而非 gts-me-out
:
(cl-defmethod gts-out :after ((_ gts-buffer-render) _)
(with-current-buffer gts-buffer-name
(read-only-mode 1)))
哦,你配置使用的是单引擎的话,配置
gts-out
而非gts-me-out
:
确实,可以生效了。 👍
@lorniu 是不是可以默认是readonly,需要修改的时候用快捷键把buffer变为可编辑的?默认好像是C-x C-q
?最不合理的地方是,编辑buffer时无法输入快捷键占用的字符,比如 h, q, x...
编辑状态快捷键不起效才合理。
@seagle0128 嗯,好像是有些不合理。我经常英译中,编辑时输入的是中文,所以没意识到。呃,抽空我再看看怎么优化一下。当然,如果有补丁,欢迎提交。
@lorniu 我提交了一个PR #38 ,将buffer改为只读,用C-x C-q
可以切换只读状态,请review。这个PR没有处理快捷键问题,与目前使用保持一致,可以拷贝到其他buffer编辑。如果要考虑可以参考wgrep方式,只是我认为没有必要。
另外,还有几个warning值得注意,为保证PR单纯性,除了docstring问题其他都没有处理。
gts-implements.el 199 18 warning `marker-position' is an obsolete generalized variable; use `set-marker' instead. (emacs-lisp)
gts-implements.el 567 40 warning Ambiguous initform needs quoting: (gts-current-or-selection-texter) (emacs-lisp)
@lorniu
大佬,请教一下如何将显示翻译的buffer设置为只读?因为我有时候会在中文输入法下启动 go-translate 进行翻译,
*Go-Translate*
这个buffer 的输入法也会是中文,按 q 就没法退出了。(我使用了 sis 进行输入法切换)另外,有时误按,会修改翻译界面的内容。
所以,我比较喜欢像看 Help buffer 一样查看翻译,看完按 q 退出。
我没有使用 posframe。