Code

Add action to maximize the current view; bound to M by default
authorJonas Fonseca <fonseca@diku.dk>
Wed, 2 Apr 2008 20:27:06 +0000 (22:27 +0200)
committerJonas Fonseca <fonseca@diku.dk>
Wed, 2 Apr 2008 20:32:26 +0000 (22:32 +0200)
manual.txt
tig.c
tigrc.5.txt

index 4e8b402b549d65e906bf90e403938243d7a5473d..0ea404b3a5ecadce2ccd0ad579798c380234a496 100644 (file)
@@ -287,6 +287,7 @@ Enter       This key is "context sensitive" depending on what view you are \
        pressing Enter will simply scroll the view one line down.
 Tab    Switch to next view.
 R      Reload and refresh the current view.
+M      Maximize the current view to fill the whole display.
 Up     This key is "context sensitive" and will move the cursor one \
        line up. However, if you opened a diff view from the main view \
        (split- or full-screen) it will change the cursor to point to \
diff --git a/tig.c b/tig.c
index bee3ac2a2010d68b60a5460902f5f6ab365c69c2..413bd04b61a2766f7c1c6decde15fdfb578220fd 100644 (file)
--- a/tig.c
+++ b/tig.c
@@ -331,6 +331,7 @@ sq_quote(char buf[SIZEOF_STR], size_t bufsize, const char *src)
        REQ_(PREVIOUS,          "Move to previous"), \
        REQ_(VIEW_NEXT,         "Move focus to next view"), \
        REQ_(REFRESH,           "Reload and refresh"), \
+       REQ_(MAXIMIZE,          "Maximize the current view"), \
        REQ_(VIEW_CLOSE,        "Close the current view"), \
        REQ_(QUIT,              "Close all views and quit"), \
        \
@@ -730,6 +731,7 @@ static struct keybinding default_keybindings[] = {
        { KEY_UP,       REQ_PREVIOUS },
        { KEY_DOWN,     REQ_NEXT },
        { 'R',          REQ_REFRESH },
+       { 'M',          REQ_MAXIMIZE },
 
        /* Cursor navigation */
        { 'k',          REQ_MOVE_UP },
@@ -1437,7 +1439,8 @@ static struct view views[] = {
        VIEW_(STAGE,  "stage",  &stage_ops,  TRUE,  ""),
 };
 
-#define VIEW(req) (&views[(req) - REQ_OFFSET - 1])
+#define VIEW(req)      (&views[(req) - REQ_OFFSET - 1])
+#define VIEW_REQ(view) ((view) - views + REQ_OFFSET + 1)
 
 #define foreach_view(view, i) \
        for (i = 0; i < ARRAY_SIZE(views) && (view = &views[i]); i++)
@@ -2587,6 +2590,11 @@ view_driver(struct view *view, enum request request)
                report("Refreshing is not yet supported for the %s view", view->name);
                break;
 
+       case REQ_MAXIMIZE:
+               if (displayed_views() == 2)
+                       open_view(view, VIEW_REQ(view), OPEN_DEFAULT);
+               break;
+
        case REQ_TOGGLE_LINENO:
                opt_line_number = !opt_line_number;
                redraw_display();
index 745ed74ac6b3ad734a319a244785206d7db45475..f226968008c8fd026871b4c9ccd5be8d30dbdd75 100644 (file)
@@ -197,6 +197,7 @@ next                        Move to next
 previous               Move to previous
 view-next              Move focus to next view
 refresh                        Reload and refresh view
+maximize               Maximize the current view
 view-close             Close the current view
 quit                   Close all views and quit
 ------------------------------------------------------------------------------