--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/chapters/40.markdown Sun Oct 30 22:54:05 2011 -0400
@@ -0,0 +1,80 @@
+Paths
+=====
+
+Vim is a text editor, and text editors (usually) work with text files. Text
+files live on filesystems, and to specify files we use paths. Vimscript has
+a few built-in utilities that can be extremely helpful when you need to work
+with paths.
+
+Absolute Paths
+--------------
+
+Sometimes it's handy to be able to get the absolute path of a certain file for
+use with external scripts. Run the following commands:
+
+ :echom expand('%')
+ :echom expand('%:p')
+ :echom fnamemodify('foo.txt', ':p')
+
+The first command displays the relative path of whatever file you're currently
+editing. `%` means "the current file". Vim supports a bunch of other strings
+you can use with `expand()` as well.
+
+The second command displays the full, absolute path of that file. The `:p` in
+the string tells Vim that you want the absolute path. There are a ton of other
+modifiers you can use.
+
+The third command displays an absolute path to the file `foo.txt` in the current
+directory, regardless of whether that file actually exists. `fnamemodify()` is
+a Vim function that's more flexible than `expand()` in that you can specify any
+file name, not just one of `expand()`'s special strings.
+
+Listing Files
+-------------
+
+You might also want to get a listing of files in a specific directory. Run the
+following command:
+
+ :echo globpath('.', '*')
+
+Vim will display all of the files and directories in the current directory. The
+`globpath()` function returns a string, with each name separated by a newline.
+To get a list you'll need to `split()` it yourself. Run this command:
+
+ :echo split(globpath('.', '*'), '\n')
+
+This time Vim displays a Vimscript list containing each path. If you've got
+newlines in your filenames you're on your own, sorry.
+
+`globpath()`'s wildcards work mostly as you would expect. Run the following
+command:
+
+ :echo split(globpath('.', '*.txt'), '\n')
+
+Vim displays a list of all `.txt` files in the current directory.
+
+You can recursively list files with `**`. Run this command:
+
+ :echo split(globpath('.', '**'), '\n')
+
+Vim will list all files and directories under the current directory.
+
+`globpath()` is *extremely* powerful. You'll learn more when you complete this
+chapter's exercises.
+
+Exercises
+---------
+
+Read `:help expand()`.
+
+Read `:help fnamemodify()`.
+
+Read `:help filename-modifiers`.
+
+Read `:help simplify()`.
+
+Read `:help resolve()`.
+
+Read `:help globpath()`.
+
+Read `:help wildcards`.
--- a/outline.org Sun Oct 30 21:27:12 2011 -0400
+++ b/outline.org Sun Oct 30 22:54:05 2011 -0400
@@ -37,8 +37,8 @@
** DONE dictionaries
** DONE toggling
** DONE functional programming
+** DONE paths
** TODO advanced regexes
-** TODO paths
** TODO exceptions
** TODO functions again
** TODO command!