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 'magithub) | ||||
| (require 'origami) | ||||
| (use-package smartparens-config | ||||
|              :ensure smartparens | ||||
|              :config | ||||
|              (progn | ||||
|                (show-smartparens-global-mode t))) | ||||
|  | ||||
| ;; Load my own functions | ||||
| (load "gnu-c-header.el") | ||||
| @@ -211,6 +216,12 @@ | ||||
| (c-add-style "PERSONAL" my-c-style) | ||||
| (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 | ||||
| (global-set-key (kbd "C-x _") 'maximize-window) | ||||
| ;; Some terminals don’t interpret Alt-Up/Down as M-<up/down>. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user