From 374ae3de24187512adddf01a56e5eb52c79db65f Mon Sep 17 00:00:00 2001 From: Blendoit Date: Sat, 1 Aug 2020 15:18:40 -0700 Subject: Include contents of elpa/ sources + theme update. --- .../smartparens-python.el | 92 ++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 elpa/smartparens-20200324.2147/smartparens-python.el (limited to 'elpa/smartparens-20200324.2147/smartparens-python.el') diff --git a/elpa/smartparens-20200324.2147/smartparens-python.el b/elpa/smartparens-20200324.2147/smartparens-python.el new file mode 100644 index 0000000..d6ac93f --- /dev/null +++ b/elpa/smartparens-20200324.2147/smartparens-python.el @@ -0,0 +1,92 @@ +;;; smartparens-python.el --- Additional configuration for Python based modes. -*- lexical-binding: t; -*- + +;; Copyright (C) 2015-2016 Matus Goljer + +;; Author: Matus Goljer +;; Maintainer: Matus Goljer +;; 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 . + +;;; 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) :post-handlers '(:add sp-python-fix-tripple-quotes)) + (sp-local-pair "\"" "\"" :post-handlers '(:add sp-python-fix-tripple-quotes)) + (sp-local-pair "'''" "'''") + (sp-local-pair "\\'" "\\'") + (sp-local-pair "\"\"\"" "\"\"\"")) + +(defun sp-python-fix-tripple-quotes (id action _context) + "Properly rewrap tripple quote pairs. + +When the user rewraps a tripple quote pair to the other pair +type (i.e. ''' to \") we check if the old pair was a +tripple-quote pair and if so add two pairs to beg/end of the +newly formed pair (which was a single-quote \"...\" pair)." + (when (eq action 'rewrap-sexp) + (let ((old (plist-get sp-handler-context :parent))) + (when (or (and (equal old "'''") (equal id "\"")) + (and (equal old "\"\"\"") (equal id "'"))) + (save-excursion + (sp-get sp-last-wrapped-region + (goto-char :end-in) + (insert (make-string 2 (aref id 0))) + (goto-char :beg) + (insert (make-string 2 (aref id 0))))))))) + +(defadvice python-indent-dedent-line-backspace + (around sp-backward-delete-char-advice activate) + "Fix indend." + (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 -- cgit v1.2.3