about summary refs log tree commit diff stats
path: root/home-manger
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--home-manger/latexindent/default.nix16
-rw-r--r--home-manger/latexindent/indentconfig.yaml2
-rw-r--r--home-manger/latexindent/mysettings.yaml672
3 files changed, 690 insertions, 0 deletions
diff --git a/home-manger/latexindent/default.nix b/home-manger/latexindent/default.nix
new file mode 100644
index 00000000..657382ca
--- /dev/null
+++ b/home-manger/latexindent/default.nix
@@ -0,0 +1,16 @@
+{
+  config,
+  pkgs,
+  ...
+}: {
+  home-manager.xdg.configFile."latexindent/indentconfig.yaml" = {
+    target = "latexindent/indentconfig.yaml";
+    source = "./indentconfig.yaml";
+  };
+  home-manager.xdg.configFile."latexindent/mysettings.yaml" = {
+    target = "latexindent/mysettings.yaml";
+    source = "./mysettings.yaml";
+  };
+}
+# vim: ts=2
+
diff --git a/home-manger/latexindent/indentconfig.yaml b/home-manger/latexindent/indentconfig.yaml
new file mode 100644
index 00000000..d67351f3
--- /dev/null
+++ b/home-manger/latexindent/indentconfig.yaml
@@ -0,0 +1,2 @@
+paths:
+- /home/dt/.config/latexindent/mysettings.yaml
diff --git a/home-manger/latexindent/mysettings.yaml b/home-manger/latexindent/mysettings.yaml
new file mode 100644
index 00000000..9a0f8b2f
--- /dev/null
+++ b/home-manger/latexindent/mysettings.yaml
@@ -0,0 +1,672 @@
+# defaultSettings.yaml for latexindent.pl, version 3.19.1, 2022-12-04
+#                      a script that aims to
+#                      beautify .tex, .sty, .cls files
+#
+# (or latexindent.exe if you're on Windows)
+#
+#---------------------------------------------------------------------------------------
+# 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.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# See http://www.gnu.org/licenses/.
+#
+# Chris Hughes, 2017
+#
+# For all communication, please visit: https://github.com/cmhughes/latexindent.pl
+#
+#---------------------------------------------------------------------------------------
+# You should feel encouraged to change anything you like in these settings, but
+# it would probably be better to have your own user settings
+# files somewhere else - remember that this file may be overwritten
+# when you update your tex distribution. Please see the manual linked from:
+#
+#       https://github.com/cmhughes/latexindent.pl
+#
+# for details of how to create and configure your own settings files.
+#
+# Please read the manual (linked from above) first to understand what each switch does.
+#
+#---------------------------------------------------------------------------------------
+
+# latexindent can be called to act on a file without using the file's extension,
+# e.g, simply
+#       latexindent myfile
+# in which case the choice of file extension is chosen
+# according to the choices made in fileExtensionPreference
+# Other file extensions can be added.
+fileExtensionPreference:
+    .tex: 1
+    .sty: 2
+    .cls: 3
+    .bib: 4
+
+# default file extension of backup file (if -w switch is active)
+# for example, if your .tex file is called
+#       myfile.tex
+# and you specify the backupExtension as BACKUP.bak then your
+# backup file will be
+#       myfileBACKUP.bak
+backupExtension: .bak
+
+# only one backup per file:
+#   - if onlyOneBackUp is 0 then, as a safety measure,
+#     the number on the extension increments by 1 each time:
+#
+#           myfile.bak0, myfile.bak1, myfile.bak2
+#   - if you set onlyOnebackUp to 1, then the backup file will
+#     be overwritten each time (not recommended until you trust the script)
+onlyOneBackUp: 0
+
+# some users may want a finite number of backup files,
+# say at most 3; in which case, they can change this maxNumberOfBackUps.
+#
+# If maxNumberOfBackUps is set to 0 (or less) then infinitely
+# many backups are possible, unless onlyOneBackUp is switched on
+maxNumberOfBackUps: 0
+
+# some users may wish to cycle through back up files.
+#
+# for example, with maxNumberOfBackUps: 4, they may
+# wish to delete the oldest back up file, and keep only the most recent.
+#
+#    copy myfile.bak1 to myfile.bak0
+#    copy myfile.bak2 to myfile.bak1
+#    copy myfile.bak3 to myfile.bak2
+#    copy myfile.bak4 to myfile.bak3
+#
+# the back up will be written to myfile.bak4
+cycleThroughBackUps: 0
+
+# preferences for information displayed in the log file
+logFilePreferences:
+    showEveryYamlRead: 1
+    showAmalgamatedSettings: 0
+    showDecorationStartCodeBlockTrace: 0
+    showDecorationFinishCodeBlockTrace: 0
+    endLogFileWith: '--------------'
+    showGitHubInfoFooter: 1
+    Dumper:
+      Terse: 1
+      Indent: 1
+      Useqq: 1
+      Deparse: 1
+      Quotekeys: 0
+      Sortkeys: 1
+      Pair: " => "
+
+#  verbatim environments specified
+#  in this field will not be changed at all!
+verbatimEnvironments:
+    verbatim: 1
+    lstlisting: 1
+    minted: 1
+
+#  verbatim commands such as \verb! body !, \lstinline$something else$
+verbatimCommands:
+    verb: 1
+    lstinline: 1
+
+#  no indent blocks (not necessarily verbatim
+#  environments) which are marked as %\begin{noindent}
+#  or anything else that you detail in the following
+noIndentBlock:
+    noindent: 1
+    cmhtest: 1
+
+# \begin{document} and \end{document} are treated differently
+# by latexindent within filecontents environments
+fileContentsEnvironments:
+    filecontents: 1
+    filecontents*: 1
+
+# indent preamble
+indentPreamble: 1
+
+# assume no preamble in cls, sty, by default
+lookForPreamble:
+    .tex: 1
+    .sty: 0
+    .cls: 0
+    .bib: 0
+
+# some preambles can contain \begin and \end statements
+# that are not in their 'standard environment block', for example,
+# consider the following key = values:
+#    preheadhook={\begin{mdframed}[style=myframedstyle]},
+#    postfoothook=\end{mdframed},
+preambleCommandsBeforeEnvironments: 0
+
+# default value of indentation
+defaultIndent: "    "
+
+# remove trailing whitespace from all lines
+removeTrailingWhitespace:
+    beforeProcessing: 0
+    afterProcessing: 1
+
+# name of code blocks that should have their body aligned at ampersand delimiters
+lookForAlignDelims:
+   tabular:
+      delims: 1
+      alignDoubleBackSlash: 1
+      spacesBeforeDoubleBackSlash: 1
+      multiColumnGrouping: 0
+      alignRowsWithoutMaxDelims: 1
+      spacesBeforeAmpersand: 1
+      spacesAfterAmpersand: 1
+      justification: left
+      alignFinalDoubleBackSlash: 0
+      dontMeasure: 0
+      delimiterRegEx: '(?<!\\)(&)'
+      delimiterJustification: left
+      lookForChildCodeBlocks: 1
+   tabularx:
+      delims: 1
+   longtable: 1
+   tabu: 1
+   array: 1
+   matrix: 1
+   listabla: 1
+   # amsmath
+   align: 1
+   align*: 1
+   alignat: 1
+   alignat*: 1
+   aligned: 1
+   bmatrix: 1
+   Bmatrix: 1
+   cases: 1
+   flalign: 1
+   flalign*: 1
+   pmatrix: 1
+   vmatrix: 1
+   Vmatrix: 1
+   # mathtools
+   cases*: 1
+   dcases: 1
+   dcases*: 1
+   rcases: 1
+   rcases*: 1
+   drcases: 1
+   drcases*: 1
+   # nicematrix
+   NiceTabular: 1
+   NiceMatrix: 1
+   pNiceMatrix: 1
+   bNiceMatrix: 1
+   BNiceMatrix: 1
+   vNiceMatrix: 1
+   VNiceMatrix: 1
+   NiceArray: 1
+   pNiceArrayC: 1
+   bNiceArrayC: 1
+   BNiceArrayC: 1
+   vNiceArrayC: 1
+   VNiceArrayC: 1
+   NiceArrayCwithDelims: 1
+   pNiceArrayRC: 1
+   bNiceArrayRC: 1
+   BNiceArrayRC: 1
+   vNiceArrayRC: 1
+   VNiceArrayRC: 1
+   NiceArrayRCwithDelims: 1
+   # tabularray
+   tblr: 1
+   longtblr: 1
+   talltblr: 1
+
+# if you want the script to look for \item commands
+# and format it, as follows (for example),
+#       \begin{itemize}
+#           \item content here
+#                 next line is indented
+#                 next line is indented
+#           \item another item
+#       \end{itemize}
+# then populate indentAfterItems. See also itemNames
+indentAfterItems:
+    itemize: 1
+    itemize*: 1
+    enumerate: 1
+    enumerate*: 1
+    description: 1
+    description*: 1
+    list: 1
+
+# if you want to use other names for your items (for example, \part)
+# then populate them here; note that you can trick latexindent.pl
+# into indenting all kinds of commands (within environments specified in
+# indentAfterItems) using this technique.
+itemNames:
+    item: 1
+    myitem: 1
+
+# specialBeginEnd is, by default, mathmode focus, although
+# there's no restrictions
+specialBeginEnd:
+    displayMath:
+        begin: '\\\['
+        end: '\\\]'
+        lookForThis: 1
+    inlineMath:
+        begin: '(?<!\$)(?<!\\)\$(?!\$)'
+        end: '(?<!\\)\$(?!\$)'
+        lookForThis: 1
+    displayMathTeX:
+        begin: '\$\$'
+        end: '\$\$'
+        lookForThis: 1
+    specialBeforeCommand: 0
+
+# if you want to add indentation after
+# a heading, such as \part, \chapter, etc
+# then populate it in here - you can add
+# an indent rule to indentRules if you would
+# like something other than defaultIndent
+#
+# you can also change the level if you like,
+# or add your own title command
+indentAfterHeadings:
+    part:
+       indentAfterThisHeading: 0
+       level: 1
+    chapter:
+       indentAfterThisHeading: 0
+       level: 2
+    section:
+       indentAfterThisHeading: 0
+       level: 3
+    subsection:
+       indentAfterThisHeading: 0
+       level: 4
+    subsection*:
+       indentAfterThisHeading: 0
+       level: 4
+    subsubsection:
+       indentAfterThisHeading: 0
+       level: 5
+    paragraph:
+       indentAfterThisHeading: 0
+       level: 6
+    subparagraph:
+       indentAfterThisHeading: 0
+       level: 7
+
+# maximum indentation, off by default
+maximumIndentation: -1
+
+# if you don't want to have additional indentation
+# in a code block, then add it to noAdditionalIndent; note that
+# code blocks in this field will inherit
+# the *current* level of indentation they just won't
+# get any *additional* indentation
+noAdditionalIndent:
+    myexample: 0
+    mydefinition: 0
+    problem: 0
+    exercises: 0
+    mysolution: 0
+    foreach: 0
+    widepage: 0
+    comment: 0
+    document: 0
+    frame: 0
+
+# if you have indent rules for particular code blocks
+# then you can populate them in indentRules; for example, you might just want
+# to use a space " " or maybe a double tab "        "
+indentRules:
+   myenvironment: "        "
+   anotherenvironment: "                "
+   chapter: " "
+   section: " "
+   item: "      "
+   myitem: "        "
+
+# set noAdditionalIndent globally for codeblocks
+noAdditionalIndentGlobal:
+    environments: 0
+    commands: 0
+    optionalArguments: 0
+    mandatoryArguments: 0
+    ifElseFi: 0
+    items: 0
+    keyEqualsValuesBracesBrackets: 0
+    namedGroupingBracesBrackets: 0
+    UnNamedGroupingBracesBrackets: 0
+    specialBeginEnd: 0
+    afterHeading: 0
+    filecontents: 0
+
+# set indentRules globally for codeblocks; these need
+# to be horizontal spaces, if they are to be used
+indentRulesGlobal:
+    environments: 0
+    commands: 0
+    optionalArguments: 0
+    mandatoryArguments: 0
+    ifElseFi: 0
+    items: 0
+    keyEqualsValuesBracesBrackets: 0
+    namedGroupingBracesBrackets: 0
+    UnNamedGroupingBracesBrackets: 0
+    specialBeginEnd: 0
+    afterHeading: 0
+    filecontents: 0
+
+# command code block details
+commandCodeBlocks:
+    roundParenthesesAllowed: 1
+    stringsAllowedBetweenArguments:
+      -
+        amalgamate: 1
+      - 'node'
+      - 'at'
+      - 'to'
+      - 'decoration'
+      - '\+\+'
+      - '\-\-'
+      - '\#\#\d'
+    commandNameSpecial:
+      -
+        amalgamate: 1
+      - '@ifnextchar\['
+
+# change dos line breaks into unix
+dos2unixlinebreaks: 1
+
+# modifyLineBreaks will only be searched if the -m
+# switch is active
+#
+# poly-switch examples:
+#
+#    BeginStartsOnOwnLine:
+#       modify line breaks before a begin statement
+#
+#       when set to -1, e.g
+#               some text some text
+#               \begin{myenvironment}
+#           will be changed to
+#               some text some text \begin{myenvironment}
+#       when set to 0, the switch is ignored
+#       when set to 1, e.g
+#               some text some text \begin{myenvironment}
+#           will be changed to
+#               some text some text
+#               \begin{myenvironment}
+#       when set to 2, e.g
+#               some text some text \begin{myenvironment}
+#           will be changed to
+#               some text some text%
+#               \begin{myenvironment}
+#       when set to 3, e.g
+#               some text some text \begin{myenvironment}
+#           will be changed to
+#               some text some text
+#
+#               \begin{myenvironment}
+#
+#    BodyStartsOnOwnLine:
+#       modify line breaks before the beginning of the body
+#
+#       when set to -1, e.g
+#               \begin{myenv}
+#                   body text body text
+#           will be changed to
+#               \begin{myenv}body text body text
+#       when set to 0, the switch is ignored
+#       when set to 1, e.g
+#               \begin{myenv}body text body text
+#           will be changed to
+#               \begin{myenv}
+#                   body text body text
+#       when set to 2, e.g
+#               \begin{myenv}body text body text
+#           will be changed to
+#               \begin{myenv}%
+#                   body text body text
+#       when set to 3, e.g
+#               \begin{myenv}body text body text
+#           will be changed to
+#               \begin{myenv}
+#
+#                   body text body text
+#
+#    EndStartsOnOwnLine:
+#       modify line breaks before the end statement
+#
+#       when set to -1, e.g
+#               some text some text
+#               \end{myenvironment}
+#           will be changed to
+#               some text some text \end{myenvironment}
+#       when set to 0, the switch is ignored
+#       when set to 1, e.g
+#               some text some text \end{myenvironment}
+#           will be changed to
+#               some text some text
+#               \end{myenvironment}
+#       when set to 2, e.g
+#               some text some text \end{myenvironment}
+#           will be changed to
+#               some text some text%
+#               \end{myenvironment}
+#       when set to 3, e.g
+#               some text some text \end{myenvironment}
+#           will be changed to
+#               some text some text
+#
+#               \end{myenvironment}
+#
+#    EndFinishesWithLineBreak:
+#       modify line breaks after the end statement
+#
+#       when set to -1, e.g
+#               \end{myenvironment}
+#               some text some text
+#           will be changed to
+#                   \end{myenvironment}some text some text
+#       when set to 0, the switch is ignored
+#       when set to 1, e.g
+#               \end{myenvironment}some text some text
+#           will be changed to
+#                   \end{myenvironment}
+#                   some text some text
+#       when set to 2, e.g
+#               \end{myenvironment}some text some text
+#           will be changed to
+#                   \end{myenvironment}%
+#                   some text some text
+#       when set to 3, e.g
+#               \end{myenvironment}some text some text
+#           will be changed to
+#                   \end{myenvironment}
+#
+#                   some text some text
+#
+# you can specify settings on a per-name basis
+modifyLineBreaks:
+    preserveBlankLines: 1
+    condenseMultipleBlankLinesInto: 1
+    oneSentencePerLine:
+        manipulateSentences: 0
+        removeSentenceLineBreaks: 1
+        multipleSpacesToSingle: 1
+        textWrapSentences: 0   # setting to 1 disables main textWrap routine
+        sentenceIndent: ""
+        sentencesFollow:
+            par: 1
+            blankLine: 1
+            fullStop: 1
+            exclamationMark: 1
+            questionMark: 1
+            rightBrace: 1
+            commentOnPreviousLine: 1
+            other: 0
+        sentencesBeginWith:
+            A-Z: 1
+            a-z: 0
+            other: 0
+        sentencesEndWith:
+            basicFullStop: 0
+            betterFullStop: 1
+            exclamationMark: 1
+            questionMark: 1
+            other: 0
+    textWrapOptions:
+        columns: 0
+        multipleSpacesToSingle: 1
+        removeBlockLineBreaks: 1
+        blocksFollow:
+           headings: 1
+           commentOnPreviousLine: 1
+           par: 1
+           blankLine: 1
+           verbatim: 1
+           filecontents: 1
+           other: '\\\]|\\item(?:\h|\[)'      # regex
+        blocksBeginWith:
+           A-Z: 1
+           a-z: 1
+           0-9: 0
+           other: 0                           # regex
+        blocksEndBefore:
+           commentOnOwnLine: 1
+           verbatim: 1
+           filecontents: 1
+           other: '\\begin\{|\\\[|\\end\{'    # regex
+        huge: overflow                        # forbid mid-word line breaks
+        separator: ""
+    # poly-switches below here
+    environments:
+        BeginStartsOnOwnLine: 0
+        BodyStartsOnOwnLine: 0
+        EndStartsOnOwnLine: 0
+        EndFinishesWithLineBreak: 0
+        equation*:
+            BeginStartsOnOwnLine: 0
+            BodyStartsOnOwnLine: 0
+            EndStartsOnOwnLine: 0
+            EndFinishesWithLineBreak: 0
+    ifElseFi:
+        IfStartsOnOwnLine: 0
+        BodyStartsOnOwnLine: 0
+        OrStartsOnOwnLine: 0
+        OrFinishesWithLineBreak: 0
+        ElseStartsOnOwnLine: 0
+        ElseFinishesWithLineBreak: 0
+        FiStartsOnOwnLine: 0
+        FiFinishesWithLineBreak: 0
+        ifnum:
+            IfStartsOnOwnLine: 0
+            BodyStartsOnOwnLine: 0
+            OrStartsOnOwnLine: 0
+            OrFinishesWithLineBreak: 0
+            ElseStartsOnOwnLine: 0
+            ElseFinishesWithLineBreak: 0
+            FiStartsOnOwnLine: 0
+            FiFinishesWithLineBreak: 0
+    commands:
+        CommandStartsOnOwnLine: 0
+        CommandNameFinishesWithLineBreak: 0
+    optionalArguments:
+        LSqBStartsOnOwnLine: 0
+        OptArgBodyStartsOnOwnLine: 0
+        RSqBStartsOnOwnLine: 0
+        RSqBFinishesWithLineBreak: 0
+    mandatoryArguments:
+        LCuBStartsOnOwnLine: 0
+        MandArgBodyStartsOnOwnLine: 0
+        RCuBStartsOnOwnLine: 0
+        RCuBFinishesWithLineBreak: 0
+    keyEqualsValuesBracesBrackets:
+        KeyStartsOnOwnLine: 0
+        EqualsStartsOnOwnLine: 0
+        EqualsFinishesWithLineBreak: 0
+    items:
+        ItemStartsOnOwnLine: 0
+        ItemFinishesWithLineBreak: 0
+    namedGroupingBracesBrackets:
+        NameStartsOnOwnLine: 0
+        NameFinishesWithLineBreak: 0
+    specialBeginEnd:
+        SpecialBeginStartsOnOwnLine: 0
+        SpecialBodyStartsOnOwnLine: 0
+        SpecialEndStartsOnOwnLine: 0
+        SpecialEndFinishesWithLineBreak: 0
+    verbatim:
+        VerbatimBeginStartsOnOwnLine: 0
+        VerbatimEndFinishesWithLineBreak: 0
+
+# replacements, only active when either -r or -rr switches are active
+replacements:
+  -
+    amalgamate: 1
+  -
+    this: 'latexindent.pl'
+    that: 'pl.latexindent'
+    lookForThis: 0
+    when: before
+
+# fineTuning allows you to tweak the internal pattern matching that
+# is central to latexindent.pl
+fineTuning:
+    environments:
+      name: '[a-zA-Z@\*0-9_\\]+'
+    ifElseFi:
+      name: '(?!@?if[a-zA-Z@]*?\{)@?if[a-zA-Z@]*?'
+    commands:
+      name: '[+a-zA-Z@\*0-9_\:]+?'
+    items:
+      canBeFollowedBy: '(?:\[[^]]*?\])|(?:<[^>]*?>)'
+    keyEqualsValuesBracesBrackets:
+      name: '[a-zA-Z@\*0-9_\/.:\#-]+[a-zA-Z@\*0-9_\/.\h\{\}:\#-]*?'
+      follow: '(?:(?<!\\)\{)|,|(?:(?<!\\)\[)'
+    namedGroupingBracesBrackets:
+      name: '[0-9\.a-zA-Z@\*><]+?'
+      follow: '\h|\R|\{|\[|\$|\)|\('
+    UnNamedGroupingBracesBrackets:
+      follow: '\{|\[|,|&|\)|\(|\$'
+    arguments:
+      before: '(?:#\d\h*;?,?\/?)+|\<.*?\>'
+      between: '_|\^|\*'
+    trailingComments:
+      notPreceededBy: '(?<!\\)'
+    modifyLineBreaks:
+      doubleBackSlash: '\\\\(?:\h*\[\h*\d+\h*[a-zA-Z]+\h*\])?'
+      comma: ','
+      betterFullStop: |-
+        (?x)                                # ignore spaces in the below
+        (?:                                 #
+          \.\)                              # .)
+          (?!\h*[a-z])                      # not *followed by* a-z
+        )                                   #
+        |                                   # OR
+        (?:                                 #
+          (?<!                              # not *preceeded by*
+            (?:                             #
+              (?:[eE]\.[gG])                # e.g OR E.g OR e.G OR E.G
+              |                             #
+              (?:[iI]\.[eE])                # i.e OR I.e OR i.E OR I.E
+              |                             #
+              (?:etc)                       # etc
+            )                               #
+          )                                 #
+        )                                   #
+        \.                                  # .
+        (?!                                 # not *followed by*
+          (?:                               #
+            [a-zA-Z0-9-~,]                  #
+            |                               #
+            \),                             # ),
+            |                               #
+            \)\.                            # ).
+          )                                 #
+        )                                   #