diff options
-rw-r--r-- | .emacs.d/init.el | 44 | ||||
-rw-r--r-- | .perltidyrc | 18 |
2 files changed, 59 insertions, 3 deletions
diff --git a/.emacs.d/init.el b/.emacs.d/init.el index 28a90933..85f773a9 100644 --- a/.emacs.d/init.el +++ b/.emacs.d/init.el @@ -1718,6 +1718,42 @@ Used in my `message-mode' yasnippets." ;; (indent-according-to-mode) ;; (insert "*/")))) +;; idea to use `locate-dominating-file' from EmacsWiki +(defun spw--perltidy-region (beg end) + (let ((perltidy-env (getenv "PERLTIDY"))) + (setenv "PERLTIDY" + (or (concat (expand-file-name + (locate-dominating-file + (buffer-file-name) + ".perltidyrc")) ".perltidyrc") + perltidy-env)) + (shell-command-on-region beg end "perltidy -q" nil t) + (font-lock-fontify-buffer) + (setenv "PERLTIDY" perltidy-env))) +(defun spw--in-sub () + (save-excursion + (let ((p (point))) + (beginning-of-defun) + (and (< (point) p) + (looking-at "\\s-*sub\\s-+\\S-+\\s-"))))) +(defun spw--perltidy-dwim (arg) + "Run perltidy on the current region, subroutine or buffer." + (interactive "P") + (let (beg end) + (if arg + (setq beg (point-min) end (point-max)) + (if (region-active-p) + (setq beg (min (point) (mark)) end (max (point) (mark))) + (if (spw--in-sub) + (save-excursion + (beginning-of-defun) + (setq beg (point)) + (end-of-defun) + (setq end (point))) + (setq beg (point-min) end (point-max))))) + (spw--perltidy-region beg end))) +(bind-key "C-c T" 'spw--perltidy-dwim cperl-mode-map) + ;;;; ---- personal settings ---- @@ -2153,9 +2189,11 @@ mutt's review view after exiting EDITOR." ("miniperl" . cperl-mode)) :init ;; (setq cperl-continued-statement-offset 4) - (setq cperl-indent-level 4) - (setq cperl-indent-wrt-brace t) - (setq cperl-lineup-step 1)) + (setq cperl-indent-level 4 + cperl-indent-wrt-brace t + cperl-lineup-step 1 + cperl-indent-parens-as-block t + cperl-close-paren-offset -4)) ;;; changelogs diff --git a/.perltidyrc b/.perltidyrc new file mode 100644 index 00000000..30bfbb89 --- /dev/null +++ b/.perltidyrc @@ -0,0 +1,18 @@ +# -*- conf -*- +# +# .perltidyrc from Debian's devscripts package. +# +# This file is based on the one from the rra-c-util package, +# which can be found at <https://www.eyrie.org/~eagle/software/rra-c-util/>. + +-bbao # put line breaks before any operator +-nbbc # don't force blank lines before comments (bad for else blocks) +-ce # cuddle braces around else +-l=79 # usually use 78, but don't want 79-long lines reformatted +-pt=2 # don't add extra whitespace around parentheses +-sbt=2 # ...or square brackets +-sfs # no space before semicolon in for (not that I use this form) +-bar # opening-brace-always-on-right +-sot # avoid lines with isolated opening tokens +-sct # ... same for closing tokens +-fs # allow "perltidy, please don't touch this" sections |