This only fixes the easy warnings. Harder stuff like documenting
undocumented functions or making sure all the arguments of each
function are documented is not done.
Now it has tab completion like the switch branch command and others
which use (magit-read-rev).
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
When byte-compiling magit.el, Emacs throws several warnings saying
`save-excursion' defeated by `set-buffer'. Eliminate these warnings by
replacing calls to save-excursion followed by set-buffer with
with-current-buffer.
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Removing the magit-git-standard-options from magit-insert-section
because:
- the only use of magit-insert-section is inside magit-git-section
that already add the magit-git-standard-options, we do not need to add
them twice
- as wrote, magit-insert-section could be used for calling any cmd,
that may not understand the option in magit-git-standard-options.
I find the VC status on the modeline useful (the one that shows
Git[:-]branchname) This indicates when the buffer's associated file was
changed on disk (`:' for edited, `-' for unedited.) This indicator is
not affected by a commit with magit, so it keeps signaling a file as
edited when in fact it is not. This patch reverts all buffers that are
visiting a file in the current working tree after a commit.
We need process-connection-type to be nil on cygwin
We need process-connection-type to be t for magit to ask for password
So we now use the new variable magit-process-connection-type for this,
defaulting to nil on cygwin, and to t on others platform.
Then we can use "l" to show short-log from long log an reflog.
At the same time we add the different keybinding to see the different
kind of logs from the others logs.
This patch removes the runtime dependences on the cl package.
Luckily, there weren't too many of these.
From the GNU emacs lisp manual (Appendix D.1 coding conventions)
* Please don't require the `cl' package of Common Lisp extensions
at run time. Use of this package is optional, and it is not part
of the standard Emacs namespace. If your package loads `cl' at
run time, that could cause name clashes for users who don't use
that package.
However, there is no problem with using the `cl' package at
compile time, with `(eval-when-compile (require 'cl))'. That's
sufficient for using the macros in the `cl' package, because the
compiler expands them before generating the byte-code.
There's also the small matter that many of the function implementations
in cl, striving for the full generality of Common Lisp (much of which
is completely useless in Emacs), turn out to be horrible.
E.g., for a fun time, dig down through
(find-if pred list :from-end t),
and look at what it ACTUALLY does when you finish macroexpanding
everything. It tests *every* element of the list against the
predicate, not just the rightmost ones stopping when it finds the
first match. Once it determines the rightmost match, it then retains
NOT the element itself, but its *ordinal* position N, which then gets
used in (elt list N), meaning ANOTHER listwalk, just to get the
element back in order to return it. Nor is the byte-compiler anywhere
near smart enough to optimize this away (I'm not sure *any* compiler
would be...)
I'll grant cl has some useful macros in it, but it comes bundled with a
lot of crap and you need to be really careful about what you use. For
many things, you're better off rolling your own functionality using
the standard routines available (e.g., while, mapcar, and reverse are
all written directly in C).
And you most definitely do NOT want to be foisting the crap on
everybody else, hence the need to keep it out of the runtime.
Meanwhile, here's The Patch:
Modified magit.el