Commit graph

779 commits

Author SHA1 Message Date
Roger Crew
26712041ec remove runtime dependence on cl.el
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
2010-04-28 12:21:49 +01:00
Roger Crew
cf60063e3b *magit-FOO-log* / introduce buffer name variables
Introduces

  magit-log-buffer-name 	*magit-log*
  magit-log-edit-buffer-name	*magit-edit-log*  (was *magit-log-edit*)
  magit-log-grep-buffer-name	*magit-grep-log*  (was *magit-log-grep*)
  magit-process-buffer-name 	*magit-process*
  magit-commit-buffer-name 	*magit-commit*
  magit-stash-buffer-name	*magit-stash*

Also adds C-c C-] as a binding for magit-log-edit-cancel-log-message
since C-c C-] as the aborting counterpart to C-c C-c is at least a
vague convention for other modes (cf. rmail, vm, query-replace...)

Motives:

It annoys me that, when wanting to switch to the *magit-log* buffer
from some random place, I can't type *ma<space>-l<space> and have it
complete properly, at least not if I've previously ever done a commit
(because there's then a *magit-log-edit* out there stealing the
completion).

Also looks like if I ever use magit-log-grep, I will be likewise
screwed.

Finally, it disturbs my sense of aesthetics when I look at source code
and see the same strings occuring over and over.  Usually, that's
crying defvars/defconsts.  (And this will also makes life easier
in the event you don't like my buffer name changes for -log-edit
and -log-grep).

 - -

(...This all leaves *magit-tmp* as the only remaining case of a buffer
    name string occurring multiple times, but that needs to be handled
    differently, so that'll be a different patch...)

(...Note that having buffer names as variables also allows the
    eventual possibility of making them local --- or at least the
    option thereof --- so that one can be visiting several
    repositories at once and not having these buffers all clobbering
    each other.  There's a tradeoff here in that some folks may find
    it confusing/annoying to have more than one set of these buffers
    to deal with,... hence option.

    *If* one is going to go that route, current gut feeling is buffer
    name variables should be local to *just* the status buffer(s),
    void elsewhere, and anything needing one of the auxiliary buffers
    should dispatch through its own status buffer to get what it
    wants.  That way, we're not having to repeat/update/copy
    per-repository definitions everywhere....)

The patch:
2010-04-28 12:17:26 +01:00
Roger Crew
666e4113e9 docstrings for various functions
Here, have some docstrings:

(...it being something of a show-stopper for newbies when they want to
find out what a given keystroke will do, they hit ^Hk [or ^Hf or ^Hv],
and nothing useful comes out...)
2010-04-27 10:59:48 +01:00
Roger Crew
4c2e7ee5e9 Magit now compiles cleanly.Fix for appending an explicit number of new log entries. 2010-04-25 19:22:33 +01:00
Phil Jackson
1701272fce Fix for appending an explicit number of new log entries. 2010-04-25 19:14:41 +01:00
Phil Jackson
a347b0de48 Minor doc changes. 2010-04-25 17:42:10 +01:00
Rémi Vanicat
2348c70ff1 Added a function to grow the number of log in the log view
The log view will show an help at its end when there is more log to
view, and the function is bound to "l" in log view.
2010-04-25 17:25:06 +01:00
Roger Crew
41343a06f5 magit-show-branches shows wrong repository
If you do
.  magit-status on repository .../x
.  V (magit-show-branches)
.  magit-status on repository .../y
.  V (magit-show-branches)

you get the branch listing for repository .../x

Also, as a side issue, functionality of a buffer should not be
keyed off of the buffer name (in this case, renaming the buffer
should not change what V or g does).

The following patch deals with both of these.
2010-04-25 17:11:29 +01:00
Phil Jackson
7e22c2b044 Merge branch 'more-keymaps' 2010-04-12 14:17:59 +01:00
Rémi Vanicat
d976e65dbf Regrouping command that create new view of current git repositories.
Signed-off-by: Rémi Vanicat <vanicat@debian.org>
2010-04-12 14:08:11 +01:00
Rémi Vanicat
6312006a54 Moving function related to current status
magit-reset-head is also put wherever there are commits

Signed-off-by: Rémi Vanicat <vanicat@debian.org>
2010-04-12 14:08:11 +01:00
Rémi Vanicat
d5dd0578ba Moving function working specifically on status hunk, diff and files
Signed-off-by: Rémi Vanicat <vanicat@debian.org>
2010-04-12 14:08:11 +01:00
Rémi Vanicat
3eec4705bc Moving merging and branching function where there are commit and branch.
Signed-off-by: Rémi Vanicat <vanicat@debian.org>
2010-04-12 14:08:11 +01:00
Rémi Vanicat
6328782833 Moving apply, cherry-pick and revert function.
They all apply to hunk, commit and diff that are in
status, stash, log, reflog, diff and wazzup buffers.

Signed-off-by: Rémi Vanicat <vanicat@debian.org>
2010-04-12 14:08:11 +01:00
Rémi Vanicat
bca27d36bb Moving diff view function where there are commits.
Signed-off-by: Rémi Vanicat <vanicat@debian.org>
2010-04-12 14:08:11 +01:00
Rémi Vanicat
682809d82d Moving staging function to status buffer
Signed-off-by: Rémi Vanicat <vanicat@debian.org>
2010-04-12 14:08:11 +01:00
Rémi Vanicat
d2b814ad9e Moving hunk size modifier in modes where there are hunks.
Signed-off-by: Rémi Vanicat <vanicat@debian.org>
2010-04-12 14:08:11 +01:00
Rémi Vanicat
9105c3e557 Added minor mode for the different magit buffer.
Signed-off-by: Rémi Vanicat <vanicat@debian.org>
2010-04-12 14:08:11 +01:00
Moritz Bunkus
8175d6dfad Only start the server if it isn't running
magit's interactive rebase feature tries to start the server even if
it is already running. If it is already running then Emacs asks
whether or not it should destroy existing clients. This is fatal if
the frame magit is running in was created by emacsclient
itself (e.g. Emacs is running in the background with "--daemon"), so
the user has to answer "no".

This question can be avoided if the server is only startet if it isn't
already running.
2010-04-01 11:16:12 +01:00
Phil Jackson
b09375ebe2 Merge branch 'fancy-branch-view' 2010-04-01 01:58:14 +01:00
Phil Jackson
e7a3b608e6 Fix `magit--branch-name-at-point'. 2010-04-01 01:55:56 +01:00
Phil Jackson
db44227cb0 Use fundamental-mode' rather than text-mode' 2010-04-01 01:53:35 +01:00
Phil Jackson
290d5fe70f Comments, removed old-point code which did nothing. 2010-04-01 01:51:43 +01:00
Phil Jackson
f735945848 Fix `magit--is-branch-at-point-remote' 2010-04-01 01:48:28 +01:00
Phil Jackson
8053974385 Revert "Fix `magit--branch-name-at-point'."
This reverts commit e6e77c611f.
Reverting "Fix `magit--branch-name-at-point'." which I meant to put on another branch.
2010-04-01 01:25:10 +01:00
Phil Jackson
e6e77c611f Fix `magit--branch-name-at-point'. 2010-04-01 01:23:36 +01:00
Phil Jackson
bf49b72cf0 Removed "remotes" from the branch name. 2010-04-01 01:17:09 +01:00
Phil Jackson
a86fab4e97 n/p now allow the user to move about in branch-view. 2010-03-30 23:08:50 +01:00
Phil Jackson
1ae36db891 Put branch name in text properties. 2010-03-30 23:07:09 +01:00
Phil Jackson
b261669efe Have `magit--branch-name-from-line' pull out the branch name. 2010-03-30 22:45:59 +01:00
Phil Jackson
79d7f46502 Bit more output. 2010-03-30 22:45:05 +01:00
Phil Jackson
e09ef67ea6 SHA1 gets colour. 2010-03-30 22:32:43 +01:00
Moritz Bunkus
ad686c5938 Provide useful functions for the branch list
The following functions are available from the branch list (which in
turn is made read-only):

- Checking out the branch in the current line
- Deleting the branch in the current line (prefix forces deletion even
if not merged into current branch); works on both local and remote
branches
- Manual and automatic merges of the branch in the current line into
the current branch
- Quitting the branch list

Includes updated documentation.
2010-03-30 14:53:45 +01:00
Moritz Bunkus
920c3b3a3c Guess the remote branch name from the branch's "merge" config item
If you have a local tracking branch, e.g. called 'test', and the
remote branch name is different than test (e.g. 'somwhere/master')
then the commands for retrieving the unpulled and unpushed commits was
calling "git log test..somwehere/test" which may or may not exist.
2010-03-30 13:45:53 +01:00
Phil Jackson
33ea60d690 If wazzup head is detached then describe it so. 2010-03-29 21:21:09 +01:00
Rémi Vanicat
c51582ee17 Using HEAD as branch-name when this is a detached HEAD 2010-03-29 21:14:56 +01:00
Rémi Vanicat
82b8d93731 check for the current branch before switching buffer
The wazzup buffer might already exist, so if we look at the branch
name in it, it might refer to another branch, even another repository.
2010-03-29 20:57:27 +01:00
Rémi Vanicat
7c80c10199 Added docstring for section's function 2010-03-27 11:33:55 +00:00
Rémi Vanicat
07c3225ed6 Better documentation and error reporting.
Corrected style error in comment, docstring, and error message, thanks to
checkdoc-minor-mode and Aspell.

Some indent and minor code style fix too
2010-03-27 11:33:55 +00:00
Phil Jackson
27ef54451b Finished off documentation. 2010-03-26 16:36:55 +00:00
Phil Jackson
c23b334d29 Merge branch 'log-grep' 2010-03-26 16:33:50 +00:00
Phil Jackson
c7c02c2f20 Added the command `magit-log-grep' (no keybinding). 2010-03-26 16:33:32 +00:00
Phil Jackson
29395e0d46 `magit-refresh-log-buffer' can now take more than one (git commandline) argument. 2010-03-26 16:31:40 +00:00
Phil Jackson
f9283aaa0d Merge remote branch 'refs/remotes/philjackson/svn-find-rev' 2010-03-26 14:00:13 +00:00
Ben Walton
d589942f5a Add an rpm .spec file
Add a modest rpm .spec file and ensure that it's autoconf'd to keep
step with the release version number.

Ignore the generated .spec file, but ensure it's distributed with any
tarballs.

Signed-off-by: Ben Walton <bwalton@artsci.utoronto.ca>
2010-03-24 10:14:22 +00:00
Ben Walton
7bf25f3251 Depend on specific version of automake.
Makefile.am uses $builddir, which isn't available in older (<= 1.9)
versions of automake.  Declare this requirement explictly in
configure.acy.

Signed-off-by: Ben Walton <bwalton@artsci.utoronto.ca>
2010-03-24 10:14:22 +00:00
Ben Walton
6d71fb57ae Add --with-site-start support to configure
The autoconf/automake files now honour --with-site-start to allow
selection of the directory where automatically sourced elisp files are
stored.  The original default is retained.

This switch makes support of non-debian systems easier.  RHEL5, for
example, places these files in /usr/emacs/site-lisp/site-start.d/.

Signed-off-by: Ben Walton <bwalton@artsci.utoronto.ca>
2010-03-24 10:14:22 +00:00
Phil Jackson
0fc398039d Merge commit 'refs/merge-requests/11' of git://gitorious.org/magit/mainline 2010-03-20 16:24:05 +00:00
Phil Jackson
5dc924748a Merge commit 'refs/merge-requests/14' of git://gitorious.org/magit/mainline 2010-03-20 16:22:37 +00:00
Rémi Vanicat
bb74ce61af Show the graph in wazzup. 2010-03-20 13:33:31 +01:00