summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.emacs.d/init.el44
-rw-r--r--.perltidyrc18
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