[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/smartparens e09ea501c2 1/2: go-mode configs
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/smartparens e09ea501c2 1/2: go-mode configs |
Date: |
Thu, 23 Jun 2022 11:58:59 -0400 (EDT) |
branch: elpa/smartparens
commit e09ea501c2c85d24fbaa3341e97078e57614c5c3
Author: Jimmy Yuen Ho Wong <wyuenho@gmail.com>
Commit: Jimmy Yuen Ho Wong <wyuenho@gmail.com>
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)"))))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [nongnu] elpa/smartparens e09ea501c2 1/2: go-mode configs,
ELPA Syncer <=