Move functions from prog.el to the Org config
This commit is contained in:
parent
ccaeda71c2
commit
25644dc064
@ -186,6 +186,31 @@ copied to the kill ring."
|
||||
(forward-char)))
|
||||
#+END_SRC
|
||||
|
||||
*** Convert camelCase to snake_case
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(defun camel-to-snake-case (arg)
|
||||
"Convert a camel case (camelCase or CamelCase) word to snake case (snake_case).
|
||||
|
||||
If the prefix argument ARG is non-nil, convert the text to uppercase."
|
||||
(interactive "p")
|
||||
(progn
|
||||
(let ((start (region-beginning))
|
||||
(end (region-end))
|
||||
(case-fold-search nil)
|
||||
(had-initial-underscore nil))
|
||||
(goto-char start)
|
||||
(when (looking-at "_") (setq had-initial-underscore t))
|
||||
(while (re-search-forward "\\([A-Z]\\)" end t)
|
||||
(replace-match "_\\1")
|
||||
(setq end (1+ end)))
|
||||
(if arg
|
||||
(upcase-region start end)
|
||||
(downcase-region start end))
|
||||
(goto-char start)
|
||||
(unless had-initial-underscore (delete-char 1)))))
|
||||
#+END_SRC
|
||||
|
||||
** Navigation
|
||||
|
||||
*** Move to different beginnings of the current line
|
||||
@ -402,6 +427,63 @@ Copied from http://emacs-doctor.com/emacs-strip-tease.html
|
||||
(kill-ring-save protocopy-begin protocopy-end)))))
|
||||
#+END_SRC
|
||||
|
||||
** Programming related
|
||||
|
||||
*** Check if we are inside a string
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(defun gpolonkai/prog-in-string-p ()
|
||||
"Return t if point is inside a string."
|
||||
(nth 3 (syntax-ppss)))
|
||||
#+END_SRC
|
||||
|
||||
*** Check if we are inside a comment
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(defun gpolonkai/prog-in-comment-p ()
|
||||
"Return t if point is inside a comment."
|
||||
(nth 4 (syntax-ppss)))
|
||||
#+END_SRC
|
||||
|
||||
** ~python-mode~ related
|
||||
|
||||
*** Add a docstring to the current thing
|
||||
|
||||
…be it a function, class, or a module
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(defun gpolonkai/python-add-docstring ()
|
||||
"Add a Python docstring to the current thing.
|
||||
|
||||
If point is inside a function, add docstring to that. If point
|
||||
is in a class, add docstring to that. If neither, add docstring
|
||||
to the beginning of the file."
|
||||
(interactive)
|
||||
(save-restriction
|
||||
(widen)
|
||||
(beginning-of-defun)
|
||||
(if (not (looking-at-p "\\(def\\|class\\) "))
|
||||
(progn
|
||||
(goto-char (point-min))
|
||||
(back-to-indentation)
|
||||
(forward-char)
|
||||
(while (gpolonkai/prog-in-comment-p)
|
||||
(forward-line)
|
||||
(back-to-indentation)
|
||||
(forward-char)))
|
||||
(search-forward ":")
|
||||
(while (or (gpolonkai/prog-in-string-p)
|
||||
(gpolonkai/prog-in-comment-p))
|
||||
(search-forward ":")))
|
||||
(if (eq 1 (count-lines 1 (point)))
|
||||
(open-line-above)
|
||||
(open-line-below))
|
||||
(insert "\"\"\"")
|
||||
(open-line-below)
|
||||
(insert "\"\"\"")
|
||||
(open-line-above)))
|
||||
#+END_SRC
|
||||
|
||||
** EShell related
|
||||
|
||||
*** Delete a character, or close ~eshell~ if nothing to delet
|
||||
|
68
lisp/prog.el
68
lisp/prog.el
@ -1,68 +0,0 @@
|
||||
;;; gp-prog --- Summary
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
(defun gpolonkai/prog-in-string-p ()
|
||||
"Return t if point is inside a string."
|
||||
(nth 3 (syntax-ppss)))
|
||||
|
||||
(defun gpolonkai/prog-in-comment-p ()
|
||||
"Return t if point is inside a comment."
|
||||
(nth 4 (syntax-ppss)))
|
||||
|
||||
(defun gpolonkai/python-add-docstring ()
|
||||
"Add a Python docstring to the current thing.
|
||||
|
||||
If point is inside a function, add docstring to that. If point
|
||||
is in a class, add docstring to that. If neither, add docstring
|
||||
to the beginning of the file."
|
||||
(interactive)
|
||||
(save-restriction
|
||||
(widen)
|
||||
(beginning-of-defun)
|
||||
(if (not (looking-at-p "\\(def\\|class\\) "))
|
||||
(progn
|
||||
(goto-char (point-min))
|
||||
(back-to-indentation)
|
||||
(forward-char)
|
||||
(while (gpolonkai/prog-in-comment-p)
|
||||
(forward-line)
|
||||
(back-to-indentation)
|
||||
(forward-char)))
|
||||
(search-forward ":")
|
||||
(while (or (gpolonkai/prog-in-string-p)
|
||||
(gpolonkai/prog-in-comment-p))
|
||||
(search-forward ":")))
|
||||
(if (eq 1 (count-lines 1 (point)))
|
||||
(open-line-above)
|
||||
(open-line-below))
|
||||
(insert "\"\"\"")
|
||||
(open-line-below)
|
||||
(insert "\"\"\"")
|
||||
(open-line-above)))
|
||||
|
||||
(defun camel-to-snake-case (arg)
|
||||
"Convert a camel case (camelCase or CamelCase) word to snake case (snake_case).
|
||||
|
||||
If the prefix argument ARG is non-nil, convert the text to uppercase."
|
||||
(interactive "p")
|
||||
(progn
|
||||
(let ((start (region-beginning))
|
||||
(end (region-end))
|
||||
(case-fold-search nil)
|
||||
(had-initial-underscore nil))
|
||||
(goto-char start)
|
||||
(when (looking-at "_") (setq had-initial-underscore t))
|
||||
(while (re-search-forward "\\([A-Z]\\)" end t)
|
||||
(replace-match "_\\1")
|
||||
(setq end (1+ end)))
|
||||
(if arg
|
||||
(upcase-region start end)
|
||||
(downcase-region start end))
|
||||
(goto-char start)
|
||||
(unless had-initial-underscore (delete-char 1)))))
|
||||
|
||||
(provide 'gp-prog)
|
||||
|
||||
;;; gp-prog.el ends here
|
Loading…
Reference in New Issue
Block a user