]> git.wh0rd.org Git - nano.git/commitdiff
in browser_refresh(), if a filename is too long, truncate and display an
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Sun, 2 Jul 2006 18:29:49 +0000 (18:29 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Sun, 2 Jul 2006 18:29:49 +0000 (18:29 +0000)
ellipsis before it, as titlebar() does; also add various miscellaneous
minor fixes

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3719 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/browser.c
src/winio.c

index 5bda58424604d77cc03073c9907e0c698634fd06..66b7d6465b1339d20455fb794e4a3c9c03a001aa 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -26,6 +26,8 @@ CVS code -
          truncated, and where file sizes could be too long. (DLR)
        - For the ".." entry, display "(parent dir)" instead of "(dir)",
          as Pico does. (DLR)
+       - If a filename is too long, truncate and display an ellipsis
+         before it, as titlebar() does. (DLR)
   browser_select_filename()
        - New function, used to select a specific filename in the list.
          (DLR)
index 1aac475e5fd557565ea852bc0636ebda4f125d84..02b4f09768f2555e45594081602c28c5c96b50b5 100644 (file)
@@ -35,7 +35,7 @@ static char **filelist = NULL;
 static size_t filelist_len = 0;
        /* The number of files in the list. */
 static int width = 0;
-       /* The number of columns to display the list in. */
+       /* The number of columns to display per filename. */
 static int longest = 0;
        /* The number of columns in the longest filename in the list. */
 static size_t selected = 0;
@@ -446,7 +446,7 @@ char *do_browse_from(const char *inpath)
 /* Set filelist to the list of files contained in the directory path,
  * set filelist_len to the number of files in that list, and set longest
  * to the width in columns of the longest filename in that list, up to
- * COLS (but at least 15).  Assume path exists and is a directory. */
+ * COLS (but at least 16).  Assume path exists and is a directory. */
 void browser_init(const char *path, DIR *dir)
 {
     const struct dirent *nextdir;
@@ -472,7 +472,7 @@ void browser_init(const char *path, DIR *dir)
 
     filelist_len = i;
     rewinddir(dir);
-    longest += 10;
+    longest += 11;
 
     filelist = (char **)nmalloc(filelist_len * sizeof(char *));
 
@@ -498,8 +498,8 @@ void browser_init(const char *path, DIR *dir)
 
     if (longest > COLS)
        longest = COLS;
-    if (longest < 15)
-       longest = 15;
+    if (longest < 16)
+       longest = 16;
 }
 
 /* Determine the shortcut key corresponding to the values of kbinput
@@ -568,15 +568,24 @@ void browser_refresh(void)
     for (; i < filelist_len && line < editwinrows; i++) {
        struct stat st;
        const char *filetail = tail(filelist[i]);
-       char *disp = display_string(filetail, 0, longest, FALSE);
-       size_t foo_col;
+       size_t filetaillen = strlenpt(filetail), foo_col;
+       bool dots = (filetaillen > longest);
+               /* Do we put an ellipsis before the filename? */
+       char *disp = display_string(filetail, dots ? filetaillen -
+               longest + 11 : 0, longest, FALSE);
 
        /* Highlight the currently selected file or directory. */
        if (i == selected)
            wattron(edit, reverse_attr);
 
        blank_line(edit, line, col, longest);
-       mvwaddstr(edit, line, col, disp);
+
+       /* If dots is TRUE, we will display something like
+        * "...ename". */
+       if (dots)
+           mvwaddstr(edit, line, col, "...");
+       mvwaddstr(edit, line, dots ? col + 3 : col, disp);
+
        free(disp);
 
        col += longest;
@@ -621,7 +630,7 @@ void browser_refresh(void)
        foo_col = col - strlenpt(foo);
 
        mvwaddnstr(edit, line, foo_col, foo, actual_x(foo, longest -
-               foo_col) + 1);
+               foo_col));
 
        if (i == selected)
            wattroff(edit, reverse_attr);
index 15d613310034baa2d1e0067edc5f887b8b26f34f..bc6186b40777bf1b66a79ceaa9a8d8674e346033 100644 (file)
@@ -1975,6 +1975,7 @@ void titlebar(const char *path)
     assert(path != NULL || openfile->filename != NULL);
 
     wattron(topwin, reverse_attr);
+
     blank_titlebar();
 
     /* space has to be at least 4: two spaces before the version message,
@@ -2061,7 +2062,19 @@ void titlebar(const char *path)
        exppath = display_string(path, start_col, space, FALSE);
     }
 
-    if (!dots) {
+    /* If dots is TRUE, we will display something like "File:
+     * ...ename". */
+    if (dots) {
+       mvwaddnstr(topwin, 0, verlen - 1, prefix, actual_x(prefix,
+               prefixlen));
+       if (space <= -3 || newfie)
+           goto the_end;
+       waddch(topwin, ' ');
+       waddnstr(topwin, "...", space + 3);
+       if (space <= 0)
+           goto the_end;
+       waddstr(topwin, exppath);
+    } else {
        size_t exppathlen = newfie ? 0 : strlenpt(exppath);
            /* The length of the expanded filename. */
 
@@ -2072,17 +2085,6 @@ void titlebar(const char *path)
            waddch(topwin, ' ');
            waddstr(topwin, exppath);
        }
-    } else {
-       /* We will say something like "File: ...ename". */
-       mvwaddnstr(topwin, 0, verlen - 1, prefix, actual_x(prefix,
-               prefixlen));
-       if (space <= -3 || newfie)
-           goto the_end;
-       waddch(topwin, ' ');
-       waddnstr(topwin, "...", space + 3);
-       if (space <= 0)
-           goto the_end;
-       waddstr(topwin, exppath);
     }
 
   the_end: