diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,17 @@
 Brick changelog
 ---------------
 
+0.54
+----
+
+API changes:
+ * Exported `Brick.Widgets.FileBrowser.maybeSelectCurrentEntry` (thanks
+   Róman Joost)
+
+Other changes:
+ * Added handlers for the `Home` and `End` keys to
+   `Brick.Widgets.Edit.handleEditorEvent` (thanks Róman Joost)
+
 0.53
 ----
 
diff --git a/brick.cabal b/brick.cabal
--- a/brick.cabal
+++ b/brick.cabal
@@ -1,5 +1,5 @@
 name:                brick
-version:             0.53
+version:             0.54
 synopsis:            A declarative terminal user interface library
 description:
   Write terminal user interfaces (TUIs) painlessly with 'brick'! You
diff --git a/src/Brick/Widgets/Core.hs b/src/Brick/Widgets/Core.hs
--- a/src/Brick/Widgets/Core.hs
+++ b/src/Brick/Widgets/Core.hs
@@ -242,7 +242,7 @@
 
 -- | Make a widget from a string, but wrap the words in the input's
 -- lines at the available width using the default wrapping settings. The
--- input string should not contain escapes.
+-- input string should not contain escape sequences or carriage returns.
 --
 -- Unlike 'str', this is greedy horizontally.
 strWrap :: String -> Widget n
@@ -250,7 +250,8 @@
 
 -- | Make a widget from a string, but wrap the words in the input's
 -- lines at the available width using the specified wrapping settings.
--- The input string should not contain escapes.
+-- The input string should not contain escape sequences or carriage
+-- returns.
 --
 -- Unlike 'str', this is greedy horizontally.
 strWrapWith :: WrapSettings -> String -> Widget n
@@ -261,7 +262,7 @@
 
 -- | Make a widget from text, but wrap the words in the input's lines at
 -- the available width using the default wrapping settings. The input
--- text should not contain escapes.
+-- text should not contain escape sequences or carriage returns.
 --
 -- Unlike 'txt', this is greedy horizontally.
 txtWrap :: T.Text -> Widget n
@@ -269,7 +270,7 @@
 
 -- | Make a widget from text, but wrap the words in the input's lines at
 -- the available width using the specified wrapping settings. The input
--- text should not contain escapes.
+-- text should not contain escape sequences or carriage returns.
 --
 -- Unlike 'txt', this is greedy horizontally.
 txtWrapWith :: WrapSettings -> T.Text -> Widget n
@@ -296,7 +297,7 @@
 -- interface corruption will result since the terminal will likely
 -- render it as taking up more than a single column. The caller should
 -- replace tabs with the appropriate number of spaces as desired. The
--- reinput string should not contain escapes.
+-- input string should not contain escape sequences or carriage returns.
 str :: String -> Widget n
 str s =
     Widget Fixed Fixed $ do
@@ -322,7 +323,7 @@
 -- interface corruption will result since the terminal will likely
 -- render it as taking up more than a single column. The caller should
 -- replace tabs with the appropriate number of spaces as desired. The
--- reinput text should not contain escapes.
+-- input text should not contain escape sequences or carriage returns.
 txt :: T.Text -> Widget n
 txt = str . T.unpack
 
diff --git a/src/Brick/Widgets/Edit.hs b/src/Brick/Widgets/Edit.hs
--- a/src/Brick/Widgets/Edit.hs
+++ b/src/Brick/Widgets/Edit.hs
@@ -124,6 +124,8 @@
                   EvKey KLeft [] -> Z.moveLeft
                   EvKey KRight [] -> Z.moveRight
                   EvKey KBS [] -> Z.deletePrevChar
+                  EvKey KHome [] -> Z.gotoBOL
+                  EvKey KEnd [] -> Z.gotoEOL
                   _ -> id
         in return $ applyEdit f ed
 
diff --git a/src/Brick/Widgets/FileBrowser.hs b/src/Brick/Widgets/FileBrowser.hs
--- a/src/Brick/Widgets/FileBrowser.hs
+++ b/src/Brick/Widgets/FileBrowser.hs
@@ -67,6 +67,7 @@
 
   -- * Handling events
   , handleFileBrowserEvent
+  , maybeSelectCurrentEntry
 
   -- * Rendering
   , renderFileBrowser
@@ -631,6 +632,12 @@
         _ ->
             handleEventLensed b fileBrowserEntriesL handleListEvent e
 
+-- | If the browser's current entry is selectable according to
+-- @fileBrowserSelectable@, add it to the selection set and return.
+-- If not, and if the entry is a directory or a symlink targeting a
+-- directory, set the browser's current path to the selected directory.
+--
+-- Otherwise, return the browser state unchanged.
 maybeSelectCurrentEntry :: FileBrowser n -> EventM n (FileBrowser n)
 maybeSelectCurrentEntry b =
     case fileBrowserCursor b of
