Install the smartparens package
This commit is contained in:
		
							
								
								
									
										198
									
								
								elpa/smartparens-20161009.858/smartparens-autoloads.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										198
									
								
								elpa/smartparens-20161009.858/smartparens-autoloads.el
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,198 @@ | |||||||
|  | ;;; smartparens-autoloads.el --- automatically extracted autoloads | ||||||
|  | ;; | ||||||
|  | ;;; Code: | ||||||
|  | (add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path)))) | ||||||
|  |  | ||||||
|  | ;;;### (autoloads nil "smartparens" "smartparens.el" (22523 34125 | ||||||
|  | ;;;;;;  532790 226000)) | ||||||
|  | ;;; Generated autoloads from smartparens.el | ||||||
|  |  | ||||||
|  | (autoload 'sp-cheat-sheet "smartparens" "\ | ||||||
|  | Generate a cheat sheet of all the smartparens interactive functions. | ||||||
|  |  | ||||||
|  | Without a prefix argument, print only the short documentation and examples. | ||||||
|  |  | ||||||
|  | With non-nil prefix argument, show the full documentation for each function. | ||||||
|  |  | ||||||
|  | You can follow the links to the function or variable help page. | ||||||
|  | To get back to the full list, use \\[help-go-back]. | ||||||
|  |  | ||||||
|  | You can use `beginning-of-defun' and `end-of-defun' to jump to | ||||||
|  | the previous/next entry. | ||||||
|  |  | ||||||
|  | Examples are fontified using the `font-lock-string-face' for | ||||||
|  | better orientation. | ||||||
|  |  | ||||||
|  | \(fn &optional ARG)" t nil) | ||||||
|  |  | ||||||
|  | (defvar smartparens-mode-map (make-sparse-keymap) "\ | ||||||
|  | Keymap used for `smartparens-mode'.") | ||||||
|  |  | ||||||
|  | (autoload 'sp-use-paredit-bindings "smartparens" "\ | ||||||
|  | Initiate `smartparens-mode-map' with paredit-compatible bindings for | ||||||
|  | corresponding functions provided by smartparens.  See variable | ||||||
|  | `sp-paredit-bindings'. | ||||||
|  |  | ||||||
|  | \(fn)" t nil) | ||||||
|  |  | ||||||
|  | (autoload 'sp-use-smartparens-bindings "smartparens" "\ | ||||||
|  | Initiate `smartparens-mode-map' with smartparens bindings for navigation functions. | ||||||
|  | See variable `sp-smartparens-bindings'. | ||||||
|  |  | ||||||
|  | \(fn)" t nil) | ||||||
|  |  | ||||||
|  | (autoload 'smartparens-mode "smartparens" "\ | ||||||
|  | Toggle smartparens mode. | ||||||
|  |  | ||||||
|  | You can enable pre-set bindings by customizing | ||||||
|  | `sp-base-key-bindings' variable.  The current content of | ||||||
|  | `smartparens-mode-map' is: | ||||||
|  |  | ||||||
|  |  \\{smartparens-mode-map} | ||||||
|  |  | ||||||
|  | \(fn &optional ARG)" t nil) | ||||||
|  |  | ||||||
|  | (autoload 'smartparens-strict-mode "smartparens" "\ | ||||||
|  | Toggle the strict smartparens mode. | ||||||
|  |  | ||||||
|  | When strict mode is active, `delete-char', `kill-word' and their | ||||||
|  | backward variants will skip over the pair delimiters in order to | ||||||
|  | keep the structure always valid (the same way as `paredit-mode' | ||||||
|  | does).  This is accomplished by remapping them to | ||||||
|  | `sp-delete-char' and `sp-kill-word'.  There is also function | ||||||
|  | `sp-kill-symbol' that deletes symbols instead of words, otherwise | ||||||
|  | working exactly the same (it is not bound to any key by default). | ||||||
|  |  | ||||||
|  | When strict mode is active, this is indicated with \"/s\" | ||||||
|  | after the smartparens indicator in the mode list. | ||||||
|  |  | ||||||
|  | \(fn &optional ARG)" t nil) | ||||||
|  |  | ||||||
|  | (defvar smartparens-global-strict-mode nil "\ | ||||||
|  | Non-nil if Smartparens-Global-Strict mode is enabled. | ||||||
|  | See the `smartparens-global-strict-mode' command | ||||||
|  | for a description of this minor mode. | ||||||
|  | Setting this variable directly does not take effect; | ||||||
|  | either customize it (see the info node `Easy Customization') | ||||||
|  | or call the function `smartparens-global-strict-mode'.") | ||||||
|  |  | ||||||
|  | (custom-autoload 'smartparens-global-strict-mode "smartparens" nil) | ||||||
|  |  | ||||||
|  | (autoload 'smartparens-global-strict-mode "smartparens" "\ | ||||||
|  | Toggle Smartparens-Strict mode in all buffers. | ||||||
|  | With prefix ARG, enable Smartparens-Global-Strict mode if ARG is positive; | ||||||
|  | otherwise, disable it.  If called from Lisp, enable the mode if | ||||||
|  | ARG is omitted or nil. | ||||||
|  |  | ||||||
|  | Smartparens-Strict mode is enabled in all buffers where | ||||||
|  | `turn-on-smartparens-strict-mode' would do it. | ||||||
|  | See `smartparens-strict-mode' for more information on Smartparens-Strict mode. | ||||||
|  |  | ||||||
|  | \(fn &optional ARG)" t nil) | ||||||
|  |  | ||||||
|  | (autoload 'turn-on-smartparens-strict-mode "smartparens" "\ | ||||||
|  | Turn on `smartparens-strict-mode'. | ||||||
|  |  | ||||||
|  | \(fn)" t nil) | ||||||
|  |  | ||||||
|  | (defvar smartparens-global-mode nil "\ | ||||||
|  | Non-nil if Smartparens-Global mode is enabled. | ||||||
|  | See the `smartparens-global-mode' command | ||||||
|  | for a description of this minor mode. | ||||||
|  | Setting this variable directly does not take effect; | ||||||
|  | either customize it (see the info node `Easy Customization') | ||||||
|  | or call the function `smartparens-global-mode'.") | ||||||
|  |  | ||||||
|  | (custom-autoload 'smartparens-global-mode "smartparens" nil) | ||||||
|  |  | ||||||
|  | (autoload 'smartparens-global-mode "smartparens" "\ | ||||||
|  | Toggle Smartparens mode in all buffers. | ||||||
|  | With prefix ARG, enable Smartparens-Global mode if ARG is positive; | ||||||
|  | otherwise, disable it.  If called from Lisp, enable the mode if | ||||||
|  | ARG is omitted or nil. | ||||||
|  |  | ||||||
|  | Smartparens mode is enabled in all buffers where | ||||||
|  | `turn-on-smartparens-mode' would do it. | ||||||
|  | See `smartparens-mode' for more information on Smartparens mode. | ||||||
|  |  | ||||||
|  | \(fn &optional ARG)" t nil) | ||||||
|  |  | ||||||
|  | (autoload 'turn-on-smartparens-mode "smartparens" "\ | ||||||
|  | Turn on `smartparens-mode'. | ||||||
|  |  | ||||||
|  | This function is used to turn on `smartparens-global-mode'. | ||||||
|  |  | ||||||
|  | By default `smartparens-global-mode' ignores buffers with | ||||||
|  | `mode-class' set to special, but only if they are also not comint | ||||||
|  | buffers. | ||||||
|  |  | ||||||
|  | Additionally, buffers on `sp-ignore-modes-list' are ignored. | ||||||
|  |  | ||||||
|  | You can still turn on smartparens in these mode manually (or | ||||||
|  | in mode's startup-hook etc.) by calling `smartparens-mode'. | ||||||
|  |  | ||||||
|  | \(fn)" t nil) | ||||||
|  |  | ||||||
|  | (autoload 'turn-off-smartparens-mode "smartparens" "\ | ||||||
|  | Turn off `smartparens-mode'. | ||||||
|  |  | ||||||
|  | \(fn)" t nil) | ||||||
|  |  | ||||||
|  | (autoload 'show-smartparens-mode "smartparens" "\ | ||||||
|  | Toggle visualization of matching pairs.  When enabled, any | ||||||
|  | matching pair is highlighted after `sp-show-pair-delay' seconds | ||||||
|  | of Emacs idle time if the point is immediately in front or after | ||||||
|  | a pair.  This mode works similarly to `show-paren-mode', but | ||||||
|  | support custom pairs. | ||||||
|  |  | ||||||
|  | \(fn &optional ARG)" t nil) | ||||||
|  |  | ||||||
|  | (defvar show-smartparens-global-mode nil "\ | ||||||
|  | Non-nil if Show-Smartparens-Global mode is enabled. | ||||||
|  | See the `show-smartparens-global-mode' command | ||||||
|  | for a description of this minor mode. | ||||||
|  | Setting this variable directly does not take effect; | ||||||
|  | either customize it (see the info node `Easy Customization') | ||||||
|  | or call the function `show-smartparens-global-mode'.") | ||||||
|  |  | ||||||
|  | (custom-autoload 'show-smartparens-global-mode "smartparens" nil) | ||||||
|  |  | ||||||
|  | (autoload 'show-smartparens-global-mode "smartparens" "\ | ||||||
|  | Toggle Show-Smartparens mode in all buffers. | ||||||
|  | With prefix ARG, enable Show-Smartparens-Global mode if ARG is positive; | ||||||
|  | otherwise, disable it.  If called from Lisp, enable the mode if | ||||||
|  | ARG is omitted or nil. | ||||||
|  |  | ||||||
|  | Show-Smartparens mode is enabled in all buffers where | ||||||
|  | `turn-on-show-smartparens-mode' would do it. | ||||||
|  | See `show-smartparens-mode' for more information on Show-Smartparens mode. | ||||||
|  |  | ||||||
|  | \(fn &optional ARG)" t nil) | ||||||
|  |  | ||||||
|  | (autoload 'turn-on-show-smartparens-mode "smartparens" "\ | ||||||
|  | Turn on `show-smartparens-mode'. | ||||||
|  |  | ||||||
|  | \(fn)" t nil) | ||||||
|  |  | ||||||
|  | (autoload 'turn-off-show-smartparens-mode "smartparens" "\ | ||||||
|  | Turn off `show-smartparens-mode'. | ||||||
|  |  | ||||||
|  | \(fn)" t nil) | ||||||
|  |  | ||||||
|  | ;;;*** | ||||||
|  |  | ||||||
|  | ;;;### (autoloads nil nil ("smartparens-clojure.el" "smartparens-config.el" | ||||||
|  | ;;;;;;  "smartparens-ess.el" "smartparens-haskell.el" "smartparens-html.el" | ||||||
|  | ;;;;;;  "smartparens-latex.el" "smartparens-lua.el" "smartparens-pkg.el" | ||||||
|  | ;;;;;;  "smartparens-python.el" "smartparens-racket.el" "smartparens-ruby.el" | ||||||
|  | ;;;;;;  "smartparens-rust.el" "smartparens-scala.el") (22523 34125 | ||||||
|  | ;;;;;;  564790 380000)) | ||||||
|  |  | ||||||
|  | ;;;*** | ||||||
|  |  | ||||||
|  | ;; Local Variables: | ||||||
|  | ;; version-control: never | ||||||
|  | ;; no-byte-compile: t | ||||||
|  | ;; no-update-autoloads: t | ||||||
|  | ;; End: | ||||||
|  | ;;; smartparens-autoloads.el ends here | ||||||
							
								
								
									
										49
									
								
								elpa/smartparens-20161009.858/smartparens-clojure.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								elpa/smartparens-20161009.858/smartparens-clojure.el
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,49 @@ | |||||||
|  | ;;; smartparens-clojure.el --- Additional configuration for Clojure mode. | ||||||
|  | ;; | ||||||
|  | ;; Author: Vitalie Spinu <spinuvit@gmail.com> | ||||||
|  | ;; Maintainer: Matus Goljer <matus.goljer@gmail.com> | ||||||
|  | ;; Created: 14 July 2016 | ||||||
|  | ;; 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 Clojure mode.  To use | ||||||
|  | ;; it, simply add: | ||||||
|  | ;; | ||||||
|  | ;; (require 'smartparens-clojure) | ||||||
|  | ;; | ||||||
|  | ;; into your configuration.  You can use this in conjunction with the | ||||||
|  | ;; default config or your own configuration. | ||||||
|  | ;; | ||||||
|  | ;;; Code: | ||||||
|  |  | ||||||
|  | (require 'smartparens) | ||||||
|  |  | ||||||
|  | (defvar sp-clojure-prefix "\\(?:[@`'#~,_?^]+\\)" | ||||||
|  |   "Prefix used in `sp-sepx-prefix' for clojure modes.") | ||||||
|  |  | ||||||
|  | (dolist (mode '(clojure-mode clojurescript-mode clojurec-mode cider-repl-mode)) | ||||||
|  |   (add-to-list 'sp-sexp-prefix `(,mode regexp ,sp-clojure-prefix))) | ||||||
|  |  | ||||||
|  | (provide 'smartparens-clojure) | ||||||
|  | ;;; smartparens-clojure.el ends here | ||||||
							
								
								
									
										117
									
								
								elpa/smartparens-20161009.858/smartparens-config.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								elpa/smartparens-20161009.858/smartparens-config.el
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,117 @@ | |||||||
|  | ;;; smartparens-config.el --- Default configuration for smartparens package | ||||||
|  |  | ||||||
|  | ;; Copyright (C) 2013-2016 Matus Goljer | ||||||
|  |  | ||||||
|  | ;; Author: Matus Goljer <matus.goljer@gmail.com> | ||||||
|  | ;; Maintainer: Matus Goljer <matus.goljer@gmail.com> | ||||||
|  | ;; Created: 30 Jan 2013 | ||||||
|  | ;; 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 is a default configuration for smartparens package.  If you | ||||||
|  | ;; wish to set up everything by yourself, you can instead require | ||||||
|  | ;; smartparens directly. | ||||||
|  |  | ||||||
|  | ;; However, some configuration is always loaded by default, most | ||||||
|  | ;; notably the built-in list of supported pairs.  If you want to erase | ||||||
|  | ;; this list, simply use (setq sp-pairs nil) and then add your own | ||||||
|  | ;; pairs. | ||||||
|  |  | ||||||
|  | ;; For more info, see github readme at | ||||||
|  | ;; https://github.com/Fuco1/smartparens | ||||||
|  |  | ||||||
|  | ;;; Code: | ||||||
|  |  | ||||||
|  | (require 'smartparens) | ||||||
|  |  | ||||||
|  | (defun sp-lisp-invalid-hyperlink-p (_1 action _2) | ||||||
|  |   (when (eq action 'navigate) | ||||||
|  |     ;; Ignore errors due to us being at the start or end of the | ||||||
|  |     ;; buffer. | ||||||
|  |     (ignore-errors | ||||||
|  |       (or (and (looking-at "\\sw\\|\\s_") | ||||||
|  |                (save-excursion | ||||||
|  |                  (backward-char 2) | ||||||
|  |                  (looking-at "\\sw\\|\\s_"))) | ||||||
|  |           (and (save-excursion | ||||||
|  |                  (backward-char 1) | ||||||
|  |                  (looking-at "\\sw\\|\\s_")) | ||||||
|  |                (save-excursion | ||||||
|  |                  (forward-char 1) | ||||||
|  |                  (looking-at "\\sw\\|\\s_"))))))) | ||||||
|  |  | ||||||
|  | ;; emacs is lisp hacking enviroment, so we set up some most common | ||||||
|  | ;; lisp modes too | ||||||
|  | (sp-with-modes sp-lisp-modes | ||||||
|  |   ;; disable ', it's the quote character! | ||||||
|  |   (sp-local-pair "'" nil :actions nil) | ||||||
|  |   ;; also only use the pseudo-quote inside strings where it serve as | ||||||
|  |   ;; hyperlink. | ||||||
|  |   (sp-local-pair "`" "'" | ||||||
|  |                  :when '(sp-in-string-p | ||||||
|  |                          sp-in-comment-p) | ||||||
|  |                  :unless '(sp-lisp-invalid-hyperlink-p) | ||||||
|  |                  :skip-match (lambda (ms mb me) | ||||||
|  |                                (cond | ||||||
|  |                                 ((equal ms "'") | ||||||
|  |                                  (or (sp-lisp-invalid-hyperlink-p "`" 'navigate '_) | ||||||
|  |                                      (not (sp-point-in-string-or-comment)))) | ||||||
|  |                                 (t (not (sp-point-in-string-or-comment))))))) | ||||||
|  |  | ||||||
|  | ;; <rant>Unfortunately emacs devs in their glorious wisdom decided to | ||||||
|  | ;; make @ no longer have prefix syntax, it is now a symbol... because | ||||||
|  | ;; apparently its use in symbols is so frequent.  Anyway, since we | ||||||
|  | ;; can't really change that, let's use a regexp based solution</rant> | ||||||
|  | (add-to-list 'sp-sexp-prefix (list 'emacs-lisp-mode 'regexp "\\(?:['`]*,@?\\|[',`]\\)")) | ||||||
|  |  | ||||||
|  | ;; TODO: this should only be active in docstring, otherwise we want | ||||||
|  | ;; the regexp completion \\{\\}.  To handle this feature, we must | ||||||
|  | ;; allow multiple pairs on same opening (therefore, the unique ID must | ||||||
|  | ;; become the opening and closing pair) | ||||||
|  | (sp-local-pair 'emacs-lisp-mode "\\\\{" "}" :when '(sp-in-docstring-p)) | ||||||
|  |  | ||||||
|  | ;; NOTE: Normally, `sp-local-pair' accepts list of modes (or a single | ||||||
|  | ;; mode) as a first argument.  The macro `sp-with-modes' adds this | ||||||
|  | ;; automatically.  If you want to call sp-local-pair outside this | ||||||
|  | ;; macro, you MUST supply the major mode argument. | ||||||
|  |  | ||||||
|  | (--each sp--html-modes | ||||||
|  |   (eval-after-load (symbol-name it) '(require 'smartparens-html))) | ||||||
|  | (eval-after-load "latex"         '(require 'smartparens-latex)) | ||||||
|  | (eval-after-load "tex-mode"      '(require 'smartparens-latex)) | ||||||
|  | (eval-after-load "lua-mode"      '(require 'smartparens-lua)) | ||||||
|  | (eval-after-load "ruby-mode"     '(require 'smartparens-ruby)) | ||||||
|  | (eval-after-load "enh-ruby-mode" '(require 'smartparens-ruby)) | ||||||
|  | (eval-after-load "rust-mode"     '(require 'smartparens-rust)) | ||||||
|  | (eval-after-load "haskell-mode"     '(require 'smartparens-haskell)) | ||||||
|  | (eval-after-load "haskell-interactive-mode"     '(require 'smartparens-haskell)) | ||||||
|  | (--each '("python-mode" "python") | ||||||
|  |   (eval-after-load it '(require 'smartparens-python))) | ||||||
|  | (eval-after-load "scala-mode" '(require 'smartparens-scala)) | ||||||
|  | (eval-after-load "racket-mode" '(require 'smartparens-racket)) | ||||||
|  | (eval-after-load "ess" '(require 'smartparens-ess)) | ||||||
|  |  | ||||||
|  | (provide 'smartparens-config) | ||||||
|  |  | ||||||
|  | ;;; smartparens-config.el ends here | ||||||
							
								
								
									
										207
									
								
								elpa/smartparens-20161009.858/smartparens-ess.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										207
									
								
								elpa/smartparens-20161009.858/smartparens-ess.el
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,207 @@ | |||||||
|  | ;;; smartparens-ess.el --- Smartparens Extension for Emacs Speaks Statistics | ||||||
|  |  | ||||||
|  | ;; Copyright (c) 2015-2016 Bernhard Pröll | ||||||
|  |  | ||||||
|  | ;; Author: Bernhard Pröll | ||||||
|  | ;; Maintainer: Bernhard Pröll | ||||||
|  | ;; URL: https://github.com/Fuco1/smartparens | ||||||
|  | ;; Created: 2015-02-26 | ||||||
|  | ;; Version: 0.2 | ||||||
|  | ;; Keywords: abbrev convenience editing | ||||||
|  |  | ||||||
|  | ;; 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 <http://www.gnu.org/licenses/>. | ||||||
|  |  | ||||||
|  | ;;; Code: | ||||||
|  |  | ||||||
|  | (require 'smartparens) | ||||||
|  | (require 'rx) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ;; avoid traveling commas when slurping | ||||||
|  | ;; (|a, b), c ---> (|a, b, c) | ||||||
|  | (dolist (mode '(ess-mode inferior-ess-mode)) | ||||||
|  |   (add-to-list 'sp-sexp-suffix (list mode 'regexp ""))) | ||||||
|  |  | ||||||
|  | ;; `sp-sexp-prefix' for ESS | ||||||
|  | (add-to-list 'sp-sexp-prefix | ||||||
|  |              (list 'ess-mode 'regexp | ||||||
|  |                    (rx (zero-or-more (or word (syntax symbol)))))) | ||||||
|  |  | ||||||
|  | ;; slurping follows Google's R style guide | ||||||
|  | ;; see https://google.github.io/styleguide/Rguide.xml | ||||||
|  | (defun sp-ess-pre-handler (id action context) | ||||||
|  |   "Remove spaces before opening parenthesis in a function call. | ||||||
|  | Remove redundant space around commas." | ||||||
|  |   (when (equal action 'slurp-forward) | ||||||
|  |     (let ((sxp (sp-get-thing 'back))) | ||||||
|  |       (save-excursion | ||||||
|  |         (goto-char (sp-get sxp :beg-prf)) | ||||||
|  |         ;; (|)   x ---> (x) | ||||||
|  |         (when (looking-back (rx (syntax open-parenthesis) | ||||||
|  |                                 (one-or-more space))) | ||||||
|  |           (cycle-spacing 0 nil 'single-shot)) | ||||||
|  |         (cond | ||||||
|  |           ;; (|)if(cond) ---> (|if (cond)) | ||||||
|  |           ((member (sp-get sxp :prefix) '("if" "for" "while")) | ||||||
|  |            (goto-char (sp-get sxp :beg)) | ||||||
|  |            (cycle-spacing 1 nil 'single-shot)) | ||||||
|  |           ;; (|)v [,2] <- if(x > 1) ---> (v[,2] <- if (x > 1)) | ||||||
|  |           ((and | ||||||
|  |             (member (sp-get sxp :op) '("[" "(")) | ||||||
|  |             (equal (sp-get sxp :prefix) "") | ||||||
|  |             (looking-back | ||||||
|  |              (rx (and (not-char "%" ",") | ||||||
|  |                       (not (syntax close-parenthesis))) | ||||||
|  |                  (one-or-more space))) | ||||||
|  |             (not (member | ||||||
|  |                   (save-excursion | ||||||
|  |                     (sp-backward-sexp) | ||||||
|  |                     (thing-at-point 'word 'noprop)) | ||||||
|  |                   '("if" "for" "while")))) | ||||||
|  |            (cycle-spacing 0 nil 'single-shot)) | ||||||
|  |           ;; (|)a , b,    c ---> (|a, b, c) | ||||||
|  |           ((looking-back | ||||||
|  |             (rx (zero-or-more space) "," (zero-or-more space)) | ||||||
|  |             (line-beginning-position) 'greedy) | ||||||
|  |            (replace-match ", ")))))) | ||||||
|  |   (when (equal action 'slurp-backward) | ||||||
|  |     (let ((sxp (sp-get-thing))) | ||||||
|  |       (save-excursion | ||||||
|  |         (goto-char (sp-get sxp :end)) | ||||||
|  |         ;; x  (|) ---> (x) | ||||||
|  |         (when (looking-at (rx (one-or-more space) | ||||||
|  |                               (syntax close-parenthesis))) | ||||||
|  |           (cycle-spacing 0 nil 'single-shot)) | ||||||
|  |         ;; if(cond){} (|) ---> (if (cond) {}|) | ||||||
|  |         (cond ((member (sp-get sxp :prefix) '("if" "for" "while")) | ||||||
|  |                (goto-char (sp-get sxp :beg)) | ||||||
|  |                (cycle-spacing 1 nil 'single-shot)) | ||||||
|  |               ;; for style reasons there should be a space before curly | ||||||
|  |               ;; brackets and binary operators | ||||||
|  |               ((and (member (sp-get sxp :op) '("{" "%")) | ||||||
|  |                     (not (looking-at (rx (syntax close-parenthesis))))) | ||||||
|  |                (cycle-spacing 1 nil 'single-shot)) | ||||||
|  |               ;; v[2](|) ---> (v[2]|) | ||||||
|  |               ((and | ||||||
|  |                 (not (member (thing-at-point 'word 'noprop) | ||||||
|  |                              '("if" "for" "while"))) | ||||||
|  |                 (looking-at | ||||||
|  |                  (rx (and (zero-or-more space) | ||||||
|  |                           (not-char "{") | ||||||
|  |                           (or (syntax close-parenthesis) | ||||||
|  |                               (char "(") | ||||||
|  |                               (char "[")))))) | ||||||
|  |                (cycle-spacing 0 nil 'single-shot)) | ||||||
|  |               ;; 1 , 2 (|) ---> (1, 2) | ||||||
|  |               ((looking-at | ||||||
|  |                 (rx (zero-or-more space) "," (zero-or-more space))) | ||||||
|  |                (replace-match ", "))))))) | ||||||
|  |  | ||||||
|  | ;; function(x) {|} ---> function(x) {\n|\n} | ||||||
|  | ;; ##' \tabular{rrr}{|} ---> | ||||||
|  | ;; ##' \tabular{rrr}{ | ||||||
|  | ;; ##'   | | ||||||
|  | ;; ##' } | ||||||
|  | (defun sp-ess-open-sexp-indent (&rest _ignored) | ||||||
|  |   "Open new brace or bracket with indentation." | ||||||
|  |   (if (and (fboundp 'ess-roxy-entry-p) (ess-roxy-entry-p)) | ||||||
|  |       (progn | ||||||
|  |         (save-excursion (ess-roxy-indent-on-newline)) | ||||||
|  |         (when (looking-back ess-roxy-str nil) | ||||||
|  |           (cycle-spacing 3 nil t))) | ||||||
|  |     (newline) | ||||||
|  |     (indent-according-to-mode) | ||||||
|  |     (forward-line -1) | ||||||
|  |     (indent-according-to-mode))) | ||||||
|  |  | ||||||
|  | (defun sp-ess-roxy-str-p (id action context) | ||||||
|  |   (when (and (boundp 'ess-roxy-re) (eq action 'insert)) | ||||||
|  |     (sp--looking-back-p ess-roxy-re))) | ||||||
|  |  | ||||||
|  | (sp-with-modes 'ess-mode | ||||||
|  |   (sp-local-pair "{" nil | ||||||
|  | 		 :pre-handlers '(sp-ess-pre-handler) | ||||||
|  |                  ;; the more reasonable C-j interferes with default binding for | ||||||
|  |                  ;; `ess-eval-line' | ||||||
|  | 		 :post-handlers '((sp-ess-open-sexp-indent "M-j"))) | ||||||
|  |   (sp-local-pair "(" nil | ||||||
|  | 		 :pre-handlers '(sp-ess-pre-handler) | ||||||
|  | 		 :post-handlers '((sp-ess-open-sexp-indent "M-j"))) | ||||||
|  |   (sp-local-pair "[" nil | ||||||
|  | 		 :pre-handlers '(sp-ess-pre-handler) | ||||||
|  | 		 :post-handlers '((sp-ess-open-sexp-indent "M-j"))) | ||||||
|  |   (sp-local-pair "'" nil | ||||||
|  |                  :unless '(sp-ess-roxy-str-p))) | ||||||
|  |  | ||||||
|  | ;;; roxygen2 markup | ||||||
|  | ;; see https://cran.r-project.org/web/packages/roxygen2/vignettes/formatting.html | ||||||
|  | (sp-with-modes 'ess-mode | ||||||
|  |   (sp-local-pair "\\strong{" "}" | ||||||
|  |                  :when '(sp-in-comment-p) | ||||||
|  |                  :trigger "\\strong") | ||||||
|  |   (sp-local-pair "\\emph{" "}" | ||||||
|  |                  :when '(sp-in-comment-p) | ||||||
|  |                  :trigger "\\emph") | ||||||
|  |   (sp-local-pair "\\code{" "}" | ||||||
|  |                  :when '(sp-in-comment-p) | ||||||
|  |                  :trigger "\\code") | ||||||
|  |   (sp-local-pair "\\url{" "}" | ||||||
|  |                  :when '(sp-in-comment-p) | ||||||
|  |                  :trigger "\\url") | ||||||
|  |   (sp-local-pair "\\link{" "}" | ||||||
|  |                  :when '(sp-in-comment-p) | ||||||
|  |                  :trigger "\\link") | ||||||
|  |   (sp-local-pair "\\href{" "}" | ||||||
|  |                  :when '(sp-in-comment-p) | ||||||
|  |                  :trigger "\\href" | ||||||
|  |                  :suffix "{[^}]*}") | ||||||
|  |   (sp-local-pair "\\email{" "}" | ||||||
|  |                  :when '(sp-in-comment-p) | ||||||
|  |                  :trigger "\\email") | ||||||
|  |   (sp-local-pair "\\pkg{" "}" | ||||||
|  |                  :when '(sp-in-comment-p) | ||||||
|  |                  :trigger "\\pkg") | ||||||
|  |   (sp-local-pair "\\item{" "}" | ||||||
|  |                  :when '(sp-in-comment-p) | ||||||
|  | 		 :post-handlers '((sp-ess-open-sexp-indent "M-j")) | ||||||
|  |                  :trigger "\\item{") | ||||||
|  |   (sp-local-pair "\\enumerate{" "}" | ||||||
|  |                  :when '(sp-in-comment-p) | ||||||
|  | 		 :post-handlers '((sp-ess-open-sexp-indent "M-j")) | ||||||
|  |                  :trigger "\\enumerate") | ||||||
|  |   (sp-local-pair "\\itemize{" "}" | ||||||
|  |                  :when '(sp-in-comment-p) | ||||||
|  | 		 :post-handlers '((sp-ess-open-sexp-indent "M-j")) | ||||||
|  |                  :trigger "\\itemize") | ||||||
|  |   (sp-local-pair "\\describe{" "}" | ||||||
|  |                  :when '(sp-in-comment-p) | ||||||
|  | 		 :post-handlers '((sp-ess-open-sexp-indent "M-j")) | ||||||
|  |                  :trigger "\\describe") | ||||||
|  |   (sp-local-pair "\\eqn{" "}" | ||||||
|  |                  :when '(sp-in-comment-p) | ||||||
|  |                  :trigger "\\eqn") | ||||||
|  |   (sp-local-pair "\\deqn{" "}" | ||||||
|  |                  :when '(sp-in-comment-p) | ||||||
|  |                  :trigger "\\deqn") | ||||||
|  |   (sp-local-pair "\\tabular{" "}" | ||||||
|  |                  :when '(sp-in-comment-p) | ||||||
|  |                  :trigger "\\tabular" | ||||||
|  | 		 :post-handlers '((sp-ess-open-sexp-indent "M-j")) | ||||||
|  |                  :suffix "{[^}]*}")) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | (provide 'smartparens-ess) | ||||||
|  | ;;; smartparens-ess ends here | ||||||
							
								
								
									
										86
									
								
								elpa/smartparens-20161009.858/smartparens-haskell.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								elpa/smartparens-20161009.858/smartparens-haskell.el
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,86 @@ | |||||||
|  | ;;; smartparens-haskell.el --- Additional configuration for Haskell based modes. | ||||||
|  |  | ||||||
|  | ;; Copyright (C) 2015 Michael Xavier | ||||||
|  |  | ||||||
|  | ;; Author: Michael Xavier <michael@michaelxavier.net> | ||||||
|  | ;; Maintainer: Michael Xavier <michael@michaelxavier.net> | ||||||
|  | ;; Created: 29 Apr 2016 | ||||||
|  | ;; 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 Haskell based | ||||||
|  | ;; modes.  To use it, simply add: | ||||||
|  | ;; | ||||||
|  | ;; (require 'smartparens-haskell) | ||||||
|  | ;; | ||||||
|  | ;; into your configuration.  You can use this in conjunction with the | ||||||
|  | ;; default config or your own configuration. | ||||||
|  |  | ||||||
|  | ;; If you have good ideas about what should be added please file an | ||||||
|  | ;; issue on the github tracker. | ||||||
|  |  | ||||||
|  | ;; For more info, see github readme at | ||||||
|  | ;; https://github.com/Fuco1/smartparens | ||||||
|  |  | ||||||
|  | ;;; Code: | ||||||
|  | (require 'smartparens) | ||||||
|  |  | ||||||
|  | (sp-with-modes '(haskell-mode haskell-interactive-mode) | ||||||
|  |   (sp-local-pair "{-#" "#-}") | ||||||
|  |   (sp-local-pair "'" nil :unless '(sp-point-after-word-p)) | ||||||
|  |   (sp-local-pair "\\(" nil :actions nil)) | ||||||
|  |  | ||||||
|  | (defun sp--inferior-haskell-mode-backward-bound-fn () | ||||||
|  |   "Limit the backward search to the prompt if point is on prompt." | ||||||
|  |   (-when-let (limit (cond ((bound-and-true-p comint-last-prompt) | ||||||
|  |                            (marker-position (cdr comint-last-prompt))) | ||||||
|  |                           ((bound-and-true-p comint-last-prompt-overlay) | ||||||
|  |                            (overlay-end comint-last-prompt-overlay)) | ||||||
|  |                           (t nil))) | ||||||
|  |     (and (> (point) limit) limit))) | ||||||
|  |  | ||||||
|  | (defun sp--inferior-haskell-mode-forward-bound-fn () | ||||||
|  |   "Limit the forward search to exclude the prompt if point is before prompt." | ||||||
|  |   (-when-let (limit (cond ((bound-and-true-p comint-last-prompt) | ||||||
|  |                            (marker-position (car comint-last-prompt))) | ||||||
|  |                           ((bound-and-true-p comint-last-prompt-overlay) | ||||||
|  |                            (overlay-start comint-last-prompt-overlay)) | ||||||
|  |                           (t nil))) | ||||||
|  |     (and (< (point) limit) limit))) | ||||||
|  |  | ||||||
|  | (defun sp--setup-inferior-haskell-mode-search-bounds () | ||||||
|  |   "Setup the search bound. | ||||||
|  |  | ||||||
|  | If the point is after the last prompt, limit the backward search | ||||||
|  | only for the propmt. | ||||||
|  |  | ||||||
|  | If the point is before the last prompt, limit the forward search up until the prompt start." | ||||||
|  |   (setq sp-forward-bound-fn 'sp--inferior-haskell-mode-forward-bound-fn) | ||||||
|  |   (setq sp-backward-bound-fn 'sp--inferior-haskell-mode-backward-bound-fn)) | ||||||
|  |  | ||||||
|  | (add-hook 'inferior-haskell-mode-hook 'sp--setup-inferior-haskell-mode-search-bounds) | ||||||
|  |  | ||||||
|  | (provide 'smartparens-haskell) | ||||||
|  |  | ||||||
|  | ;;; smartparens-haskell.el ends here | ||||||
							
								
								
									
										172
									
								
								elpa/smartparens-20161009.858/smartparens-html.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										172
									
								
								elpa/smartparens-20161009.858/smartparens-html.el
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,172 @@ | |||||||
|  | ;;; smartparens-html.el --- Additional configuration for HTML based modes. | ||||||
|  |  | ||||||
|  | ;; Copyright (C) 2013-2014 Matus Goljer | ||||||
|  |  | ||||||
|  | ;; Author: Matus Goljer <matus.goljer@gmail.com> | ||||||
|  | ;; Maintainer: Matus Goljer <matus.goljer@gmail.com> | ||||||
|  | ;; Created: 14 Sep 2013 | ||||||
|  | ;; 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 HTML based | ||||||
|  | ;; modes.  To use it, simply add: | ||||||
|  | ;; | ||||||
|  | ;; (require 'smartparens-html) | ||||||
|  | ;; | ||||||
|  | ;; into your configuration.  You can use this in conjunction with the | ||||||
|  | ;; default config or your own configuration. | ||||||
|  |  | ||||||
|  | ;; It is advised that you add `html-mode' to the list | ||||||
|  | ;; `sp-navigate-consider-stringlike-sexp'.  This will tell smartparens | ||||||
|  | ;; to treat the "" delimited strings as sexps, and enable you to use | ||||||
|  | ;; all the sexp-based commands on them (such as `sp-down-sexp', | ||||||
|  | ;; `sp-up-sexp' etc.) | ||||||
|  |  | ||||||
|  | ;; This file provides these interactive functions: | ||||||
|  |  | ||||||
|  | ;; `sp-html-next-tag'     - Recommended binding: C-c C-f | ||||||
|  | ;; `sp-html-previous-tag' - Recommended binding: C-c C-b | ||||||
|  | ;; | ||||||
|  | ;; (These two bindings are used for navigation by tags forward or | ||||||
|  | ;;  backward, but `sp-forward-sexp' already does that.) | ||||||
|  |  | ||||||
|  | ;; If you have good ideas about what should be added please file an | ||||||
|  | ;; issue on the github tracker. | ||||||
|  |  | ||||||
|  | ;; For more info, see github readme at | ||||||
|  | ;; https://github.com/Fuco1/smartparens | ||||||
|  |  | ||||||
|  | ;;; Code: | ||||||
|  |  | ||||||
|  | (require 'smartparens) | ||||||
|  |  | ||||||
|  | (defun sp-html-next-tag (arg) | ||||||
|  |   "Move point to the beginning of next SGML tag. | ||||||
|  |  | ||||||
|  | With ARG positive N > 1, move N tags forward. | ||||||
|  |  | ||||||
|  | With ARG raw prefix argument \\[universal-argument] move out of | ||||||
|  | the current tag and to the beginning of enclosing tag. | ||||||
|  |  | ||||||
|  | Note: this function is based on `sp-beginning-of-sexp' but | ||||||
|  | specialized to only work with SGML tags and to always move | ||||||
|  | forward." | ||||||
|  |   (interactive "P") | ||||||
|  |   (let ((sp-prefix-tag-object t)) | ||||||
|  |     (if (sp--raw-argument-p arg) | ||||||
|  |         (sp-beginning-of-sexp arg) | ||||||
|  |       (sp-beginning-of-sexp (1+ (prefix-numeric-value arg)))))) | ||||||
|  |  | ||||||
|  | (defun sp-html-previous-tag (arg) | ||||||
|  |   "Move point to the beginning of previous SGML tag. | ||||||
|  |  | ||||||
|  | With ARG positive N > 1, move N tags backward. | ||||||
|  |  | ||||||
|  | With ARG raw prefix argument \\[universal-argument] move out of | ||||||
|  | the current tag and to the beginning of enclosing tag. | ||||||
|  |  | ||||||
|  | Note: this function is based on `sp-beginning-of-sexp' but | ||||||
|  | specialized to only work with SGML tags and to always move | ||||||
|  | backward." | ||||||
|  |   (interactive "P") | ||||||
|  |   (let ((sp-prefix-tag-object t)) | ||||||
|  |     (if (sp--raw-argument-p arg) | ||||||
|  |         (sp-beginning-of-sexp arg) | ||||||
|  |       (sp-beginning-of-sexp (1- (- (prefix-numeric-value arg))))))) | ||||||
|  |  | ||||||
|  | (defun sp-html-post-handler (&optional id action context) | ||||||
|  |   (cl-case action | ||||||
|  |     (slurp-forward | ||||||
|  |      (save-excursion | ||||||
|  |        (let ((sp-prefix-pair-object t)) | ||||||
|  |          (sp-backward-sexp)) | ||||||
|  |        (-when-let (enc (sp-get-enclosing-sexp)) | ||||||
|  |          (sp-get enc | ||||||
|  |            (goto-char :beg-in) | ||||||
|  |            (when (looking-at-p "[ \t]*$") | ||||||
|  |              (goto-char :end-in) | ||||||
|  |              (save-excursion | ||||||
|  |                (sp-backward-sexp) | ||||||
|  |                (forward-line -1) | ||||||
|  |                (when (sp-point-in-blank-line) | ||||||
|  |                  (delete-region (line-beginning-position) (1+ (line-end-position))))) | ||||||
|  |              (newline-and-indent)))))) | ||||||
|  |     (slurp-backward | ||||||
|  |      (save-excursion | ||||||
|  |        (-when-let (enc (sp-get-enclosing-sexp)) | ||||||
|  |          (sp-get enc | ||||||
|  |            (goto-char :end-in) | ||||||
|  |            (when (sp--looking-back-p "^[ \t]*") | ||||||
|  |              (save-excursion | ||||||
|  |                (goto-char :beg-in) | ||||||
|  |                (newline-and-indent) | ||||||
|  |                (sp-forward-sexp) | ||||||
|  |                (forward-line) | ||||||
|  |                (when (sp-point-in-blank-line) | ||||||
|  |                  (delete-region (line-beginning-position) (1+ (line-end-position)))))))))) | ||||||
|  |     (barf-forward | ||||||
|  |      (save-excursion | ||||||
|  |        (let ((sp-prefix-pair-object t)) | ||||||
|  |          (sp-backward-sexp)) | ||||||
|  |        (-when-let (enc (sp-get-enclosing-sexp)) | ||||||
|  |          (sp-get enc | ||||||
|  |            (goto-char :beg-in) | ||||||
|  |            (when (looking-at-p "[ \t]*$") | ||||||
|  |              (goto-char :end-in) | ||||||
|  |              (newline-and-indent))))) | ||||||
|  |      (save-excursion | ||||||
|  |        (sp-forward-sexp) | ||||||
|  |        (forward-line) | ||||||
|  |        (when (sp-point-in-blank-line) | ||||||
|  |          (delete-region (line-beginning-position) (1+ (line-end-position)))))) | ||||||
|  |     (barf-backward | ||||||
|  |      (save-excursion | ||||||
|  |        (-when-let (enc (sp-get-enclosing-sexp)) | ||||||
|  |          (sp-get enc | ||||||
|  |            (goto-char :end-in) | ||||||
|  |            (when (sp--looking-back-p "^[ \t]*") | ||||||
|  |              (goto-char :beg-in) | ||||||
|  |              (newline-and-indent) | ||||||
|  |              (sp-backward-up-sexp) | ||||||
|  |              (sp-backward-sexp) | ||||||
|  |              (forward-line -1) | ||||||
|  |              (when (sp-point-in-blank-line) | ||||||
|  |                (delete-region (line-beginning-position) (1+ (line-end-position))))))))) | ||||||
|  |     (beginning-of-sexp | ||||||
|  |      (when (looking-at-p "[ \t]*$") | ||||||
|  |        (sp-next-sexp))) | ||||||
|  |     (end-of-sexp | ||||||
|  |      (when (sp--looking-back-p "^[ \t]*" nil t) | ||||||
|  |        (sp-previous-sexp))))) | ||||||
|  |  | ||||||
|  | (sp-with-modes sp--html-modes | ||||||
|  |   (sp-local-pair "<" ">") | ||||||
|  |   (sp-local-tag  "<" "<_>" "</_>" :transform 'sp-match-sgml-tags :post-handlers '(sp-html-post-handler))) | ||||||
|  |  | ||||||
|  | (--each sp--html-modes | ||||||
|  |   (add-to-list 'sp-navigate-consider-sgml-tags it)) | ||||||
|  |  | ||||||
|  | (provide 'smartparens-html) | ||||||
|  |  | ||||||
|  | ;;; smartparens-html.el ends here | ||||||
							
								
								
									
										170
									
								
								elpa/smartparens-20161009.858/smartparens-latex.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										170
									
								
								elpa/smartparens-20161009.858/smartparens-latex.el
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,170 @@ | |||||||
|  | ;;; smartparens-latex.el --- Additional configuration for (La)TeX based modes. | ||||||
|  |  | ||||||
|  | ;; Copyright (C) 2013-2016 Matus Goljer | ||||||
|  |  | ||||||
|  | ;; Author: Matus Goljer <matus.goljer@gmail.com> | ||||||
|  | ;; Maintainer: Matus Goljer <matus.goljer@gmail.com> | ||||||
|  | ;; Created: 14 Feb 2013 | ||||||
|  | ;; 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 (La)TeX based | ||||||
|  | ;; modes.  To use it, simply add: | ||||||
|  | ;; | ||||||
|  | ;; (require 'smartparens-latex) | ||||||
|  | ;; | ||||||
|  | ;; into your configuration.  You can use this in conjunction with the | ||||||
|  | ;; default config or your own configuration. | ||||||
|  |  | ||||||
|  | ;; It is advised that you add `latex-mode' to the list | ||||||
|  | ;; `sp-navigate-consider-stringlike-sexp'.  This will tell | ||||||
|  | ;; smartparens to treat the $$ math blocks as sexps, and enable you | ||||||
|  | ;; to use all the sexp-based commands on them (such as | ||||||
|  | ;; `sp-down-sexp', `sp-up-sexp' etc.) | ||||||
|  |  | ||||||
|  | ;; If you have good ideas about what should be added please file an | ||||||
|  | ;; issue on the github tracker. | ||||||
|  |  | ||||||
|  | ;; For more info, see github readme at | ||||||
|  | ;; https://github.com/Fuco1/smartparens | ||||||
|  |  | ||||||
|  | ;;; Code: | ||||||
|  |  | ||||||
|  | (require 'smartparens) | ||||||
|  |  | ||||||
|  | (defun sp-latex-insert-spaces-inside-pair (id action context) | ||||||
|  |   (when (eq action 'insert) | ||||||
|  |     (insert "  ") | ||||||
|  |     (backward-char 1)) | ||||||
|  |   (when (and (eq action 'wrap) | ||||||
|  |              (save-excursion | ||||||
|  |                (goto-char (sp-get sp-last-wrapped-region :beg-in)) | ||||||
|  |                (not (sp--looking-back-p "[[{(]")))) | ||||||
|  |     (save-excursion | ||||||
|  |       (goto-char (sp-get sp-last-wrapped-region :end-in)) | ||||||
|  |       (insert " ") | ||||||
|  |       (goto-char (sp-get sp-last-wrapped-region :beg-in)) | ||||||
|  |       (insert " ")))) | ||||||
|  |  | ||||||
|  | (defun sp-latex-skip-match-apostrophe (ms mb me) | ||||||
|  |   (when (equal ms "'") | ||||||
|  |     (save-excursion | ||||||
|  |       (goto-char me) | ||||||
|  |       (looking-at-p "\\sw")))) | ||||||
|  |  | ||||||
|  | (defun sp-latex-skip-double-quote (_1 action _2) | ||||||
|  |   (when (eq action 'insert) | ||||||
|  |     (when (looking-at-p "''''") | ||||||
|  |       (delete-char -2) | ||||||
|  |       (delete-char 2) | ||||||
|  |       (forward-char 2)))) | ||||||
|  |  | ||||||
|  | (defun sp-latex-point-after-backslash (id action context) | ||||||
|  |   "Return t if point follows a backslash, nil otherwise. | ||||||
|  | This predicate is only tested on \"insert\" action." | ||||||
|  |   (when (eq action 'insert) | ||||||
|  |     (let ((trigger (sp-get-pair id :trigger))) | ||||||
|  |       (looking-back (concat "\\\\" (regexp-quote (if trigger trigger id))))))) | ||||||
|  |  | ||||||
|  | (defun sp-latex-point-before-word-p (id action context) | ||||||
|  |   "Return t if point is before a word while in navigate action." | ||||||
|  |   (when (eq action 'navigate) | ||||||
|  |     (looking-at-p "\\sw"))) | ||||||
|  |  | ||||||
|  | (add-to-list 'sp-navigate-skip-match | ||||||
|  |              '((tex-mode plain-tex-mode latex-mode) . sp--backslash-skip-match)) | ||||||
|  |  | ||||||
|  | (sp-with-modes '( | ||||||
|  |                  tex-mode | ||||||
|  |                  plain-tex-mode | ||||||
|  |                  latex-mode | ||||||
|  |                  ) | ||||||
|  |   (sp-local-pair "`" "'" | ||||||
|  |                  :actions '(:rem autoskip) | ||||||
|  |                  :skip-match 'sp-latex-skip-match-apostrophe | ||||||
|  |                  :unless '(sp-latex-point-after-backslash | ||||||
|  |                            sp-latex-point-before-word-p)) | ||||||
|  |   ;; math modes, yay.  The :actions are provided automatically if | ||||||
|  |   ;; these pairs do not have global definitions. | ||||||
|  |   (sp-local-pair "$" "$") | ||||||
|  |   (sp-local-pair "\\[" "\\]" :unless '(sp-latex-point-after-backslash)) | ||||||
|  |   ;; disable useless pairs.  Maybe also remove " ' and \"? | ||||||
|  |   (sp-local-pair "/*" nil :actions nil) | ||||||
|  |   (sp-local-pair "\\\\(" nil :actions nil) | ||||||
|  |   (sp-local-pair "'" nil :actions nil) | ||||||
|  |   (sp-local-pair "\\\"" nil :actions nil) | ||||||
|  |  | ||||||
|  |   ;; quote should insert ``'' instead of double quotes.  If we ever | ||||||
|  |   ;; need to insert ", C-q is our friend. | ||||||
|  |   (sp-local-pair "``" "''" | ||||||
|  |                  :trigger "\"" | ||||||
|  |                  :unless '(sp-latex-point-after-backslash) | ||||||
|  |                  :post-handlers '(sp-latex-skip-double-quote)) | ||||||
|  |  | ||||||
|  |   ;; add the prefix function sticking to {} pair | ||||||
|  |   (sp-local-pair "{" nil :prefix "\\\\\\(\\sw\\|\\s_\\)*") | ||||||
|  |  | ||||||
|  |   ;; pairs for big brackets.  Needs more research on what pairs are | ||||||
|  |   ;; useful to add here.  Post suggestions if you know some. | ||||||
|  |   (sp-local-pair "\\left(" "\\right)" | ||||||
|  |                  :trigger "\\l(" | ||||||
|  |                  :when '(sp-in-math-p) | ||||||
|  |                  :post-handlers '(sp-latex-insert-spaces-inside-pair)) | ||||||
|  |   (sp-local-pair "\\left[" "\\right]" | ||||||
|  |                  :trigger "\\l[" | ||||||
|  |                  :when '(sp-in-math-p) | ||||||
|  |                  :post-handlers '(sp-latex-insert-spaces-inside-pair)) | ||||||
|  |   (sp-local-pair "\\left\\{" "\\right\\}" | ||||||
|  |                  :trigger "\\l{" | ||||||
|  |                  :when '(sp-in-math-p) | ||||||
|  |                  :post-handlers '(sp-latex-insert-spaces-inside-pair)) | ||||||
|  |   (sp-local-pair "\\left|" "\\right|" | ||||||
|  |                  :trigger "\\l|" | ||||||
|  |                  :when '(sp-in-math-p) | ||||||
|  |                  :post-handlers '(sp-latex-insert-spaces-inside-pair)) | ||||||
|  |   (sp-local-pair "\\bigl(" "\\bigr)" :post-handlers '(sp-latex-insert-spaces-inside-pair)) | ||||||
|  |   (sp-local-pair "\\biggl(" "\\biggr)" :post-handlers '(sp-latex-insert-spaces-inside-pair)) | ||||||
|  |   (sp-local-pair "\\Bigl(" "\\Bigr)" :post-handlers '(sp-latex-insert-spaces-inside-pair)) | ||||||
|  |   (sp-local-pair "\\Biggl(" "\\Biggr)" :post-handlers '(sp-latex-insert-spaces-inside-pair)) | ||||||
|  |   (sp-local-pair "\\bigl[" "\\bigr]" :post-handlers '(sp-latex-insert-spaces-inside-pair)) | ||||||
|  |   (sp-local-pair "\\biggl[" "\\biggr]" :post-handlers '(sp-latex-insert-spaces-inside-pair)) | ||||||
|  |   (sp-local-pair "\\Bigl[" "\\Bigr]" :post-handlers '(sp-latex-insert-spaces-inside-pair)) | ||||||
|  |   (sp-local-pair "\\Biggl[" "\\Biggr]" :post-handlers '(sp-latex-insert-spaces-inside-pair)) | ||||||
|  |   (sp-local-pair "\\bigl\\{" "\\bigr\\}" :post-handlers '(sp-latex-insert-spaces-inside-pair)) | ||||||
|  |   (sp-local-pair "\\biggl\\{" "\\biggr\\}" :post-handlers '(sp-latex-insert-spaces-inside-pair)) | ||||||
|  |   (sp-local-pair "\\Bigl\\{" "\\Bigr\\}" :post-handlers '(sp-latex-insert-spaces-inside-pair)) | ||||||
|  |   (sp-local-pair "\\Biggl\\{" "\\Biggr\\}" :post-handlers '(sp-latex-insert-spaces-inside-pair)) | ||||||
|  |   (sp-local-pair "\\lfloor" "\\rfloor" :post-handlers '(sp-latex-insert-spaces-inside-pair)) | ||||||
|  |   (sp-local-pair "\\lceil" "\\rceil" :post-handlers '(sp-latex-insert-spaces-inside-pair)) | ||||||
|  |   (sp-local-pair "\\langle" "\\rangle" :post-handlers '(sp-latex-insert-spaces-inside-pair)) | ||||||
|  |  | ||||||
|  |   ;; some common wrappings | ||||||
|  |   (sp-local-tag "\"" "``" "''" :actions '(wrap)) | ||||||
|  |   (sp-local-tag "\\b" "\\begin{_}" "\\end{_}") | ||||||
|  |   (sp-local-tag "bi" "\\begin{itemize}" "\\end{itemize}") | ||||||
|  |   (sp-local-tag "be" "\\begin{enumerate}" "\\end{enumerate}")) | ||||||
|  |  | ||||||
|  | (provide 'smartparens-latex) | ||||||
|  |  | ||||||
|  | ;;; smartparens-latex.el ends here | ||||||
							
								
								
									
										89
									
								
								elpa/smartparens-20161009.858/smartparens-lua.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								elpa/smartparens-20161009.858/smartparens-lua.el
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,89 @@ | |||||||
|  | ;;; smartparens-lua.el --- Additional configuration for Lua based modes. | ||||||
|  |  | ||||||
|  | ;; Copyright (C) 2013-2014 Matus Goljer | ||||||
|  |  | ||||||
|  | ;; Author: Matus Goljer <matus.goljer@gmail.com> | ||||||
|  | ;; Maintainer: Matus Goljer <matus.goljer@gmail.com> | ||||||
|  | ;; Created: 3 August 2013 | ||||||
|  | ;; 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 Lua based | ||||||
|  | ;; modes.  To use it, simply add: | ||||||
|  | ;; | ||||||
|  | ;; (require 'smartparens-lua) | ||||||
|  | ;; | ||||||
|  | ;; into your configuration.  You can use this in conjunction with the | ||||||
|  | ;; default config or your own configuration. | ||||||
|  | ;; | ||||||
|  | ;; If you have good ideas about what should be added please file an | ||||||
|  | ;; issue on the github tracker. | ||||||
|  | ;; | ||||||
|  | ;; For more info, see github readme at | ||||||
|  | ;; https://github.com/Fuco1/smartparens | ||||||
|  |  | ||||||
|  | ;;; Code: | ||||||
|  |  | ||||||
|  | (require 'smartparens) | ||||||
|  |  | ||||||
|  | (defun sp-lua-post-keyword-insert (id action _context) | ||||||
|  |   (cond | ||||||
|  |    ((eq action 'insert) | ||||||
|  |     (cond | ||||||
|  |      ((member id '("while" "for")) | ||||||
|  |       (insert " do") | ||||||
|  |       (save-excursion (newline-and-indent)) | ||||||
|  |       (backward-char 3)) | ||||||
|  |      ((equal id "if") | ||||||
|  |       (insert " then") | ||||||
|  |       (save-excursion (newline-and-indent)) | ||||||
|  |       (backward-char 5)) | ||||||
|  |      ((equal id "function") | ||||||
|  |       (save-excursion (newline-and-indent)) | ||||||
|  |       (insert " ")))))) | ||||||
|  |  | ||||||
|  | ;; all the pairs are expanded only if followed by "SPC" event.  This | ||||||
|  | ;; will reduce false positives like 'dIFficult' to trigger. | ||||||
|  | (sp-with-modes '(lua-mode) | ||||||
|  |   (sp-local-pair "if" "end" | ||||||
|  |                  :when '(("SPC")) | ||||||
|  |                  :unless '(sp-in-comment-p) | ||||||
|  |                  :post-handlers '(sp-lua-post-keyword-insert)) | ||||||
|  |   (sp-local-pair "function" "end" | ||||||
|  |                  :when '(("SPC")) | ||||||
|  |                  :unless '(sp-in-comment-p) | ||||||
|  |                  :post-handlers '(sp-lua-post-keyword-insert)) | ||||||
|  |   (sp-local-pair "for" "end" | ||||||
|  |                  :when '(("SPC")) | ||||||
|  |                  :unless '(sp-in-comment-p) | ||||||
|  |                  :post-handlers '(sp-lua-post-keyword-insert)) | ||||||
|  |   (sp-local-pair "while" "end" | ||||||
|  |                  :when '(("SPC")) | ||||||
|  |                  :unless '(sp-in-comment-p) | ||||||
|  |                  :post-handlers '(sp-lua-post-keyword-insert)) | ||||||
|  |   ) | ||||||
|  |  | ||||||
|  | (provide 'smartparens-lua) | ||||||
|  |  | ||||||
|  | ;;; smartparens-lua.el ends here | ||||||
							
								
								
									
										6
									
								
								elpa/smartparens-20161009.858/smartparens-pkg.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								elpa/smartparens-20161009.858/smartparens-pkg.el
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | (define-package "smartparens" "20161009.858" "Automatic insertion, wrapping and paredit-like navigation with user defined pairs." | ||||||
|  |   '((dash "2.12.1") | ||||||
|  |     (cl-lib "0.3"))) | ||||||
|  | ;; Local Variables: | ||||||
|  | ;; no-byte-compile: t | ||||||
|  | ;; End: | ||||||
							
								
								
									
										84
									
								
								elpa/smartparens-20161009.858/smartparens-python.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								elpa/smartparens-20161009.858/smartparens-python.el
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,84 @@ | |||||||
|  | ;;; smartparens-python.el --- Additional configuration for Python based modes. | ||||||
|  |  | ||||||
|  | ;; Copyright (C) 2015-2016 Matus Goljer | ||||||
|  |  | ||||||
|  | ;; Author: Matus Goljer <matus.goljer@gmail.com> | ||||||
|  | ;; Maintainer: Matus Goljer <matus.goljer@gmail.com> | ||||||
|  | ;; Created: 8 February 2015 | ||||||
|  | ;; 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 Python based | ||||||
|  | ;; modes.  To use it, simply add: | ||||||
|  | ;; | ||||||
|  | ;; (require 'smartparens-python) | ||||||
|  | ;; | ||||||
|  | ;; into your configuration.  You can use this in conjunction with the | ||||||
|  | ;; default config or your own configuration. | ||||||
|  | ;; | ||||||
|  | ;; If you have good ideas about what should be added please file an | ||||||
|  | ;; issue on the github tracker. | ||||||
|  | ;; | ||||||
|  | ;; For more info, see github readme at | ||||||
|  | ;; https://github.com/Fuco1/smartparens | ||||||
|  |  | ||||||
|  | ;;; Code: | ||||||
|  |  | ||||||
|  | (require 'smartparens) | ||||||
|  |  | ||||||
|  | ;; Python has no sexp suffices.  This fixes slurping | ||||||
|  | ;; (|sys).path.append---the dot should not travel with the closing | ||||||
|  | ;; paren | ||||||
|  | (--each '(python-mode inferior-python-mode) | ||||||
|  |   (add-to-list 'sp-sexp-suffix (list it 'regexp ""))) | ||||||
|  |  | ||||||
|  | (sp-with-modes 'python-mode | ||||||
|  |   (sp-local-pair "'" "'" :unless '(sp-in-comment-p sp-in-string-quotes-p)) | ||||||
|  |   (sp-local-pair "\"\"\"" "\"\"\"") | ||||||
|  |   (sp-local-pair "(" nil :pre-handlers '(sp-python-pre-slurp-handler)) | ||||||
|  |   (sp-local-pair "[" nil :pre-handlers '(sp-python-pre-slurp-handler))) | ||||||
|  |  | ||||||
|  | (defun sp-python-pre-slurp-handler (id action context) | ||||||
|  |   (when (eq action 'slurp-forward) | ||||||
|  |     ;; If there was no space before, we shouldn't add on. | ||||||
|  |     ;; ok = enclosing, next-thing one being slurped into | ||||||
|  |     ;; (variables let-bound in `sp-forward-slurp-sexp'). | ||||||
|  |     (save-excursion | ||||||
|  |       (when (and (= (sp-get ok :end) (sp-get next-thing :beg)) | ||||||
|  |                  (equal (sp-get ok :op) (sp-get next-thing :op))) | ||||||
|  |         (goto-char (sp-get ok :end)) | ||||||
|  |         (when (looking-back " ") | ||||||
|  |           (delete-char -1)))))) | ||||||
|  |  | ||||||
|  | (defadvice python-indent-dedent-line-backspace | ||||||
|  |     (around sp-backward-delete-char-advice activate) | ||||||
|  |   (if smartparens-strict-mode | ||||||
|  |       (cl-letf (((symbol-function 'delete-backward-char) | ||||||
|  |                  (lambda (arg &optional killp) | ||||||
|  |                    (sp-backward-delete-char arg)))) | ||||||
|  |         ad-do-it) | ||||||
|  |     ad-do-it)) | ||||||
|  |  | ||||||
|  | (provide 'smartparens-python) | ||||||
|  | ;;; smartparens-python.el ends here | ||||||
							
								
								
									
										55
									
								
								elpa/smartparens-20161009.858/smartparens-racket.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								elpa/smartparens-20161009.858/smartparens-racket.el
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,55 @@ | |||||||
|  | ;;; smartparens-racket.el --- Additional configuration for Racket based modes. | ||||||
|  |  | ||||||
|  | ;; Copyright (C) 2015 Vikraman Choudhury | ||||||
|  |  | ||||||
|  | ;; Author: Vikraman Choudhury <git@vikraman.org> | ||||||
|  | ;; Maintainer: Vikraman Choudhury <git@vikraman.org> | ||||||
|  | ;; Created: 26 Oct 2015 | ||||||
|  | ;; 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 Racket based | ||||||
|  | ;; modes.  To use it, simply add: | ||||||
|  | ;; | ||||||
|  | ;; (require 'smartparens-racket) | ||||||
|  | ;; | ||||||
|  | ;; into your configuration.  You can use this in conjunction with the | ||||||
|  | ;; default config or your own configuration. | ||||||
|  | ;; | ||||||
|  | ;; If you have good ideas about what should be added please file an | ||||||
|  | ;; issue on the github tracker. | ||||||
|  | ;; | ||||||
|  | ;; For more info, see github readme at | ||||||
|  | ;; https://github.com/Fuco1/smartparens | ||||||
|  |  | ||||||
|  | ;;; Code: | ||||||
|  |  | ||||||
|  | (require 'smartparens) | ||||||
|  |  | ||||||
|  | (sp-with-modes '(racket-mode racket-repl-mode) | ||||||
|  |   (sp-local-pair "`" nil :actions nil) | ||||||
|  |   (sp-local-pair "#|" "|#")) | ||||||
|  |  | ||||||
|  | (provide 'smartparens-racket) | ||||||
|  | ;;; smartparens-racket.el ends here | ||||||
							
								
								
									
										374
									
								
								elpa/smartparens-20161009.858/smartparens-ruby.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										374
									
								
								elpa/smartparens-20161009.858/smartparens-ruby.el
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,374 @@ | |||||||
|  | ;;; smartparens-ruby.el --- Additional configuration for Ruby based modes. | ||||||
|  |  | ||||||
|  | ;; Copyright (C) 2013-2014 Jean-Louis Giordano | ||||||
|  |  | ||||||
|  | ;; Author: Jean-Louis Giordano <jean-louis@jawaninja.com> | ||||||
|  | ;; Maintainer: Matus Goljer <matus.goljer@gmail.com> | ||||||
|  | ;; Created: 16 June 2013 | ||||||
|  | ;; 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 Ruby based | ||||||
|  | ;; modes.  To use it, simply add: | ||||||
|  | ;; | ||||||
|  | ;; (require 'smartparens-ruby) | ||||||
|  | ;; | ||||||
|  | ;; into your configuration.  You can use this in conjunction with the | ||||||
|  | ;; default config or your own configuration. | ||||||
|  | ;; | ||||||
|  |  | ||||||
|  | ;; If you have good ideas about what should be added please file an | ||||||
|  | ;; issue on the github tracker. | ||||||
|  |  | ||||||
|  | ;; For more info, see github readme at | ||||||
|  | ;; https://github.com/Fuco1/smartparens | ||||||
|  |  | ||||||
|  | ;;; Code: | ||||||
|  |  | ||||||
|  | (require 'smartparens) | ||||||
|  |  | ||||||
|  | (defun sp-ruby-forward-sexp () | ||||||
|  |   (interactive) | ||||||
|  |   (if (boundp 'enh-ruby-forward-sexp) | ||||||
|  |       (enh-ruby-forward-sexp) | ||||||
|  |     (ruby-forward-sexp))) | ||||||
|  |  | ||||||
|  | (defun sp-ruby-backward-sexp () | ||||||
|  |   (interactive) | ||||||
|  |   (if (boundp 'enh-ruby-backward-sexp) | ||||||
|  |       (enh-ruby-backward-sexp) | ||||||
|  |     (ruby-backward-sexp))) | ||||||
|  |  | ||||||
|  | (defun sp-ruby-maybe-one-space () | ||||||
|  |   (while (looking-back " ") (backward-char)) | ||||||
|  |   (when (or (looking-at-p " ") | ||||||
|  |             (looking-at-p "}") | ||||||
|  |             (looking-back "{")) | ||||||
|  |     (save-excursion (just-one-space))) | ||||||
|  |   (when (and (not (looking-back "^.?")) | ||||||
|  |              (save-excursion | ||||||
|  |                (backward-char 2) | ||||||
|  |                (or (looking-at-p ".[^:] [.([,;]") | ||||||
|  |                    (looking-at-p ".. ::") | ||||||
|  |                    (looking-at-p ".[.@$] ") | ||||||
|  |                    (looking-at-p ":: ")))) | ||||||
|  |     (delete-char 1))) | ||||||
|  |  | ||||||
|  | (defun sp-ruby-delete-indentation (&optional arg) | ||||||
|  |   "Better way of joining ruby lines" | ||||||
|  |   (delete-indentation arg) | ||||||
|  |   (sp-ruby-maybe-one-space)) | ||||||
|  |  | ||||||
|  | (defun sp-ruby-block-post-handler (id action context) | ||||||
|  |   "Handler for ruby block-like inserts" | ||||||
|  |   (when (equal action 'insert) | ||||||
|  |     (save-excursion | ||||||
|  |       (newline) | ||||||
|  |       (indent-according-to-mode)) | ||||||
|  |     (indent-according-to-mode)) | ||||||
|  |   (sp-ruby-post-handler id action context)) | ||||||
|  |  | ||||||
|  | (defun sp-ruby-def-post-handler (id action context) | ||||||
|  |   "Handler for ruby def-like inserts" | ||||||
|  |   (when (equal action 'insert) | ||||||
|  |     (save-excursion | ||||||
|  |       (insert "x") | ||||||
|  |       (newline) | ||||||
|  |       (indent-according-to-mode)) | ||||||
|  |     (delete-char 1)) | ||||||
|  |   (sp-ruby-post-handler id action context)) | ||||||
|  |  | ||||||
|  | (defun sp-ruby-post-handler (id action context) | ||||||
|  |   (when (equal action 'barf-backward) | ||||||
|  |     (sp-ruby-delete-indentation 1) | ||||||
|  |     (indent-according-to-mode) | ||||||
|  |     (save-excursion | ||||||
|  |       (sp-backward-sexp) ; move to begining of current sexp | ||||||
|  |       (sp-backward-sexp arg) | ||||||
|  |       (sp-ruby-maybe-one-space))) | ||||||
|  |  | ||||||
|  |   (when (equal action 'barf-forward) | ||||||
|  |     (sp-get enc | ||||||
|  |       (let ((beg-line (line-number-at-pos :beg-in)) | ||||||
|  |             (end-line (line-number-at-pos :end-in))) | ||||||
|  |         (sp-forward-sexp arg) | ||||||
|  |         (sp-ruby-maybe-one-space) | ||||||
|  |         (when (not (= (line-number-at-pos) beg-line)) | ||||||
|  |           (sp-ruby-delete-indentation -1)) | ||||||
|  |         (indent-according-to-mode))))) | ||||||
|  |  | ||||||
|  | (defun sp-ruby-pre-handler (id action context) | ||||||
|  |   "Handler for ruby slurp and barf" | ||||||
|  |   (sp-get enc | ||||||
|  |     (let ((beg-line (line-number-at-pos :beg-in)) | ||||||
|  |           (end-line (line-number-at-pos :end-in))) | ||||||
|  |  | ||||||
|  |       (when (equal action 'slurp-backward) | ||||||
|  |         (save-excursion | ||||||
|  |           (sp-forward-sexp) | ||||||
|  |           (when (looking-at-p ";") (forward-char)) | ||||||
|  |           (sp-ruby-maybe-one-space) | ||||||
|  |           (when (not (= (line-number-at-pos) end-line)) | ||||||
|  |             (sp-ruby-delete-indentation -1))) | ||||||
|  |         (while (thing-at-point-looking-at "\\.[ \n]*") | ||||||
|  |           (sp-backward-sexp)) | ||||||
|  |         (when (looking-back "[@$:&?!]") | ||||||
|  |           (backward-char) | ||||||
|  |           (when (looking-back "[@&:]") | ||||||
|  |             (backward-char))) | ||||||
|  |         (just-one-space) | ||||||
|  |         (save-excursion | ||||||
|  |           (if (= (line-number-at-pos) end-line) | ||||||
|  |               (insert " ") | ||||||
|  |             (newline)))) | ||||||
|  |  | ||||||
|  |       (when (equal action 'barf-backward) | ||||||
|  |         ;; Barf whole method chains | ||||||
|  |         (while (thing-at-point-looking-at "[.([:][ \n]*") | ||||||
|  |           (sp-forward-sexp)) | ||||||
|  |         (if (looking-at-p " *$") | ||||||
|  |             (newline) | ||||||
|  |           (save-excursion (newline)))) | ||||||
|  |  | ||||||
|  |       (when (equal action 'slurp-forward) | ||||||
|  |         (save-excursion | ||||||
|  |           (sp-backward-sexp) | ||||||
|  |           (when (looking-back "\.") (backward-char)) | ||||||
|  |           (sp-ruby-maybe-one-space) | ||||||
|  |           (when (not (= (line-number-at-pos) beg-line)) | ||||||
|  |             (if (thing-at-point-looking-at "\\.[ \n]*") | ||||||
|  |                 (progn | ||||||
|  |                   (forward-symbol -1) | ||||||
|  |                   (sp-ruby-delete-indentation -1)) | ||||||
|  |               (sp-ruby-delete-indentation)))) | ||||||
|  |         (while (looking-at-p "::") (sp-forward-symbol)) | ||||||
|  |         (when (looking-at-p "[?!;]") (forward-char)) | ||||||
|  |         (if (= (line-number-at-pos) beg-line) | ||||||
|  |             (insert " ") | ||||||
|  |           (newline))) | ||||||
|  |  | ||||||
|  |       (when (equal action 'barf-forward) | ||||||
|  |         (when (looking-back "\\.") (backward-char)) | ||||||
|  |         (while (looking-back "::") (sp-backward-symbol)) | ||||||
|  |         (if (= (line-number-at-pos) end-line) | ||||||
|  |             (insert " ") | ||||||
|  |           (if (looking-back "^ *") | ||||||
|  |               (save-excursion (newline)) | ||||||
|  |             (newline))))))) | ||||||
|  |  | ||||||
|  | (defun sp-ruby-inline-p (id) | ||||||
|  |   (save-excursion | ||||||
|  |     (when (looking-back id) | ||||||
|  |       (backward-word)) | ||||||
|  |     (when (not (or (looking-back "^ *") | ||||||
|  |                    (looking-back "= *"))) | ||||||
|  |       (or (save-excursion | ||||||
|  |                (forward-symbol -1) | ||||||
|  |                (forward-symbol 1) | ||||||
|  |                (looking-at-p (concat " *" id))) | ||||||
|  |           (save-excursion | ||||||
|  |             ;; This does not seem to make emacs snapshot happy | ||||||
|  |             (ignore-errors | ||||||
|  |               (sp-ruby-backward-sexp) | ||||||
|  |               (sp-ruby-forward-sexp) | ||||||
|  |               (looking-at-p (concat "[^ ]* *" id)))))))) | ||||||
|  |  | ||||||
|  | (defun sp-ruby-method-p (id) | ||||||
|  |   (save-excursion | ||||||
|  |     (when (looking-back id) | ||||||
|  |       (backward-word)) | ||||||
|  |     (and (looking-at-p id) | ||||||
|  |          (or | ||||||
|  |           ;; fix for def_foo | ||||||
|  |           (looking-at-p (concat id "[_?!:]")) | ||||||
|  |           ;; fix for foo_def | ||||||
|  |           (looking-back "[_:@$.]") | ||||||
|  |           ;; fix for def for; end | ||||||
|  |           (looking-back "def \\|class \\|module ") | ||||||
|  |           ;; Check if multiline method call | ||||||
|  |           ;; But beware of comments! | ||||||
|  |           (and (looking-back "\\.[ \n]*") | ||||||
|  |                (not (save-excursion | ||||||
|  |                       (search-backward ".") | ||||||
|  |                       (sp-point-in-comment)))))))) | ||||||
|  |  | ||||||
|  | (defun sp-ruby-skip-inline-match-p (ms mb me) | ||||||
|  |   (or (sp-ruby-method-p ms) | ||||||
|  |       (sp-ruby-inline-p ms))) | ||||||
|  |  | ||||||
|  | (defun sp-ruby-skip-method-p (ms mb me) | ||||||
|  |   (sp-ruby-method-p ms)) | ||||||
|  |  | ||||||
|  | (defun sp-ruby-in-string-or-word-p (id action context) | ||||||
|  |   (or (sp-in-string-p id action context) | ||||||
|  |       (and (looking-back id) | ||||||
|  |            (not (looking-back (sp--strict-regexp-quote id)))) | ||||||
|  |       (sp-ruby-method-p id))) | ||||||
|  |  | ||||||
|  | (defun sp-ruby-in-string-word-or-inline-p (id action context) | ||||||
|  |   (or (sp-ruby-in-string-or-word-p id action context) | ||||||
|  |       (and (looking-back id) | ||||||
|  |            (sp-ruby-inline-p id)))) | ||||||
|  |  | ||||||
|  | (defun sp-ruby-pre-pipe-handler (id action context) | ||||||
|  |   (when (equal action 'insert) | ||||||
|  |     (save-excursion | ||||||
|  |       (just-one-space)) | ||||||
|  |     (save-excursion | ||||||
|  |       (search-backward id) | ||||||
|  |       (just-one-space)))) | ||||||
|  |  | ||||||
|  | (defun sp-ruby-should-insert-pipe-close (id action _ctx) | ||||||
|  |   "Test whether to insert the closing pipe for a lambda-binding pipe pair." | ||||||
|  |   (if (eq action 'insert) | ||||||
|  |       (thing-at-point-looking-at | ||||||
|  |        (rx-to-string `(and (or "do" "{") (* space) ,id))) | ||||||
|  |     t)) | ||||||
|  |  | ||||||
|  | (defun sp--ruby-skip-match (ms me mb) | ||||||
|  |   (when (string= ms "end") | ||||||
|  |     (or (sp-in-string-p ms me mb) | ||||||
|  |         (sp-ruby-method-p "end")))) | ||||||
|  |  | ||||||
|  | (add-to-list 'sp-navigate-skip-match | ||||||
|  |              '((ruby-mode enh-ruby-mode motion-mode) . sp--ruby-skip-match)) | ||||||
|  |  | ||||||
|  | (dolist (mode '(ruby-mode motion-mode)) | ||||||
|  |   (add-to-list 'sp-sexp-suffix `(,mode syntax ""))) | ||||||
|  |  | ||||||
|  | (sp-with-modes '(ruby-mode enh-ruby-mode motion-mode) | ||||||
|  |   (sp-local-pair "do" "end" | ||||||
|  |                  :when '(("SPC" "RET" "<evil-ret>")) | ||||||
|  |                  :unless '(sp-ruby-in-string-or-word-p sp-in-comment-p) | ||||||
|  |                  :actions '(insert navigate) | ||||||
|  |                  :pre-handlers '(sp-ruby-pre-handler) | ||||||
|  |                  :post-handlers '(sp-ruby-block-post-handler) | ||||||
|  |                  :skip-match 'sp-ruby-skip-method-p | ||||||
|  |                  :suffix "") | ||||||
|  |  | ||||||
|  |   (sp-local-pair "{" "}" | ||||||
|  |                  :pre-handlers '(sp-ruby-pre-handler) | ||||||
|  |                  :post-handlers '(sp-ruby-post-handler) | ||||||
|  |                  :suffix "") | ||||||
|  |  | ||||||
|  |   (sp-local-pair "begin" "end" | ||||||
|  |                  :when '(("SPC" "RET" "<evil-ret>")) | ||||||
|  |                  :unless '(sp-ruby-in-string-or-word-p sp-in-comment-p) | ||||||
|  |                  :actions '(insert navigate) | ||||||
|  |                  :pre-handlers '(sp-ruby-pre-handler) | ||||||
|  |                  :post-handlers '(sp-ruby-block-post-handler) | ||||||
|  |                  :skip-match 'sp-ruby-skip-method-p | ||||||
|  |                  :suffix "") | ||||||
|  |  | ||||||
|  |   (sp-local-pair "def" "end" | ||||||
|  |                  :when '(("SPC" "RET" "<evil-ret>")) | ||||||
|  |                  :unless '(sp-ruby-in-string-or-word-p sp-in-comment-p) | ||||||
|  |                  :actions '(insert navigate) | ||||||
|  |                  :pre-handlers '(sp-ruby-pre-handler) | ||||||
|  |                  :post-handlers '(sp-ruby-def-post-handler) | ||||||
|  |                  :skip-match 'sp-ruby-skip-method-p | ||||||
|  |                  :suffix "") | ||||||
|  |  | ||||||
|  |   (sp-local-pair "class" "end" | ||||||
|  |                  :when '(("SPC" "RET" "<evil-ret>")) | ||||||
|  |                  :unless '(sp-ruby-in-string-or-word-p sp-in-comment-p) | ||||||
|  |                  :actions '(insert navigate) | ||||||
|  |                  :pre-handlers '(sp-ruby-pre-handler) | ||||||
|  |                  :post-handlers '(sp-ruby-def-post-handler) | ||||||
|  |                  :skip-match 'sp-ruby-skip-method-p | ||||||
|  |                  :suffix "") | ||||||
|  |  | ||||||
|  |   (sp-local-pair "module" "end" | ||||||
|  |                  :when '(("SPC" "RET" "<evil-ret>")) | ||||||
|  |                  :unless '(sp-ruby-in-string-or-word-p sp-in-comment-p) | ||||||
|  |                  :actions '(insert navigate) | ||||||
|  |                  :pre-handlers '(sp-ruby-pre-handler) | ||||||
|  |                  :post-handlers '(sp-ruby-def-post-handler) | ||||||
|  |                  :skip-match 'sp-ruby-skip-method-p | ||||||
|  |                  :suffix "") | ||||||
|  |  | ||||||
|  |   (sp-local-pair "case" "end" | ||||||
|  |                  :when '(("SPC" "RET" "<evil-ret>")) | ||||||
|  |                  :unless '(sp-ruby-in-string-or-word-p sp-in-comment-p) | ||||||
|  |                  :actions '(insert navigate) | ||||||
|  |                  :pre-handlers '(sp-ruby-pre-handler) | ||||||
|  |                  :post-handlers '(sp-ruby-def-post-handler) | ||||||
|  |                  :skip-match 'sp-ruby-skip-method-p | ||||||
|  |                  :suffix "") | ||||||
|  |  | ||||||
|  |   (sp-local-pair "for" "end" | ||||||
|  |                  :when '(("SPC" "RET" "<evil-ret>")) | ||||||
|  |                  :unless '(sp-ruby-in-string-or-word-p sp-in-comment-p) | ||||||
|  |                  :actions '(insert navigate) | ||||||
|  |                  :pre-handlers '(sp-ruby-pre-handler) | ||||||
|  |                  :post-handlers '(sp-ruby-def-post-handler) | ||||||
|  |                  :skip-match 'sp-ruby-skip-inline-match-p) | ||||||
|  |  | ||||||
|  |   (sp-local-pair "if" "end" | ||||||
|  |                  :when '(("SPC" "RET" "<evil-ret>")) | ||||||
|  |                  :unless '(sp-ruby-in-string-word-or-inline-p sp-in-comment-p) | ||||||
|  |                  :actions '(insert navigate) | ||||||
|  |                  :pre-handlers '(sp-ruby-pre-handler) | ||||||
|  |                  :post-handlers '(sp-ruby-def-post-handler) | ||||||
|  |                  :skip-match 'sp-ruby-skip-inline-match-p | ||||||
|  |                  :suffix "") | ||||||
|  |  | ||||||
|  |   (sp-local-pair "unless" "end" | ||||||
|  |                  :when '(("SPC" "RET" "<evil-ret>")) | ||||||
|  |                  :unless '(sp-ruby-in-string-word-or-inline-p sp-in-comment-p) | ||||||
|  |                  :actions '(insert navigate) | ||||||
|  |                  :pre-handlers '(sp-ruby-pre-handler) | ||||||
|  |                  :post-handlers '(sp-ruby-def-post-handler) | ||||||
|  |                  :skip-match 'sp-ruby-skip-inline-match-p | ||||||
|  |                  :suffix "") | ||||||
|  |  | ||||||
|  |   (sp-local-pair "while" "end" | ||||||
|  |                  :when '(("SPC" "RET" "<evil-ret>")) | ||||||
|  |                  :unless '(sp-ruby-in-string-word-or-inline-p sp-in-comment-p) | ||||||
|  |                  :actions '(insert navigate) | ||||||
|  |                  :pre-handlers '(sp-ruby-pre-handler) | ||||||
|  |                  :post-handlers '(sp-ruby-def-post-handler) | ||||||
|  |                  :skip-match 'sp-ruby-skip-inline-match-p | ||||||
|  |                  :suffix "") | ||||||
|  |  | ||||||
|  |   (sp-local-pair "until" "end" | ||||||
|  |                  :when '(("SPC" "RET" "<evil-ret>")) | ||||||
|  |                  :unless '(sp-ruby-in-string-word-or-inline-p sp-in-comment-p) | ||||||
|  |                  :actions '(insert navigate) | ||||||
|  |                  :pre-handlers '(sp-ruby-pre-handler) | ||||||
|  |                  :post-handlers '(sp-ruby-def-post-handler) | ||||||
|  |                  :skip-match 'sp-ruby-skip-inline-match-p | ||||||
|  |                  :suffix "") | ||||||
|  |  | ||||||
|  |   (sp-local-pair "|" "|" | ||||||
|  |                  :when '(sp-ruby-should-insert-pipe-close) | ||||||
|  |                  :pre-handlers '(sp-ruby-pre-pipe-handler) | ||||||
|  |                  :suffix "")) | ||||||
|  |  | ||||||
|  | (dolist (mode '(ruby-mode motion-mode)) | ||||||
|  |   (add-to-list 'sp-navigate-consider-stringlike-sexp mode)) | ||||||
|  |  | ||||||
|  | (provide 'smartparens-ruby) | ||||||
|  |  | ||||||
|  | ;;; smartparens-ruby.el ends here | ||||||
							
								
								
									
										96
									
								
								elpa/smartparens-20161009.858/smartparens-rust.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								elpa/smartparens-20161009.858/smartparens-rust.el
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,96 @@ | |||||||
|  | ;;; smartparens-rust.el --- Additional configuration for Haskell based modes. | ||||||
|  |  | ||||||
|  | ;; Copyright (C) 2015 Wilfred Hughes | ||||||
|  |  | ||||||
|  | ;; Created: 3 November 2015 | ||||||
|  | ;; 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 Rust.  To use | ||||||
|  | ;; it, simply add: | ||||||
|  | ;; | ||||||
|  | ;; (require 'smartparens-config) | ||||||
|  | ;; | ||||||
|  | ;; alternatively, you can explicitly load these preferences: | ||||||
|  | ;; | ||||||
|  | ;; (require 'smartparens-rust) | ||||||
|  | ;; | ||||||
|  | ;; in your configuration. | ||||||
|  |  | ||||||
|  | ;; For more info, see github readme at | ||||||
|  | ;; https://github.com/Fuco1/smartparens | ||||||
|  |  | ||||||
|  | ;;; Code: | ||||||
|  | (require 'smartparens) | ||||||
|  |  | ||||||
|  | (defun sp-in-rust-lifetime-context (&rest args) | ||||||
|  |   "Return t if point is in a Rust context where ' represents a lifetime. | ||||||
|  | If we return nil, ' should be used for character literals." | ||||||
|  |   (or | ||||||
|  |    (condition-case nil | ||||||
|  |        ;; If point is just after a &', it's probably a &'foo. | ||||||
|  |        (save-excursion | ||||||
|  |          (backward-char 2) | ||||||
|  |          (looking-at "&")) | ||||||
|  |      ;; If we're at the beginning of the buffer, just carry on. | ||||||
|  |      (beginning-of-buffer)) | ||||||
|  |    ;; If point is inside < > it's probably a parameterised function. | ||||||
|  |    (let ((paren-pos (nth 1 (syntax-ppss)))) | ||||||
|  |      (and paren-pos | ||||||
|  |           (save-excursion | ||||||
|  |             (goto-char paren-pos) | ||||||
|  |             (looking-at "<")))))) | ||||||
|  |  | ||||||
|  | (defun sp-rust-filter-angle-brackets (id action context) | ||||||
|  |   "Return t if we should allow the ACTION in the current CONTEXT | ||||||
|  |   for angle brackets." | ||||||
|  |   (cond | ||||||
|  |    ;; Disallow in format string after any character, since < is used to specify | ||||||
|  |    ;; alignment | ||||||
|  |    ((and (eq context 'string) | ||||||
|  |          (looking-back (rx (seq alphanumeric "<")))) nil) | ||||||
|  |  | ||||||
|  |    ;; Disallow when inserting in code in two situations: 1) when '<' is used for | ||||||
|  |    ;; the comparison operators '<' and '<=', and 2) when writing a left shift | ||||||
|  |    ;; '<<'.  In both cases, we assume the user will use a space before the | ||||||
|  |    ;; opening bracket '<'. | ||||||
|  |    ((and (eq context 'code) | ||||||
|  |          (eq action 'insert) | ||||||
|  |          (looking-back (rx (or (seq space "<") | ||||||
|  |                                (seq space "<<"))))) nil) | ||||||
|  |  | ||||||
|  |    ;; Otherwise, allow all actions | ||||||
|  |    (t))) | ||||||
|  |  | ||||||
|  | (sp-with-modes '(rust-mode) | ||||||
|  |   (sp-local-pair "'" "'" :unless '(sp-in-comment-p sp-in-string-quotes-p sp-in-rust-lifetime-context) :post-handlers'(:rem sp-escape-quotes-after-insert)) | ||||||
|  |   (sp-local-pair "<" ">" :when '(sp-rust-filter-angle-brackets))) | ||||||
|  |  | ||||||
|  | ;; Rust has no sexp suffices.  This fixes slurping | ||||||
|  | ;; (|foo).bar -> (foo.bar) | ||||||
|  | (add-to-list 'sp-sexp-suffix (list #'rust-mode 'regexp "")) | ||||||
|  |  | ||||||
|  | (provide 'smartparens-rust) | ||||||
|  |  | ||||||
|  | ;;; smartparens-rust.el ends here | ||||||
							
								
								
									
										57
									
								
								elpa/smartparens-20161009.858/smartparens-scala.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								elpa/smartparens-20161009.858/smartparens-scala.el
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,57 @@ | |||||||
|  | ;;; smartparens-scala.el --- Additional configuration for Scala based modes. | ||||||
|  |  | ||||||
|  | ;; Copyright (C) 2015 Greg Nwosu | ||||||
|  |  | ||||||
|  | ;; Author: Greg Nwosu <greg.nwosu@gmail.com> | ||||||
|  | ;; Maintainer: Greg Nwosu <greg.nwosu@gmail.com> | ||||||
|  | ;; Created: 8 July 2015 | ||||||
|  | ;; 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 Scala based | ||||||
|  | ;; modes.  To use it, simply add: | ||||||
|  | ;; | ||||||
|  | ;; (require 'smartparens-scala) | ||||||
|  | ;; | ||||||
|  | ;; into your configuration.  You can use this in conjunction with the | ||||||
|  | ;; default config or your own configuration. | ||||||
|  | ;; | ||||||
|  | ;; If you have good ideas about what should be added please file an | ||||||
|  | ;; issue on the github tracker. | ||||||
|  | ;; | ||||||
|  | ;; For more info, see github readme at | ||||||
|  | ;; https://github.com/Fuco1/smartparens | ||||||
|  |  | ||||||
|  | ;;; Code: | ||||||
|  |  | ||||||
|  | (require 'smartparens) | ||||||
|  |  | ||||||
|  | ;; Scala has no sexp suffices.  This fixes slurping | ||||||
|  | ;; import scala.mutable{|} ListBuffer, Set ---the comma should not travel with the closing | ||||||
|  | ;; paren | ||||||
|  | (--each '(scala-mode inferior-scala-mode) | ||||||
|  |   (add-to-list 'sp-sexp-suffix (list it 'regexp ""))) | ||||||
|  |  | ||||||
|  | (provide 'smartparens-scala) | ||||||
|  | ;;; smartparens-scala.el ends here | ||||||
							
								
								
									
										8425
									
								
								elpa/smartparens-20161009.858/smartparens.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8425
									
								
								elpa/smartparens-20161009.858/smartparens.el
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										11
									
								
								init.el
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								init.el
									
									
									
									
									
								
							| @@ -114,6 +114,11 @@ | |||||||
| (require 'zone) | (require 'zone) | ||||||
| (require 'magithub) | (require 'magithub) | ||||||
| (require 'origami) | (require 'origami) | ||||||
|  | (use-package smartparens-config | ||||||
|  |              :ensure smartparens | ||||||
|  |              :config | ||||||
|  |              (progn | ||||||
|  |                (show-smartparens-global-mode t))) | ||||||
|  |  | ||||||
| ;; Load my own functions | ;; Load my own functions | ||||||
| (load "gnu-c-header.el") | (load "gnu-c-header.el") | ||||||
| @@ -211,6 +216,12 @@ | |||||||
| (c-add-style "PERSONAL" my-c-style) | (c-add-style "PERSONAL" my-c-style) | ||||||
| (setq c-offset-alist '((member-init-intro . ++))) | (setq c-offset-alist '((member-init-intro . ++))) | ||||||
|  |  | ||||||
|  | ;; smartparen stuff | ||||||
|  | (add-hook 'prog-mode-hook | ||||||
|  |           'turn-on-smartparens-strict-mode) | ||||||
|  | (add-hook 'markdown-mode-hook | ||||||
|  |           'turn-on-smartparens-strict-mode) | ||||||
|  |  | ||||||
| ;; Custom key bindings | ;; Custom key bindings | ||||||
| (global-set-key (kbd "C-x _") 'maximize-window) | (global-set-key (kbd "C-x _") 'maximize-window) | ||||||
| ;; Some terminals don’t interpret Alt-Up/Down as M-<up/down>. | ;; Some terminals don’t interpret Alt-Up/Down as M-<up/down>. | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user