Code

po: updated Dutch translation
[ncmpc.git] / src / wreadln.c
index b6579410a3bf5b9adbd1605042ae49cac8217887..c6dbda7a195b74d62772865b800401de095199e6 100644 (file)
@@ -1,7 +1,7 @@
 /* ncmpc (Ncurses MPD Client)
- * (c) 2004-2009 The Music Player Daemon Project
+ * (c) 2004-2010 The Music Player Daemon Project
  * Project homepage: http://musicpd.org
+
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
@@ -42,6 +42,7 @@
 #define KEY_CTRL_N   14
 #define KEY_CTRL_P   16
 #define KEY_CTRL_U   21
+#define KEY_CTRL_W   23
 #define KEY_CTRL_Z   26
 #define KEY_BCKSPC   8
 #define TAB          9
@@ -92,8 +93,7 @@ byte_to_screen(const gchar *data, size_t x)
 
        dup = g_strdup(data);
        dup[x] = 0;
-       p = locale_to_utf8(dup);
-       g_free(dup);
+       p = replace_locale_to_utf8(dup);
 
        width = utf8_width(p);
        g_free(p);
@@ -137,7 +137,7 @@ screen_to_bytes(const gchar *data, unsigned width)
 #endif
 }
 
-/** returns the screen colum where the cursor is located */
+/** returns the screen column where the cursor is located */
 static unsigned
 cursor_column(const struct wreadln *wr)
 {
@@ -405,12 +405,14 @@ _wreadln(WINDOW *w,
 
        /* turn off echo */
        noecho();
-       /* make shure the cursor is visible */
+       /* make sure the cursor is visible */
        curs_set(1);
        /* print prompt string */
-       if (prompt)
+       if (prompt) {
                waddstr(w, prompt);
-       /* retrive y and x0 position */
+               waddstr(w, ": ");
+       }
+       /* retrieve y and x0 position */
        getyx(w, wr.y, wr.x);
        /* check the x1 value */
        if (x1 <= wr.x || x1 > (unsigned)COLS)
@@ -461,7 +463,7 @@ _wreadln(WINDOW *w,
 #ifdef HAVE_GETMOUSE
                case KEY_MOUSE: /* ignore mouse events */
 #endif
-               case ERR: /* ingnore errors */
+               case ERR: /* ignore errors */
                        break;
 
                case TAB:
@@ -523,6 +525,20 @@ _wreadln(WINDOW *w,
                                wr.line[i] = '\0';
                        wr.cursor = 0;
                        break;
+               case KEY_CTRL_W:
+                       /* Firstly remove trailing spaces. */
+                       for (i = wr.cursor; i > 0 && wr.line[i-1] == ' '; i--)
+                       {
+                               cursor_move_left(&wr);
+                               wreadln_delete_char(&wr, wr.cursor);
+                       }
+                       /* Then remove word until next space. */
+                       for (; i > 0 && wr.line[i-1] != ' '; i--)
+                       {
+                               cursor_move_left(&wr);
+                               wreadln_delete_char(&wr, wr.cursor);
+                       }
+                       break;
                case 127:
                case KEY_BCKSPC:        /* handle backspace: copy all */
                case KEY_BACKSPACE:     /* chars starting from curpos */