Giter Site home page Giter Site logo

byplayer / egg Goto Github PK

View Code? Open in Web Editor NEW

This project forked from noguchit/egg

97.0 11.0 20.0 1.28 MB

Emacs Got Git. This is a clone of Marius's excellent magit. Egg is an emacs interface to git.

Home Page: bogolisk.blogspot.com

Makefile 0.20% Emacs Lisp 99.80%

egg's Introduction

Egg (Emacs Got Git).

Intro

MELPA

Egg is an Emacs interface to git. It's a suite composed of a minor-mode and various special-buffers presenting different UIs to help the user performing many git operations.

  • egg-minor-mode: providing git-specific vc-look-alike interface including similar key-bindings, a minor-mode menu and history annotations (blame).
  • egg's status-buffer:
    • index manipulation/commit preparation
    • interactive rebase stepping
    • merge conflict resolution
    • stashing work-in-progress
    • adding ignore pattern
    • staging new files
    • ediff or ediff3 launching. (e.g. 3-way ediff of work-dir/INDEX/HEAD, 3-way ediff of work-dir/theirs/ours)
  • egg's log-buffer
    • browse repo's history and reflogs
    • ref (tag, branch, etc) creation and deletion
    • push and fetch
    • start merge/rebase/interactive-rebase session
    • anchor HEAD (reset)
    • search history (pickaxe), grep commit message.
    • compare revisions
  • egg's file-log-buffer: restricted version of the log-buffer, used to browse history of a single file.
  • egg's query:commit-buffer: restricted variation of the log-buffer, used to browse history-search's results (pickaxe or message grep)
  • egg-grep: a compile-mode which can grep files in non-checkout git revisions.
  • egg's commit-log-edit buffer: used to compose the commit-message for the upcoming commit. it can do some minor index manipulation. gpg-signature can also be enabled.
  • egg's tag:msg-buffer: used to compose the message of an annotated tag. gpg-signature can also be enabled.
  • egg's diff-buffer: used to view the delta between file or repo revisions.

History

The design of the status-buffer Egg was borrowed/stolen from Magit. Egg, however has much more functionalities than the status buffer.

MAGIT

Magit is an interface to the version control system Git, implemented by Marius Voller. His code at: http://philjackson.github.com/magit/

egg's People

Contributors

aamar avatar abayer avatar agarciadom avatar bogolisk avatar byplayer avatar dotemacs avatar eostrom avatar gizmomogwai avatar jjrussell avatar ki11men0w avatar mkleehammer avatar mooz avatar offbyone avatar plambir avatar pnkfelix avatar qpliu avatar strav avatar tom111 avatar xiaohanyu avatar xxzgc avatar yukio-goto avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

egg's Issues

QA report: lisp-mnt, checkdoc.el, Elint

FYI,

Perhaps some of these could be addressed in later releases. See lm-*
expected file syntax e.g. from "D.8 Library Headers (GNU Emacs Lisp
Reference Manual)"
http://pinboard.in/u:jariaalto/t:emacs/t:elisp/t:qa

*** Lint Emacs 24.0.92.1 2012-01-04 21:30:22 file: egg.el
** Lint M-x lm-verify (list-mnt.el)
Missing: ;; Maintainer:
Missing: ;; Author:
Missing: ;; Version:
Missing: ;; Keywords:
Missing: ;; URL:
Missing: ;;; Commentary:
Missing: ;;; History:
Missing: ;;; Code:
** Lint M-x checkdoc-current-buffer (checkdoc.el)
egg.el:1002: All variables and subroutines might as well have a documentation string
egg.el:1005: First line is not a complete sentence
egg.el:1032: Documentation strings should not start or end with whitespace
egg.el:1079: First line should be capitalized
egg.el:1100: First line is not a complete sentence
egg.el:1105: First line is not a complete sentence
egg.el:1110: First line is not a complete sentence
egg.el:1110: First line should be capitalized
egg.el:1118: First line is not a complete sentence
egg.el:1138: First line is not a complete sentence
egg.el:1146: All variables and subroutines might as well have a documentation string
egg.el:1156: All variables and subroutines might as well have a documentation string
egg.el:1164: All interactive functions should have documentation
egg.el:1181: All variables and subroutines might as well have a documentation string
egg.el:1184: All variables and subroutines might as well have a documentation string
egg.el:1187: All variables and subroutines might as well have a documentation string
egg.el:1190: All variables and subroutines might as well have a documentation string
egg.el:1194: All variables and subroutines might as well have a documentation string
egg.el:1216: All variables and subroutines might as well have a documentation string
egg.el:1224: Argument `exit-code' should appear (as EXIT-CODE) in the doc string
egg.el:1261: All variables and subroutines might as well have a documentation string
egg.el:1264: All variables and subroutines might as well have a documentation string
egg.el:1271: All variables and subroutines might as well have a documentation string
egg.el:1308: First sentence should end with punctuation
egg.el:1312: Arguments occur in the doc string out of order
egg.el:1388: All variables and subroutines might as well have a documentation string
egg.el:1398: All variables and subroutines might as well have a documentation string
egg.el:1410: All interactive functions should have documentation
egg.el:1436: All variables and subroutines might as well have a documentation string
egg.el:1448: All interactive functions should have documentation
egg.el:1457: First sentence should end with punctuation
egg.el:1495: First line is not a complete sentence
egg.el:1526: First sentence should end with punctuation
egg.el:1572: All interactive functions should have documentation
egg.el:1576: All interactive functions should have documentation
egg.el:1584: All variables and subroutines might as well have a documentation string
egg.el:1587: All variables and subroutines might as well have a documentation string
egg.el:1590: All variables and subroutines might as well have a documentation string
egg.el:1593: All variables and subroutines might as well have a documentation string
egg.el:1596: All variables and subroutines might as well have a documentation string
egg.el:1599: All variables and subroutines might as well have a documentation string
egg.el:1605: All variables and subroutines might as well have a documentation string
egg.el:1611: All variables and subroutines might as well have a documentation string
egg.el:1622: All variables and subroutines might as well have a documentation string
egg.el:1633: All variables and subroutines might as well have a documentation string
egg.el:1637: All variables and subroutines might as well have a documentation string
egg.el:1644: Argument `parent' should appear (as PARENT) in the doc string
egg.el:1651: First line is not a complete sentence
egg.el:1659: Argument `ignored-1' should appear (as IGNORED-1) in the doc string
egg.el:1659: First line is not a complete sentence
egg.el:1697: First line is not a complete sentence
egg.el:1711: First line is not a complete sentence
egg.el:1715: Documentation strings should not start or end with whitespace
egg.el:1899: Argument `args' should appear (as ARGS) in the doc string
egg.el:1963: First line is not a complete sentence
egg.el:1993: Argument `hunk-header' should appear (as HUNK-HEADER) in the doc string
egg.el:2001: Argument `hunk-header' should appear (as HUNK-HEADER) in the doc string
egg.el:2001: Lisp symbol `other-window' should appear in quotes
egg.el:2021: Argument `sect-type' should appear (as SECT-TYPE) in the doc string
egg.el:2055: Argument `reverse' should appear (as REVERSE) in the doc string
egg.el:2069: All variables and subroutines might as well have a documentation string
egg.el:2074: All variables and subroutines might as well have a documentation string
egg.el:2077: All variables and subroutines might as well have a documentation string
egg.el:2081: All variables and subroutines might as well have a documentation string
egg.el:2085: All variables and subroutines might as well have a documentation string
egg.el:2128: Argument `args' should appear (as ARGS) in the doc string
egg.el:2137: Argument `newly-read-state' should appear (as NEWLY-READ-STATE) in the doc string
egg.el:2177: First sentence should end with punctuation
egg.el:2180: Arguments occur in the doc string out of order
egg.el:2180: First line is not a complete sentence
egg.el:2181: Open parenthesis in column 0 should be escaped
egg.el:2197: Argument `win' should appear (as WIN) in the doc string
egg.el:2197: First sentence should end with punctuation
egg.el:2208: Argument `type' should appear (as TYPE) in the doc string
egg.el:2261: First sentence should end with punctuation
egg.el:2270: First line is not a complete sentence
egg.el:2270: Second line should not have indentation
egg.el:2275: Argument `upstream-or-action' should appear (as UPSTREAM-OR-ACTION) in the doc string
egg.el:2303: Argument `callback' should appear (as CALLBACK) in the doc string
egg.el:2345: All interactive functions should have documentation
egg.el:2351: All interactive functions should have documentation
egg.el:2357: All variables and subroutines might as well have a documentation string
egg.el:2464: All interactive functions should have documentation
egg.el:2489: All interactive functions should have documentation
egg.el:2520: Argument `title' should appear (as TITLE) in the doc string
egg.el:2520: Probably "changes" should be imperative "change"
egg.el:2545: Argument `title' should appear (as TITLE) in the doc string
egg.el:2545: Probably "changes" should be imperative "change"
egg.el:2573: All interactive functions should have documentation
egg.el:2607: Argument `help-nav' should appear (as HELP-NAV) in the doc string
egg.el:2633: Argument `proc' should appear (as PROC) in the doc string
egg.el:2644: All variables and subroutines might as well have a documentation string
egg.el:2659: All variables and subroutines might as well have a documentation string
egg.el:2664: All variables and subroutines might as well have a documentation string
egg.el:2670: All variables and subroutines might as well have a documentation string
egg.el:2674: Name emacs should appear capitalized as Emacs
egg.el:2699: All variables and subroutines might as well have a documentation string
egg.el:2767: All variables and subroutines might as well have a documentation string
egg.el:2775: All interactive functions should have documentation
egg.el:2779: All interactive functions should have documentation
egg.el:2783: All interactive functions should have documentation
egg.el:2787: All interactive functions should have documentation
egg.el:2837: All interactive functions should have documentation
egg.el:2854: All variables and subroutines might as well have a documentation string
egg.el:2868: All variables and subroutines might as well have a documentation string
egg.el:2885: All variables and subroutines might as well have a documentation string
egg.el:2896: All variables and subroutines might as well have a documentation string
egg.el:2903: All variables and subroutines might as well have a documentation string
egg.el:2924: All variables and subroutines might as well have a documentation string
egg.el:2942: All variables and subroutines might as well have a documentation string
egg.el:2945: All variables and subroutines might as well have a documentation string
egg.el:2948: All variables and subroutines might as well have a documentation string
egg.el:2951: All variables and subroutines might as well have a documentation string
egg.el:2954: All variables and subroutines might as well have a documentation string
egg.el:2964: All variables and subroutines might as well have a documentation string
egg.el:2971: All variables and subroutines might as well have a documentation string
egg.el:2988: All interactive functions should have documentation
egg.el:2994: All interactive functions should have documentation
egg.el:3001: All interactive functions should have documentation
egg.el:3012: All variables and subroutines might as well have a documentation string
egg.el:3019: All interactive functions should have documentation
egg.el:3027: All interactive functions should have documentation
egg.el:3033: All interactive functions should have documentation
egg.el:3040: All interactive functions should have documentation
egg.el:3059: All interactive functions should have documentation
egg.el:3067: All interactive functions should have documentation
egg.el:3074: All interactive functions should have documentation
egg.el:3081: All variables and subroutines might as well have a documentation string
egg.el:3093: All variables and subroutines might as well have a documentation string
egg.el:3099: All variables and subroutines might as well have a documentation string
egg.el:3109: All variables and subroutines might as well have a documentation string
egg.el:3123: All variables and subroutines might as well have a documentation string
egg.el:3134: All variables and subroutines might as well have a documentation string
egg.el:3144: All variables and subroutines might as well have a documentation string
egg.el:3152: All variables and subroutines might as well have a documentation string
egg.el:3173: All variables and subroutines might as well have a documentation string
egg.el:3222: All variables and subroutines might as well have a documentation string
egg.el:3268: All variables and subroutines might as well have a documentation string
egg.el:3277: All variables and subroutines might as well have a documentation string
egg.el:3286: All interactive functions should have documentation
egg.el:3304: All interactive functions should have documentation
egg.el:3310: Argument `forward' should appear (as FORWARD) in the doc string
egg.el:3348: All variables and subroutines might as well have a documentation string
egg.el:3380: All interactive functions should have documentation
egg.el:3443: All variables and subroutines might as well have a documentation string
egg.el:3532: All variables and subroutines might as well have a documentation string
egg.el:3547: All variables and subroutines might as well have a documentation string
egg.el:3556: All variables and subroutines might as well have a documentation string
egg.el:3615: Argument `default' should appear (as DEFAULT) in the doc string
egg.el:3630: All variables and subroutines might as well have a documentation string
egg.el:3639: All variables and subroutines might as well have a documentation string
egg.el:3648: All variables and subroutines might as well have a documentation string
egg.el:3751: All variables and subroutines might as well have a documentation string
egg.el:3909: All variables and subroutines might as well have a documentation string
egg.el:3920: All interactive functions should have documentation
egg.el:3925: All interactive functions should have documentation
egg.el:3930: All interactive functions should have documentation
egg.el:3937: All interactive functions should have documentation
egg.el:3944: All variables and subroutines might as well have a documentation string
egg.el:3957: All variables and subroutines might as well have a documentation string
egg.el:3965: All variables and subroutines might as well have a documentation string
egg.el:3971: All variables and subroutines might as well have a documentation string
egg.el:3995: All interactive functions should have documentation
egg.el:3999: All interactive functions should have documentation
egg.el:4003: All interactive functions should have documentation
egg.el:4007: All interactive functions should have documentation
egg.el:4011: All interactive functions should have documentation
egg.el:4019: All interactive functions should have documentation
egg.el:4025: All variables and subroutines might as well have a documentation string
egg.el:4042: All variables and subroutines might as well have a documentation string
egg.el:404: Name emacs should appear capitalized as Emacs
egg.el:4090: All variables and subroutines might as well have a documentation string
egg.el:4177: All interactive functions should have documentation
egg.el:4194: All interactive functions should have documentation
egg.el:4207: All interactive functions should have documentation
egg.el:4229: All interactive functions should have documentation
egg.el:4235: All interactive functions should have documentation
egg.el:4241: All interactive functions should have documentation
egg.el:4249: All interactive functions should have documentation
egg.el:4258: All interactive functions should have documentation
egg.el:4266: All interactive functions should have documentation
egg.el:4286: All interactive functions should have documentation
egg.el:4298: All interactive functions should have documentation
egg.el:4314: All interactive functions should have documentation
egg.el:4335: All interactive functions should have documentation
egg.el:4349: All interactive functions should have documentation
egg.el:4361: All interactive functions should have documentation
egg.el:4402: All interactive functions should have documentation
egg.el:4420: All variables and subroutines might as well have a documentation string
egg.el:4430: All interactive functions should have documentation
egg.el:4442: All interactive functions should have documentation
egg.el:4456: All variables and subroutines might as well have a documentation string
egg.el:4494: All interactive functions should have documentation
egg.el:4501: All variables and subroutines might as well have a documentation string
egg.el:4533: All variables and subroutines might as well have a documentation string
egg.el:4543: You should convert this comment to documentation
egg.el:4635: All variables and subroutines might as well have a documentation string
egg.el:4638: All variables and subroutines might as well have a documentation string
egg.el:4641: All variables and subroutines might as well have a documentation string
egg.el:4644: All variables and subroutines might as well have a documentation string
egg.el:4647: All variables and subroutines might as well have a documentation string
egg.el:4650: All variables and subroutines might as well have a documentation string
egg.el:4653: All interactive functions should have documentation
egg.el:4657: All interactive functions should have documentation
egg.el:4662: All variables and subroutines might as well have a documentation string
egg.el:472: First sentence should end with punctuation
egg.el:4775: All variables and subroutines might as well have a documentation string
egg.el:4794: All variables and subroutines might as well have a documentation string
egg.el:4801: All variables and subroutines might as well have a documentation string
egg.el:4821: All interactive functions should have documentation
egg.el:4825: All interactive functions should have documentation
egg.el:4829: All interactive functions should have documentation
egg.el:4833: All interactive functions should have documentation
egg.el:4944: All interactive functions should have documentation
egg.el:4992: All variables and subroutines might as well have a documentation string
egg.el:4997: All variables and subroutines might as well have a documentation string
egg.el:5009: All variables and subroutines might as well have a documentation string
egg.el:5021: All variables and subroutines might as well have a documentation string
egg.el:5055: All interactive functions should have documentation
egg.el:5098: All interactive functions should have documentation
egg.el:5125: All interactive functions should have documentation
egg.el:5148: All variables and subroutines might as well have a documentation string
egg.el:5158: All interactive functions should have documentation
egg.el:5175: All variables and subroutines might as well have a documentation string
egg.el:5215: All interactive functions should have documentation
egg.el:5238: All interactive functions should have documentation
egg.el:5245: All variables and subroutines might as well have a documentation string
egg.el:5255: All variables and subroutines might as well have a documentation string
egg.el:5285: All interactive functions should have documentation
egg.el:5292: All interactive functions should have documentation
egg.el:5303: All interactive functions should have documentation
egg.el:5316: All interactive functions should have documentation
egg.el:5377: All variables and subroutines might as well have a documentation string
egg.el:5400: All variables and subroutines might as well have a documentation string
egg.el:5409: All interactive functions should have documentation
egg.el:5433: All variables and subroutines might as well have a documentation string
egg.el:543: First line should be capitalized
egg.el:5454: All variables and subroutines might as well have a documentation string
egg.el:547: Arguments occur in the doc string out of order
egg.el:547: First line should be capitalized
egg.el:5489: All interactive functions should have documentation
egg.el:548: Lisp symbol `current-buffer' should appear in quotes
egg.el:5513: Argument `ask' should appear (as ASK) in the doc string
egg.el:5524: Argument `no-confirm' should appear (as NO-CONFIRM) in the doc string
egg.el:553: Arguments occur in the doc string out of order
egg.el:553: First line should be capitalized
egg.el:5542: Argument `no-confirm' should appear (as NO-CONFIRM) in the doc string
egg.el:554: Lisp symbol `current-buffer' should appear in quotes
egg.el:5559: All interactive functions should have documentation
egg.el:5563: All variables and subroutines might as well have a documentation string
egg.el:5587: Argument `ask' should appear (as ASK) in the doc string
egg.el:559: Arguments occur in the doc string out of order
egg.el:559: First line should be capitalized
egg.el:5600: All interactive functions should have documentation
egg.el:5620: All interactive functions should have documentation
egg.el:5632: All variables and subroutines might as well have a documentation string
egg.el:564: All variables and subroutines might as well have a documentation string
egg.el:566: All variables and subroutines might as well have a documentation string
egg.el:568: All variables and subroutines might as well have a documentation string
egg.el:5692: All interactive functions should have documentation
egg.el:5704: All interactive functions should have documentation
egg.el:570: All variables and subroutines might as well have a documentation string
egg.el:571: All variables and subroutines might as well have a documentation string
egg.el:5721: All variables and subroutines might as well have a documentation string
egg.el:575: First line should be capitalized
egg.el:5775: All variables and subroutines might as well have a documentation string
egg.el:5786: All variables and subroutines might as well have a documentation string
egg.el:5813: All variables and subroutines might as well have a documentation string
egg.el:582: Argument `re' should appear (as RE) in the doc string
egg.el:582: First line should be capitalized
egg.el:5856: All variables and subroutines might as well have a documentation string
egg.el:5866: All variables and subroutines might as well have a documentation string
egg.el:5905: All interactive functions should have documentation
egg.el:5917: All variables and subroutines might as well have a documentation string
egg.el:5924: All variables and subroutines might as well have a documentation string
egg.el:5934: All variables and subroutines might as well have a documentation string
egg.el:5938: All interactive functions should have documentation
egg.el:594: Argument `re' should appear (as RE) in the doc string
egg.el:594: First line should be capitalized
egg.el:6010: Argument `arg' should appear (as ARG) in the doc string
egg.el:6010: First line is not a complete sentence
egg.el:6023: Documentation strings should not start or end with whitespace
egg.el:6038: All variables and subroutines might as well have a documentation string
egg.el:6066: All variables and subroutines might as well have a documentation string
egg.el:6069: All variables and subroutines might as well have a documentation string
egg.el:6073: All variables and subroutines might as well have a documentation string
egg.el:6076: All variables and subroutines might as well have a documentation string
egg.el:6079: All variables and subroutines might as well have a documentation string
egg.el:6082: All variables and subroutines might as well have a documentation string
egg.el:6085: All variables and subroutines might as well have a documentation string
egg.el:6094: All variables and subroutines might as well have a documentation string
egg.el:612: First line should be capitalized
egg.el:6146: All variables and subroutines might as well have a documentation string
egg.el:616: First line should be capitalized
egg.el:617: Lisp symbol `current-buffer' should appear in quotes
egg.el:6189: All interactive functions should have documentation
egg.el:6194: Argument `nav-regexp' should appear (as NAV-REGEXP) in the doc string
egg.el:6194: Probably "moves" should be imperative "move"
egg.el:621: First line should be capitalized
egg.el:627: First line should be capitalized
egg.el:646: Argument `raw' should appear (as RAW) in the doc string
egg.el:676: All variables and subroutines might as well have a documentation string
egg.el:681: First line should be capitalized
egg.el:729: First line should be capitalized
egg.el:729: Lisp symbol `default-directory' should appear in quotes
egg.el:733: First line should be capitalized
egg.el:737: First line should be capitalized
egg.el:741: First line should be capitalized
egg.el:745: First line should be capitalized
egg.el:749: First line should be capitalized
egg.el:749: Lisp symbol `default-directory' should appear in quotes
egg.el:757: First line should be capitalized
egg.el:762: Argument `error-if-not-git' should appear (as ERROR-IF-NOT-GIT) in the doc string
egg.el:762: First line should be capitalized
egg.el:762: First sentence should end with punctuation
egg.el:762: Lisp symbol `default-directory' should appear in quotes
egg.el:777: First line should be capitalized
egg.el:782: First line should be capitalized
egg.el:817: All variables and subroutines might as well have a documentation string
egg.el:824: Argument `head-properties' should appear (as HEAD-PROPERTIES) in the doc string
egg.el:890: Argument `string' should appear (as STRING) in the doc string
egg.el:890: First sentence should end with punctuation
egg.el:936: You should convert this comment to documentation
egg.el:943: You should convert this comment to documentation
egg.el:950: All variables and subroutines might as well have a documentation string

diff between branches with egg

Unless I'm missing something. it does not look like its possible to compare different branches with egg. It is easy to compare revisions within the same branch from the egg-log buffer but not to compare different branches.

"egg-commit-log-edit: Wrong type argument: stringp, nil" when user.name not set

Attempting to commit when git is not yet configured results in the above error, inside of egg-text.

egg-text has a null check, but since it is a macro, it checks if the function passed to it, (plist-get state :name), is null, when in fact the value it returns is null.

Does egg-text have to be a macro?
Can we set a default? (like OS username)

New users are more likely to not have git configured, and are more likely to be stumped by the error message, so I think this is worth fixing.

Same problem occurs when user.email is not set.

egg does not work if .git is symlinked

Our in-house SCM integration & build tools have a bit of an odd setup; the .git directory in my working copy is symlinked into a shared repo elsewhere:

proj/.git -> /store/proj.git

egg-git-dir returns /store/proj.git as the git directory and then uses that everywhere. However, none of my source files are near there.

I'm not sure what the right fix for this is; it might be that finding a dominating .git directory is the right approach (it seems to be what vc-mode does) instead of using git rev-parse.

How to change the repo?

Hi,

I'm not sure if I can ask a question here, but starting of using egg two days, I cannot find to change the repo or working directory. I have multiple project running on my Mac and want to get status/log view in multiple directory. For example, if there are /tmp/projectA and /tmp/projectB, how to get the egg-status on projectA and projectB?

Discussions about: (require 'cl)

The Emacs Devs seem to frown upon CL. They're are ok with (eval-when-compile (require 'cl)) but not
run time usage.

Should we convert egg to NOT use CL constructs?
Many stuffs are easily replacable but destructuring-bind is hard....

What do you guys think?

Feature Request: ediff integration of egg

Instead of context format of diff, perhaps ediff integration will do nicely.

For example, to select two commit using egg's mark, then compare the selection between two commit using ediff's session.

edmacro-subseq removed

On July 11, 2013, edmacro-subseq was removed, breaking the ability to view diffs in the status buffer. According to the commit log, edmacro-subseq is a re-implementation of cl-lib's cl-subseq.

Wrong binding for "View File History" in minor mode menu

diff --git a/egg.el b/egg.el
index 82f5446..9b19167 100644
--- a/egg.el
+++ b/egg.el
@@ -5904,7 +5904,7 @@ current file contains unstaged changes."
   (define-key menu [grep] '(menu-item "Search Project's Other Versions (grep)" egg-grep))
   (define-key menu [pickaxe] '(menu-item "Search File History" egg-file-log-pickaxe))
   (define-key menu [vother] '(menu-item "View File Other Version" egg-file-version-other-window))
-  (define-key menu [filelog] '(menu-item "View File History" egg-log))
+  (define-key menu [filelog] '(menu-item "View File History" egg-file-log))
   (define-key menu [sp2] '("--"))
   (define-key menu [cother] '(menu-item "Checkout File's Other Version" egg-file-checkout-other-version))
   (define-key menu [ediff]

run pre-commit before write comment

Some time pre-commit hook is failed. But in that case, commit comment is written and abolished.
I is better to check pre-commit hook before write commit comment

Stage by line instead of only by hunk

In git citool, you can select lines within a hunk and stage only those lines. This is useful when a hunk happens to contain logically distinct changes. It would be handy to have this in egg-status.

egg-status error: wrong-number-of-arguments nil 2

I have one particular repo in which I get the appended error when I run egg-status.

Based on 'egg-unstaged-lines-delta-before-hunk("emacs-config" nil)' in the backtrace, the problem is caused by the 'emacs-config' submodule, which diffs as follows:

$ git diff diff --git a/emacs-config b/emacs-config index 12e0c47..72a82c2 160000 --- a/emacs-config +++ b/emacs-config @@ -1 +1 @@ -Subproject commit 12e0c4781b5879d38c5635b774ab484865a93aa3 +Subproject commit 72a82c22cb34f517c917360e02927d2028f5ab6d

Debugger entered--Lisp error: (wrong-number-of-arguments nil 2)
signal(wrong-number-of-arguments (nil 2))
(if (cdr (cdr --cl-rest--)) (pop --cl-rest--) (signal (quote wrong-number-of-arguments) (list nil ...)))
(let* ((--cl-rest-- range) (l1 ...) (s1 ...) (l2 ...) (s2 ...)) (if --cl-rest-- (signal ... ...)) (when (< l2 line) (incf cnt ...)))
(progn (let* (... ... ... ... ...) (if --cl-rest-- ...) (when ... ...)))
(destructuring-bind (l1 s1 l2 &optional s2) range (when (< l2 line) (incf cnt ...)))
(progn (destructuring-bind (l1 s1 l2 &optional s2) range (when ... ...)))
(if (eq sect (quote unstaged)) (progn (destructuring-bind ... range ...)))
(when (eq sect (quote unstaged)) (destructuring-bind (l1 s1 l2 &optional s2) range (when ... ...)))
(let ((sect ...) (range ...) (real-range ...) (single-range ...)) (when (eq sect ...) (destructuring-bind ... range ...)))
(while --cl-dolist-temp-- (setq elem (car --cl-dolist-temp--)) (let (... ... ... ...) (when ... ...)) (setq --cl-dolist-temp-- (cdr --cl-dolist-temp--)))
(let ((--cl-dolist-temp-- ...) elem) (while --cl-dolist-temp-- (setq elem ...) (let ... ...) (setq --cl-dolist-temp-- ...)) nil)
(catch (quote --cl-block-nil--) (let (... elem) (while --cl-dolist-temp-- ... ... ...) nil))
(cl-block-wrapper (catch (quote --cl-block-nil--) (let ... ... nil)))
(block nil (let (... elem) (while --cl-dolist-temp-- ... ... ...) nil))
(dolist (elem (cdr ...)) (let (... ... ... ...) (when ... ...)))
(let ((cnt 0)) (dolist (elem ...) (let ... ...)) cnt)
egg-unstaged-lines-delta-before-hunk("emacs-config" nil)
(let* ((delta-unstaged ...) (delta-staged ...)) (decf (first single-range) delta-staged) (decf (third single-range) (+ delta-unstaged delta-staged)))
(if (eq (get-text-property pos :section) (quote unstaged)) (let* (... ...) (decf ... delta-staged) (decf ... ...)) (let (...) (decf ... delta)))
(let* ((hunk-info ...) (file ...) (hunk-ranges ...) (buffer-range ...) (real-range ...) (single-range ...)) (if (eq ... ...) (let* ... ... ...) (let ... ...)))
(progn (let* (... ... ... ... ... ...) (if ... ... ...)))
(if (eq (get-text-property pos :sect-type) :hunk) (progn (let* ... ...)))
(when (eq (get-text-property pos :sect-type) :hunk) (let* (... ... ... ... ... ...) (if ... ... ...)))
(while (setq pos (next-single-property-change ... :navigation)) (when (eq ... :hunk) (let* ... ...)))
(let ((pos ...) nav last-file list) (while (setq pos ...) (when ... ...)))
(save-excursion (let (... nav last-file list) (while ... ...)))
egg-calculate-hunk-ranges()
(progn (when win (select-window win t)) (egg-save-section-visibility) (erase-buffer) (dolist (sect egg-status-buffer-sections) (cond ... ... ... ...)) (egg-calculate-hunk-ranges) (if init (egg-buffer-maybe-hide-all)) (if init (egg-buffer-maybe-hide-help "help" ...)) (egg-restore-section-visibility))
(unwind-protect (progn (when win ...) (egg-save-section-visibility) (erase-buffer) (dolist ... ...) (egg-calculate-hunk-ranges) (if init ...) (if init ...) (egg-restore-section-visibility)) (dolist (elt save-selected-window-alist) (and ... ... ...)) (if (window-live-p save-selected-window-window) (select-window save-selected-window-window)))
(save-current-buffer (unwind-protect (progn ... ... ... ... ... ... ... ...) (dolist ... ...) (if ... ...)))
(let ((save-selected-window-window ...) (save-selected-window-alist ...)) (save-current-buffer (unwind-protect ... ... ...)))
(save-selected-window (when win (select-window win t)) (egg-save-section-visibility) (erase-buffer) (dolist (sect egg-status-buffer-sections) (cond ... ... ... ...)) (egg-calculate-hunk-ranges) (if init (egg-buffer-maybe-hide-all)) (if init (egg-buffer-maybe-hide-help "help" ...)) (egg-restore-section-visibility))
(let ((inhibit-read-only t) (win ...)) (save-selected-window (when win ...) (egg-save-section-visibility) (erase-buffer) (dolist ... ...) (egg-calculate-hunk-ranges) (if init ...) (if init ...) (egg-restore-section-visibility)))
(save-current-buffer (set-buffer buf) (let (... ...) (save-selected-window ... ... ... ... ... ... ... ...)))
(with-current-buffer buf (let (... ...) (save-selected-window ... ... ... ... ... ... ... ...)))
egg-status-buffer-redisplay(#<buffer homestuff-status@/Users/vwelch/homestuff/.git> init)
(save-current-buffer (set-buffer buf) (egg-status-buffer-redisplay buf (quote init)))
(with-current-buffer buf (egg-status-buffer-redisplay buf (quote init)))
(let* ((egg-internal-current-state ...) (buf ...)) (with-current-buffer buf (egg-status-buffer-redisplay buf ...)) (cond (... ...) (select ...) (egg-switch-to-buffer ...) (... ...) (t ...)))
egg-status(nil)

U(pload) will only say Buffer is read-only

In previous versions of egg one could do a push by putting the cursor over the local branch name and type U, but now I only get a "Buffer is read-only" error message

Possible bug with CR in merge filename

Unfortunately I don't know how I got into this situation, but today I got egg into a state where it stopped working, because of an extra CR (^M) in one of the .git/rebase-merge/* files. Egg failed to parse the branch name "topic/foo^M" (where ^M was a real CR in the actual file) as a rev.

I wonder if egg-file-as-string should strip CRs, at least on Windows?

after a commit, egg closes window

egg seems to be happy with closing my current window after a commit (with C-c C-c). I suppose egg thinks it's a temporary window, but alas, it's not.

Is there any way to disable this behavior?

Change to egg-mode-key-prefix not reflected in the key bindings

Hi, egg is looking great but I would like to keep the standard emacs VCS functions such as vc-print-log function bound under "C-x v" (eg I find "C-x v l" useful because diffs requested from that are file-specific and do not contain the contents of other files - incidentally I haven't found a way to force the same behaviour with egg-file-log but maybe I don't know egg well enough yet).

I have tried evaluating (setq egg-mode-key-prefix "C-c v") and adding the same to my initialisation file in addition to using the customize interface for this but to no avail.

There is no "egg-version" variable for me to be able to report but the change log says v 0.93 and the git log lists 8469a4b (2010-11-06 18:27:36 +0900) as the latest.

Thanks, argetek

Egg does not work on dired mode?

I think this is not a issue, but how can I make egg works on dired mode?
It would be better if we can see the git diff on dired mode.
I could not find how I can make it work.
Thanks in advance.

args-out-of-range error in blame mode

I have a file in blame mode, go to the chunk of interest, hit RET (to open log). I get an error with this backtrace:

Debugger entered--Lisp error: (args-out-of-range 2 2)
  next-single-property-change(2 :mark)
  egg-log-buffer-get-marked-alist(10004 46 9998 62)
  egg-log-buffer-get-rebase-marked-alist()
  egg-generic-display-logs((:description #("history scope: v6-maint-branch and 1c1959d" 0 15 (face egg-text-2) 15 30 (face egg-term) 30 35 (face egg-text-2) 35 42 (face egg-term)) :closure (lambda nil (egg-insert-logs-with-full-decoration (list "v6-maint-branch" "1c1959d1956637468c01e781e414b41531f5a1d9"))) :title #("v6-maint-branch" 0 15 (face egg-branch)) :subtitle #("1510b4bef24ea5cc69df31d3f31c71472d68ed96" 0 40 (face font-lock-string-face))) nil)
  egg-log-buffer-redisplay(#<buffer *sapphire-v6-log@c:/genarts/sapphire-v6/.git*>)
  egg-do-locate-commit("1c1959d1956637468c01e781e414b41531f5a1d9")
  egg-blame-locate-commit(11903 nil)
  call-interactively(egg-blame-locate-commit nil nil)

(point-min) is 1, so pos is 1. Apparently it can't find the next single property change after that. I'm not sure why, the selected buffer seems to be the blame buffer and it has lots of properties.

Oh yes, this is on nightly emacs 24.3.50.1 of 11-19-12 (Dani's Windows trunk build)

Extending egg

We have a code review process that is tightly tied into our git workflow. Right now, it is the primary reason I have to leave egg when interacting with my projects. My natural thought is to extend egg (in particular, the log buffer) to support it.

This got me thinking about extensions in general, which made me wonder a couple things: is there value in building a more generic extension mechanism to egg's log buffer (essentially allowing you to build a refspec and run something based on it)? If there is, where would be a good place to start?

Problems with Emacs 22.3.1 (Mac Carbon Emacs)

I don't know if egg.el is supposed to work with Emacs 22 but the latest version of egg.el doesn't work with Emacs 22.3.1, which is the Carbon build I'm using on my Mac.

The first problem is locate-dominating-file() doesn't exist. I found a backport which at least lets egg-minor-mode run without error.

But it still doesn't work at that point as it insists my files are not under version control (which they are).

I found a newer version of Emacs for my Mac, but trying to upgrade I'm running into unrelated problems.

Still working on this.

Update: Turns out the locate-dominating-file was the serious issue.

I'm having a secondary problem with vc keybindings apparently usurping egg key bindings, so if I do C-x v s, I get vc-create-tag instead of egg-status, and trying to disable vc with git caused the "not under version control problems"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.