about summary refs log blame commit diff stats
path: root/enumerate/enumerate.cc
blob: 02349213d9c53db5d595cd444eded6dbec4609d6 (plain) (tree)


































                                                                         
#include<cstdlib>
#include<dirent.h>
#include<vector>
using std::vector;
#include<string>
using std::string;
#include<iostream>
using std::cout;

int enumerate_files_in_cwd_until(string last_file);
string flag_value(const string& flag, int argc, const char* argv[]);

int main(int argc, const char* argv[]) {
  return enumerate_files_in_cwd_until(flag_value("--until", argc, argv));
}

int enumerate_files_in_cwd_until(string last_file) {
  dirent** files;
  int num_files = scandir(".", &files, NULL, alphasort);
  for (int i = 0; i < num_files; ++i) {
    string curr_file = files[i]->d_name;
    if (!isdigit(curr_file[0])) continue;
    if (!last_file.empty() && curr_file > last_file) break;
    cout << curr_file << '\n';
  }
  // don't bother freeing files
  return 0;
}

string flag_value(const string& flag, int argc, const char* argv[]) {
  for (int i = 1; i < argc-1; ++i)
    if (string(argv[i]) == flag)
      return argv[i+1];
  return "";
}
ed, make it run with the flags \fIflags\fR. Check the documentation for more information on flags. .\"----------------------------------------- .SH USAGE .\"----------------------------------------- .SS General Keybindings Many keybindings take an additional numeric argument. Type \fI5j\fR to move down 5 lines, \fI10<Space>\fR to mark 10 files or \fI3?\fR to read the third chapter of the documentation. .TP h, j, k, l Move left, down, up, right .TP ^D or J, ^U or K Move a half page down, up .TP H, L Move back and forward in the history .TP gg Move to the top .TP G Move to the bottom .TP ^R Reload everything .TP ^L Redraw the screen .TP S Open a shell in the current directory .TP yy Yank the selection. (mark the files as copied) .TP dd Cut the selection .TP pp Paste the copied/cut files. By default, this will not overwrite existing files. To overwrite them, use \fBpo\fR. .TP m\fIX\fR Create a bookmark with the name \fIX\fR .TP `\fIX\fR Move to the bookmark with the name \fIX\fR .TP n, N Find the next file, the previous file. You can define what to look for by typing c\fIX\fR. If nothing is specified, pressing n will get you to the newest file in the directory. .TP o\fIX\fR Change the sort method (like in mutt) .TP z\fIX\fR Change settings .TP f Quickly navigate by entering a part of the filename .TP Space Mark a file .TP v, V Toggle the mark-status of all files, unmark all files .TP / Open the search console .TP : Open the command console .TP ? Opens the help screen with more keybindings and documentation .\"----------------------------------------- .SS Keybindings for using Tabs Tabs are used to work in different directories in the same Ranger instance. .TP g\fIN\fR Open a tab. N has to be a number from 0 to 9. If the tab doesn't exist yet, it will be created. .TP gn, ^N Create a new tab. .TP gt, gT Go to the next or previous tab. You can also use TAB and SHIFT+TAB. .TP gc, ^W Close the current tab. The last tab cannot be closed. .P .\"----------------------------------------- .SS Mouse Usage .TP Left Mouse Button Click on something and you'll move there. To run a file, "enter" it, like a directory, by clicking on the preview. .TP Right Mouse Button Enter a directory .TP Scroll Wheel Scroll .\"----------------------------------------- .SS Commands .TP :delete Destroy all files in the selection with a roundhouse kick. Ranger will ask for a confirmation if you attempt to delete multiple (marked) files or non-empty directories. .TP :rename \fInewname\fR Rename the current file. Also try the keybinding A for appending something to a file name. .TP :quit Quit ranger. The current directory will be bookmarked as ' so you can re-enter it by typing `` or '' the next time you start ranger. .\"----------------------------------------- .SH TIPS .SS Change the directory after exit A script like this in your bashrc would make you change the directory of your parent shell after exiting ranger: .nf ranger() { command ranger --fail-unless-cd $@ && cd "$(grep \\^\\' ~/.config/ranger/bookmarks | cut -b3-)" } .\"----------------------------------------- .SH CONFIGURATION The files in .B ranger/defaults/ can be copied into your configuration directory (by default, this is ~/.config/ranger) and customized according to your wishes. Most files don't have to be copied completely though: Just define those settings you want to add or change and they will override the defauls. Colorschemes can be placed in ~/.config/ranger/colorschemes. .P All configuration is done in Python. Each configuration file should contain sufficient documentation. .\"----------------------------------------- .SH COPYRIGHT Copyright \(co 2009, 2010 Roman Zimbelmann .P 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 3 of the License, or (at your option) any later version. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. .\"----------------------------------------- .SH SEE ALSO The project page: .RB < http://savannah.nongnu.org/projects/ranger > .P The mailing list: .RB < http://savannah.nongnu.org/mail/?group=ranger > .\"----------------------------------------- .SH BUGS Please report them here and include as much relevant information as possible: .P .RB < http://savannah.nongnu.org/bugs/?group=ranger >