#+TITLE: Rebox layer * Table of Contents :TOC_4_gh:noexport: - [[#description][Description]] - [[#features][Features]] - [[#install][Install]] - [[#layer][Layer]] - [[#configuration][Configuration]] - [[#styles-cycling][Styles cycling]] - [[#text-mode][Text mode]] - [[#style-templates][Style Templates]] - [[#standard-packaged-templates][Standard packaged templates]] - [[#comments][Comments]] - [[#additional-templates][Additional Templates]] - [[#key-bindings][Key bindings]] * Description This layer adds support for [[https://github.com/lewang/rebox2][rebox2]] package which is a minor-mode allowing to easily add ASCII text boxes to a buffer. A nice video demonstration by the package author can be found [[https://www.youtube.com/watch?v=53YeTdVtDkU][here]]. ** Features - Auto-wrap correctly in comments, - Auto-fill correctly in comments, - Boxes auto-adapt as text is inserted or deleted, - ~S-RET~ to continue a comment on the next line, - Kill/yank within the box, - Apparently works well with ancient =filladpt-mode= (see authors video). * Install ** Layer To use this configuration layer, add it to your =~/.spacemacs=. You will need to add =rebox= to the existing =dotspacemacs-configuration-layers= list in this file. ** Configuration *** Styles cycling Box styles are identified by numbers, it is possible to cycle through a list of styles using ~SPC x b n~. This list can be customized by setting the variable =rebox-style-loop=. #+BEGIN_SRC emacs-lisp (setq rebox-style-loop '(71 72 73)) #+END_SRC *** Text mode As text mode usage could surprise some users (e.g., when they enter M-q to fill a paragraph) =rebox= is not enabled by default in =text-mode=. To enable it you need to set the layer variable =rebox-enable-in-text-mode= to =t=. #+begin_src emacs-lisp (setq-default dotspacemacs-configuration-layers '( (rebox :variables rebox-enable-in-text-mode t))) #+end_src * Style Templates ** Standard packaged templates You can find the full list of templates in [[https://github.com/lewang/rebox2/blob/master/rebox2.el]["Box templates" section of =rebox2.el=]] *** Comments These templates are single line comments styles. A =#= is used here for illustration; however, it will work equally well if the comment character is different (e.g., lisp's =;= comment character). ** Additional Templates These templates are added by the Spacemacs layer. #+begin_src sh # # box style 71 # # ------------ # box style 72 # ------------ # ============ # box style 73 # ============ #-------------- # box style 74 #-------------- #--------------+ # box style 75 #--------------+ #============== # box style 76 #============== ## ## box style 81 ## ## ------------ ## box style 82 ## ------------ ## ============ ## box style 83 ## ============ ##-------------- ## box style 84 ##-------------- ##--------------+ ## box style 85 ##--------------+ ##============== ## box style 86 ##============== #+end_src * Key bindings *Note:* Use a numerical prefix argument to choose a specific style for instance ~86 SPC x b b~ to use the style 86 above. | Keybinding | Command | |-------------+-------------------------------------------------------------------| | ~SPC x b >~ | Move box to the right (point must be around left side of the box) | | ~SPC x b <~ | Move box to the left (point must be around left side of the box) | | ~SPC x b b~ | Draw next box defined in =rebox-style-loop= | | ~SPC x b B~ | Draw previous box defined in =rebox-style-loop= | | ~SPC x b c~ | Center box (point must be around left side of the box) | | ~S-RET~ | rebox-indent-new-line |