mirror of https://github.com/Chizi123/.emacs.d.git

Chizi123
2018-11-21 5ddac8bd2392ec5b64392e8750d725029bf5aa79
commit | author | age
5cb5f7 1 ;;; smartparens-scala.el --- Additional configuration for Scala based modes.  -*- lexical-binding: t; -*-
C 2
3 ;; Copyright (C) 2015 Greg Nwosu
4
5 ;; Author: Greg Nwosu <greg.nwosu@gmail.com>
6 ;; Maintainer: Greg Nwosu <greg.nwosu@gmail.com>
7 ;; Created: 8 July 2015
8 ;; Keywords: abbrev convenience editing
9 ;; URL: https://github.com/Fuco1/smartparens
10
11 ;; This file is not part of GNU Emacs.
12
13 ;;; License:
14
15 ;; This file is part of Smartparens.
16
17 ;; Smartparens is free software; you can redistribute it and/or modify
18 ;; it under the terms of the GNU General Public License as published by
19 ;; the Free Software Foundation, either version 3 of the License, or
20 ;; (at your option) any later version.
21
22 ;; Smartparens is distributed in the hope that it will be useful,
23 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
24 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
25 ;; GNU General Public License for more details.
26
27 ;; You should have received a copy of the GNU General Public License
28 ;; along with Smartparens.  If not, see <http://www.gnu.org/licenses/>.
29
30 ;;; Commentary:
31
32 ;; This file provides some additional configuration for Scala based
33 ;; modes.  To use it, simply add:
34 ;;
35 ;; (require 'smartparens-scala)
36 ;;
37 ;; into your configuration.  You can use this in conjunction with the
38 ;; default config or your own configuration.
39 ;;
40 ;; If you have good ideas about what should be added please file an
41 ;; issue on the github tracker.
42 ;;
43 ;; For more info, see github readme at
44 ;; https://github.com/Fuco1/smartparens
45
46 ;;; Code:
47
48 (require 'smartparens)
49
50 ;; Scala has no sexp suffices.  This fixes slurping
51 ;; import scala.mutable{|} ListBuffer, Set ---the comma should not travel with the closing
52 ;; paren
53 (--each '(scala-mode inferior-scala-mode)
54   (add-to-list 'sp-sexp-suffix (list it 'regexp "")))
55
56 (defun sp-scala-wrap-with-indented-newlines (_1 action _2)
57   "Post handler for the wrap ACTION, putting the region on indented newlines."
58   (when (eq action 'wrap)
59     (sp-get sp-last-wrapped-region
60       (let ((beg :beg-in)
61             (end :end-in))
62         (save-excursion
63           (goto-char end)
64           (newline-and-indent))
65         (save-excursion
66           (goto-char beg)
67           (newline))
68         (indent-region beg end)))))
69
70 (sp-local-pair 'scala-mode "(" nil
71                :post-handlers '(("||\n[i]" "RET")
72                                 ("| " "SPC")))
73
74 (sp-local-pair 'scala-mode "{" nil
75                :post-handlers '(("||\n[i]" "RET")
76                                 ("| " "SPC")
77                                 sp-scala-wrap-with-indented-newlines))
78
79 (provide 'smartparens-scala)
80 ;;; smartparens-scala.el ends here