about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorhut <hut@lavabit.com>2009-06-22 00:19:56 +0200
committerhut <hut@lavabit.com>2009-06-22 00:19:56 +0200
commit1575c43aa3a2a8e6bba36d65920778ef52e7584d (patch)
treed0446886adb103d036455693353b0561a4c94707
parent04ff0a7f1716e3cc8d2a5be347543bed5fda7e3a (diff)
downloadranger-1575c43aa3a2a8e6bba36d65920778ef52e7584d.tar.gz
new help screen, overview of bookmarks
-rw-r--r--TODO1
-rw-r--r--code/draw.rb55
-rw-r--r--code/help.rb229
3 files changed, 250 insertions, 35 deletions
diff --git a/TODO b/TODO
index 5d521fbb..b24deadc 100644
--- a/TODO
+++ b/TODO
@@ -1,4 +1,3 @@
-an overview of all bookmarked directories
 fix bars!!
 a key that moves through the files in a certian order, like creation-time, newest first.
 if the directory content changes, eg files are deleted, delete those files from selection as well.
diff --git a/code/draw.rb b/code/draw.rb
index 45c654a8..5a6380e7 100644
--- a/code/draw.rb
+++ b/code/draw.rb
@@ -179,42 +179,29 @@ module Fm
 
 		if @buffer =~ /^block/
 			screensaver
-		elsif @buffer == '?'
+		elsif @buffer =~ /^\?/
 			cleari
-			puti 0, "      - - - Help - - -"
-			puti 2, "   h/j/k/l: Movement    J/K: fast Movement"
-			puti 3, "   H: Descend directory with respect to symlinks"
-			puti 4, "   L: Wait for <Enter> after execution of a program"
-			puti 6, "   t: Toggle Option     S: Change Sorting"
-			puti 7, "   E: Edit file         s: Enter Shell"
-			puti 8, "   rmdir: Remove whole dir  dD: Delete file or empty dir"
-			puti 9, "   dd: Move file to ~/.trash and memorize it's new path"
-			puti 10,"   yy: Memorize path    p: Copy memorized file here"
-			puti 11,"   mv<place>: move file to place  mkdir<name>: obvious"
-			puti 12,"   mX: Bookmark dir     'X: Enter bookmarked dir"
-			puti 13,"   '': Enter last visited dir (note: ' and ` are equal)"
-			puti 13,"   !<command> executes command"
-			puti 15,"   To interrupt current operations: <Ctrl-C>"
-			puti 16,"   To quit: q / ZZ / <Ctrl-D> / <Ctrl-C><Ctrl-C> (twice in a row)"
-			puti 18,"   Press one of those keys for more information: g f"
-		elsif @buffer == '?f'
-			cleari
-			puti 0, "      - - - Help - - -"
-			puti 2, "   f<regexp> or /<regexp> searches for pattern and presses l"
-			puti 3, "       when a matching file is found."
-			puti 4, "       Pressing L in this mode is like pressing l outside"
-			puti 6, "   F<regexp> like f but stay in this mode until <esc> is pressed"
-		elsif @buffer == '?g'
+			puti 0, "   - - - Help - - -"
+			if text = HELP[@buffer[1..-1]]
+				i = 2
+				text.each_line do |l|
+					break if i == lines
+					puti(i, l)
+					i += 1
+				end
+			end
+		elsif @buffer =~ /^o|`|'$/
 			cleari
-			puti 0, "      - - - Help - - -"
-			puti 2, "   gg: go to top"
-			puti 3, "   G:  go to bottom"
-			puti 4, "   g0: go to /"
-			puti 5, "   gu: go to /usr/"
-			puti 6, "   gm: go to /media/"
-			puti 7, "   ge: go to /etc/"
-			puti 8, "   gh: go to ~/"
-			puti 9, "   gt: go to ~/.trash/"
+			i = 0
+			case @buffer
+			when 'o'; puti 0, "   move files to:"
+			when '`', "'"; puti 0, "   go to:"
+			end
+			for key,val in @memory
+				next if key == "'"
+				break if key == lines
+				puti i+=1, 2, "#{key} => #{val}"
+			end
 		else
 			@pwd.recheck_stuff()
 			cf = currentfile
diff --git a/code/help.rb b/code/help.rb
new file mode 100644
index 00000000..77d93e1d
--- /dev/null
+++ b/code/help.rb
@@ -0,0 +1,229 @@
+module Fm
+	def self.get_help()
+		helptext = <<END
+
+
+
+
+	key:
+	Press a key to view the topic:
+		?     quick summary
+		m     basic movement and control
+		g     quickly switching directories
+		f     filtering and searching
+		l     running files in different ways
+		c     creating, deleting, moving, copying
+		o     more commands that don't fit elsewhere
+
+   To interrupt current operations: <Ctrl-C>
+   To quit: Q or ZZ or <Ctrl-D> or <Ctrl-C><Ctrl-C> (quickly twice in a row)
+
+
+	And always take care of which keys you press. This tool not only
+	makes it easy to access files but also to destroy them.
+
+
+
+
+
+	key:?
+	Movement:                h,j,k,l or arrow-keys
+	Run file or enter dir:   l or RIGHT or ENTER
+	Move 1 directory back:   h or LEFT or BACKSPACE
+
+	R:      Refresh the view     <Ctrl-R>:    Reload everything
+	Space:  Mark a file.  v:  Reverse markings.  V:  Clear markings
+	Bookmark directories with mX and re-enter them with 'X
+
+	To search, type / or f followed by the text
+	If you use f, the first non-ambiguous match will be entered/run
+
+	mkdir<name> or touch<name> to create dirs or files
+
+	move file to ~/.trash:     dd
+	delete file forever:       dfd
+	delete whole dir forever:  delete
+
+	copy file:     cp or yy
+	cut file:      cut
+	paste file:    p
+	move/rename:   mv<name> or cw<name>
+
+
+
+
+
+
+	key:m
+	R           refresh the view
+	<Ctrl-R>    completely reloads the file memory
+
+	k or UP     move 1 item up
+	j or DOWN   move 1 item down
+	K           move half the screen up
+	J           move half the screen down
+	PAGE UP     move the whole screen up
+	PAGE DOWN   move the whole screen down
+	HOME or gg  move to the top
+	END or G    move to the bottom
+
+	h or LEFT or BACKSPACE  move one directory back
+	l or RIGHT or ENTER     enter the directory or run the file.
+	H                       like h, but if if pwd is on a symlink,
+                           you get to the original location
+
+
+
+
+
+	key:g
+	m<key>   bookmark this directory
+	um<key>  un-marks the specified bookmark
+	'        shows an overview of all bookmarks
+	'<key>   re-enter bookmarked directory.
+	TAB      equivalent to ''
+
+	the quote ', backquote ` and the command "go" do the same
+
+   g0    go to /
+   gu    go to /usr/
+   gm    go to /media/
+   gn    go to /mnt/
+   ge    go to /etc/
+   gs    go to /srv/
+   gh    go to ~/
+   gt    go to ~/.trash/
+
+	all of this commands, and also quitting the program, will save
+	the old directory at ` so you can re-enter it by typing `` or '' or TAB
+
+
+
+
+
+
+	key:f
+	/<expr>    Search for a "regular expression"
+	f<expr>    Like / but enters/runs the first non-ambiguous match
+	F<expr>    Shows only files which match the regular expression.
+	n or N     goes to the next or previous match.
+	           if you search for nothing, n goes to the newest file.
+
+	What is a regular expression:
+	A very flexible way of defining patterns in text. By writing
+	Special characters, you can specify what to search:
+		.       matches any character
+		\\d      matches any digit
+		\\w      matches any letter (ascii)
+		\\s      matches any whitespace
+		|       either the preceding or next expression may match
+		{m,n}   at least m and at most n repetitions of the preceding
+		*       zero or more repetitions of the preceding
+		+       one or more repetitions of the preceding
+		?       at most one repetition of the preceding
+		^ or $  the beginning or the end of the string
+
+	More at: http://www.ruby-doc.org/docs/UsersGuide/rg/regexp.html
+
+	If you're just searching or a simple string, it's usually enough to write
+	it down. To escape the special characters, precede them with a \\
+
+
+
+
+
+
+
+	key:l
+	Space:  Mark a file.  v:  Reverse markings   V:  Clear markings
+
+	l or RIGHT   Enter the directory or run the file in mode 0, flag "a"
+   L            Run in a different way: mode 1, no flags
+	r<n><f>r     Run with mode <n> and flags <f>. example: r3adr
+	             Default mode: 0, default flags: no flags at all
+
+	What are flags:
+	Letters that specify details on how ranger should run the program.
+	Capital letters reverse the function. use as many flags as you want.
+
+		a        Run the selection rather than just the highlighted file
+		t        Run in a detached terminal (implies d)
+		d or e   Run as a detached process inside the current terminal
+		w        Wait for a <enter> after execution of the programm
+
+	What are modes:
+	A number from 0 to infinity that specifies what shell command should
+	be executed, since most file types have different ways to be run.
+
+	You can set up the commands for each type in the file  ranger/data/apps.rb
+
+
+
+
+
+
+	
+	key:c
+	the word "selection" means
+	if you marked something: all marked items and NOT the highlighted item
+	otherwise: the selected item.
+	
+	mkdir<name>   creates directory
+	touch<name>   creates file
+
+   yy or cp    Memorize selection
+	cut         like cp, but move instead of copy if "p" is pressed
+	p           Copy memorized files here.
+	o<key>      Copy selection to the bookmarked dir (see ?g)
+
+	use deleteing commands with caution!
+   dd:          Move selection to ~/.trash and memorize it's new path
+	             (so it can be pasted with p)
+	dfd:         Deletes the selection or empty directory
+	delete:      Remove whole selection with all contents
+
+   mv<name>:    move/rename file to <name>
+	cw<name>:    same as mv
+	A:           write "cw <name of current file>" to the key buffer
+
+
+
+
+
+
+
+	key:o
+	t            Toggle Option
+	S            Change Sorting
+	E            Edit file
+	s            Enter Shell
+   !<command>   Executes command
+   !!<command>  Executes command and waits for enter-press afterwards
+	term         Runs a detached terminal in the current directory
+	block        Blocks the program, until you write: stop
+	- or =       decreases or increases audio volume (alsa)
+
+
+
+
+
+
+
+
+
+END
+		hash = {}
+		current = nil
+		helptext.gsub("\t", "   ").each_line do |l|
+			if l =~ /^\s*key:(.*)$/
+				current = hash[$1] = ""
+			elsif current
+				current << l
+			end
+		end
+		return hash
+	end
+
+	HELP = get_help
+end
+