]> git.wh0rd.org Git - nano.git/commitdiff
- General - New flag RELATIVECHARS to show column positino relative to the current...
authorChris Allegretta <chrisa@asty.org>
Fri, 25 Jan 2002 21:59:02 +0000 (21:59 +0000)
committerChris Allegretta <chrisa@asty.org>
Fri, 25 Jan 2002 21:59:02 +0000 (21:59 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1046 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
nano.c
nano.h
nanorc.sample
rcfile.c
winio.c

index d1d75e5b27ca83bd1dba614fe8e07d68c626ac96..a874444b39eaf234341575cbb581743ee6d51622 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 CVS code -
-
+- General
+       - New flag RELATIVECHARS to show column positino relative to
+         the current line instead of the current file.  New flag 
+         -C, --relative, changes to do_cursorpos().
 - po/ca.po, po/es.po:
        - Catalan and Spanish translation updates (Jordi).
 
diff --git a/nano.c b/nano.c
index b6eaf90ca0044bea0f636cb84b1591b7391b6840..c93cde08e8f595281f365bb1eb827beb9ccf257a 100644 (file)
--- a/nano.c
+++ b/nano.c
@@ -409,6 +409,9 @@ void usage(void)
     printf(_("Usage: nano [GNU long option] [option] +LINE <file>\n\n"));
     printf(_("Option           Long option             Meaning\n"));
 
+    printf
+       (_
+        (" -C          --relative              Show relative col position with ^C\n"));
 #ifndef NANO_SMALL
     printf
        (_
@@ -489,6 +492,7 @@ void usage(void)
 #else
     printf(_("Usage: nano [option] +LINE <file>\n\n"));
     printf(_("Option           Meaning\n"));
+    printf(_(" -C              Show relative col position with ^C\n"));
 #ifndef NANO_SMALL
     printf(_(" -D              Write file in DOS format\n"));
 #endif
@@ -2736,7 +2740,7 @@ int main(int argc, char *argv[])
        {"smooth", 0, 0, 'S'},
 #endif
        {"keypad", 0, 0, 'K'},
-
+       {"relative", 0, 0, 'C'},
        {0, 0, 0, 0}
     };
 #endif
@@ -2757,15 +2761,18 @@ int main(int argc, char *argv[])
 #endif /* ENABLE_NANORC */
 
 #ifdef HAVE_GETOPT_LONG
-    while ((optchr = getopt_long(argc, argv, "h?DFKMRST:Vabcefgijklmo:pr:s:tvwxz",
+    while ((optchr = getopt_long(argc, argv, "h?CDFKMRST:Vabcefgijklmo:pr:s:tvwxz",
                                 long_options, &option_index)) != EOF) {
 #else
     while ((optchr =
-           getopt(argc, argv, "h?DFKMRST:Vabcefgijklmo:pr:s:tvwxz")) != EOF) {
+           getopt(argc, argv, "h?CDFKMRST:Vabcefgijklmo:pr:s:tvwxz")) != EOF) {
 #endif
 
        switch (optchr) {
 
+       case 'C':
+           SET(RELATIVECHARS);
+           break;
 #ifndef NANO_SMALL
        case 'D':
            SET(DOS_FILE);
diff --git a/nano.h b/nano.h
index 26e10a6e9fcce69b966b0de7b8244a6e9eea3501..2cee58f54ec3d8ee0a7587cd9eb77c67e47c4f02 100644 (file)
--- a/nano.h
+++ b/nano.h
@@ -162,6 +162,7 @@ typedef struct colortype {
 #define SMOOTHSCROLL           (1<<23)
 #define DISABLE_CURPOS         (1<<24) /* Damn, we still need it */
 #define ALT_KEYPAD             (1<<25) /* Damn, we still need it */
+#define RELATIVECHARS          (1<<26)
 
 /* Control key sequences, changing these would be very very bad */
 
index 78628bd34cfd3cec503fb5a264d11ee0da271005..8be5eea2d074a15c8a06f16ad91b676a97ca3cdf 100644 (file)
@@ -8,6 +8,9 @@
 # Constantly update the cursor position
 # set const
 
+# Show column position relative to the current line, not the whole file
+# set relative
+
 # Use cut to end of line with ^K by default
 # set cut
 
index 56c66519126df56b1c28ebff513ff76c114fbf6c..491cb3081bb8c0ac37d5eca9b200ab0d6ad6bf2f 100644 (file)
--- a/rcfile.c
+++ b/rcfile.c
@@ -41,9 +41,9 @@
 #endif
 
 #ifndef DISABLE_WRAPJUSTIFY
-#define NUM_RCOPTS 19
+#define NUM_RCOPTS 20
 #else
-#define NUM_RCOPTS 18
+#define NUM_RCOPTS 19
 #endif
 
 /* Static stuff for the nanorc file */
@@ -70,7 +70,8 @@ rcoption rcopts[NUM_RCOPTS] = {
     {"suspend", SUSPEND},
     {"multibuffer", MULTIBUFFER},
     {"smooth", SMOOTHSCROLL},
-    {"keypad", ALT_KEYPAD}
+    {"keypad", ALT_KEYPAD},
+    {"relative", RELATIVECHARS}
 };
 
 static int errors = 0;
diff --git a/winio.c b/winio.c
index 38824d04f515554e92cfbf10c35a3460f9da1fed..e685e2d8d52bf5f0618da39dc264d1ad2f88b224 100644 (file)
--- a/winio.c
+++ b/winio.c
@@ -1586,32 +1586,47 @@ int do_cursorpos(int constant)
 {
     filestruct *fileptr;
     float linepct = 0.0, bytepct = 0.0;
-    long i = 0;
+    long i = 0, j = 0;
     static long old_i = -1, old_totsize = -1;
 
     if (current == NULL || fileage == NULL)
        return 0;
 
-    for (fileptr = fileage; fileptr != current && fileptr != NULL;
-        fileptr = fileptr->next)
-       i += strlen(fileptr->data) + 1;
-
-    if (fileptr == NULL)
-       return -1;
-
-    i += current_x;
-
     if (old_i == -1)
        old_i = i;
 
     if (old_totsize == -1)
        old_totsize = totsize;
 
-    if (totlines > 0)
-       linepct = 100 * current->lineno / totlines;
+    if (ISSET(RELATIVECHARS)) {
+
+       if (strlen(current->data) == 0)
+           bytepct = 0;
+       else
+           bytepct = 100 * current_x / strlen(current->data);
+
+       old_i = -1;
+       i = current_x;
+       j = strlen(current->data);
 
-    if (totsize > 0)
-       bytepct = 100 * i / totsize;
+    } else {
+       for (fileptr = fileage; fileptr != current && fileptr != NULL;
+            fileptr = fileptr->next)
+           i += strlen(fileptr->data) + 1;
+
+       if (fileptr == NULL)
+           return -1;
+
+       i += current_x;
+
+       j = totsize;
+
+       if (totsize > 0)
+           bytepct = 100 * i / totsize;
+    }
+
+    if (totlines > 0)
+        linepct = 100 * current->lineno / totlines;
 
 #ifdef DEBUG
     fprintf(stderr, _("do_cursorpos: linepct = %f, bytepct = %f\n"),
@@ -1624,7 +1639,7 @@ int do_cursorpos(int constant)
     if (!constant || (old_i != i || old_totsize != totsize)) {
        statusbar(_
                  ("line %d of %d (%.0f%%), character %ld of %ld (%.0f%%)"),
-                 current->lineno, totlines, linepct, i, totsize, bytepct);
+                 current->lineno, totlines, linepct, i, j, bytepct);
     }
 
     old_i = i;