diff --git a/layers/+spacemacs/spacemacs-visual/packages.el b/layers/+spacemacs/spacemacs-visual/packages.el
index 5024419be..3c8e9b24c 100644
--- a/layers/+spacemacs/spacemacs-visual/packages.el
+++ b/layers/+spacemacs/spacemacs-visual/packages.el
@@ -33,6 +33,7 @@
hl-todo
popup
popwin
+ posframe
(zoom-frm :location local)))
(defun spacemacs-visual/init-all-the-icons ()
@@ -93,6 +94,9 @@
(defun spacemacs-visual/init-popup ())
+(defun spacemacs-visual/init-posframe ()
+ (use-package posframe :defer t))
+
(defun spacemacs-visual/init-popwin ()
(use-package popwin
:config
diff --git a/layers/+tools/dap/packages.el b/layers/+tools/dap/packages.el
index e5793f2ea..34e83bf5b 100644
--- a/layers/+tools/dap/packages.el
+++ b/layers/+tools/dap/packages.el
@@ -20,9 +20,9 @@
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see .
+
(defconst dap-packages
- '(dap-mode
- posframe))
+ '(dap-mode))
(defun dap/init-dap-mode ()
(use-package dap-mode
@@ -135,6 +135,3 @@
;; Set bindings
(apply #'spacemacs/set-leader-keys-for-major-mode mode bindings))))))
-
-(defun dap/init-posframe ()
- (use-package posframe))
diff --git a/layers/+tools/translate/README.org b/layers/+tools/translate/README.org
index c51dc3361..690ca5df5 100644
--- a/layers/+tools/translate/README.org
+++ b/layers/+tools/translate/README.org
@@ -15,6 +15,7 @@
- [[#read-only][Read-only]]
- [[#face][Face]]
- [[#key-bindings][Key bindings]]
+- [[#variables][Variables]]
* Description
This layer is designed for Paragraph-oriented minor mode for
@@ -80,3 +81,11 @@ color to red, for example.
| ~SPC a t T f~ | Prompt to open the reference file |
| ~SPC a t T b~ | Prompt to select a buffer and set it as the reference buffer |
| ~SPC a t T h~ | Toggle paragraph highlighting |
+
+* Variables
+These variables can be used to customize =translate= layer.
+
+| Variable | Default Value | Description |
+|------------------------------+---------------+---------------------------------------------------------------------------|
+| =translate/paragraph-render= | ='posframe= | Paragraph translation render. Valid values are ='posframe= and ='buffer=. |
+| =translate/word-render= | ='posframe= | Word translation render. Valid values are ='posframe= and ='buffer=. |
diff --git a/layers/+tools/translate/config.el b/layers/+tools/translate/config.el
new file mode 100644
index 000000000..8bc99e836
--- /dev/null
+++ b/layers/+tools/translate/config.el
@@ -0,0 +1,30 @@
+;;; funcs.el --- Semantic Layer functions File for Spacemacs
+;;
+;; Copyright (c) 2012-2022 Sylvain Benner & Contributors
+;;
+;; Author: Ray Wang
+;; URL: https://github.com/syl20bnr/spacemacs
+;;
+;; This file is not part of GNU Emacs.
+;;
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see .
+
+
+(defvar translate/paragraph-render 'posframe
+ "Paragraph render for displaying translate result.
+Currently support `posframe' and `buffer'.")
+
+(defvar translate/word-render 'posframe
+ "Word render for displaying translate result.
+Currently support `posframe' and `buffer'.")
diff --git a/layers/+tools/translate/packages.el b/layers/+tools/translate/packages.el
index 0e8415571..13520f628 100644
--- a/layers/+tools/translate/packages.el
+++ b/layers/+tools/translate/packages.el
@@ -23,8 +23,7 @@
(defconst translate-packages
'(
translate-mode
- go-translate
- posframe))
+ go-translate))
(defun translate/init-translate-mode ()
"Initialize required packages."
@@ -48,17 +47,24 @@
(user-error "Make sure there is any word at point, or selection exists"))
(let ((path (gts-path o text)))
(cl-values text path))))
+ (defun translate//check-and-get-render (render)
+ (if (equal render 'posframe)
+ (if (featurep 'posframe)
+ (gts-posframe-pop-render)
+ (display-warning 'translate "Missing package `posframe', back to use default `gts-buffer-render'.")
+ (gts-buffer-render))
+ (gts-buffer-render)))
(defconst translate//paragraph-translator
(gts-translator
:picker (translate//reference-paragraph-picker)
:engines (list (gts-google-engine) (gts-google-rpc-engine) (gts-bing-engine))
- :render (gts-buffer-render))
+ :render (translate//check-and-get-render translate/paragraph-render))
"Paragraph translator for `go-translate'.")
(defconst translate//word-translator
(gts-translator
:picker (gts-noprompt-picker)
:engines (list (gts-google-engine) (gts-google-rpc-engine) (gts-bing-engine))
- :render (gts-posframe-pop-render))
+ :render (translate//check-and-get-render translate/word-render))
"Word translator for `go-translate'."))))
(defun translate/pre-init-posframe ()