######################################################################
 
 function selector-history () {
-    selector --bash -u -c 7,4,0,3 -q <(history)
+    selector --bash -j -u -c 7,4,0,3 -q <(history)
 }
 
 ######################################################################
 
 function selector-cd-search () {
     PATH_TEMP=$(mktemp /tmp/selector-cd-path.XXXXXX)
-    selector -u -t "cd" -l 1000 -d -i -c 7,2,0,3 -o ${PATH_TEMP} -q ${SELECTOR_CD_HISTORY}
+    selector -j -u -t "cd" -l 1000 -d -i -c 7,2,0,3 -o ${PATH_TEMP} -q ${SELECTOR_CD_HISTORY}
     NEW_PATH="$(cat ${PATH_TEMP} | sed -e 's!~!'${HOME}'!')"
     if [[ -s "${NEW_PATH}" ]]; then
         selector-cd "$(cat ${PATH_TEMP} | sed -e 's!^~!'${HOME}'!')"
 
 char *title = 0;
 int error_flash = 0;
 int upper_caps_makes_case_sensitive = 0;
+int show_long_lines = 0;
 
 int attr_modeline, attr_focus_line, attr_error;
 
   fprintf(out, "         start in regexp mode\n");
   fprintf(out, " -a, --case-sensitive\n");
   fprintf(out, "         start in case sensitive mode\n");
+  fprintf(out, " -j, --show-long-lines\n");
+  fprintf(out, "         print three dots at the end of truncated lines\n");
   fprintf(out, " -u, --upper-case-makes-case-sensitive\n");
   fprintf(out, "         using an upper case character in the matching string makes\n");
   fprintf(out, "         the matching case-sensitive\n");
           /* Highlight the highlighted line ... */
 
           if(l == new_focus_line) {
-            while(k < console_width) {
-              buffer[k++] = ' ';
+            if(show_long_lines && k >= console_width) {
+              if(console_width >= 4) {
+                buffer[console_width - 4] = ' ';
+                buffer[console_width - 3] = '.';
+                buffer[console_width - 2] = '.';
+                buffer[console_width - 1] = '.';
+              }
+            } else {
+              while(k < console_width) {
+                buffer[k++] = ' ';
+              }
             }
             attron(attr_focus_line);
             addnstr(buffer, console_width);
             attroff(attr_focus_line);
           } else {
-            buffer[k++] = '\n';
-            buffer[k++] = '\0';
+            if(show_long_lines && k >= console_width) {
+              if(console_width >= 4) {
+                buffer[console_width - 4] = ' ';
+                buffer[console_width - 3] = '.';
+                buffer[console_width - 2] = '.';
+                buffer[console_width - 1] = '.';
+              }
+            } else {
+              buffer[k++] = '\n';
+              buffer[k++] = '\0';
+            }
             /* clrtoeol(); */
             addnstr(buffer, console_width);
           }
   { "remove-duplicates", no_argument, 0, 'd' },
   { "regexp", no_argument, 0, 'e' },
   { "case-sensitive", no_argument, 0, 'a' },
+  { "show-long-lines", no_argument, 0, 'j'},
   { "upper-case-makes-case-sensitive", no_argument, 0, 'u' },
   { "title", 1, 0, 't' },
   { "number-of-lines", 1, 0, 'l' },
 
   strcpy(output_filename, "");
 
-  while ((c = getopt_long(argc, argv, "o:s:x:vwmqf:ibzdeaunt:l:c:-h",
+  while ((c = getopt_long(argc, argv, "o:s:x:vwmqf:ibzdeajunt:l:c:-h",
                           long_options, NULL)) != -1) {
 
     switch(c) {
       case_sensitive = 1;
       break;
 
+    case 'j':
+      show_long_lines = 1;
+      break;
+
     case 'u':
       upper_caps_makes_case_sensitive = 1;
       break;