Update packages

This commit is contained in:
Gergely Polonkai 2016-10-10 10:39:36 +02:00
parent 67638ca262
commit b52b2fb212
122 changed files with 1184 additions and 588 deletions

View File

@ -1,4 +0,0 @@
(define-package "erlang" "20161005.305" "Erlang major mode" 'nil)
;; Local Variables:
;; no-byte-compile: t
;; End:

View File

@ -3,7 +3,7 @@
;;; Code: ;;; Code:
(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path)))) (add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
;;;### (autoloads nil "erlang" "erlang.el" (22518 4433 253987 51000)) ;;;### (autoloads nil "erlang" "erlang.el" (22523 21259 84519 501000))
;;; Generated autoloads from erlang.el ;;; Generated autoloads from erlang.el
(autoload 'erlang-mode "erlang" "\ (autoload 'erlang-mode "erlang" "\
@ -118,8 +118,23 @@ editing control characters:
;;;*** ;;;***
;;;### (autoloads nil "erlang-start" "erlang-start.el" (22518 4433 ;;;### (autoloads nil "erlang-edoc" "erlang-edoc.el" (22523 21259
;;;;;; 225986 910000)) ;;;;;; 104519 648000))
;;; Generated autoloads from erlang-edoc.el
(autoload 'erlang-edoc-mode "erlang-edoc" "\
Toggle Erlang-Edoc mode on or off.
With a prefix argument ARG, enable Erlang-Edoc mode if ARG is
positive, and disable it otherwise. If called from Lisp, enable
the mode if ARG is omitted or nil, and toggle it if ARG is `toggle'.
\\{erlang-edoc-mode-map}
\(fn &optional ARG)" t nil)
;;;***
;;;### (autoloads nil "erlang-start" "erlang-start.el" (22523 21259
;;;;;; 64519 353000))
;;; Generated autoloads from erlang-start.el ;;; Generated autoloads from erlang-start.el
(let ((a '("\\.erl\\'" . erlang-mode)) (b '("\\.hrl\\'" . erlang-mode))) (or (assoc (car a) auto-mode-alist) (setq auto-mode-alist (cons a auto-mode-alist))) (or (assoc (car b) auto-mode-alist) (setq auto-mode-alist (cons b auto-mode-alist)))) (let ((a '("\\.erl\\'" . erlang-mode)) (b '("\\.hrl\\'" . erlang-mode))) (or (assoc (car a) auto-mode-alist) (setq auto-mode-alist (cons a auto-mode-alist))) (or (assoc (car b) auto-mode-alist) (setq auto-mode-alist (cons b auto-mode-alist))))
@ -132,7 +147,7 @@ editing control characters:
;;;### (autoloads nil nil ("erlang-eunit.el" "erlang-flymake.el" ;;;### (autoloads nil nil ("erlang-eunit.el" "erlang-flymake.el"
;;;;;; "erlang-pkg.el" "erlang-skels-old.el" "erlang-skels.el" "erlang-test.el" ;;;;;; "erlang-pkg.el" "erlang-skels-old.el" "erlang-skels.el" "erlang-test.el"
;;;;;; "erlang_appwiz.el") (22518 4433 269987 132000)) ;;;;;; "erlang_appwiz.el") (22523 21259 100519 619000))
;;;*** ;;;***

View File

@ -0,0 +1,172 @@
;;; erlang-edoc.el --- EDoc support for Erlang mode -*- lexical-binding: t; -*-
;; %CopyrightBegin%
;;
;; Copyright Ericsson AB 1996-2016. All Rights Reserved.
;;
;; Licensed under the Apache License, Version 2.0 (the "License");
;; you may not use this file except in compliance with the License.
;; You may obtain a copy of the License at
;;
;; http://www.apache.org/licenses/LICENSE-2.0
;;
;; Unless required by applicable law or agreed to in writing, software
;; distributed under the License is distributed on an "AS IS" BASIS,
;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
;; See the License for the specific language governing permissions and
;; limitations under the License.
;;
;; %CopyrightEnd%
;;; Commentary:
;; Ref: http://www.erlang.org/doc/apps/edoc/users_guide.html
;;
;; To use: (add-hook 'erlang-mode-hook 'erlang-edoc-mode)
;;; Code:
(defcustom erlang-edoc-indent-level 2
"Indentation level of xhtml in Erlang edoc."
:safe 'integerp
:group 'erlang)
(defvar erlang-edoc-generic-tags
'("clear" "docfile" "end" "headerfile" "todo" "TODO" "type")
"Tags that can be used anywhere within a module.")
(defvar erlang-edoc-overview-tags
'("author" "copyright" "reference" "see" "since" "title" "version")
"Tags that can be used in an overview file.")
(defvar erlang-edoc-module-tags
'("author" "copyright" "deprecated" "doc" "hidden" "private" "reference"
"see" "since" "version")
"Tags that can be used before a module declaration.")
(defvar erlang-edoc-function-tags
'("deprecated" "doc" "equiv" "hidden" "private" "see" "since" "spec"
"throws" "type")
"Tags that can be used before a function definition.")
(defvar erlang-edoc-predefined-macros
'("date" "docRoot" "link" "module" "package" "section" "time"
"type" "version"))
(defface erlang-edoc-tag '((t (:inherit font-lock-constant-face)))
"Face used to highlight edoc tags."
:group 'erlang)
(defface erlang-edoc-macro '((t (:inherit font-lock-preprocessor-face)))
"Face used to highlight edoc macros."
:group 'erlang)
(defface erlang-edoc-verbatim
'((t (:family "Monospace" :inherit font-lock-keyword-face)))
"Face used to highlight verbatim text."
:group 'erlang)
(defface erlang-edoc-todo '((t (:inherit font-lock-warning-face)))
"Face used to highlight edoc macros."
:group 'erlang)
(defface erlang-edoc-heading '((t (:inherit bold)))
"Face used to highlight edoc headings."
:group 'erlang)
(defvar erlang-edoc-font-lock-keywords
'(("^%+\\s-*\\(@\\w+\\)\\_>" 1 'erlang-edoc-tag prepend)
("^%+\\s-*" ("{\\(@\\w+\\)\\_>" nil nil (1 'erlang-edoc-macro prepend)))
("^%+\\s-*" ("\\(?:@@\\)*\\(@[@{}]\\)" nil nil (1 'escape-glyph prepend)))
("^%+\\s-*@\\(deprecated\\)\\_>" 1 font-lock-warning-face prepend)
;; http://www.erlang.org/doc/apps/edoc/chapter.html#Wiki_notation
("^%+\\s-*" ("[^`]`\\([^`]?\\|[^`].*?[^']\\)'"
(forward-char -1) nil (1 'erlang-edoc-verbatim prepend)))
("^%+\\s-*" ("\\[\\(\\(?:https?\\|file\\|ftp\\)://[^][]+\\)\\]"
nil nil (1 'link prepend)))
("^%+\\s-*\\(?:\\(?1:@todo\\|@TODO\\)\\_>\\|\\(?1:TODO\\):\\)"
1 'erlang-edoc-todo prepend)
("^%+\\s-*\\(\\(=\\{2,4\\}\\)[^=\n].*[^=\n]\\2\\)\\s-*$"
1 'erlang-edoc-heading prepend)))
(defun erlang-edoc-xml-context ()
"Parse edoc x(ht)ml context at comment start of current line."
(eval-and-compile (require 'xmltok))
(save-excursion
(beginning-of-line)
(when (looking-at "^%+\\s-*")
(let ((pt (match-end 0)) context)
(forward-comment (- (point)))
(while (< (point) pt)
(xmltok-forward)
(cond ((eq xmltok-type 'start-tag)
(push (cons xmltok-type xmltok-start) context))
((eq xmltok-type 'end-tag)
(pop context))))
(goto-char pt)
(xmltok-forward)
(push (car (memq xmltok-type '(start-tag end-tag))) context)
context))))
(defun erlang-edoc-indent-line ()
(let ((context (erlang-edoc-xml-context)))
(when context
(save-excursion
(beginning-of-line)
(re-search-forward "^%+\\s-*" (line-end-position))
(when (or (car context) (cadr context))
(let ((pad (when (cadr context)
(save-excursion
(goto-char (cdr (cadr context)))
(- (current-column)
(progn
(beginning-of-line)
(skip-chars-forward "%")
(current-column)))))))
(just-one-space (cond ((not pad) 1)
((eq (car context) 'end-tag) pad)
(t (+ erlang-edoc-indent-level pad)))))))
(when (looking-back "^%*\\s-*" (line-beginning-position))
(re-search-forward "\\=%*\\s-*")))))
(defun erlang-edoc-before-module-declaration-p ()
(save-excursion
(beginning-of-line)
(forward-comment (point-max))
(or (eobp) (re-search-forward "^-module\\s-*(" nil t))))
(defun erlang-edoc-completion-at-point ()
(when (eq (syntax-ppss-context (syntax-ppss)) 'comment)
(save-excursion
(skip-syntax-backward "w_")
(when (= (preceding-char) ?@)
(let* ((is-tag (looking-back "^%+\\s-*@" (line-beginning-position)))
(beg (point))
(end (progn (skip-syntax-forward "w_") (point)))
(table (cond
((not is-tag)
erlang-edoc-predefined-macros)
((erlang-edoc-before-module-declaration-p)
(append erlang-edoc-module-tags
erlang-edoc-generic-tags))
(t (append erlang-edoc-function-tags
erlang-edoc-generic-tags)))))
(list beg end table))))))
;;;###autoload
(define-minor-mode erlang-edoc-mode nil
:lighter " EDoc"
(cond (erlang-edoc-mode
(add-hook 'erlang-indent-line-hook #'erlang-edoc-indent-line nil t)
(font-lock-add-keywords nil erlang-edoc-font-lock-keywords t)
(add-hook 'completion-at-point-functions
#'erlang-edoc-completion-at-point nil t))
(t
(remove-hook 'erlang-indent-line-hook #'erlang-edoc-indent-line t)
(font-lock-remove-keywords nil erlang-edoc-font-lock-keywords)
(remove-hook 'completion-at-point-functions
#'erlang-edoc-completion-at-point t)))
(jit-lock-refontify))
(provide 'erlang-edoc)
;;; erlang-edoc.el ends here

View File

@ -0,0 +1,4 @@
(define-package "erlang" "20161007.57" "Erlang major mode" 'nil)
;; Local Variables:
;; no-byte-compile: t
;; End:

View File

@ -78,6 +78,7 @@
(autoload 'erlang-find-tag-other-window "erlang" (autoload 'erlang-find-tag-other-window "erlang"
"Like `find-tag-other-window'. Capable of retreiving Erlang modules.") "Like `find-tag-other-window'. Capable of retreiving Erlang modules.")
(autoload 'erlang-edoc-mode "erlang-edoc" "Toggle Erlang-Edoc mode on or off." t)
;; ;;
;; Associate files extensions ".erl" and ".hrl" with Erlang mode. ;; Associate files extensions ".erl" and ".hrl" with Erlang mode.

View File

@ -78,6 +78,10 @@
;; Variables: ;; Variables:
(defgroup erlang nil
"The Erlang programming language."
:group 'languages)
(defconst erlang-version "2.7" (defconst erlang-version "2.7"
"The version number of Erlang mode.") "The version number of Erlang mode.")
@ -2444,6 +2448,7 @@ Return the amount the indentation changed by."
;; after the indentation. Else stay at same point in text. ;; after the indentation. Else stay at same point in text.
(if (> (- (point-max) pos) (point)) (if (> (- (point-max) pos) (point))
(goto-char (- (point-max) pos))) (goto-char (- (point-max) pos)))
(run-hooks 'erlang-indent-line-hook)
shift-amt)) shift-amt))

View File

@ -3,8 +3,8 @@
;;; Code: ;;; Code:
(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path)))) (add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
;;;### (autoloads nil "flycheck" "flycheck.el" (22516 57907 641537 ;;;### (autoloads nil "flycheck" "flycheck.el" (22523 21256 196498
;;;;;; 759000)) ;;;;;; 256000))
;;; Generated autoloads from flycheck.el ;;; Generated autoloads from flycheck.el
(autoload 'flycheck-manual "flycheck" "\ (autoload 'flycheck-manual "flycheck" "\
@ -228,7 +228,7 @@ Use this together with the `option', `option-list' and
;;;*** ;;;***
;;;### (autoloads nil nil ("flycheck-buttercup.el" "flycheck-ert.el" ;;;### (autoloads nil nil ("flycheck-buttercup.el" "flycheck-ert.el"
;;;;;; "flycheck-pkg.el") (22516 57907 637537 741000)) ;;;;;; "flycheck-pkg.el") (22523 21256 192498 226000))
;;;*** ;;;***

View File

@ -1,4 +1,4 @@
(define-package "flycheck" "20161004.1257" "On-the-fly syntax checking" (define-package "flycheck" "20161007.427" "On-the-fly syntax checking"
'((dash "2.12.1") '((dash "2.12.1")
(pkg-info "0.4") (pkg-info "0.4")
(let-alist "1.0.4") (let-alist "1.0.4")

View File

@ -807,6 +807,13 @@ This variable is a normal hook. See Info node `(elisp)Hooks'."
:group 'flycheck-faces :group 'flycheck-faces
:package-version '(flycheck . "0.22")) :package-version '(flycheck . "0.22"))
(defface flycheck-error-list-id-with-explainer
'((t :inherit flycheck-error-list-id
:box (:style released-button)))
"Face for the error ID in the error list, for errors that have an explainer."
:group 'flycheck-faces
:package-version '(flycheck . "30"))
(defface flycheck-error-list-checker-name (defface flycheck-error-list-checker-name
'((t :inherit font-lock-function-name-face)) '((t :inherit font-lock-function-name-face))
"Face for the syntax checker name in the error list." "Face for the syntax checker name in the error list."
@ -829,9 +836,9 @@ This variable is a normal hook. See Info node `(elisp)Hooks'."
(define-key map "l" #'flycheck-list-errors) (define-key map "l" #'flycheck-list-errors)
(define-key map (kbd "C-w") #'flycheck-copy-errors-as-kill) (define-key map (kbd "C-w") #'flycheck-copy-errors-as-kill)
(define-key map "s" #'flycheck-select-checker) (define-key map "s" #'flycheck-select-checker)
(define-key map "e" #'flycheck-set-checker-executable)
(define-key map "?" #'flycheck-describe-checker) (define-key map "?" #'flycheck-describe-checker)
(define-key map "h" #'flycheck-display-error-at-point) (define-key map "h" #'flycheck-display-error-at-point)
(define-key map "e" #'flycheck-explain-error-at-point)
(define-key map "H" #'display-local-help) (define-key map "H" #'display-local-help)
(define-key map "i" #'flycheck-manual) (define-key map "i" #'flycheck-manual)
(define-key map "V" #'flycheck-version) (define-key map "V" #'flycheck-version)
@ -982,6 +989,7 @@ Only has effect when variable `global-flycheck-mode' is non-nil."
"---" "---"
["Copy messages at point" flycheck-copy-errors-as-kill ["Copy messages at point" flycheck-copy-errors-as-kill
(flycheck-overlays-at (point))] (flycheck-overlays-at (point))]
["Explain error at point" flycheck-explain-error-at-point]
"---" "---"
["Select syntax checker" flycheck-select-checker flycheck-mode] ["Select syntax checker" flycheck-select-checker flycheck-mode]
["Disable syntax checker" flycheck-disable-checker flycheck-mode] ["Disable syntax checker" flycheck-disable-checker flycheck-mode]
@ -1661,6 +1669,16 @@ are mandatory.
This property is optional. The default filter is This property is optional. The default filter is
`identity'. `identity'.
`:error-explainer FUNCTION'
A function to return an explanation text for errors
generated by this checker.
FUNCTION is called with a `flycheck-error' object and shall
return an explanation message for this error as a string, or
nil if there is no explanation for this error.
This property is optional.
`:next-checkers NEXT-CHECKERS' `:next-checkers NEXT-CHECKERS'
A list denoting syntax checkers to apply after this syntax A list denoting syntax checkers to apply after this syntax
checker, in what we call \"chaining\" of syntax checkers. checker, in what we call \"chaining\" of syntax checkers.
@ -1711,6 +1729,7 @@ Signal an error, if any property has an invalid value."
(verify (plist-get properties :verify)) (verify (plist-get properties :verify))
(enabled (plist-get properties :enabled)) (enabled (plist-get properties :enabled))
(filter (or (plist-get properties :error-filter) #'identity)) (filter (or (plist-get properties :error-filter) #'identity))
(explainer (plist-get properties :error-explainer))
(next-checkers (plist-get properties :next-checkers)) (next-checkers (plist-get properties :next-checkers))
(file (flycheck-current-load-file)) (file (flycheck-current-load-file))
(working-directory (plist-get properties :working-directory))) (working-directory (plist-get properties :working-directory)))
@ -1744,6 +1763,9 @@ Signal an error, if any property has an invalid value."
(unless (functionp filter) (unless (functionp filter)
(error ":error-filter %S of syntax checker %s is not a function" (error ":error-filter %S of syntax checker %s is not a function"
filter symbol)) filter symbol))
(unless (or (null explainer) (functionp explainer))
(error ":error-explainer %S of syntax checker %S is not a function"
explainer symbol))
(dolist (checker next-checkers) (dolist (checker next-checkers)
(flycheck-validate-next-checker checker)) (flycheck-validate-next-checker checker))
@ -1774,6 +1796,7 @@ Try to reinstall the package defining this syntax checker." symbol)
(verify . ,verify) (verify . ,verify)
(enabled . ,real-enabled) (enabled . ,real-enabled)
(error-filter . ,filter) (error-filter . ,filter)
(error-explainer . ,explainer)
(next-checkers . ,next-checkers) (next-checkers . ,next-checkers)
(documentation . ,docstring) (documentation . ,docstring)
(file . ,file) (file . ,file)
@ -3814,6 +3837,7 @@ the beginning of the buffer."
(define-key map (kbd "n") #'flycheck-error-list-next-error) (define-key map (kbd "n") #'flycheck-error-list-next-error)
(define-key map (kbd "p") #'flycheck-error-list-previous-error) (define-key map (kbd "p") #'flycheck-error-list-previous-error)
(define-key map (kbd "g") #'flycheck-error-list-check-source) (define-key map (kbd "g") #'flycheck-error-list-check-source)
(define-key map (kbd "e") #'flycheck-error-list-explain-error)
(define-key map (kbd "RET") #'flycheck-error-list-goto-error) (define-key map (kbd "RET") #'flycheck-error-list-goto-error)
map) map)
"The keymap of `flycheck-error-list-mode'.") "The keymap of `flycheck-error-list-mode'.")
@ -3903,7 +3927,15 @@ message to stretch arbitrarily far."
"Go to the error at BUTTON." "Go to the error at BUTTON."
(flycheck-error-list-goto-error (button-start button))) (flycheck-error-list-goto-error (button-start button)))
(defsubst flycheck-error-list-make-cell (text &optional face help-echo) (define-button-type 'flycheck-error-list-explain-error
'action #'flycheck-error-list-button-explain-error
'help-echo "mouse-2, RET: explain error")
(defun flycheck-error-list-button-explain-error (button)
"Explain the error at BUTTON."
(flycheck-error-list-explain-error (button-start button)))
(defsubst flycheck-error-list-make-cell (text &optional face help-echo type)
"Make an error list cell with TEXT and FACE. "Make an error list cell with TEXT and FACE.
If FACE is nil don't set a FACE on TEXT. If TEXT already has If FACE is nil don't set a FACE on TEXT. If TEXT already has
@ -3914,8 +3946,12 @@ list, do specify a FACE explicitly!
If HELP-ECHO is non-nil, set a help-echo property on TEXT, with If HELP-ECHO is non-nil, set a help-echo property on TEXT, with
value HELP-ECHO. This is convenient if you expect TEXT to be value HELP-ECHO. This is convenient if you expect TEXT to be
truncated." truncated.
(append (list text 'type 'flycheck-error-list)
The cell will have the type TYPE unless TYPE is nil, and the
default type `flycheck-error-list' will be used instead."
(append (list text 'type (if type type
'flycheck-error-list))
(and face (list 'face face)) (and face (list 'face face))
(and help-echo (list 'help-echo help-echo)))) (and help-echo (list 'help-echo help-echo))))
@ -3942,7 +3978,8 @@ Return a list with the contents of the table cell."
(id (flycheck-error-id error)) (id (flycheck-error-id error))
(id-str (if id (format "%s" id) "")) (id-str (if id (format "%s" id) ""))
(checker (flycheck-error-checker error)) (checker (flycheck-error-checker error))
(msg-and-checker (flycheck-error-list-make-last-column flushed-msg checker))) (msg-and-checker (flycheck-error-list-make-last-column flushed-msg checker))
(explainer (flycheck-checker-get checker 'error-explainer)))
(list error (list error
(vector (flycheck-error-list-make-number-cell (vector (flycheck-error-list-make-number-cell
line 'flycheck-error-list-line-number) line 'flycheck-error-list-line-number)
@ -3950,8 +3987,11 @@ Return a list with the contents of the table cell."
column 'flycheck-error-list-column-number) column 'flycheck-error-list-column-number)
(flycheck-error-list-make-cell (flycheck-error-list-make-cell
(symbol-name (flycheck-error-level error)) level-face) (symbol-name (flycheck-error-level error)) level-face)
;; Error ID use a different face when an error-explainer is present
(flycheck-error-list-make-cell (flycheck-error-list-make-cell
id-str 'flycheck-error-list-id id-str) id-str (if explainer 'flycheck-error-list-id-with-explainer
'flycheck-error-list-id)
id-str 'flycheck-error-list-explain-error)
(flycheck-error-list-make-cell (flycheck-error-list-make-cell
msg-and-checker nil msg-and-checker))))) msg-and-checker nil msg-and-checker)))))
@ -4120,6 +4160,17 @@ POS defaults to `point'."
;; Re-highlight the errors ;; Re-highlight the errors
(flycheck-error-list-highlight-errors 'preserve-pos)))) (flycheck-error-list-highlight-errors 'preserve-pos))))
(defun flycheck-error-list-explain-error (&optional pos)
"Explain the error at POS in the error list.
POS defaults to `point'."
(interactive)
(-when-let* ((error (tabulated-list-get-id pos))
(explainer (flycheck-checker-get (flycheck-error-checker error)
'error-explainer))
(explanation (funcall explainer error)))
(flycheck-display-error-explanation explanation)))
(defun flycheck-error-list-next-error-pos (pos &optional n) (defun flycheck-error-list-next-error-pos (pos &optional n)
"Starting from POS get the N'th next error in the error list. "Starting from POS get the N'th next error in the error list.
@ -4343,6 +4394,34 @@ universal prefix arg, and only the id with normal prefix arg."
(seq-do #'kill-new (reverse messages)) (seq-do #'kill-new (reverse messages))
(message (string-join messages "\n"))))) (message (string-join messages "\n")))))
(defun flycheck-explain-error-at-point ()
"Display an explanation for the first explainable error at point.
The first explainable error at point is the first error at point
with a non-nil `:error-explainer' function defined in its
checker. The `:error-explainer' function is then called with
this error to produce the explanation to display."
(interactive)
(-when-let* ((first-error
;; Get the first error at point that has an `error-explainer'.
(seq-find (lambda (error)
(flycheck-checker-get
(flycheck-error-checker error) 'error-explainer))
(flycheck-overlay-errors-at (point))))
(explainer
(flycheck-checker-get (flycheck-error-checker first-error)
'error-explainer))
(explanation (funcall explainer first-error)))
(flycheck-display-error-explanation explanation)))
(defconst flycheck-explain-error-buffer "*Flycheck error explanation*"
"The name of the buffer to show error explanations.")
(defun flycheck-display-error-explanation (explanation)
"Display the EXPLANATION string in a help buffer."
(with-help-window (get-buffer-create flycheck-explain-error-buffer)
(princ explanation)))
;;; Syntax checkers using external commands ;;; Syntax checkers using external commands
(defun flycheck-command-argument-p (arg) (defun flycheck-command-argument-p (arg)
@ -5534,6 +5613,23 @@ about TSLint."
(and (not (string-empty-p output)) (and (not (string-empty-p output))
(json-read-from-string output))))) (json-read-from-string output)))))
(defun flycheck-parse-rust-collect-spans (span)
"Return a list of spans contained in a SPAN object."
(let ((spans))
(let-alist span
;; With macro expansion errors, some spans will point to phony file names
;; to indicate an error inside the std rust lib. We skip these spans as
;; they won't appear in flycheck anyway.
(unless (string= .file_name "<std macros>")
(push span spans))
;; Macro expansion errors will have a span in the 'expansion' field, so we
;; recursively collect it.
(if .expansion.span
(append (flycheck-parse-rust-collect-spans .expansion.span)
spans)
spans))))
(defun flycheck-parse-rust (output checker buffer) (defun flycheck-parse-rust (output checker buffer)
"Parse rust errors from OUTPUT and return a list of `flycheck-error'. "Parse rust errors from OUTPUT and return a list of `flycheck-error'.
@ -5562,12 +5658,15 @@ https://github.com/rust-lang/rust/blob/master/src/libsyntax/json.rs#L67-L139"
;; level (error, warning), while the spans have a filename, line, column, ;; level (error, warning), while the spans have a filename, line, column,
;; and an optional label. The primary span points to the root cause of the ;; and an optional label. The primary span points to the root cause of the
;; error in the source text, while non-primary spans point to related ;; error in the source text, while non-primary spans point to related
;; causes. In addition, each diagnostic can also have children diagnostics ;; causes. Spans may have an 'expansion' field for macro expansion errors;
;; that are used to provide additional information through their message ;; these expansion fields will contain another span (and so on). In
;; field, but do not seem to contain any spans (yet). ;; addition, each diagnostic can also have children diagnostics that are
;; used to provide additional information through their message field, but
;; do not seem to contain any spans (yet).
;; ;;
;; We first iterate over diagnostics and their spans to turn every span into ;; We first iterate over diagnostics, get all their spans and turn every
;; a flycheck error object, that we collect into the `errors' list. ;; span into a flycheck error object, that we collect into the `errors'
;; list.
(dolist (diagnostic diagnostics) (dolist (diagnostic diagnostics)
(let ((error-message) (let ((error-message)
(error-level) (error-level)
@ -5589,9 +5688,11 @@ https://github.com/rust-lang/rust/blob/master/src/libsyntax/json.rs#L67-L139"
;; The 'code' field of the diagnostic contains the actual error ;; The 'code' field of the diagnostic contains the actual error
;; code and an optional explanation that we ignore ;; code and an optional explanation that we ignore
error-code .code.code error-code .code.code
spans .spans ;; Collect all spans recursively
spans (seq-mapcat #'flycheck-parse-rust-collect-spans .spans)
children .children)) children .children))
;; Turn each span into a flycheck error
(dolist (span spans) (dolist (span spans)
(let-alist span (let-alist span
;; Children lack any filename/line/column information, so we use ;; Children lack any filename/line/column information, so we use
@ -5610,7 +5711,9 @@ https://github.com/rust-lang/rust/blob/master/src/libsyntax/json.rs#L67-L139"
;; Primary spans may have labels with additional information ;; Primary spans may have labels with additional information
(concat error-message (when .label (concat error-message (when .label
(format " (%s)" .label))) (format " (%s)" .label)))
.label) ;; If the label is empty, fallback on the error message,
;; otherwise we won't be able to display anything
(or .label error-message))
:id error-code :id error-code
:checker checker :checker checker
:buffer buffer :buffer buffer
@ -5730,6 +5833,7 @@ SYMBOL with `flycheck-def-executable-var'."
(let ((command (plist-get properties :command)) (let ((command (plist-get properties :command))
(parser (plist-get properties :error-parser)) (parser (plist-get properties :error-parser))
(filter (plist-get properties :error-filter)) (filter (plist-get properties :error-filter))
(explainer (plist-get properties :error-explainer))
(predicate (plist-get properties :predicate)) (predicate (plist-get properties :predicate))
(enabled-fn (plist-get properties :enabled)) (enabled-fn (plist-get properties :enabled))
(verify-fn (plist-get properties :verify))) (verify-fn (plist-get properties :verify)))
@ -5745,6 +5849,8 @@ SYMBOL with `flycheck-def-executable-var'."
:error-patterns ',(plist-get properties :error-patterns) :error-patterns ',(plist-get properties :error-patterns)
,@(when filter ,@(when filter
`(:error-filter #',filter)) `(:error-filter #',filter))
,@(when explainer
`(:error-explainer #',explainer))
:modes ',(plist-get properties :modes) :modes ',(plist-get properties :modes)
,@(when predicate ,@(when predicate
`(:predicate #',predicate)) `(:predicate #',predicate))
@ -8557,6 +8663,12 @@ Relative paths are relative to the file being checked."
:safe #'flycheck-string-list-p :safe #'flycheck-string-list-p
:package-version '(flycheck . "0.18")) :package-version '(flycheck . "0.18"))
(defun flycheck-rust-error-explainer (error)
"Return an explanation text for the given `flycheck-error' ERROR."
(-when-let (error-code (flycheck-error-id error))
(with-output-to-string
(call-process "rustc" nil standard-output nil "--explain" error-code))))
(flycheck-define-checker rust-cargo (flycheck-define-checker rust-cargo
"A Rust syntax checker using Cargo. "A Rust syntax checker using Cargo.
@ -8578,6 +8690,7 @@ rustc command. See URL `https://www.rust-lang.org'."
(option-list "-L" flycheck-rust-library-path concat) (option-list "-L" flycheck-rust-library-path concat)
(eval flycheck-rust-args)) (eval flycheck-rust-args))
:error-parser flycheck-parse-rust :error-parser flycheck-parse-rust
:error-explainer flycheck-rust-error-explainer
:modes rust-mode :modes rust-mode
:predicate (lambda () :predicate (lambda ()
;; Since we build the entire project with cargo rustc we require ;; Since we build the entire project with cargo rustc we require
@ -8604,6 +8717,7 @@ This syntax checker needs Rust 1.7 or newer. See URL
(eval (or flycheck-rust-crate-root (eval (or flycheck-rust-crate-root
(flycheck-substitute-argument 'source-inplace 'rust)))) (flycheck-substitute-argument 'source-inplace 'rust))))
:error-parser flycheck-parse-rust :error-parser flycheck-parse-rust
:error-explainer flycheck-rust-error-explainer
:modes rust-mode :modes rust-mode
:predicate (lambda () :predicate (lambda ()
(and (not flycheck-rust-crate-root) (flycheck-buffer-saved-p)))) (and (not flycheck-rust-crate-root) (flycheck-buffer-saved-p))))

View File

@ -3,8 +3,8 @@
;;; Code: ;;; Code:
(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path)))) (add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
;;;### (autoloads nil "git-commit" "git-commit.el" (22514 17681 480743 ;;;### (autoloads nil "git-commit" "git-commit.el" (22523 21254 332484
;;;;;; 481000)) ;;;;;; 538000))
;;; Generated autoloads from git-commit.el ;;; Generated autoloads from git-commit.el
(defvar global-git-commit-mode t "\ (defvar global-git-commit-mode t "\

View File

@ -1,2 +1,2 @@
;;; -*- no-byte-compile: t -*- ;;; -*- no-byte-compile: t -*-
(define-package "git-commit" "20160929.801" "Edit Git commit messages" '((emacs "24.4") (dash "20160820.501") (with-editor "20160812.1457")) :url "https://github.com/magit/magit" :keywords '("git" "tools" "vc")) (define-package "git-commit" "20161009.252" "Edit Git commit messages" '((emacs "24.4") (dash "20160820.501") (with-editor "20160812.1457")) :url "https://github.com/magit/magit" :keywords '("git" "tools" "vc"))

View File

@ -12,7 +12,7 @@
;; Maintainer: Jonas Bernoulli <jonas@bernoul.li> ;; Maintainer: Jonas Bernoulli <jonas@bernoul.li>
;; Package-Requires: ((emacs "24.4") (dash "20160820.501") (with-editor "20160812.1457")) ;; Package-Requires: ((emacs "24.4") (dash "20160820.501") (with-editor "20160812.1457"))
;; Package-Version: 20160929.801 ;; Package-Version: 20161009.252
;; Keywords: git tools vc ;; Keywords: git tools vc
;; Homepage: https://github.com/magit/magit ;; Homepage: https://github.com/magit/magit
@ -102,11 +102,10 @@
;; files. ;; files.
;; Finally this package highlights style errors, like lines that are ;; Finally this package highlights style errors, like lines that are
;; too long, or when the second line is not empty. It may even nag you ;; too long, or when the second line is not empty. It may even nag
;; when you attempt to finish the commit without having fixed these ;; you when you attempt to finish the commit without having fixed
;; issues. Some people like that nagging, I don't, so you'll have to ;; these issues. The style checks and many other settings can easily
;; enable it. Which brings me to the last point. Like any ;; be configured:
;; respectable Emacs package, this one too is highly customizable:
;; ;;
;; M-x customize-group RET git-commit RET ;; M-x customize-group RET git-commit RET
@ -124,6 +123,8 @@
;;;; Declarations ;;;; Declarations
(defvar flyspell-generic-check-word-predicate) (defvar flyspell-generic-check-word-predicate)
(defvar font-lock-beg)
(defvar font-lock-end)
(declare-function magit-expand-git-file-name 'magit-git) (declare-function magit-expand-git-file-name 'magit-git)
@ -177,8 +178,7 @@ The major mode configured here is turned on by the minor mode
"Hook run at the end of `git-commit-setup'." "Hook run at the end of `git-commit-setup'."
:group 'git-commit :group 'git-commit
:type 'hook :type 'hook
:options '( :options '(git-commit-save-message
git-commit-save-message
git-commit-setup-changelog-support git-commit-setup-changelog-support
git-commit-turn-on-auto-fill git-commit-turn-on-auto-fill
git-commit-turn-on-flyspell git-commit-turn-on-flyspell
@ -202,8 +202,23 @@ usually honor this wish and return non-nil."
:type 'hook :type 'hook
:group 'git-commit) :group 'git-commit)
(defcustom git-commit-summary-max-length 50 (defcustom git-commit-style-convention-checks '(non-empty-second-line)
"Fontify characters beyond this column in summary lines as errors." "List of checks performed by `git-commit-check-style-conventions'.
Valid members are `non-empty-second-line' and `overlong-first-line'.
That function is a member of `git-commit-finish-query-functions'."
:options '(non-empty-second-line overlong-summary-line)
:type '(list :convert-widget custom-hook-convert-widget)
:group 'git-commit)
(defcustom git-commit-summary-max-length 68
"Column beyond which characters in the summary lines are highlighted.
The highlighting indicates that the summary is getting too long
by some standards. It does in no way imply that going over the
limit a few characters or in some cases even many characters is
anything that deserves shaming. It's just a friendly reminder
that if you can make the summary shorter, then you might want
to consider doing so."
:group 'git-commit :group 'git-commit
:safe 'numberp :safe 'numberp
:type 'number) :type 'number)
@ -460,18 +475,23 @@ finally check current non-comment text."
(defun git-commit-check-style-conventions (force) (defun git-commit-check-style-conventions (force)
"Check for violations of certain basic style conventions. "Check for violations of certain basic style conventions.
For each violation ask the user if she wants to proceed anyway. For each violation ask the user if she wants to proceed anyway.
This makes sure the summary line isn't too long and that the Option `git-commit-check-style-conventions' controls which
second line is empty." conventions are checked."
(or force (or force
(save-excursion (save-excursion
(goto-char (point-min)) (goto-char (point-min))
(re-search-forward (git-commit-summary-regexp) nil t) (re-search-forward (git-commit-summary-regexp) nil t)
(if (equal (match-string 1) "") (if (equal (match-string 1) "")
t ; Just try; we don't know whether --allow-empty-message was used. t ; Just try; we don't know whether --allow-empty-message was used.
(and (or (equal (match-string 2) "") (and (or (not (memq 'overlong-summary-line
git-commit-style-convention-checks))
(equal (match-string 2) "")
(y-or-n-p "Summary line is too long. Commit anyway? ")) (y-or-n-p "Summary line is too long. Commit anyway? "))
(or (not (match-string 3)) (or (not (memq 'non-empty-second-line
git-commit-style-convention-checks))
(not (match-string 3))
(y-or-n-p "Second line is not empty. Commit anyway? "))))))) (y-or-n-p "Second line is not empty. Commit anyway? ")))))))
(defun git-commit-cancel-message () (defun git-commit-cancel-message ()
@ -620,11 +640,6 @@ With a numeric prefix ARG, go forward ARG comments."
;; Non-empty non-comment second line ;; Non-empty non-comment second line
(format "\\(?:\n%s\\|\n\\(.+\\)\\)?" comment-start))) (format "\\(?:\n%s\\|\n\\(.+\\)\\)?" comment-start)))
;; These are let-bound while `font-lock-extend-region-functions' are
;; run.
(defvar font-lock-beg)
(defvar font-lock-end)
(defun git-commit-extend-region-summary-line () (defun git-commit-extend-region-summary-line ()
"Identify the multiline summary-regexp construct. "Identify the multiline summary-regexp construct.
Added to `font-lock-extend-region-functions'." Added to `font-lock-extend-region-functions'."

View File

@ -3,8 +3,8 @@
;;; Code: ;;; Code:
(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path)))) (add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
;;;### (autoloads nil "helm-adaptive" "helm-adaptive.el" (22516 57904 ;;;### (autoloads nil "helm-adaptive" "helm-adaptive.el" (22523 21252
;;;;;; 857525 192000)) ;;;;;; 592471 731000))
;;; Generated autoloads from helm-adaptive.el ;;; Generated autoloads from helm-adaptive.el
(defvar helm-adaptive-mode nil "\ (defvar helm-adaptive-mode nil "\
@ -30,8 +30,8 @@ Useful when you have a old or corrupted `helm-adaptive-history-file'.
;;;*** ;;;***
;;;### (autoloads nil "helm-apt" "helm-apt.el" (22516 57904 817525 ;;;### (autoloads nil "helm-apt" "helm-apt.el" (22523 21252 552471
;;;;;; 11000)) ;;;;;; 436000))
;;; Generated autoloads from helm-apt.el ;;; Generated autoloads from helm-apt.el
(autoload 'helm-apt "helm-apt" "\ (autoload 'helm-apt "helm-apt" "\
@ -42,8 +42,8 @@ With a prefix arg reload cache.
;;;*** ;;;***
;;;### (autoloads nil "helm-bookmark" "helm-bookmark.el" (22516 57904 ;;;### (autoloads nil "helm-bookmark" "helm-bookmark.el" (22523 21252
;;;;;; 909525 426000)) ;;;;;; 652472 172000))
;;; Generated autoloads from helm-bookmark.el ;;; Generated autoloads from helm-bookmark.el
(autoload 'helm-bookmarks "helm-bookmark" "\ (autoload 'helm-bookmarks "helm-bookmark" "\
@ -60,8 +60,8 @@ only if external library addressbook-bookmark.el is available.
;;;*** ;;;***
;;;### (autoloads nil "helm-buffers" "helm-buffers.el" (22516 57904 ;;;### (autoloads nil "helm-buffers" "helm-buffers.el" (22523 21252
;;;;;; 809524 975000)) ;;;;;; 540471 347000))
;;; Generated autoloads from helm-buffers.el ;;; Generated autoloads from helm-buffers.el
(autoload 'helm-buffers-list "helm-buffers" "\ (autoload 'helm-buffers-list "helm-buffers" "\
@ -76,8 +76,8 @@ Preconfigured `helm' lightweight version (buffer -> recentf).
;;;*** ;;;***
;;;### (autoloads nil "helm-color" "helm-color.el" (22516 57904 889525 ;;;### (autoloads nil "helm-color" "helm-color.el" (22523 21252 624471
;;;;;; 336000)) ;;;;;; 966000))
;;; Generated autoloads from helm-color.el ;;; Generated autoloads from helm-color.el
(autoload 'helm-colors "helm-color" "\ (autoload 'helm-colors "helm-color" "\
@ -87,8 +87,8 @@ Preconfigured `helm' for color.
;;;*** ;;;***
;;;### (autoloads nil "helm-command" "helm-command.el" (22516 57904 ;;;### (autoloads nil "helm-command" "helm-command.el" (22523 21252
;;;;;; 761524 758000)) ;;;;;; 492470 995000))
;;; Generated autoloads from helm-command.el ;;; Generated autoloads from helm-command.el
(autoload 'helm-M-x "helm-command" "\ (autoload 'helm-M-x "helm-command" "\
@ -106,8 +106,8 @@ You can get help on each command by persistent action.
;;;*** ;;;***
;;;### (autoloads nil "helm-config" "helm-config.el" (22516 57904 ;;;### (autoloads nil "helm-config" "helm-config.el" (22523 21252
;;;;;; 901525 390000)) ;;;;;; 648472 143000))
;;; Generated autoloads from helm-config.el ;;; Generated autoloads from helm-config.el
(autoload 'helm-configuration "helm-config" "\ (autoload 'helm-configuration "helm-config" "\
@ -117,8 +117,8 @@ Customize `helm'.
;;;*** ;;;***
;;;### (autoloads nil "helm-dabbrev" "helm-dabbrev.el" (22516 57904 ;;;### (autoloads nil "helm-dabbrev" "helm-dabbrev.el" (22523 21252
;;;;;; 829525 65000)) ;;;;;; 564471 525000))
;;; Generated autoloads from helm-dabbrev.el ;;; Generated autoloads from helm-dabbrev.el
(autoload 'helm-dabbrev "helm-dabbrev" "\ (autoload 'helm-dabbrev "helm-dabbrev" "\
@ -128,8 +128,8 @@ Preconfigured helm for dynamic abbreviations.
;;;*** ;;;***
;;;### (autoloads nil "helm-elisp" "helm-elisp.el" (22516 57904 893525 ;;;### (autoloads nil "helm-elisp" "helm-elisp.el" (22523 21252 640472
;;;;;; 354000)) ;;;;;; 85000))
;;; Generated autoloads from helm-elisp.el ;;; Generated autoloads from helm-elisp.el
(autoload 'helm-lisp-completion-at-point "helm-elisp" "\ (autoload 'helm-lisp-completion-at-point "helm-elisp" "\
@ -183,7 +183,7 @@ Preconfigured helm for complex command history.
;;;*** ;;;***
;;;### (autoloads nil "helm-elisp-package" "helm-elisp-package.el" ;;;### (autoloads nil "helm-elisp-package" "helm-elisp-package.el"
;;;;;; (22516 57904 765524 776000)) ;;;;;; (22523 21252 496471 24000))
;;; Generated autoloads from helm-elisp-package.el ;;; Generated autoloads from helm-elisp-package.el
(autoload 'helm-list-elisp-packages "helm-elisp-package" "\ (autoload 'helm-list-elisp-packages "helm-elisp-package" "\
@ -199,8 +199,8 @@ Same as `helm-list-elisp-packages' but don't fetch packages on remote.
;;;*** ;;;***
;;;### (autoloads nil "helm-elscreen" "helm-elscreen.el" (22516 57904 ;;;### (autoloads nil "helm-elscreen" "helm-elscreen.el" (22523 21252
;;;;;; 753524 722000)) ;;;;;; 484470 935000))
;;; Generated autoloads from helm-elscreen.el ;;; Generated autoloads from helm-elscreen.el
(autoload 'helm-elscreen "helm-elscreen" "\ (autoload 'helm-elscreen "helm-elscreen" "\
@ -215,8 +215,8 @@ Preconfigured helm to list elscreen in history order.
;;;*** ;;;***
;;;### (autoloads nil "helm-eshell" "helm-eshell.el" (22516 57904 ;;;### (autoloads nil "helm-eshell" "helm-eshell.el" (22523 21252
;;;;;; 789524 885000)) ;;;;;; 520471 201000))
;;; Generated autoloads from helm-eshell.el ;;; Generated autoloads from helm-eshell.el
(autoload 'helm-esh-pcomplete "helm-eshell" "\ (autoload 'helm-esh-pcomplete "helm-eshell" "\
@ -231,8 +231,8 @@ Preconfigured helm for eshell history.
;;;*** ;;;***
;;;### (autoloads nil "helm-eval" "helm-eval.el" (22516 57904 861525 ;;;### (autoloads nil "helm-eval" "helm-eval.el" (22523 21252 596471
;;;;;; 209000)) ;;;;;; 760000))
;;; Generated autoloads from helm-eval.el ;;; Generated autoloads from helm-eval.el
(autoload 'helm-eval-expression "helm-eval" "\ (autoload 'helm-eval-expression "helm-eval" "\
@ -252,8 +252,8 @@ Preconfigured helm for `helm-source-calculation-result'.
;;;*** ;;;***
;;;### (autoloads nil "helm-external" "helm-external.el" (22516 57904 ;;;### (autoloads nil "helm-external" "helm-external.el" (22523 21252
;;;;;; 741524 668000)) ;;;;;; 468470 818000))
;;; Generated autoloads from helm-external.el ;;; Generated autoloads from helm-external.el
(autoload 'helm-run-external-command "helm-external" "\ (autoload 'helm-run-external-command "helm-external" "\
@ -266,8 +266,8 @@ You can set your own list of commands with
;;;*** ;;;***
;;;### (autoloads nil "helm-files" "helm-files.el" (22516 57904 837525 ;;;### (autoloads nil "helm-files" "helm-files.el" (22523 21252 568471
;;;;;; 102000)) ;;;;;; 554000))
;;; Generated autoloads from helm-files.el ;;; Generated autoloads from helm-files.el
(autoload 'helm-projects-history "helm-files" "\ (autoload 'helm-projects-history "helm-files" "\
@ -355,8 +355,8 @@ It allows additionally to delete more than one connection at once.
;;;*** ;;;***
;;;### (autoloads nil "helm-font" "helm-font.el" (22516 57904 793524 ;;;### (autoloads nil "helm-font" "helm-font.el" (22523 21252 524471
;;;;;; 903000)) ;;;;;; 230000))
;;; Generated autoloads from helm-font.el ;;; Generated autoloads from helm-font.el
(autoload 'helm-select-xfont "helm-font" "\ (autoload 'helm-select-xfont "helm-font" "\
@ -371,8 +371,8 @@ Preconfigured helm for `ucs-names' math symbols.
;;;*** ;;;***
;;;### (autoloads nil "helm-grep" "helm-grep.el" (22516 57904 917525 ;;;### (autoloads nil "helm-grep" "helm-grep.el" (22523 21252 656472
;;;;;; 462000)) ;;;;;; 201000))
;;; Generated autoloads from helm-grep.el ;;; Generated autoloads from helm-grep.el
(autoload 'helm-goto-precedent-file "helm-grep" "\ (autoload 'helm-goto-precedent-file "helm-grep" "\
@ -399,8 +399,8 @@ With a prefix arg ARG git-grep the whole repository.
;;;*** ;;;***
;;;### (autoloads nil "helm-help" "helm-help.el" (22516 57904 733524 ;;;### (autoloads nil "helm-help" "helm-help.el" (22523 21252 464470
;;;;;; 632000)) ;;;;;; 789000))
;;; Generated autoloads from helm-help.el ;;; Generated autoloads from helm-help.el
(autoload 'helm-documentation "helm-help" "\ (autoload 'helm-documentation "helm-help" "\
@ -420,8 +420,8 @@ String displayed in mode-line in `helm-source-find-files'.")
;;;*** ;;;***
;;;### (autoloads nil "helm-id-utils" "helm-id-utils.el" (22516 57904 ;;;### (autoloads nil "helm-id-utils" "helm-id-utils.el" (22523 21252
;;;;;; 813524 993000)) ;;;;;; 544471 378000))
;;; Generated autoloads from helm-id-utils.el ;;; Generated autoloads from helm-id-utils.el
(autoload 'helm-gid "helm-id-utils" "\ (autoload 'helm-gid "helm-id-utils" "\
@ -435,8 +435,8 @@ See <https://www.gnu.org/software/idutils/>.
;;;*** ;;;***
;;;### (autoloads nil "helm-imenu" "helm-imenu.el" (22516 57904 801524 ;;;### (autoloads nil "helm-imenu" "helm-imenu.el" (22523 21252 532471
;;;;;; 939000)) ;;;;;; 289000))
;;; Generated autoloads from helm-imenu.el ;;; Generated autoloads from helm-imenu.el
(autoload 'helm-imenu "helm-imenu" "\ (autoload 'helm-imenu "helm-imenu" "\
@ -453,8 +453,8 @@ or it have an association in `helm-imenu-all-buffer-assoc'.
;;;*** ;;;***
;;;### (autoloads nil "helm-info" "helm-info.el" (22516 57904 797524 ;;;### (autoloads nil "helm-info" "helm-info.el" (22523 21252 528471
;;;;;; 921000)) ;;;;;; 259000))
;;; Generated autoloads from helm-info.el ;;; Generated autoloads from helm-info.el
(autoload 'helm-info "helm-info" "\ (autoload 'helm-info "helm-info" "\
@ -470,8 +470,8 @@ With a prefix-arg insert symbol at point.
;;;*** ;;;***
;;;### (autoloads nil "helm-locate" "helm-locate.el" (22516 57904 ;;;### (autoloads nil "helm-locate" "helm-locate.el" (22523 21252
;;;;;; 745524 686000)) ;;;;;; 476470 877000))
;;; Generated autoloads from helm-locate.el ;;; Generated autoloads from helm-locate.el
(autoload 'helm-projects-find-files "helm-locate" "\ (autoload 'helm-projects-find-files "helm-locate" "\
@ -498,8 +498,8 @@ Where db_path is a filename matched by
;;;*** ;;;***
;;;### (autoloads nil "helm-man" "helm-man.el" (22516 57904 869525 ;;;### (autoloads nil "helm-man" "helm-man.el" (22523 21252 604471
;;;;;; 246000)) ;;;;;; 819000))
;;; Generated autoloads from helm-man.el ;;; Generated autoloads from helm-man.el
(autoload 'helm-man-woman "helm-man" "\ (autoload 'helm-man-woman "helm-man" "\
@ -510,8 +510,8 @@ With a prefix arg reinitialize the cache.
;;;*** ;;;***
;;;### (autoloads nil "helm-misc" "helm-misc.el" (22516 57904 853525 ;;;### (autoloads nil "helm-misc" "helm-misc.el" (22523 21252 584471
;;;;;; 174000)) ;;;;;; 672000))
;;; Generated autoloads from helm-misc.el ;;; Generated autoloads from helm-misc.el
(autoload 'helm-browse-menubar "helm-misc" "\ (autoload 'helm-browse-menubar "helm-misc" "\
@ -552,8 +552,8 @@ Preconfigured `helm' that provide completion of `comint' history.
;;;*** ;;;***
;;;### (autoloads nil "helm-mode" "helm-mode.el" (22516 57904 717524 ;;;### (autoloads nil "helm-mode" "helm-mode.el" (22523 21252 448470
;;;;;; 560000)) ;;;;;; 672000))
;;; Generated autoloads from helm-mode.el ;;; Generated autoloads from helm-mode.el
(autoload 'helm-comp-read "helm-mode" "\ (autoload 'helm-comp-read "helm-mode" "\
@ -724,8 +724,8 @@ Note: This mode is incompatible with Emacs23.
;;;*** ;;;***
;;;### (autoloads nil "helm-net" "helm-net.el" (22516 57904 885525 ;;;### (autoloads nil "helm-net" "helm-net.el" (22523 21252 616471
;;;;;; 318000)) ;;;;;; 907000))
;;; Generated autoloads from helm-net.el ;;; Generated autoloads from helm-net.el
(autoload 'helm-surfraw "helm-net" "\ (autoload 'helm-surfraw "helm-net" "\
@ -745,8 +745,8 @@ Preconfigured `helm' for Wikipedia lookup with Wikipedia suggest.
;;;*** ;;;***
;;;### (autoloads nil "helm-org" "helm-org.el" (22516 57904 921525 ;;;### (autoloads nil "helm-org" "helm-org.el" (22523 21252 664472
;;;;;; 481000)) ;;;;;; 261000))
;;; Generated autoloads from helm-org.el ;;; Generated autoloads from helm-org.el
(autoload 'helm-org-agenda-files-headings "helm-org" "\ (autoload 'helm-org-agenda-files-headings "helm-org" "\
@ -777,8 +777,8 @@ Preconfigured helm for org templates.
;;;*** ;;;***
;;;### (autoloads nil "helm-regexp" "helm-regexp.el" (22516 57904 ;;;### (autoloads nil "helm-regexp" "helm-regexp.el" (22523 21252
;;;;;; 881525 300000)) ;;;;;; 612471 878000))
;;; Generated autoloads from helm-regexp.el ;;; Generated autoloads from helm-regexp.el
(autoload 'helm-moccur-mode "helm-regexp" "\ (autoload 'helm-moccur-mode "helm-regexp" "\
@ -817,8 +817,8 @@ The prefix arg can be set before calling
;;;*** ;;;***
;;;### (autoloads nil "helm-ring" "helm-ring.el" (22516 57904 729524 ;;;### (autoloads nil "helm-ring" "helm-ring.el" (22523 21252 460470
;;;;;; 614000)) ;;;;;; 759000))
;;; Generated autoloads from helm-ring.el ;;; Generated autoloads from helm-ring.el
(defvar helm-push-mark-mode nil "\ (defvar helm-push-mark-mode nil "\
@ -876,8 +876,8 @@ This command is useful when used with persistent action.
;;;*** ;;;***
;;;### (autoloads nil "helm-semantic" "helm-semantic.el" (22516 57904 ;;;### (autoloads nil "helm-semantic" "helm-semantic.el" (22523 21252
;;;;;; 805524 957000)) ;;;;;; 536471 318000))
;;; Generated autoloads from helm-semantic.el ;;; Generated autoloads from helm-semantic.el
(autoload 'helm-semantic "helm-semantic" "\ (autoload 'helm-semantic "helm-semantic" "\
@ -899,8 +899,8 @@ Fill in the symbol at point by default.
;;;*** ;;;***
;;;### (autoloads nil "helm-sys" "helm-sys.el" (22516 57904 825525 ;;;### (autoloads nil "helm-sys" "helm-sys.el" (22523 21252 556471
;;;;;; 47000)) ;;;;;; 465000))
;;; Generated autoloads from helm-sys.el ;;; Generated autoloads from helm-sys.el
(defvar helm-top-poll-mode nil "\ (defvar helm-top-poll-mode nil "\
@ -935,8 +935,8 @@ Preconfigured helm for xrandr.
;;;*** ;;;***
;;;### (autoloads nil "helm-tags" "helm-tags.el" (22516 57904 781524 ;;;### (autoloads nil "helm-tags" "helm-tags.el" (22523 21252 512471
;;;;;; 849000)) ;;;;;; 142000))
;;; Generated autoloads from helm-tags.el ;;; Generated autoloads from helm-tags.el
(autoload 'helm-etags-select "helm-tags" "\ (autoload 'helm-etags-select "helm-tags" "\
@ -955,8 +955,8 @@ This function aggregates three sources of tag files:
;;;*** ;;;***
;;;### (autoloads nil "helm-utils" "helm-utils.el" (22516 57904 757524 ;;;### (autoloads nil "helm-utils" "helm-utils.el" (22523 21252 488470
;;;;;; 740000)) ;;;;;; 966000))
;;; Generated autoloads from helm-utils.el ;;; Generated autoloads from helm-utils.el
(defvar helm-popup-tip-mode nil "\ (defvar helm-popup-tip-mode nil "\
@ -977,7 +977,7 @@ Show help-echo informations in a popup tip at end of line.
;;;*** ;;;***
;;;### (autoloads nil nil ("helm-easymenu.el" "helm-pkg.el" "helm-types.el") ;;;### (autoloads nil nil ("helm-easymenu.el" "helm-pkg.el" "helm-types.el")
;;;;;; (22516 57904 925525 499000)) ;;;;;; (22523 21252 672472 320000))
;;;*** ;;;***

View File

@ -427,11 +427,14 @@ It is intended to use as a let-bound variable, DON'T set this globaly.")
(pipes (pipes
(helm-aif (cdr patterns) (helm-aif (cdr patterns)
(cl-loop with pipcom = (pcase (helm-grep-command) (cl-loop with pipcom = (pcase (helm-grep-command)
;; Use grep for GNU regexp based tools.
((or "grep" "zgrep" "git-grep") ((or "grep" "zgrep" "git-grep")
"grep --color=always") (format "grep --color=always %s"
(if smartcase "-i" "")))
;; Use ack-grep for PCRE based tools.
;; Sometimes ack-grep cmd is ack only. ;; Sometimes ack-grep cmd is ack only.
((and (pred (string-match-p "ack")) ack) ((and (pred (string-match-p "ack")) ack)
(format "%s --color" ack))) (format "%s --smart-case --color" ack)))
for p in it concat for p in it concat
(format " | %s %s" pipcom (shell-quote-argument p))) (format " | %s %s" pipcom (shell-quote-argument p)))
""))) "")))

View File

@ -1,4 +1,4 @@
(define-package "helm" "20161004.2242" "Helm is an Emacs incremental and narrowing framework" (define-package "helm" "20161008.1318" "Helm is an Emacs incremental and narrowing framework"
'((emacs "24.4") '((emacs "24.4")
(async "1.9") (async "1.9")
(popup "0.5.3") (popup "0.5.3")

View File

@ -648,7 +648,7 @@ If STRING is non--nil return instead a space separated string."
(set-window-text-height (helm-window) helm-resize-on-pa-text-height))) (set-window-text-height (helm-window) helm-resize-on-pa-text-height)))
(defun helm-match-line-cleanup-pulse () (defun helm-match-line-cleanup-pulse ()
(run-with-idle-timer 0.3 nil #'helm-match-line-cleanup)) (run-with-timer 0.3 nil #'helm-match-line-cleanup))
(add-hook 'helm-after-persistent-action-hook 'helm-persistent-autoresize-hook) (add-hook 'helm-after-persistent-action-hook 'helm-persistent-autoresize-hook)
(add-hook 'helm-cleanup-hook 'helm-match-line-cleanup) (add-hook 'helm-cleanup-hook 'helm-match-line-cleanup)

View File

@ -3,7 +3,7 @@
;;; Code: ;;; Code:
(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path)))) (add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
;;;### (autoloads nil "helm" "helm.el" (22516 57898 381495 962000)) ;;;### (autoloads nil "helm" "helm.el" (22523 21247 808436 501000))
;;; Generated autoloads from helm.el ;;; Generated autoloads from helm.el
(autoload 'helm-define-multi-key "helm" "\ (autoload 'helm-define-multi-key "helm" "\
@ -188,7 +188,7 @@ Enable/disable helm debugging from outside of helm session.
;;;*** ;;;***
;;;### (autoloads nil nil ("helm-core-pkg.el" "helm-lib.el" "helm-multi-match.el" ;;;### (autoloads nil nil ("helm-core-pkg.el" "helm-lib.el" "helm-multi-match.el"
;;;;;; "helm-source.el") (22516 57898 397496 35000)) ;;;;;; "helm-source.el") (22523 21247 820436 589000))
;;;*** ;;;***

View File

@ -1,4 +1,4 @@
(define-package "helm-core" "20161004.2301" "Development files for Helm" (define-package "helm-core" "20161009.405" "Development files for Helm"
'((emacs "24.4") '((emacs "24.4")
(async "1.9")) (async "1.9"))
:url "https://emacs-helm.github.io/helm/") :url "https://emacs-helm.github.io/helm/")

View File

@ -2382,7 +2382,7 @@ For ANY-PRESELECT ANY-RESUME ANY-KEYMAP ANY-DEFAULT ANY-HISTORY, See `helm'."
(helm-get-current-source)) (helm-get-current-source))
(helm-mark-current-line t) (helm-mark-current-line t)
(helm-update any-preselect)) (helm-update any-preselect))
(with-current-buffer (helm-buffer-get) (with-helm-buffer
(let* ((src (helm-get-current-source)) (let* ((src (helm-get-current-source))
(src-keymap (assoc-default 'keymap src)) (src-keymap (assoc-default 'keymap src))
(hist (or (and any-history (symbolp any-history) any-history) (hist (or (and any-history (symbolp any-history) any-history)
@ -4678,30 +4678,33 @@ Returns the resulting buffer."
(helm-prevent-switching-other-window :enabled nil)) (helm-prevent-switching-other-window :enabled nil))
(unwind-protect (unwind-protect
(with-helm-window (with-helm-window
(if (or helm-full-frame (one-window-p t)) (cond ((or helm-full-frame (one-window-p t))
(message "Error: Attempt to resplit a single window") (user-error "Attempt to resplit a single window"))
(let ((before-height (window-height))) ((helm-action-window)
(delete-window) (user-error "Can't resplit while selecting actions"))
(set-window-buffer (t
(select-window (let ((before-height (window-height)))
(if (= (window-height) before-height) ; initial split was horizontal. (delete-window)
;; Split window vertically with `helm-buffer' placed (set-window-buffer
;; on the good side according to actual value of (select-window
;; `helm-split-window-default-side'. (if (= (window-height) before-height) ; initial split was horizontal.
(prog1 ;; Split window vertically with `helm-buffer' placed
(cond ((or (eq helm-split-window-default-side 'above) ;; on the good side according to actual value of
(eq helm-split-window-default-side 'left)) ;; `helm-split-window-default-side'.
(split-window (prog1
(selected-window) nil 'above)) (cond ((or (eq helm-split-window-default-side 'above)
(t (split-window-vertically))) (eq helm-split-window-default-side 'left))
(setq helm-split-window-state 'vertical)) (split-window
;; Split window vertically, same comment as above. (selected-window) nil 'above))
(setq helm-split-window-state 'horizontal) (t (split-window-vertically)))
(cond ((or (eq helm-split-window-default-side 'left) (setq helm-split-window-state 'vertical))
(eq helm-split-window-default-side 'above)) ;; Split window vertically, same comment as above.
(split-window (selected-window) nil 'left)) (setq helm-split-window-state 'horizontal)
(t (split-window-horizontally))))) (cond ((or (eq helm-split-window-default-side 'left)
helm-buffer))) (eq helm-split-window-default-side 'above))
(split-window (selected-window) nil 'left))
(t (split-window-horizontally)))))
helm-buffer))))
(setq helm--window-side-state (helm--get-window-side-state))) (setq helm--window-side-state (helm--get-window-side-state)))
(when helm-prevent-escaping-from-minibuffer (when helm-prevent-escaping-from-minibuffer
(helm-prevent-switching-other-window :enabled t))))) (helm-prevent-switching-other-window :enabled t)))))
@ -4734,43 +4737,46 @@ If N is positive enlarge, if negative narrow."
"Swap window holding `helm-buffer' with other window." "Swap window holding `helm-buffer' with other window."
(interactive) (interactive)
(with-helm-alive-p (with-helm-alive-p
(if (and helm-full-frame (one-window-p t)) (cond ((and helm-full-frame (one-window-p t))
(error "Error: Can't swap windows in a single window") (user-error "Can't swap windows in a single window"))
(let* ((w1 (helm-window)) ((helm-action-window)
(split-state (eq helm-split-window-state 'horizontal)) (user-error "Can't resplit while selecting actions"))
(w1size (window-total-size w1 split-state)) (t
(b1 (window-buffer w1)) ; helm-buffer (let* ((w1 (helm-window))
(s1 (window-start w1)) (split-state (eq helm-split-window-state 'horizontal))
(cur-frame (window-frame w1)) (w1size (window-total-size w1 split-state))
(w2 (with-selected-window (helm-window) (b1 (window-buffer w1)) ; helm-buffer
;; Don't try to display helm-buffer (s1 (window-start w1))
;; in a dedicated window. (cur-frame (window-frame w1))
(get-window-with-predicate (w2 (with-selected-window (helm-window)
(lambda (w) (not (window-dedicated-p w))) ;; Don't try to display helm-buffer
1 cur-frame))) ;; in a dedicated window.
(w2size (window-total-size w2 split-state)) (get-window-with-predicate
(b2 (window-buffer w2)) ; probably helm-current-buffer (lambda (w) (not (window-dedicated-p w)))
(s2 (window-start w2)) 1 cur-frame)))
resize) (w2size (window-total-size w2 split-state))
(with-selected-frame (window-frame w1) (b2 (window-buffer w2)) ; probably helm-current-buffer
(helm-replace-buffer-in-window w1 b1 b2) (s2 (window-start w2))
(helm-replace-buffer-in-window w2 b2 b1) resize)
(setq resize (with-selected-frame (window-frame w1)
(cond ( ;; helm-window is smaller than other window. (helm-replace-buffer-in-window w1 b1 b2)
(< w1size w2size) (helm-replace-buffer-in-window w2 b2 b1)
(- (- (max w2size w1size) (setq resize
(min w2size w1size)))) (cond ( ;; helm-window is smaller than other window.
( ;; helm-window is larger than other window. (< w1size w2size)
(> w1size w2size) (- (- (max w2size w1size)
(- (max w2size w1size) (min w2size w1size))))
(min w2size w1size))) ( ;; helm-window is larger than other window.
( ;; windows have probably same size. (> w1size w2size)
t nil))) (- (max w2size w1size)
;; Maybe resize the window holding helm-buffer. (min w2size w1size)))
(and resize (window-resize w2 resize split-state)) ( ;; windows have probably same size.
(set-window-start w1 s2 t) t nil)))
(set-window-start w2 s1 t)) ;; Maybe resize the window holding helm-buffer.
(setq helm--window-side-state (helm--get-window-side-state)))))) (and resize (window-resize w2 resize split-state))
(set-window-start w1 s2 t)
(set-window-start w2 s1 t))
(setq helm--window-side-state (helm--get-window-side-state)))))))
(put 'helm-swap-windows 'helm-only t) (put 'helm-swap-windows 'helm-only t)
(defun helm--get-window-side-state () (defun helm--get-window-side-state ()

View File

@ -1 +0,0 @@
(define-package "helm-projectile" "20160922.4" "Helm integration for Projectile" '((helm "1.7.7") (projectile "0.14.0") (cl-lib "0.3")) :url "https://github.com/bbatsov/helm-projectile" :keywords '("project" "convenience"))

View File

@ -1,10 +1,10 @@
;;; helm-projectile-autoloads.el --- automatically extracted autoloads ;;; helm-projectile-autoloads.el --- automatically extracted autoloads
;; ;;
;;; Code: ;;; Code:
(add-to-list 'load-path (or (file-name-directory #$) (car load-path))) (add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
;;;### (autoloads nil "helm-projectile" "helm-projectile.el" (22501 ;;;### (autoloads nil "helm-projectile" "helm-projectile.el" (22523
;;;;;; 3214 979961 347000)) ;;;;;; 21245 720421 118000))
;;; Generated autoloads from helm-projectile.el ;;; Generated autoloads from helm-projectile.el
(defvar helm-projectile-fuzzy-match t "\ (defvar helm-projectile-fuzzy-match t "\

View File

@ -0,0 +1,2 @@
;;; -*- no-byte-compile: t -*-
(define-package "helm-projectile" "20161008.45" "Helm integration for Projectile" '((helm "1.7.7") (projectile "0.14.0") (cl-lib "0.3")) :url "https://github.com/bbatsov/helm-projectile" :keywords '("project" "convenience"))

View File

@ -4,7 +4,7 @@
;; Author: Bozhidar Batsov ;; Author: Bozhidar Batsov
;; URL: https://github.com/bbatsov/helm-projectile ;; URL: https://github.com/bbatsov/helm-projectile
;; Package-Version: 20160922.4 ;; Package-Version: 20161008.45
;; Created: 2011-31-07 ;; Created: 2011-31-07
;; Keywords: project, convenience ;; Keywords: project, convenience
;; Version: 0.14.0 ;; Version: 0.14.0
@ -60,7 +60,7 @@
"Helm support for projectile." "Helm support for projectile."
:prefix "helm-projectile-" :prefix "helm-projectile-"
:group 'projectile :group 'projectile
:link `(url-link :tag "helm-projectile homepage" "https://github.com/bbatsov/projectile")) :link `(url-link :tag "GitHub" "https://github.com/bbatsov/helm-projectile"))
(defvar helm-projectile-current-project-root) (defvar helm-projectile-current-project-root)
@ -116,7 +116,7 @@ If an INSTRUCTION is of the form \(FUNCTION . DESCRIPTION\), and
if an action with function name FUNCTION exists in the original if an action with function name FUNCTION exists in the original
Helm action list, the action in the Helm action list, with Helm action list, the action in the Helm action list, with
function name FUNCTION will change it's description to function name FUNCTION will change it's description to
DESCRIPTION. Otherwise, (FUNCTION . DESCRIPTION) will be added to DESCRIPTION. Otherwise, (FUNCTION . DESCRIPTION) will be added to
the action list. the action list.
Please check out how `helm-projectile-file-actions' is defined Please check out how `helm-projectile-file-actions' is defined
@ -284,9 +284,9 @@ CANDIDATE is the selected file, but choose the marked files if available."
(let ((files (cl-remove-if-not (let ((files (cl-remove-if-not
(lambda (f) (lambda (f)
(not (string= f ""))) (not (string= f "")))
(mapcar (lambda (file) (mapcar (lambda (file)
(replace-regexp-in-string (projectile-project-root) "" file)) (replace-regexp-in-string (projectile-project-root) "" file))
(helm-marked-candidates :with-wildcard t)))) (helm-marked-candidates :with-wildcard t))))
(new-name (completing-read "Select or enter a new buffer name: " (new-name (completing-read "Select or enter a new buffer name: "
(helm-projectile-all-dired-buffers))) (helm-projectile-all-dired-buffers)))
(helm--reading-passwd-or-string t) (helm--reading-passwd-or-string t)
@ -371,6 +371,12 @@ CANDIDATE is the selected file. Used when no file is explicitly marked."
(list candidate)))) (list candidate))))
(rename-buffer dired-buffer-name)))))) (rename-buffer dired-buffer-name))))))
(advice-add 'helm-find-file-or-marked :after
(lambda (orig-fun &rest args)
"Run `projectile-find-file-hook' if using projectile."
(when (and projectile-mode (projectile-project-p))
(run-hooks 'projectile-find-file-hook))))
(defvar helm-projectile-find-file-map (defvar helm-projectile-find-file-map
(let ((map (copy-keymap helm-find-files-map))) (let ((map (copy-keymap helm-find-files-map)))
(helm-projectile-define-key map (helm-projectile-define-key map
@ -662,7 +668,7 @@ Other file extensions can be customized with the variable `projectile-other-file
'("Find file" helm-grep-action '("Find file" helm-grep-action
"Find file other frame" helm-grep-other-frame "Find file other frame" helm-grep-other-frame
(lambda () (and (locate-library "elscreen") (lambda () (and (locate-library "elscreen")
"Find file in Elscreen")) "Find file in Elscreen"))
helm-grep-jump-elscreen helm-grep-jump-elscreen
"Save results in grep buffer" helm-grep-save-results "Save results in grep buffer" helm-grep-save-results
"Find file other window" helm-grep-other-window) "Find file other window" helm-grep-other-window)
@ -670,6 +676,17 @@ Other file extensions can be customized with the variable `projectile-other-file
The contents of this list are passed as the arguments to `helm-make-actions'." The contents of this list are passed as the arguments to `helm-make-actions'."
:group 'helm-projectile) :group 'helm-projectile)
(defcustom helm-projectile-set-input-automatically t
"If non-nil, attempt to set search input automatically.
Automatic input selection uses the region (if there is an active
region), otherwise it uses the current symbol at point (if there
is one). Applies to `helm-projectile-grep' and
`helm-projectile-ack' only. If the `helm-ag' package is
installed, then automatic input behavior for `helm-projectile-ag'
can be customized using `helm-ag-insert-at-point'."
:group 'helm-projectile
:type 'boolean)
(defun helm-projectile-grep-or-ack (&optional dir use-ack-p ack-ignored-pattern ack-executable) (defun helm-projectile-grep-or-ack (&optional dir use-ack-p ack-ignored-pattern ack-executable)
"Perform helm-grep at project root. "Perform helm-grep at project root.
DIR directory where to search DIR directory where to search
@ -716,9 +733,10 @@ If it is nil, or ack/ack-grep not found then use default grep command."
:requires-pattern 2)) :requires-pattern 2))
(helm (helm
:sources 'helm-source-grep :sources 'helm-source-grep
:input (if (region-active-p) :input (when helm-projectile-set-input-automatically
(buffer-substring-no-properties (region-beginning) (region-end)) (if (region-active-p)
(thing-at-point 'symbol)) (buffer-substring-no-properties (region-beginning) (region-end))
(thing-at-point 'symbol)))
:buffer (format "*helm %s*" (if use-ack-p :buffer (format "*helm %s*" (if use-ack-p
"ack" "ack"
"grep")) "grep"))
@ -747,8 +765,8 @@ If it is nil, or ack/ack-grep not found then use default grep command."
DIR is the project root, if not set then current directory is used" DIR is the project root, if not set then current directory is used"
(interactive) (interactive)
(let ((project-root (or dir (projectile-project-root) (error "You're not in a project")))) (let ((project-root (or dir (projectile-project-root) (error "You're not in a project"))))
(funcall'run-with-timer 0.01 nil (funcall 'run-with-timer 0.01 nil
#'helm-projectile-grep-or-ack project-root nil))) #'helm-projectile-grep-or-ack project-root nil)))
;;;###autoload ;;;###autoload
(defun helm-projectile-ack (&optional dir) (defun helm-projectile-ack (&optional dir)
@ -766,7 +784,7 @@ DIR is the project root, if not set then current directory is used"
(helm-ack-grep-executable (cond (helm-ack-grep-executable (cond
((executable-find "ack") "ack") ((executable-find "ack") "ack")
((executable-find "ack-grep") "ack-grep") ((executable-find "ack-grep") "ack-grep")
(t (error "ack or ack-grep is not available."))))) (t (error "ack or ack-grep is not available")))))
(funcall 'run-with-timer 0.01 nil (funcall 'run-with-timer 0.01 nil
#'helm-projectile-grep-or-ack project-root t ack-ignored helm-ack-grep-executable)))) #'helm-projectile-grep-or-ack project-root t ack-ignored helm-ack-grep-executable))))

View File

@ -3,8 +3,8 @@
;;; Code: ;;; Code:
(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path)))) (add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
;;;### (autoloads nil "js2-imenu-extras" "js2-imenu-extras.el" (22518 ;;;### (autoloads nil "js2-imenu-extras" "js2-imenu-extras.el" (22523
;;;;;; 4413 133886 14000)) ;;;;;; 21232 276321 957000))
;;; Generated autoloads from js2-imenu-extras.el ;;; Generated autoloads from js2-imenu-extras.el
(autoload 'js2-imenu-extras-setup "js2-imenu-extras" "\ (autoload 'js2-imenu-extras-setup "js2-imenu-extras" "\
@ -19,8 +19,8 @@ Toggle Imenu support for frameworks and structural patterns.
;;;*** ;;;***
;;;### (autoloads nil "js2-mode" "js2-mode.el" (22518 4413 157886 ;;;### (autoloads nil "js2-mode" "js2-mode.el" (22523 21232 296322
;;;;;; 136000)) ;;;;;; 105000))
;;; Generated autoloads from js2-mode.el ;;; Generated autoloads from js2-mode.el
(autoload 'js2-highlight-unused-variables-mode "js2-mode" "\ (autoload 'js2-highlight-unused-variables-mode "js2-mode" "\
@ -56,7 +56,7 @@ variables (`sgml-basic-offset' et al) locally, like so:
;;;*** ;;;***
;;;### (autoloads nil nil ("js2-mode-pkg.el" "js2-old-indent.el") ;;;### (autoloads nil nil ("js2-mode-pkg.el" "js2-old-indent.el")
;;;;;; (22518 4413 149886 96000)) ;;;;;; (22523 21232 288322 46000))
;;;*** ;;;***

View File

@ -1,4 +1,4 @@
(define-package "js2-mode" "20161005.1411" "Improved JavaScript editing mode" (define-package "js2-mode" "20161009.341" "Improved JavaScript editing mode"
'((emacs "24.1") '((emacs "24.1")
(cl-lib "0.5")) (cl-lib "0.5"))
:url "https://github.com/mooz/js2-mode/" :keywords :url "https://github.com/mooz/js2-mode/" :keywords

View File

@ -7734,14 +7734,14 @@ is only true until the node is added to its parent; i.e., while parsing."
;; Tell cc-engine the bounds of the comment. ;; Tell cc-engine the bounds of the comment.
(js2-record-text-property beg (1- end) 'c-in-sws t))))) (js2-record-text-property beg (1- end) 'c-in-sws t)))))
(defun js2-peek-token () (defun js2-peek-token (&optional modifier)
"Return the next token type without consuming it. "Return the next token type without consuming it.
If `js2-ti-lookahead' is positive, return the type of next token If `js2-ti-lookahead' is positive, return the type of next token
from `js2-ti-tokens'. Otherwise, call `js2-get-token'." from `js2-ti-tokens'. Otherwise, call `js2-get-token'."
(if (not (zerop js2-ti-lookahead)) (if (not (zerop js2-ti-lookahead))
(js2-token-type (js2-token-type
(aref js2-ti-tokens (mod (1+ js2-ti-tokens-cursor) js2-ti-ntokens))) (aref js2-ti-tokens (mod (1+ js2-ti-tokens-cursor) js2-ti-ntokens)))
(let ((tt (js2-get-token-internal nil))) (let ((tt (js2-get-token-internal modifier)))
(js2-unget-token) (js2-unget-token)
tt))) tt)))
@ -10805,7 +10805,7 @@ expression)."
(when (and (>= js2-language-version 200) (when (and (>= js2-language-version 200)
(= js2-NAME tt) (= js2-NAME tt)
(member prop '("get" "set" "async")) (member prop '("get" "set" "async"))
(member (js2-peek-token) (member (js2-peek-token 'KEYWORD_IS_NAME)
(list js2-NAME js2-STRING js2-NUMBER js2-LB))) (list js2-NAME js2-STRING js2-NUMBER js2-LB)))
(setq previous-token (js2-current-token) (setq previous-token (js2-current-token)
tt (js2-get-prop-name-token)))) tt (js2-get-prop-name-token))))

View File

@ -1,177 +0,0 @@
This is magit.info, produced by makeinfo version 5.2 from magit.texi.
Magit is an interface to the version control system Git, implemented as
an Emacs package. Magit aspires to be a complete Git porcelain. While
we cannot (yet) claim that Magit wraps and improves upon each and every
Git command, it is complete enough to allow even experienced Git users
to perform almost all of their daily version control tasks directly from
within Emacs. While many fine Git clients exist, only Magit and Git
itself deserve to be called porcelains.
Copyright (C) 2015-2016 Jonas Bernoulli <jonas@bernoul.li>
You can redistribute this document and/or modify it under the terms
of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version.
This document is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
INFO-DIR-SECTION Emacs
START-INFO-DIR-ENTRY
* Magit: (magit). Using Git from Emacs with Magit.
END-INFO-DIR-ENTRY

Indirect:
magit.info-1: 1222
magit.info-2: 320085

Tag Table:
(Indirect)
Node: Top1222
Node: Introduction6446
Node: Installation11169
Node: Updating from an older release11544
Node: Installing from an Elpa archive13139
Node: Installing from the Git repository14478
Node: Post-installation tasks17325
Node: Getting started18714
Node: Interface concepts24443
Node: Modes and Buffers24717
Node: Switching Buffers26462
Node: Naming Buffers31003
Node: Quitting Windows33838
Node: Automatic Refreshing of Magit Buffers35470
Node: Automatic Saving of File-Visiting Buffers38238
Node: Automatic Reverting of File-Visiting Buffers39423
Node: Risk of Reverting Automatically44419
Node: Sections46802
Node: Section movement47743
Node: Section visibility51670
Node: Section hooks55261
Node: Section types and values57542
Node: Section options58812
Node: Popup buffers and prefix commands59284
Node: Completion and confirmation60598
Node: Running Git63504
Node: Viewing Git output63740
Node: Running Git manually64740
Node: Git executable66866
Node: Global Git arguments68873
Node: Inspecting69680
Node: Status buffer70827
Node: Status sections73692
Node: Status header sections79571
Node: Status options82128
Node: Repository list82852
Node: Logging85010
Node: Refreshing logs87748
Node: Log Buffer89133
Node: Select from log92429
Node: Reflog93369
Node: Diffing93847
Node: Refreshing diffs96867
Node: Diff buffer99848
Node: Diff options101750
Node: Revision buffer105050
Node: Ediffing106005
Node: References buffer109595
Node: References sections114305
Node: Bisecting115180
Node: Visiting blobs116919
Node: Blaming117428
Node: Manipulating120858
Node: Repository setup121174
Node: Staging and unstaging122214
Node: Staging from file-visiting buffers126303
Node: Applying127471
Node: Committing129364
Node: Initiating a commit129947
Node: Editing commit messages133259
Node: Branching143655
Node: The two remotes143855
Node: The branch popup146399
Node: The branch config popup155100
Node: Merging161006
Node: Resolving conflicts163174
Ref: orgradiotarget1164259
Node: Rebasing168131
Node: Editing rebase sequences171772
Node: Information about in-progress rebase174802
Ref: Information about in-progress rebase-Footnote-1181638
Node: Cherry picking182224
Node: Reverting183830
Node: Resetting185193
Node: Stashing186705
Node: Transferring189879
Node: Remotes190117
Node: Fetching191403
Node: Pulling192769
Node: Pushing193615
Node: Creating and sending patches198359
Node: Applying patches199054
Node: Miscellaneous200052
Node: Tagging200355
Node: Notes201140
Node: Submodules203665
Node: Listing submodules203880
Node: Submodule popup205699
Node: Subtree206982
Node: Common commands208230
Node: Wip modes209975
Node: Minor mode for buffers visiting files216711
Node: Minor mode for buffers visiting blobs220185
Node: Customizing220990
Node: Per-repository configuration222662
Node: Essential settings224296
Node: Safety224620
Node: Performance226453
Node: Plumbing234415
Node: Calling Git235239
Node: Getting a value from Git236762
Node: Calling Git for effect239866
Node: Section plumbing246370
Node: Creating sections246598
Node: Section selection250497
Node: Matching sections252177
Node: Refreshing buffers257386
Node: Conventions260521
Node: Confirmation and completion260698
Node: Theming Faces261596
Node: FAQ269747
Node: Magit is slow271360
Node: I changed several thousand files at once and now Magit is unusable271561
Node: I am having problems committing272277
Node: Diffs are collapsed after un-/staging272723
Node: I don't understand how branching and pushing work274201
Node: I don't like the key binding in v24274576
Node: I cannot install the pre-requisites for Magit v2274915
Node: I am using an Emacs release older than v244275380
Node: I am using a Git release older than v194276993
Node: I am using MS Windows and cannot push with Magit277980
Node: I am using OS X and SOMETHING works in shell but not in Magit278584
Node: How to install the gitman info manual?279375
Node: How can I show Git's output?281916
Node: Diffs contain control sequences282703
Node: Expanding a file to show the diff causes it to disappear283708
Node: Point is wrong in the COMMIT_EDITMSG buffer284243
Node: The mode-line information isn't always up-to-date285273
Node: Can Magit be used as ediff-version-control-package?286341
Node: How to show diffs for gpg-encrypted files?288385
Node: Emacs 245 hangs when loading Magit288982
Node: Symbol's value as function is void --some289557
Node: Where is the branch manager289891
Node: Keystroke Index290182
Node: Command Index320085
Node: Function Index350094
Node: Variable Index363988

End Tag Table

Local Variables:
coding: utf-8
End:

View File

@ -419,7 +419,7 @@ running 'man git-rebase' at the command line) for details."
(setq save-place nil))) (setq save-place nil)))
(defun git-rebase-cancel-confirm (force) (defun git-rebase-cancel-confirm (force)
(or (not (buffer-modified-p)) force (y-or-n-p "Abort this rebase? "))) (or (not (buffer-modified-p)) force (magit-y-or-n-p "Abort this rebase? ")))
(defun git-rebase-autostash-save () (defun git-rebase-autostash-save ()
(--when-let (magit-file-line (magit-git-dir "rebase-merge/autostash")) (--when-let (magit-file-line (magit-git-dir "rebase-merge/autostash"))

View File

@ -3,8 +3,8 @@
;;; Code: ;;; Code:
(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path)))) (add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
;;;### (autoloads nil "git-rebase" "git-rebase.el" (22518 23931 262097 ;;;### (autoloads nil "git-rebase" "git-rebase.el" (22523 21243 636405
;;;;;; 370000)) ;;;;;; 758000))
;;; Generated autoloads from git-rebase.el ;;; Generated autoloads from git-rebase.el
(autoload 'git-rebase-mode "git-rebase" "\ (autoload 'git-rebase-mode "git-rebase" "\
@ -23,7 +23,7 @@ running 'man git-rebase' at the command line) for details.
;;;*** ;;;***
;;;### (autoloads nil "magit" "magit.el" (22518 23931 346097 642000)) ;;;### (autoloads nil "magit" "magit.el" (22523 21243 716406 348000))
;;; Generated autoloads from magit.el ;;; Generated autoloads from magit.el
(autoload 'magit-status "magit" "\ (autoload 'magit-status "magit" "\
@ -76,7 +76,7 @@ existing one.
(autoload 'magit-dired-jump "magit" "\ (autoload 'magit-dired-jump "magit" "\
Visit file at point using Dired. Visit file at point using Dired.
With a prefix argument, visit in other window. If there With a prefix argument, visit in another window. If there
is no file at point then instead visit `default-directory'. is no file at point then instead visit `default-directory'.
\(fn &optional OTHER-WINDOW)" t nil) \(fn &optional OTHER-WINDOW)" t nil)
@ -501,8 +501,8 @@ Git, and Emacs in the echo area.
;;;*** ;;;***
;;;### (autoloads nil "magit-apply" "magit-apply.el" (22518 23931 ;;;### (autoloads nil "magit-apply" "magit-apply.el" (22523 21243
;;;;;; 282097 435000)) ;;;;;; 656405 906000))
;;; Generated autoloads from magit-apply.el ;;; Generated autoloads from magit-apply.el
(autoload 'magit-stage-file "magit-apply" "\ (autoload 'magit-stage-file "magit-apply" "\
@ -538,8 +538,8 @@ Remove all changes from the staging area.
;;;*** ;;;***
;;;### (autoloads nil "magit-autorevert" "magit-autorevert.el" (22518 ;;;### (autoloads nil "magit-autorevert" "magit-autorevert.el" (22523
;;;;;; 23931 218097 227000)) ;;;;;; 21243 588405 405000))
;;; Generated autoloads from magit-autorevert.el ;;; Generated autoloads from magit-autorevert.el
(defvar magit-revert-buffers t) (defvar magit-revert-buffers t)
@ -568,8 +568,8 @@ See `auto-revert-mode' for more information on Auto-Revert mode.
;;;*** ;;;***
;;;### (autoloads nil "magit-bisect" "magit-bisect.el" (22518 23931 ;;;### (autoloads nil "magit-bisect" "magit-bisect.el" (22523 21243
;;;;;; 274097 410000)) ;;;;;; 652405 876000))
;;; Generated autoloads from magit-bisect.el ;;; Generated autoloads from magit-bisect.el
(autoload 'magit-bisect-popup "magit-bisect" nil t) (autoload 'magit-bisect-popup "magit-bisect" nil t)
@ -620,8 +620,8 @@ bisect run'.
;;;*** ;;;***
;;;### (autoloads nil "magit-blame" "magit-blame.el" (22518 23931 ;;;### (autoloads nil "magit-blame" "magit-blame.el" (22523 21243
;;;;;; 334097 603000)) ;;;;;; 704406 260000))
;;; Generated autoloads from magit-blame.el ;;; Generated autoloads from magit-blame.el
(autoload 'magit-blame-popup "magit-blame" nil t) (autoload 'magit-blame-popup "magit-blame" nil t)
@ -645,8 +645,8 @@ only arguments available from `magit-blame-popup' should be used.
;;;*** ;;;***
;;;### (autoloads nil "magit-commit" "magit-commit.el" (22518 23931 ;;;### (autoloads nil "magit-commit" "magit-commit.el" (22523 21243
;;;;;; 226097 254000)) ;;;;;; 604405 523000))
;;; Generated autoloads from magit-commit.el ;;; Generated autoloads from magit-commit.el
(autoload 'magit-commit "magit-commit" "\ (autoload 'magit-commit "magit-commit" "\
@ -728,8 +728,8 @@ Create a squash commit targeting COMMIT and instantly rebase.
;;;*** ;;;***
;;;### (autoloads nil "magit-diff" "magit-diff.el" (22518 23931 326097 ;;;### (autoloads nil "magit-diff" "magit-diff.el" (22523 21243 696406
;;;;;; 578000)) ;;;;;; 200000))
;;; Generated autoloads from magit-diff.el ;;; Generated autoloads from magit-diff.el
(autoload 'magit-diff-popup "magit-diff" "\ (autoload 'magit-diff-popup "magit-diff" "\
@ -813,8 +813,8 @@ for a revision.
;;;*** ;;;***
;;;### (autoloads nil "magit-ediff" "magit-ediff.el" (22518 23931 ;;;### (autoloads nil "magit-ediff" "magit-ediff.el" (22523 21243
;;;;;; 310097 526000)) ;;;;;; 684406 112000))
;;; Generated autoloads from magit-ediff.el ;;; Generated autoloads from magit-ediff.el
(autoload 'magit-ediff-popup "magit-ediff" nil t) (autoload 'magit-ediff-popup "magit-ediff" nil t)
@ -902,8 +902,8 @@ stash that were staged.
;;;*** ;;;***
;;;### (autoloads nil "magit-extras" "magit-extras.el" (22518 23931 ;;;### (autoloads nil "magit-extras" "magit-extras.el" (22523 21243
;;;;;; 230097 268000)) ;;;;;; 608405 552000))
;;; Generated autoloads from magit-extras.el ;;; Generated autoloads from magit-extras.el
(autoload 'magit-run-git-gui "magit-extras" "\ (autoload 'magit-run-git-gui "magit-extras" "\
@ -973,8 +973,8 @@ on a position in a file-visiting buffer.
;;;*** ;;;***
;;;### (autoloads nil "magit-log" "magit-log.el" (22518 23931 322097 ;;;### (autoloads nil "magit-log" "magit-log.el" (22523 21243 692406
;;;;;; 564000)) ;;;;;; 171000))
;;; Generated autoloads from magit-log.el ;;; Generated autoloads from magit-log.el
(autoload 'magit-log-buffer-file-popup "magit-log" "\ (autoload 'magit-log-buffer-file-popup "magit-log" "\
@ -1056,8 +1056,8 @@ Show commits in a branch that are not merged in the upstream branch.
;;;*** ;;;***
;;;### (autoloads nil "magit-remote" "magit-remote.el" (22518 23931 ;;;### (autoloads nil "magit-remote" "magit-remote.el" (22523 21243
;;;;;; 366097 706000)) ;;;;;; 740406 526000))
;;; Generated autoloads from magit-remote.el ;;; Generated autoloads from magit-remote.el
(autoload 'magit-clone "magit-remote" "\ (autoload 'magit-clone "magit-remote" "\
@ -1289,8 +1289,8 @@ is asked to pull. START has to be reachable from that commit.
;;;*** ;;;***
;;;### (autoloads nil "magit-sequence" "magit-sequence.el" (22518 ;;;### (autoloads nil "magit-sequence" "magit-sequence.el" (22523
;;;;;; 23931 354097 668000)) ;;;;;; 21243 724406 407000))
;;; Generated autoloads from magit-sequence.el ;;; Generated autoloads from magit-sequence.el
(autoload 'magit-sequencer-continue "magit-sequence" "\ (autoload 'magit-sequencer-continue "magit-sequence" "\
@ -1440,8 +1440,8 @@ Abort the current rebase operation, restoring the original branch.
;;;*** ;;;***
;;;### (autoloads nil "magit-stash" "magit-stash.el" (22518 23931 ;;;### (autoloads nil "magit-stash" "magit-stash.el" (22523 21243
;;;;;; 298097 487000)) ;;;;;; 672406 24000))
;;; Generated autoloads from magit-stash.el ;;; Generated autoloads from magit-stash.el
(autoload 'magit-stash-popup "magit-stash" nil t) (autoload 'magit-stash-popup "magit-stash" nil t)
@ -1540,8 +1540,8 @@ Show all diffs of a stash in a buffer.
;;;*** ;;;***
;;;### (autoloads nil "magit-submodule" "magit-submodule.el" (22518 ;;;### (autoloads nil "magit-submodule" "magit-submodule.el" (22523
;;;;;; 23931 386097 771000)) ;;;;;; 21243 760406 672000))
;;; Generated autoloads from magit-submodule.el ;;; Generated autoloads from magit-submodule.el
(autoload 'magit-submodule-popup "magit-submodule" nil t) (autoload 'magit-submodule-popup "magit-submodule" nil t)
@ -1631,8 +1631,8 @@ Display a list of the current repository's submodules.
;;;*** ;;;***
;;;### (autoloads nil "magit-subtree" "magit-subtree.el" (22518 23931 ;;;### (autoloads nil "magit-subtree" "magit-subtree.el" (22523 21243
;;;;;; 266097 383000)) ;;;;;; 640405 788000))
;;; Generated autoloads from magit-subtree.el ;;; Generated autoloads from magit-subtree.el
(autoload 'magit-subtree-popup "magit-subtree" nil t) (autoload 'magit-subtree-popup "magit-subtree" nil t)
@ -1668,8 +1668,8 @@ Extract the history of the subtree PREFIX.
;;;*** ;;;***
;;;### (autoloads nil "magit-wip" "magit-wip.el" (22518 23931 242097 ;;;### (autoloads nil "magit-wip" "magit-wip.el" (22523 21243 620405
;;;;;; 306000)) ;;;;;; 640000))
;;; Generated autoloads from magit-wip.el ;;; Generated autoloads from magit-wip.el
(defvar magit-wip-after-save-mode nil "\ (defvar magit-wip-after-save-mode nil "\
@ -1739,7 +1739,7 @@ command which is about to be called are committed.
;;;### (autoloads nil nil ("magit-core.el" "magit-git.el" "magit-mode.el" ;;;### (autoloads nil nil ("magit-core.el" "magit-git.el" "magit-mode.el"
;;;;;; "magit-pkg.el" "magit-process.el" "magit-section.el" "magit-utils.el") ;;;;;; "magit-pkg.el" "magit-process.el" "magit-section.el" "magit-utils.el")
;;;;;; (22518 23931 374097 733000)) ;;;;;; (22523 21243 744406 555000))
;;;*** ;;;***

View File

@ -249,12 +249,11 @@ depending on the value of option `magit-commit-squash-confirm'."
(unless edit (unless edit
(push "--no-edit" args)) (push "--no-edit" args))
(if rebase (if rebase
(with-editor "GIT_EDITOR" (magit-with-editor
(let ((magit-process-popup-time -1)) (magit-call-git
(magit-call-git "commit" (-remove-first
"commit" (-remove-first (apply-partially #'string-match-p "\\`--gpg-sign=")
(apply-partially #'string-match-p "\\`--gpg-sign=") args)))
args))))
(magit-run-git-with-editor "commit" args))) (magit-run-git-with-editor "commit" args)))
(magit-log-select (magit-log-select
`(lambda (commit) `(lambda (commit)

View File

@ -34,7 +34,7 @@
;; For `magit-diff-popup' ;; For `magit-diff-popup'
(declare-function magit-stash-show 'magit-stash) (declare-function magit-stash-show 'magit-stash)
;; For `magit-diff-visit-file' ;; For `magit-diff-visit-file'
(declare-function magit-dired-jump 'magit) (declare-function dired-jump 'dired-x)
(declare-function magit-find-file-noselect 'magit) (declare-function magit-find-file-noselect 'magit)
(declare-function magit-status-internal 'magit) (declare-function magit-status-internal 'magit)
;; For `magit-diff-while-committing' ;; For `magit-diff-while-committing'
@ -112,11 +112,8 @@ instead customize `magit-diff-highlight-hunk-region-functions'."
"Magit 2.9.0") "Magit 2.9.0")
(defcustom magit-diff-highlight-hunk-region-functions (defcustom magit-diff-highlight-hunk-region-functions
`(magit-diff-highlight-hunk-region-dim-outside '(magit-diff-highlight-hunk-region-dim-outside
,@(and magit-diff-show-lines-boundary magit-diff-highlight-hunk-region-using-overlays)
(list (if t ;(version< emacs-version "25.1")
'magit-diff-highlight-hunk-region-using-overlays
'magit-diff-highlight-hunk-region-using-underline))))
"The functions used to highlight the hunk-internal region. "The functions used to highlight the hunk-internal region.
`magit-diff-highlight-hunk-region-dim-outside' overlays the outside `magit-diff-highlight-hunk-region-dim-outside' overlays the outside
@ -124,15 +121,12 @@ of the hunk internal selection with a face that causes the added and
removed lines to have the same background color as context lines. removed lines to have the same background color as context lines.
This function should not be removed from the value of this option. This function should not be removed from the value of this option.
TEMPORARY NOTICE: there is a severe bug in
`magit-diff-highlight-hunk-region-using-underline'
and it has been temporarily removed.
`magit-diff-highlight-hunk-region-using-overlays' and `magit-diff-highlight-hunk-region-using-overlays' and
`magit-diff-highlight-hunk-region-using-underline' emphasize the `magit-diff-highlight-hunk-region-using-underline' emphasize the
region by placing delimiting horizonal lines before and after it. region by placing delimiting horizonal lines before and after it.
Which implementation is preferable depends on the Emacs version, Both of these functions have glitches which cannot be fixed due
and the more suitable one is part of the default value. to limitations of Emacs' display engine. For more information
see https://github.com/magit/magit/issues/2758 ff.
Instead of, or in addition to, using delimiting horizontal lines, Instead of, or in addition to, using delimiting horizontal lines,
to emphasize the boundaries, you may which to emphasize the text to emphasize the boundaries, you may which to emphasize the text
@ -146,6 +140,7 @@ calling the face function instead."
:group 'magit-diff :group 'magit-diff
:type 'hook :type 'hook
:options '(magit-diff-highlight-hunk-region-dim-outside :options '(magit-diff-highlight-hunk-region-dim-outside
magit-diff-highlight-hunk-region-using-underline
magit-diff-highlight-hunk-region-using-overlays magit-diff-highlight-hunk-region-using-overlays
magit-diff-highlight-hunk-region-using-face)) magit-diff-highlight-hunk-region-using-face))
@ -316,7 +311,7 @@ and https://debbugs.gnu.org/cgi/bugreport.cgi?bug=7847."
:group 'magit-faces) :group 'magit-faces)
(defface magit-diff-file-heading-highlight (defface magit-diff-file-heading-highlight
'((t :inherit (magit-diff-file-heading magit-section-highlight))) '((t :inherit (magit-section-highlight)))
"Face for current diff file headings." "Face for current diff file headings."
:group 'magit-faces) :group 'magit-faces)
@ -1030,15 +1025,23 @@ Customize variable `magit-diff-refine-hunk' to change the default mode."
(defun magit-diff-visit-file (file &optional other-window force-worktree) (defun magit-diff-visit-file (file &optional other-window force-worktree)
"From a diff, visit the corresponding file at the appropriate position. "From a diff, visit the corresponding file at the appropriate position.
When the file is already being displayed in another window of the
same frame, then just select that window and adjust point. With
a prefix argument also display in another window.
If the diff shows changes in the worktree, the index, or `HEAD', If the diff shows changes in the worktree, the index, or `HEAD',
then visit the actual file. Otherwise when the diff is about then visit the actual file. Otherwise, when the diff is about an
an older commit, then visit the respective blob using older commit or a range, then visit the appropriate blob.
`magit-find-file'. Also see `magit-diff-visit-file-worktree'
which, as the name suggests always visits the actual file." If point is on a removed line, then visit the blob for the first
parent of the commit which removed that line, i.e. the last
commit where that line still existed. Otherwise visit the blob
for the commit whose changes are being shown.
When the diff is about a range of commits, then, for the time
being, the point this function jumps to often is only an
approximation.
When the file or blob to be displayed is already being displayed
in another window of the same frame, then just select that window
and adjust point. Otherwise, or with a prefix argument, display
the buffer in another window."
(interactive (list (--if-let (magit-file-at-point) (interactive (list (--if-let (magit-file-at-point)
(expand-file-name it) (expand-file-name it)
(user-error "No file at point")) (user-error "No file at point"))
@ -1061,17 +1064,25 @@ which, as the name suggests always visits the actual file."
((derived-mode-p 'magit-diff-mode) ((derived-mode-p 'magit-diff-mode)
(--when-let (car magit-refresh-args) (--when-let (car magit-refresh-args)
(and (string-match "\\.\\.\\([^.].*\\)?[ \t]*\\'" it) (and (string-match "\\.\\.\\([^.].*\\)?[ \t]*\\'" it)
(match-string 1 it)))))) (match-string 1 it))))
((derived-mode-p 'magit-status-mode)
(magit-rev-name "HEAD"))))
(unmerged-p (magit-anything-unmerged-p file)) (unmerged-p (magit-anything-unmerged-p file))
hunk line col buffer) hunk line col buffer)
(when (and rev (magit-rev-head-p rev)) (pcase (magit-diff-scope)
(setq rev nil)) ((or `hunk `region)
(setq hunk (cond ((not rev))
(pcase (magit-diff-scope) ((save-excursion (goto-char (line-beginning-position))
((or `hunk `region) current) (looking-at "-"))
((or `file `files) (car (magit-section-children current))) (setq rev (magit-rev-name (concat rev "~"))))
(`list (car (magit-section-children ((magit-rev-head-p rev)
(car (magit-section-children current))))))) (setq rev nil)))
(setq hunk current))
((or `file `files)
(setq hunk (car (magit-section-children current))))
(`list
(setq hunk (car (magit-section-children
(car (magit-section-children current)))))))
(when (and hunk (when (and hunk
;; Currently the `hunk' type is also abused for file ;; Currently the `hunk' type is also abused for file
;; mode changes. Luckily such sections have no value. ;; mode changes. Luckily such sections have no value.
@ -1138,9 +1149,12 @@ or `HEAD'."
(prefix (- (length value) 2)) (prefix (- (length value) 2))
(cpos (marker-position (magit-section-content section))) (cpos (marker-position (magit-section-content section)))
(stop (line-number-at-pos)) (stop (line-number-at-pos))
(cstart (save-excursion (goto-char cpos) (line-number-at-pos))) (cstart (save-excursion (goto-char cpos)
(line (car (last value)))) (line-number-at-pos)))
(string-match "^\\+\\([0-9]+\\)" line) (prior (save-excursion (goto-char (line-beginning-position))
(looking-at "-")))
(line (nth (if prior 1 2) value)))
(string-match (format "^%s\\([0-9]+\\)" (if prior "-" "\\+")) line)
(setq line (string-to-number (match-string 1 line))) (setq line (string-to-number (match-string 1 line)))
(when (> cstart stop) (when (> cstart stop)
(save-excursion (save-excursion
@ -1151,7 +1165,8 @@ or `HEAD'."
(goto-char cpos) (goto-char cpos)
(while (< (line-number-at-pos) stop) (while (< (line-number-at-pos) stop)
(unless (string-match-p (unless (string-match-p
"-" (buffer-substring (point) (+ (point) prefix))) (if prior "\\+" "-")
(buffer-substring (point) (+ (point) prefix)))
(cl-incf line)) (cl-incf line))
(forward-line))) (forward-line)))
line)) line))
@ -1166,7 +1181,7 @@ or `HEAD'."
(defun magit-diff-visit-directory (directory &optional other-window) (defun magit-diff-visit-directory (directory &optional other-window)
(if (equal (magit-toplevel directory) (if (equal (magit-toplevel directory)
(magit-toplevel)) (magit-toplevel))
(magit-dired-jump other-window) (dired-jump other-window (concat directory "/."))
(let ((display-buffer-overriding-action (let ((display-buffer-overriding-action
(if other-window (if other-window
'(nil (inhibit-same-window t)) '(nil (inhibit-same-window t))
@ -2217,6 +2232,33 @@ other method."
(magit-diff--make-hunk-overlay end (1+ end) 'after-string str)) (magit-diff--make-hunk-overlay end (1+ end) 'after-string str))
(magit-diff-highlight-hunk-region-using-face section))) (magit-diff-highlight-hunk-region-using-face section)))
(defun magit-diff-highlight-hunk-region-using-underline (section)
"Emphasize the hunk-internal region using delimiting horizontal lines.
This is implemented by overlining and underlining the first and
last (visual) lines of the region. In Emacs 24, using this
method causes `move-end-of-line' to jump to the next line, so
we only use it in Emacs 25 where that glitch was fixed (see
https://github.com/magit/magit/pull/2293 for more details)."
(if (window-system)
(let* ((beg (magit-diff-hunk-region-beginning))
(end (magit-diff-hunk-region-end))
(beg-eol (save-excursion (goto-char beg)
(end-of-visual-line)
(point)))
(end-bol (save-excursion (goto-char end)
(beginning-of-visual-line)
(point)))
(color (face-background 'magit-diff-lines-boundary nil t)))
(cl-flet ((ln (b e &rest face)
(magit-diff--make-hunk-overlay
b e 'face face 'after-string
(magit-diff--hunk-after-string face))))
(if (= beg end-bol)
(ln beg beg-eol :overline color :underline color)
(ln beg beg-eol :overline color)
(ln end-bol end :underline color))))
(magit-diff-highlight-hunk-region-using-face section)))
(defun magit-diff--make-hunk-overlay (start end &rest args) (defun magit-diff--make-hunk-overlay (start end &rest args)
(let ((ov (make-overlay start end nil t))) (let ((ov (make-overlay start end nil t)))
(overlay-put ov 'evaporate t) (overlay-put ov 'evaporate t)
@ -2227,8 +2269,11 @@ other method."
(defun magit-diff--hunk-after-string (face) (defun magit-diff--hunk-after-string (face)
(propertize "\s" (propertize "\s"
'face face 'face face
'display (list 'space :align-to `(+ (,(window-body-width nil t)) 'display (list 'space :align-to
,(window-hscroll))) `(+ (0 . right)
,(min (window-hscroll)
(- (line-end-position)
(line-beginning-position)))))
;; This prevents the cursor from being rendered at the ;; This prevents the cursor from being rendered at the
;; edge of the window. ;; edge of the window.
'cursor t)) 'cursor t))

View File

@ -96,7 +96,9 @@
:type 'string) :type 'string)
(defcustom magit-git-global-arguments (defcustom magit-git-global-arguments
'("--no-pager" "--literal-pathspecs" "-c" "core.preloadindex=true") `("--no-pager" "--literal-pathspecs" "-c" "core.preloadindex=true"
,@(and (eq system-type 'windows-nt)
(list "-c" "i18n.logOutputEncoding=UTF-8")))
"Global git arguments. "Global git arguments.
The arguments set here are used every time the git executable is The arguments set here are used every time the git executable is
@ -110,13 +112,11 @@ anything that is part of the default value, unless you really
know what you are doing. And think very hard before adding know what you are doing. And think very hard before adding
something; it will be used every time Magit runs Git for any something; it will be used every time Magit runs Git for any
purpose." purpose."
:package-version '(magit . "2.1.0") :package-version '(magit . "2.9.0")
:group 'magit :group 'magit
:group 'magit-process
:type '(repeat string)) :type '(repeat string))
(define-obsolete-variable-alias 'magit-git-standard-options
'magit-git-global-arguments "2.1.0")
(defcustom magit-git-debug nil (defcustom magit-git-debug nil
"Whether to enable additional reporting of git errors. "Whether to enable additional reporting of git errors.
@ -203,6 +203,25 @@ change the upstream and many which create new branches."
value))) value)))
,@body))) ,@body)))
(defmacro magit-with-editor (&rest body)
"Like `with-editor' but let-bind some more variables."
(declare (indent 0) (debug (body)))
`(let ((magit-process-popup-time -1)
;; The user may have customized `shell-file-name' to
;; something which results in `w32-shell-dos-semantics' nil
;; (which changes the quoting style used by
;; `shell-quote-argument'), but Git for Windows expects shell
;; quoting in the dos style.
(shell-file-name (if (and (eq system-type 'windows-nt)
;; If we have Cygwin mount points
;; the git flavor is cygwin, so dos
;; shell quoting is probably wrong.
(not magit-cygwin-mount-points))
"cmdproxy"
shell-file-name)))
(with-editor "GIT_EDITOR"
,@body)))
(defun magit-process-git-arguments (args) (defun magit-process-git-arguments (args)
"Prepare ARGS for a function that invokes Git. "Prepare ARGS for a function that invokes Git.
@ -1041,9 +1060,9 @@ where COMMITS is the number of commits in TAG but not in REV."
(defun magit-list-worktrees () (defun magit-list-worktrees ()
(let (worktrees worktree) (let (worktrees worktree)
(dolist (line (let ((magit-git-standard-options (dolist (line (let ((magit-git-global-arguments
;; KLUDGE At least in v2.8.3 this triggers a segfault. ;; KLUDGE At least in v2.8.3 this triggers a segfault.
(remove "--no-pager" magit-git-standard-options))) (remove "--no-pager" magit-git-global-arguments)))
(magit-git-lines "worktree" "list" "--porcelain"))) (magit-git-lines "worktree" "list" "--porcelain")))
(cond ((string-prefix-p "worktree" line) (cond ((string-prefix-p "worktree" line)
(push (setq worktree (list (substring line 9) nil nil nil)) (push (setq worktree (list (substring line 9) nil nil nil))
@ -1394,18 +1413,20 @@ Return a list of two integers: (A>B B>A)."
(and (not (equal previous branch)) previous))))) (and (not (equal previous branch)) previous)))))
(defun magit-read-starting-point (prompt) (defun magit-read-starting-point (prompt)
(or (magit-completing-read (or (magit-completing-read (concat prompt " starting at")
(concat prompt " starting at") (cons "HEAD" (magit-list-refnames))
(cons "HEAD" (magit-list-refnames)) nil nil nil 'magit-revision-history
nil nil nil 'magit-revision-history (magit--default-starting-point))
(or (let ((r (magit-remote-branch-at-point))
(l (magit-local-branch-at-point)))
(if magit-prefer-remote-upstream (or r l) (or l r)))
(magit-commit-at-point)
(magit-stash-at-point)
(magit-get-current-branch)))
(user-error "Nothing selected"))) (user-error "Nothing selected")))
(defun magit--default-starting-point ()
(or (let ((r (magit-remote-branch-at-point))
(l (magit-local-branch-at-point)))
(if magit-prefer-remote-upstream (or r l) (or l r)))
(magit-commit-at-point)
(magit-stash-at-point)
(magit-get-current-branch)))
(defun magit-read-tag (prompt &optional require-match) (defun magit-read-tag (prompt &optional require-match)
(magit-completing-read prompt (magit-list-tags) nil (magit-completing-read prompt (magit-list-tags) nil
require-match nil 'magit-revision-history require-match nil 'magit-revision-history
@ -1437,20 +1458,44 @@ Return a list of two integers: (A>B B>A)."
(magit-remote-at-point) (magit-remote-at-point)
(magit-get-remote)))) (magit-get-remote))))
(defun magit-read-module-path (prompt)
(magit-completing-read prompt (magit-get-submodules)))
;;; Variables ;;; Variables
(defun magit-config-get-from-cached-list (key)
(gethash
;; `git config --list' downcases first and last components of the key.
(--> key
(replace-regexp-in-string "\\`[^.]+" #'downcase it t t)
(replace-regexp-in-string "[^.]+\\'" #'downcase it t t))
(magit--with-refresh-cache (list 'config (magit-toplevel))
(let ((configs (make-hash-table :test 'equal)))
(dolist (conf (magit-git-items "config" "--list" "-z"))
(let* ((nl-pos (cl-position ?\n conf))
(key (substring conf 0 nl-pos))
(val (if nl-pos (substring conf (1+ nl-pos)) "")))
(puthash key (nconc (gethash key configs) (list val)) configs)))
configs))))
(defun magit-get (&rest keys) (defun magit-get (&rest keys)
"Return the value of Git config entry specified by KEYS." "Return the value of Git config entry specified by KEYS."
(magit-git-str "config" (mapconcat 'identity keys "."))) (car (last (apply 'magit-get-all keys))))
(defun magit-get-all (&rest keys) (defun magit-get-all (&rest keys)
"Return all values of the Git config entry specified by KEYS." "Return all values of the Git config entry specified by KEYS."
(let ((magit-git-debug nil)) (let ((magit-git-debug nil)
(magit-git-items "config" "-z" "--get-all" (mapconcat 'identity keys ".")))) (key (mapconcat 'identity keys ".")))
(if magit--refresh-cache
(magit-config-get-from-cached-list key)
(magit-git-items "config" "-z" "--get-all" key))))
(defun magit-get-boolean (&rest keys) (defun magit-get-boolean (&rest keys)
"Return the boolean value of Git config entry specified by KEYS." "Return the boolean value of Git config entry specified by KEYS."
(magit-git-true "config" "--bool" (mapconcat 'identity keys "."))) (let ((key (mapconcat 'identity keys ".")))
(if magit--refresh-cache
(equal "true" (car (magit-config-get-from-cached-list key)))
(magit-git-true "config" "--bool" key))))
(defun magit-set (val &rest keys) (defun magit-set (val &rest keys)
"Set Git config settings specified by KEYS to VAL." "Set Git config settings specified by KEYS to VAL."
@ -1465,6 +1510,8 @@ Return a list of two integers: (A>B B>A)."
;;; magit-git.el ends soon ;;; magit-git.el ends soon
(define-obsolete-variable-alias 'magit-git-standard-options
'magit-git-global-arguments "Magit 2.1.0")
(define-obsolete-function-alias 'magit-get-tracked-ref (define-obsolete-function-alias 'magit-get-tracked-ref
'magit-get-upstream-ref "Magit 2.4.0") 'magit-get-upstream-ref "Magit 2.4.0")
(define-obsolete-function-alias 'magit-get-tracked-branch (define-obsolete-function-alias 'magit-get-tracked-branch

View File

@ -282,9 +282,6 @@ the upstream isn't ahead of the current branch) show."
:group 'magit-status :group 'magit-status
:type '(repeat (string :tag "Argument"))) :type '(repeat (string :tag "Argument")))
(define-obsolete-variable-alias 'magit-log-section-args
'magit-log-section-arguments "2.2.0")
;;; Commands ;;; Commands
(defvar magit-log-popup (defvar magit-log-popup
@ -1511,6 +1508,8 @@ and the respective options are `magit-log-show-margin' and
;;; magit-log.el ends soon ;;; magit-log.el ends soon
(define-obsolete-variable-alias 'magit-log-section-args
'magit-log-section-arguments "Magit 2.2.0")
(define-obsolete-function-alias 'magit-insert-unpulled-or-recent-commits (define-obsolete-function-alias 'magit-insert-unpulled-or-recent-commits
'magit-insert-unpulled-from-upstream-or-recent "Magit 2.4.0") 'magit-insert-unpulled-from-upstream-or-recent "Magit 2.4.0")

View File

@ -465,8 +465,12 @@ Magit is documented in info node `(magit)'."
(defvar-local magit-region-overlays nil) (defvar-local magit-region-overlays nil)
(defun magit-highlight-region (start end window rol) (defun magit-delete-region-overlays ()
(mapc #'delete-overlay magit-region-overlays) (mapc #'delete-overlay magit-region-overlays)
(setq magit-region-overlays nil))
(defun magit-highlight-region (start end window rol)
(magit-delete-region-overlays)
(if (and (run-hook-with-args-until-success 'magit-region-highlight-hook (if (and (run-hook-with-args-until-success 'magit-region-highlight-hook
(magit-current-section)) (magit-current-section))
(not magit-keep-region-overlay)) (not magit-keep-region-overlay))
@ -476,7 +480,7 @@ Magit is documented in info node `(magit)'."
(defun magit-unhighlight-region (rol) (defun magit-unhighlight-region (rol)
(setq magit-section-highlighted-section nil) (setq magit-section-highlighted-section nil)
(mapc #'delete-overlay magit-region-overlays) (magit-delete-region-overlays)
(funcall (default-value 'redisplay-unhighlight-region-function) rol)) (funcall (default-value 'redisplay-unhighlight-region-function) rol))
(defvar-local magit-refresh-args nil (defvar-local magit-refresh-args nil

View File

@ -1,4 +1,4 @@
(define-package "magit" "20161006.346" "A Git porcelain inside Emacs" (define-package "magit" "20161009.1658" "A Git porcelain inside Emacs"
'((emacs "24.4") '((emacs "24.4")
(async "20160711.223") (async "20160711.223")
(dash "20160820.501") (dash "20160820.501")

View File

@ -45,14 +45,17 @@
;;; Options ;;; Options
(defcustom magit-log-output-coding-system 'utf-8 (defcustom magit-git-output-coding-system
"Default coding system for receiving log output from Git. (and (eq system-type 'windows-nt) 'utf-8)
"Coding system for receiving output from Git.
Should be consistent with the Git config value `i18n.logOutputEncoding'." If non-nil, the Git config value `i18n.logOutputEncoding' should
:package-version '(magit . "2.8.0") be set via `magit-git-global-arguments' to value consistent with
this."
:package-version '(magit . "2.9.0")
:group 'magit-process :group 'magit-process
:group 'magit-log :type '(choice (coding-system :tag "Coding system to decode Git output")
:type '(coding-system :tag "Coding system to decode Git log output")) (const :tag "Use system default" nil)))
(defcustom magit-process-connection-type (not (eq system-type 'cygwin)) (defcustom magit-process-connection-type (not (eq system-type 'cygwin))
"Connection type used for the Git process. "Connection type used for the Git process.
@ -303,8 +306,7 @@ before use.
Process output goes into a new section in the buffer returned by Process output goes into a new section in the buffer returned by
`magit-process-buffer'." `magit-process-buffer'."
(run-hooks 'magit-pre-call-git-hook) (run-hooks 'magit-pre-call-git-hook)
(let ((coding-system-for-read (let ((default-process-coding-system (magit--process-coding-system)))
(or coding-system-for-read magit-log-output-coding-system)))
(apply #'magit-call-process magit-git-executable (apply #'magit-call-process magit-git-executable
(magit-process-git-arguments args)))) (magit-process-git-arguments args))))
@ -410,9 +412,7 @@ current when this function was called (if it is a Magit buffer
and still alive), as well as the respective Magit status buffer. and still alive), as well as the respective Magit status buffer.
See `magit-start-process' and `with-editor' for more information." See `magit-start-process' and `with-editor' for more information."
(with-editor "GIT_EDITOR" (magit-with-editor (magit-run-git-async args)))
(let ((magit-process-popup-time -1))
(magit-run-git-async args))))
(defun magit-run-git-sequencer (&rest args) (defun magit-run-git-sequencer (&rest args)
"Export GIT_EDITOR and start Git. "Export GIT_EDITOR and start Git.
@ -428,9 +428,7 @@ If the sequence stops at a commit, make the section representing
that commit the current section by moving `point' there. that commit the current section by moving `point' there.
See `magit-start-process' and `with-editor' for more information." See `magit-start-process' and `with-editor' for more information."
(with-editor "GIT_EDITOR" (apply #'magit-run-git-with-editor args)
(let ((magit-process-popup-time -1))
(magit-run-git-async args)))
(set-process-sentinel magit-this-process #'magit-sequencer-process-sentinel) (set-process-sentinel magit-this-process #'magit-sequencer-process-sentinel)
magit-this-process) magit-this-process)
@ -454,8 +452,7 @@ and still alive), as well as the respective Magit status buffer.
See `magit-start-process' for more information." See `magit-start-process' for more information."
(run-hooks 'magit-pre-start-git-hook) (run-hooks 'magit-pre-start-git-hook)
(let ((coding-system-for-read (let ((default-process-coding-system (magit--process-coding-system)))
(or coding-system-for-read magit-log-output-coding-system)))
(apply #'magit-start-process magit-git-executable input (apply #'magit-start-process magit-git-executable input
(magit-process-git-arguments args)))) (magit-process-git-arguments args))))
@ -593,7 +590,8 @@ Magit status buffer."
"Special sentinel used by `magit-run-git-sequencer'." "Special sentinel used by `magit-run-git-sequencer'."
(when (memq (process-status process) '(exit signal)) (when (memq (process-status process) '(exit signal))
(magit-process-sentinel process event) (magit-process-sentinel process event)
(--when-let (magit-mode-get-buffer 'magit-status-mode) (--when-let (with-current-buffer (process-get process 'command-buf)
(magit-mode-get-buffer 'magit-status-mode))
(with-current-buffer it (with-current-buffer it
(--when-let (--when-let
(magit-get-section (magit-get-section
@ -700,12 +698,13 @@ Return the matched string suffixed with \": \", if needed."
(t (concat prompt ": ")))))) (t (concat prompt ": "))))))
(defun magit--process-coding-system () (defun magit--process-coding-system ()
(if magit-process-ensure-unix-line-ending (let ((fro (or magit-git-output-coding-system
(cons (coding-system-change-eol-conversion (car default-process-coding-system)))
(car default-process-coding-system) 'unix) (to (cdr default-process-coding-system)))
(coding-system-change-eol-conversion (if magit-process-ensure-unix-line-ending
(cdr default-process-coding-system) 'unix)) (cons (coding-system-change-eol-conversion fro 'unix)
default-process-coding-system)) (coding-system-change-eol-conversion to 'unix))
(cons fro to))))
(defvar magit-credential-hook nil (defvar magit-credential-hook nil
"Hook run before Git needs credentials.") "Hook run before Git needs credentials.")
@ -832,8 +831,10 @@ as argument."
"Git failed"))) "Git failed")))
(if magit-process-raise-error (if magit-process-raise-error
(signal 'magit-git-error (list (format "%s (in %s)" msg default-dir))) (signal 'magit-git-error (list (format "%s (in %s)" msg default-dir)))
(--when-let (magit-mode-get-buffer 'magit-status-mode) (--when-let (with-current-buffer command-buf
(setq magit-this-error msg)) (magit-mode-get-buffer 'magit-status-mode))
(with-current-buffer it
(setq magit-this-error msg)))
(message "%s ... [%s buffer %s for details]" msg (message "%s ... [%s buffer %s for details]" msg
(-if-let (key (and (buffer-live-p command-buf) (-if-let (key (and (buffer-live-p command-buf)
(with-current-buffer command-buf (with-current-buffer command-buf
@ -864,6 +865,10 @@ as argument."
process)))))) process))))))
;;; magit-process.el ends soon ;;; magit-process.el ends soon
(define-obsolete-variable-alias 'magit-git-output-coding-system
'magit-log-output-coding-system "Magit 2.9.0")
(provide 'magit-process) (provide 'magit-process)
;; Local Variables: ;; Local Variables:
;; indent-tabs-mode: nil ;; indent-tabs-mode: nil

View File

@ -174,7 +174,7 @@ For each section insert the path and the output of `git describe --tags'."
(dolist (module modules) (dolist (module modules)
(let ((default-directory (let ((default-directory
(expand-file-name (file-name-as-directory module)))) (expand-file-name (file-name-as-directory module))))
(magit-insert-section (file module t) (magit-insert-section (submodule module t)
(insert (propertize (format col-format module) (insert (propertize (format col-format module)
'face 'magit-diff-file-heading)) 'face 'magit-diff-file-heading))
(if (not (file-exists-p ".git")) (if (not (file-exists-p ".git"))
@ -196,6 +196,41 @@ For each section insert the path and the output of `git describe --tags'."
map) map)
"Keymap for `submodules' sections.") "Keymap for `submodules' sections.")
(defvar magit-submodule-section-map
(let ((map (make-sparse-keymap)))
(define-key map [C-return] 'magit-submodule-visit)
(define-key map "\C-j" 'magit-submodule-visit)
(define-key map [remap magit-visit-thing] 'magit-submodule-visit)
(define-key map [remap magit-delete-thing] 'magit-submodule-deinit)
(define-key map "K" 'magit-file-untrack)
(define-key map "R" 'magit-file-rename)
map)
"Keymap for `submodule' sections.")
(defun magit-submodule-visit (module &optional other-window)
"Visit MODULE by calling `magit-status' on it.
Offer to initialize MODULE if it's not checked out yet.
With a prefix argument, visit in another window."
(interactive (list (or (magit-section-when submodule)
(magit-read-module-path "Visit module"))
current-prefix-arg))
(magit-with-toplevel
(let ((path (expand-file-name module)))
(if (and (not (file-exists-p (expand-file-name ".git" module)))
(not (y-or-n-p (format "Initialize submodule '%s' first?"
module))))
(when (file-exists-p path)
(dired-jump other-window (concat path "/.")))
(magit-run-git-async "submodule" "update" "--init" "--" module)
(set-process-sentinel
magit-this-process
(lambda (process event)
(let ((magit-process-raise-error t))
(magit-process-sentinel process event))
(when (and (eq (process-status process) 'exit)
(= (process-exit-status process) 0))
(magit-diff-visit-directory path other-window))))))))
;;;###autoload ;;;###autoload
(defun magit-insert-modules-unpulled-from-upstream () (defun magit-insert-modules-unpulled-from-upstream ()
"Insert sections for modules that haven't been pulled from the upstream. "Insert sections for modules that haven't been pulled from the upstream.

View File

@ -62,6 +62,34 @@ want Magit to use Helm for completion, you can set this option to
(function-item helm--completing-read-default) (function-item helm--completing-read-default)
(function :tag "Other"))) (function :tag "Other")))
(defcustom magit-no-confirm-default nil
"A list of commands which should just use the default choice.
Many commands let the user choose the target they act on offering
a sensible default as default choice. If you think that that
default is so sensible that it should always be used without even
offering other choices, then add that command here.
Commands have to explicitly support this option. Currently only
these commands do:
`magit-branch'
`magit-branch-and-checkout'
`magit-branch-orphan'
`magit-worktree-branch'
For these four commands `magit-branch-read-upstream-first'
must be non-nil, or adding them here has no effect.
`magit-branch-rename'
`magit-tag'"
:package-version '(magit . "2.9.0")
:group 'magit-commands
:type '(list :convert-widget custom-hook-convert-widget)
:options '(magit-branch
magit-branch-and-checkout
magit-branch-orphan
magit-branch-rename
magit-worktree-branch
magit-tag))
(defcustom magit-no-confirm nil (defcustom magit-no-confirm nil
"A list of symbols for actions Magit should not confirm, or t. "A list of symbols for actions Magit should not confirm, or t.
@ -153,6 +181,7 @@ Global settings:
as adding all of these symbols individually." as adding all of these symbols individually."
:package-version '(magit . "2.1.0") :package-version '(magit . "2.1.0")
:group 'magit :group 'magit
:group 'magit-commands
:type '(choice (const :tag "No confirmation needed" t) :type '(choice (const :tag "No confirmation needed" t)
(set (const reverse) (const discard) (set (const reverse) (const discard)
(const rename) (const resurrect) (const rename) (const resurrect)
@ -163,6 +192,15 @@ Global settings:
(const stage-all-changes) (const unstage-all-changes) (const stage-all-changes) (const unstage-all-changes)
(const safe-with-wip)))) (const safe-with-wip))))
(defcustom magit-slow-confirm nil
"Whether to ask user \"y or n\" or \"yes or no\" questions.
When this is nil (the default), then `y-or-n-p' is used when the
user has to confirm a potentially destructive action. When this
is non-nil, then `yes-or-no-p' is used instead."
:package-version '(magit . "2.9.0")
:group 'magit-commands
:type 'boolean)
(defcustom magit-no-message nil (defcustom magit-no-message nil
"A list of messages Magit should not display. "A list of messages Magit should not display.
@ -338,6 +376,13 @@ This is similar to `read-string', but
',(mapcar 'car clauses)) ',(mapcar 'car clauses))
,@(--map `(,(car it) ,@(cddr it)) clauses))) ,@(--map `(,(car it) ,@(cddr it)) clauses)))
(defun magit-y-or-n-p (prompt)
"Ask user a \"y or n\" or a \"yes or no\" question.
Also see option `magit-slow-confirm'."
(if magit-slow-confirm
(yes-or-no-p prompt)
(y-or-n-p prompt)))
(cl-defun magit-confirm (action &optional prompt prompt-n (items nil sitems)) (cl-defun magit-confirm (action &optional prompt prompt-n (items nil sitems))
(declare (indent defun)) (declare (indent defun))
(setq prompt-n (format (concat (or prompt-n prompt) "? ") (length items)) (setq prompt-n (format (concat (or prompt-n prompt) "? ") (length items))
@ -355,9 +400,9 @@ This is similar to `read-string', but
unstage-all-changes)))))) unstage-all-changes))))))
(or (not sitems) items)) (or (not sitems) items))
((not sitems) ((not sitems)
(y-or-n-p prompt)) (magit-y-or-n-p prompt))
((= (length items) 1) ((= (length items) 1)
(and (y-or-n-p prompt) items)) (and (magit-y-or-n-p prompt) items))
((> (length items) 1) ((> (length items) 1)
(let ((buffer (get-buffer-create " *Magit Confirm*"))) (let ((buffer (get-buffer-create " *Magit Confirm*")))
(with-current-buffer buffer (with-current-buffer buffer
@ -366,7 +411,7 @@ This is similar to `read-string', but
'((window-height . fit-window-to-buffer))) '((window-height . fit-window-to-buffer)))
(lambda (window _value) (lambda (window _value)
(with-selected-window window (with-selected-window window
(unwind-protect (and (y-or-n-p prompt-n) items) (unwind-protect (and (magit-y-or-n-p prompt-n) items)
(when (window-live-p window) (when (window-live-p window)
(quit-restore-window window 'kill))))) (quit-restore-window window 'kill)))))
(dolist (item items) (dolist (item items)

Some files were not shown because too many files have changed in this diff Show More