emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/smartparens 8b6a3c3b31 2/2: Merge pull request #1127 from


From: ELPA Syncer
Subject: [nongnu] elpa/smartparens 8b6a3c3b31 2/2: Merge pull request #1127 from wyuenho/go-mode
Date: Thu, 23 Jun 2022 11:59:00 -0400 (EDT)

branch: elpa/smartparens
commit 8b6a3c3b31afd5b3f846e09859b5fc62eb06e7c1
Merge: ec15aaa748 e09ea501c2
Author: Matus Goljer <matus.goljer@gmail.com>
Commit: GitHub <noreply@github.com>

    Merge pull request #1127 from wyuenho/go-mode
    
    go-mode configs
---
 Cask                        |  3 ++-
 smartparens-config.el       |  1 +
 smartparens-go.el           | 60 +++++++++++++++++++++++++++++++++++++++++++++
 test/smartparens-go-test.el | 22 +++++++++++++++++
 4 files changed, 85 insertions(+), 1 deletion(-)

diff --git a/Cask b/Cask
index bc87d58c78..7e6fcc7804 100644
--- a/Cask
+++ b/Cask
@@ -29,4 +29,5 @@
   (depends-on "markdown-mode")
   (depends-on "hungry-delete")
   (depends-on "evil")
-  (depends-on "crystal-mode"))
+  (depends-on "crystal-mode")
+  (depends-on "go-mode"))
diff --git a/smartparens-config.el b/smartparens-config.el
index 4ae1293ef7..3b8e8f594c 100644
--- a/smartparens-config.el
+++ b/smartparens-config.el
@@ -107,6 +107,7 @@ ID, ACTION, CONTEXT."
 (eval-after-load 'elixir-mode              '(require 'smartparens-elixir))
 (eval-after-load 'enh-ruby-mode            '(require 'smartparens-ruby))
 (eval-after-load 'ess                      '(require 'smartparens-ess))
+(eval-after-load 'go-mode                  '(require 'smartparens-go))
 (eval-after-load 'haskell-interactive-mode '(require 'smartparens-haskell))
 (eval-after-load 'haskell-mode             '(require 'smartparens-haskell))
 (--each sp--html-modes
diff --git a/smartparens-go.el b/smartparens-go.el
new file mode 100644
index 0000000000..7479a4cc2a
--- /dev/null
+++ b/smartparens-go.el
@@ -0,0 +1,60 @@
+;;; smartparens-go.el --- Additional configuration for go-mode.  -*- 
lexical-binding: t; -*-
+
+;; Copyright (C) 2022 Jimmy Yuen Ho Wong
+
+;; Created: 10 June 2022
+;; Keywords: abbrev convenience editing
+;; URL: https://github.com/Fuco1/smartparens
+
+;; This file is not part of GNU Emacs.
+
+;;; License:
+
+;; This file is part of Smartparens.
+
+;; Smartparens 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.
+
+;; Smartparens 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 Smartparens.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file provides some additional configuration for Go.  To use
+;; it, simply add:
+;;
+;; (require 'smartparens-config)
+;;
+;; alternatively, you can explicitly load these preferences:
+;;
+;; (require 'smartparens-go)
+;;
+;; in your configuration.
+
+;; For more info, see github readme at
+;; https://github.com/Fuco1/smartparens
+
+;;; Code:
+(require 'smartparens)
+
+(declare-function go-mode "go-mode")
+
+(sp-with-modes 'go-mode
+  (sp-local-pair "{" nil :post-handlers '(("||\n[i]" "RET")))
+  (sp-local-pair "/*" "*/" :post-handlers '(("| " "SPC")
+                                            ("* ||\n[i]" "RET"))))
+
+;; Go has no sexp suffices.  This fixes slurping
+;; (|foo).bar -> (foo.bar)
+(add-to-list 'sp-sexp-suffix (list #'go-mode 'regexp ""))
+
+(provide 'smartparens-go)
+
+;;; smartparens-go.el ends here
diff --git a/test/smartparens-go-test.el b/test/smartparens-go-test.el
new file mode 100644
index 0000000000..51e3e52191
--- /dev/null
+++ b/test/smartparens-go-test.el
@@ -0,0 +1,22 @@
+(require 'go-mode)
+(require 'smartparens)
+
+(defun sp-test--paired-expression-parse-in-go (initial result &optional back)
+  (sp-test-with-temp-buffer initial
+                            (go-mode)
+                            (should (equal (sp-get-paired-expression back) 
result))))
+
+(ert-deftest sp-test-paired-expression-parse-in-go nil
+  (let ((sp-pairs '((t . ((:open "(" :close ")" :actions (insert wrap autoskip 
navigate))
+                          (:open "{" :close "}" :actions (insert wrap autoskip 
navigate))
+                          (:open "[" :close "]" :actions (insert wrap autoskip 
navigate))
+                          (:open "/*" :close "*/" :actions (insert wrap 
autoskip navigate)))))))
+    (sp-test--paired-expression-parse-in-go "asd |/* adasdad */" '(:beg 5 :end 
18 :op "/*" :cl "*/" :prefix "" :suffix ""))
+    (sp-test--paired-expression-parse-in-go "asd /* adasdad */|" '(:beg 5 :end 
18 :op "/*" :cl "*/" :prefix "" :suffix "") t)))
+
+(ert-deftest sp-test-go-slurp ()
+  "Deleting a region containing a rust function definition."
+  (sp-test-with-temp-buffer "(|foo).bar"
+                            (go-mode)
+                            (call-interactively 'sp-slurp-hybrid-sexp)
+                            (should (equal (buffer-string) "(foo.bar)"))))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]