* lisp/progmodes/sh-script.el: Implement `sh-mode' own

`add-log-current-defun-function'.
(sh-current-defun-name): New function.
(sh-mode): Use the function.

Fixes: debbugs:14112
This commit is contained in:
Masatake YAMATO 2013-04-10 02:31:17 +09:00
parent d14b1e4811
commit 7144c62778
2 changed files with 30 additions and 0 deletions

View file

@ -1,3 +1,10 @@
2013-04-10 Masatake YAMATO <yamato@redhat.com>
* progmodes/sh-script.el: Implement `sh-mode' own
`add-log-current-defun-function' (bug#14112).
(sh-current-defun-name): New function.
(sh-mode): Use the function.
2013-04-09 Bastien Guerry <bzg@gnu.org>
* simple.el (choose-completion-string): Fix docstring (bug#14163).

View file

@ -353,6 +353,28 @@ See `sh-feature' and `imenu-generic-expression'."
:group 'sh-script
:version "20.4")
(defun sh-current-defun-name ()
"Find the name of function or variable at point.
For use in `add-log-current-defun-function'."
(save-excursion
(end-of-line)
(when (re-search-backward
(concat "\\(?:"
;; function FOO
;; function FOO()
"^\\s-*function\\s-+\\\([[:alpha:]_][[:alnum:]_]*\\)\\s-*\\(?:()\\)?"
"\\)\\|\\(?:"
;; FOO()
"^\\s-*\\([[:alpha:]_][[:alnum:]_]*\\)\\s-*()"
"\\)\\|\\(?:"
;; FOO=
"^\\([[:alpha:]_][[:alnum:]_]*\\)="
"\\)")
nil t)
(or (match-string-no-properties 1)
(match-string-no-properties 2)
(match-string-no-properties 3)))))
(defvar sh-shell-variables nil
"Alist of shell variable names that should be included in completion.
These are used for completion in addition to all the variables named
@ -1533,6 +1555,7 @@ with your script for an edit-interpret-debug cycle."
(setq-local skeleton-newline-indent-rigidly t)
(setq-local defun-prompt-regexp
(concat "^\\(function[ \t]\\|[[:alnum:]]+[ \t]+()[ \t]+\\)"))
(setq-local add-log-current-defun-function #'sh-current-defun-name)
;; Parse or insert magic number for exec, and set all variables depending
;; on the shell thus determined.
(sh-set-shell