summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorLeo Liu <sdl.web@gmail.com>2013-05-16 11:41:52 +0800
committerLeo Liu <sdl.web@gmail.com>2013-05-16 11:41:52 +0800
commit9df4ec5e9044e92e792ba9e8cb714603e32c5cc5 (patch)
tree741c638ed00ff2e1599855be23b447e54b663f9a /lisp
parent5ebfa896aeba805c8d6e8426b1230dccba856f28 (diff)
downloademacs-9df4ec5e9044e92e792ba9e8cb714603e32c5cc5.tar.gz
emacs-9df4ec5e9044e92e792ba9e8cb714603e32c5cc5.tar.bz2
emacs-9df4ec5e9044e92e792ba9e8cb714603e32c5cc5.zip
* simple.el (prog-indent-sexp): Indent enclosing defun.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog4
-rw-r--r--lisp/simple.el18
2 files changed, 16 insertions, 6 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index c579642642e..0b233385eb7 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,7 @@
+2013-05-16 Leo Liu <sdl.web@gmail.com>
+
+ * simple.el (prog-indent-sexp): Indent enclosing defun.
+
2013-05-15 Glenn Morris <rgm@gnu.org>
* cus-start.el (show-trailing-whitespace): Move to editing basics.
diff --git a/lisp/simple.el b/lisp/simple.el
index e4bde7c358c..f81b02b0acf 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -380,12 +380,18 @@ Other major modes are defined by comparison with this one."
map)
"Keymap used for programming modes.")
-(defun prog-indent-sexp ()
- "Indent the expression after point."
- (interactive)
- (let ((start (point))
- (end (save-excursion (forward-sexp 1) (point))))
- (indent-region start end nil)))
+(defun prog-indent-sexp (&optional defun)
+ "Indent the expression after point.
+When interactively called with prefix, indent the enclosing defun
+instead."
+ (interactive "P")
+ (save-excursion
+ (when defun
+ (end-of-line)
+ (beginning-of-defun))
+ (let ((start (point))
+ (end (progn (forward-sexp 1) (point))))
+ (indent-region start end nil))))
(define-derived-mode prog-mode fundamental-mode "Prog"
"Major mode for editing programming language source code."