From 4996a6403108a226d4ff1d73b880207cc80284bd Mon Sep 17 00:00:00 2001 From: Simeon Simeonov Date: Tue, 12 Jan 2021 20:05:37 +0100 Subject: Add snippets/python-mode.statnett --- .../snippets/python-mode.statnett/.yas-setup.el | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .emacs.d/snippets/python-mode.statnett/.yas-setup.el (limited to '.emacs.d/snippets/python-mode.statnett/.yas-setup.el') diff --git a/.emacs.d/snippets/python-mode.statnett/.yas-setup.el b/.emacs.d/snippets/python-mode.statnett/.yas-setup.el new file mode 100644 index 0000000..7603e4d --- /dev/null +++ b/.emacs.d/snippets/python-mode.statnett/.yas-setup.el @@ -0,0 +1,25 @@ +(require 'yasnippet) +(defvar yas-text) + +(defun python-split-args (arg-string) + "Split a python argument string into ((name, default)..) tuples" + (mapcar (lambda (x) + (split-string x "[[:blank:]]*=[[:blank:]]*" t)) + (split-string arg-string "[[:blank:]]*,[[:blank:]]*" t))) + +(defun python-args-to-docstring () + "return docstring format for the python arguments in yas-text" + (let* ((indent (concat "\n" (make-string (current-column) 32))) + (args (python-split-args yas-text)) + (max-len (if args (apply 'max (mapcar (lambda (x) (length (nth 0 x))) args)) 0)) + (formatted-args (mapconcat + (lambda (x) + (concat ":param " (nth 0 x) ":\n:type " (nth 0 x) ":\n" + (if (nth 1 x) (concat "\(default " (nth 1 x) "\)")))) + args + indent))) + (unless (string= formatted-args "") + (mapconcat 'identity (list "Keyword Arguments:" formatted-args) indent)))) + +(add-hook 'python-mode-hook + '(lambda () (set (make-local-variable 'yas-indent-line) 'fixed))) -- cgit v1.3