branch: elpa/go-mode
commit 59dfa9627d41d82b0261fabb74432ed908db4e0b
Author: Peter Sanford <[email protected]>
Commit: Muir Manders <[email protected]>
Add confirmation prompt for Playground uploads
go-play-region and go-play-buffer will now ask for confirmation before
uploading to the Go Playground. This is to help prevent accidental
uploads of private code that should not be posted to the Playground.
You can disable the prompt by setting go-confirm-playground-uploads to
nil.
This fixes #267
Closes: #281 [via git-merge-pr]
---
go-mode.el | 57 +++++++++++++++++++++++++++++++++++++--------------------
1 file changed, 37 insertions(+), 20 deletions(-)
diff --git a/go-mode.el b/go-mode.el
index e19df3b..d515174 100644
--- a/go-mode.el
+++ b/go-mode.el
@@ -211,6 +211,14 @@ mis-identifying them as gb projects."
:type '(repeat function)
:group 'go)
+(defcustom go-confirm-playground-uploads t
+ "Ask before uploading code to the public Go Playground.
+
+Set this to nil to upload without prompting.
+"
+ :type 'boolean
+ :group 'go)
+
(defcustom godoc-command "go doc"
"Which executable to use for `godoc'.
This can either be 'godoc' or 'go doc', both as an absolute path
@@ -1273,27 +1281,36 @@ declaration."
(defun go-play-region (start end)
"Send the region between START and END to the Playground.
If non-nil `go-play-browse-function' is called with the
-Playground URL."
+Playground URL.
+
+By default this function will prompt to confirm you want to upload
+code to the Playground. You can disable the confirmation by setting
+`go-confirm-playground-uploads' to nil.
+"
(interactive "r")
- (let* ((url-request-method "POST")
- (url-request-extra-headers
- '(("Content-Type" . "application/x-www-form-urlencoded")))
- (url-request-data
- (encode-coding-string
- (buffer-substring-no-properties start end)
- 'utf-8))
- (content-buf (url-retrieve
- "https://play.golang.org/share"
- (lambda (arg)
- (cond
- ((equal :error (car arg))
- (signal 'go-play-error (cdr arg)))
- (t
- (re-search-forward "\n\n")
- (let ((url (format "https://play.golang.org/p/%s"
- (buffer-substring (point)
(point-max)))))
- (when go-play-browse-function
- (funcall go-play-browse-function url)))))))))))
+ (if (and go-confirm-playground-uploads
+ (not (yes-or-no-p "Upload to public Go Playground?")))
+ (message "Upload aborted")
+ (let* ((url-request-method "POST")
+ (url-request-extra-headers
+ '(("Content-Type" . "application/x-www-form-urlencoded")))
+ (url-request-data
+ (encode-coding-string
+ (buffer-substring-no-properties start end)
+ 'utf-8))
+
+ (content-buf (url-retrieve
+ "https://play.golang.org/share"
+ (lambda (arg)
+ (cond
+ ((equal :error (car arg))
+ (signal 'go-play-error (cdr arg)))
+ (t
+ (re-search-forward "\n\n")
+ (let ((url (format "https://play.golang.org/p/%s"
+ (buffer-substring (point)
(point-max)))))
+ (when go-play-browse-function
+ (funcall go-play-browse-function
url))))))))))))
;;;###autoload
(defun go-download-play (url)