Code

Added action tree-parent and bound it to backspace by default.
authorDominik Vogt <dvogt@ffm.tc.iot.dtag.de>
Thu, 1 Nov 2007 09:30:20 +0000 (10:30 +0100)
committerJonas Fonseca <fonseca@diku.dk>
Fri, 2 Nov 2007 00:15:42 +0000 (01:15 +0100)
This allow to leave the current directory in the tree view and change to
the parent tree / directory. At the top of the tree, this closes the tree
view. Bound to ',' by default.

Example:

  bind tree Left tree-parent
  bind tree Right Enter
  bind blob Left view-close

This allows to navigate the tree and blob views just with the cursor keys.

[ Cleanup the patch a bit and mention the default keybinding in
  manual.txt --jonas ]

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
manual.txt
tig.c
tigrc.5.txt

index 247122883bcd51ec61f0c7a58285b3b349f97394..1bafd1b05ccf1e1ec60cde48334134da7df272dc 100644 (file)
@@ -343,6 +343,8 @@ u   Update status of file. In the status view, this allows you to add an \
 M      Resolve unmerged file by launching git-mergetool(1). Note, to work \
        correctly this might require some initial configuration of your \
        preferred merge tool. See the manpage of git-mergetool(1).
+','    Move tree view to the parent tree.
+e      Open file in editor.
 -----------------------------------------------------------------------------
 
 [[external-commands]]
diff --git a/tig.c b/tig.c
index 7130943ebc6ae5894585eb04a0b1bf1c450a929c..73c8b255a9d0a514b6802c88259611b895440e7e 100644 (file)
--- a/tig.c
+++ b/tig.c
@@ -352,6 +352,7 @@ sq_quote(char buf[SIZEOF_STR], size_t bufsize, const char *src)
        REQ_(TOGGLE_REV_GRAPH,  "Toggle revision graph visualization"), \
        REQ_(STATUS_UPDATE,     "Update file status"), \
        REQ_(STATUS_MERGE,      "Merge file using external tool"), \
+       REQ_(TREE_PARENT,       "Switch to parent directory in tree view"), \
        REQ_(EDIT,              "Open in editor"), \
        REQ_(NONE,              "Do nothing")
 
@@ -788,6 +789,7 @@ static struct keybinding default_keybindings[] = {
        { ':',          REQ_PROMPT },
        { 'u',          REQ_STATUS_UPDATE },
        { 'M',          REQ_STATUS_MERGE },
+       { ',',          REQ_TREE_PARENT },
        { 'e',          REQ_EDIT },
 
        /* Using the ncurses SIGWINCH handler. */
@@ -3020,6 +3022,16 @@ tree_request(struct view *view, enum request request, struct line *line)
 {
        enum open_flags flags;
 
+       if (request == REQ_TREE_PARENT) {
+               if (*opt_path) {
+                       /* fake 'cd  ..' */
+                       request = REQ_ENTER;
+                       line = &view->line[1];
+               } else {
+                       /* quit view if at top of tree */
+                       return REQ_VIEW_CLOSE;
+               }
+       }
        if (request != REQ_ENTER)
                return request;
 
index 521880b1051d799edac06008ade61e56e2b3dece..f62a0077256fc44185679f54d85662e88d702aee 100644 (file)
@@ -246,6 +246,7 @@ toggle-lineno               Toggle line numbers
 toggle-rev-graph       Toggle revision graph visualization
 status-update          Update file status
 status-merge           Resolve unmerged file
+tree-parent            Switch to parent directory in tree view
 edit                   Open in editor
 ------------------------------------------------------------------------------