aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'contrib')
-rw-r--r--contrib/YouCompleteMe/README.md31
-rw-r--r--contrib/YouCompleteMe/ycm_extra_conf.py65
-rw-r--r--contrib/doxygen/customdoxygen.css757
-rw-r--r--contrib/doxygen/extra.css777
-rw-r--r--contrib/doxygen/footer.html23
-rw-r--r--contrib/doxygen/header.html36
-rw-r--r--contrib/doxygen/logo-devdoc.pngbin27382 -> 0 bytes
-rw-r--r--contrib/flake.lock12
-rw-r--r--contrib/flake.nix176
-rw-r--r--contrib/luarc.json12
-rw-r--r--contrib/vim-addon-local-vimrc/README.md18
-rw-r--r--contrib/vim-addon-local-vimrc/vimrc11
12 files changed, 92 insertions, 1826 deletions
diff --git a/contrib/YouCompleteMe/README.md b/contrib/YouCompleteMe/README.md
deleted file mode 100644
index 345a9d8d12..0000000000
--- a/contrib/YouCompleteMe/README.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# YouCompleteMe Integration
-
-## What is this?
-
-This provides the code necessary to configure vim's YCM plugin to provide C
-semantic support (completion, go-to-definition, etc) for developers working on
-the Neovim project.
-
-## Installation
-
-### Step 1
-
-Install [YouCompleteMe](https://github.com/Valloric/YouCompleteMe).
-
-### Step 2
-
-```bash
-cp contrib/YouCompleteMe/ycm_extra_conf.py .ycm_extra_conf.py
-echo .ycm_extra_conf.py >> .git/info/exclude
-make
-```
-
-Tip: to improve source code navigation, add something like this to your nvim
-configuration:
-
-```vim
-au FileType c,cpp nnoremap <buffer> <c-]> :YcmCompleter GoTo<CR>
-```
-
-And use `ctrl+]` when the cursor is positioned in a symbol to quickly jump to a
-definition or declaration.
diff --git a/contrib/YouCompleteMe/ycm_extra_conf.py b/contrib/YouCompleteMe/ycm_extra_conf.py
deleted file mode 100644
index e436609ce2..0000000000
--- a/contrib/YouCompleteMe/ycm_extra_conf.py
+++ /dev/null
@@ -1,65 +0,0 @@
-# .ycm_extra_conf.py for nvim source code.
-import os
-import ycm_core
-
-
-def DirectoryOfThisScript():
- return os.path.dirname(os.path.abspath(__file__))
-
-
-def GetDatabase():
- compilation_database_folder = os.path.join(DirectoryOfThisScript(),
- 'build')
- if os.path.exists(compilation_database_folder):
- return ycm_core.CompilationDatabase(compilation_database_folder)
- return None
-
-
-def GetCompilationInfoForFile(filename):
- database = GetDatabase()
- if not database:
- return None
- return database.GetCompilationInfoForFile(filename)
-
-
-# It seems YCM does not resolve directories correctly. This function will
-# adjust paths in the compiler flags to be absolute
-def FixDirectories(args, compiler_working_dir):
- def adjust_path(path):
- return os.path.abspath(os.path.join(compiler_working_dir, path))
-
- adjust_next_arg = False
- new_args = []
- for arg in args:
- if adjust_next_arg:
- arg = adjust_path(arg)
- adjust_next_arg = False
- else:
- for dir_flag in ['-I', '-isystem', '-o', '-c']:
- if arg.startswith(dir_flag):
- if arg != dir_flag:
- # flag and path are concatenated in same arg
- path = arg[len(dir_flag):]
- new_path = adjust_path(path)
- arg = '{0}{1}'.format(dir_flag, new_path)
- else:
- # path is specified in next argument
- adjust_next_arg = True
- new_args.append(arg)
- return new_args
-
-
-def FlagsForFile(filename):
- compilation_info = GetCompilationInfoForFile(filename)
- if not compilation_info:
- return None
- # Add flags not needed for clang-the-binary,
- # but needed for libclang-the-library (YCM uses this last one).
- flags = FixDirectories((list(compilation_info.compiler_flags_)
- if compilation_info.compiler_flags_
- else []), compilation_info.compiler_working_dir_)
- extra_flags = ['-Wno-newline-eof']
- return {
- 'flags': flags + extra_flags,
- 'do_cache': True
- }
diff --git a/contrib/doxygen/customdoxygen.css b/contrib/doxygen/customdoxygen.css
deleted file mode 100644
index 019073805a..0000000000
--- a/contrib/doxygen/customdoxygen.css
+++ /dev/null
@@ -1,757 +0,0 @@
-
-/*
- * Title, should be H1
- */
-
-.title {
- font-family: 'Lato', sans-serif;
- font-size: 2em;
- margin: 0.67em 0 0;
-}
-
-dt {
- font-weight: bold;
-}
-
-div.multicol {
- -moz-column-gap: 1em;
- -webkit-column-gap: 1em;
- -moz-column-count: 3;
- -webkit-column-count: 3;
-}
-
-
-div.qindex, div.navtab {
- background-color: #EBEFF6;
- border: 1px solid #A3B4D7;
- text-align: center;
-}
-
-div.line {
- font-family: monospace, fixed;
- min-height: 13px;
- line-height: 1.0;
- text-wrap: unrestricted;
- white-space: -moz-pre-wrap; /* Moz */
- white-space: -pre-wrap; /* Opera 4-6 */
- white-space: -o-pre-wrap; /* Opera 7 */
- white-space: pre-wrap; /* CSS3 */
- word-wrap: break-word; /* IE 5.5+ */
- text-indent: -53px;
- padding-left: 53px;
- padding-bottom: 0px;
- margin: 0px;
-}
-
-span.lineno {
- padding-right: 4px;
- text-align: right;
- border-right: 2px solid #0F0;
- white-space: pre;
-}
-
-/* @group Code Colorization */
-
-span.keyword {
- color: #008000
-}
-
-span.keywordtype {
- color: #604020
-}
-
-span.keywordflow {
- color: #e08000
-}
-
-span.comment {
- color: #800000
-}
-
-span.preprocessor {
- color: #806020
-}
-
-span.stringliteral {
- color: #002080
-}
-
-span.charliteral {
- color: #008080
-}
-
-span.vhdldigit {
- color: #ff00ff
-}
-
-span.vhdlchar {
- color: #000000
-}
-
-span.vhdlkeyword {
- color: #700070
-}
-
-span.vhdllogic {
- color: #ff0000
-}
-
-blockquote {
- background-color: #F7F8FB;
- border-left: 2px solid #9CAFD4;
- margin: 0 24px 0 4px;
- padding: 0 12px 0 16px;
-}
-
-/* @end */
-
-hr {
- height: 0px;
- border: none;
- display: none;
-}
-
-dl {
- padding: 0 0 0 10px;
-}
-
-/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
-dl.section {
- margin-left: 0px;
- padding-left: 0px;
-}
-
-dl.note {
- margin-left:-7px;
- padding-left: 3px;
- border-left:4px solid;
- border-color: #D0C000;
-}
-
-dl.warning, dl.attention {
- margin-left:-7px;
- padding-left: 3px;
- border-left:4px solid;
- border-color: #FF0000;
-}
-
-dl.pre, dl.post, dl.invariant {
- margin-left:-7px;
- padding-left: 3px;
- border-left:4px solid;
- border-color: #00D000;
-}
-
-dl.deprecated {
- margin-left:-7px;
- padding-left: 3px;
- border-left:4px solid;
- border-color: #505050;
-}
-
-dl.todo {
- margin-left:-7px;
- padding-left: 3px;
- border-left:4px solid;
- border-color: #00C0E0;
-}
-
-dl.test {
- margin-left:-7px;
- padding-left: 3px;
- border-left:4px solid;
- border-color: #3030E0;
-}
-
-dl.bug {
- margin-left:-7px;
- padding-left: 3px;
- border-left:4px solid;
- border-color: #C08050;
-}
-
-dl.section dd {
- margin-bottom: 6px;
-}
-
-/* tooltip related style info */
-
-.ttc {
- position: absolute;
- display: none;
-}
-
-#powerTip {
- cursor: default;
- white-space: nowrap;
- background-color: white;
- border: 1px solid gray;
- border-radius: 4px 4px 4px 4px;
- box-shadow: 1px 1px 7px gray;
- display: none;
- font-size: smaller;
- max-width: 80%;
- opacity: 0.9;
- padding: 1ex 1em 1em;
- position: absolute;
- z-index: 2147483647;
-}
-
-#powerTip div.ttdoc {
- color: grey;
- font-style: italic;
-}
-
-#powerTip div.ttname a {
- font-weight: bold;
-}
-
-#powerTip div.ttname {
- font-weight: bold;
-}
-
-#powerTip div.ttdeci {
- color: #006318;
-}
-
-#powerTip div {
- margin: 0px;
- padding: 0px;
- font: 12px/16px Roboto,sans-serif;
-}
-
-#powerTip:before, #powerTip:after {
- content: "";
- position: absolute;
- margin: 0px;
-}
-
-#powerTip.n:after, #powerTip.n:before,
-#powerTip.s:after, #powerTip.s:before,
-#powerTip.w:after, #powerTip.w:before,
-#powerTip.e:after, #powerTip.e:before,
-#powerTip.ne:after, #powerTip.ne:before,
-#powerTip.se:after, #powerTip.se:before,
-#powerTip.nw:after, #powerTip.nw:before,
-#powerTip.sw:after, #powerTip.sw:before {
- border: solid transparent;
- content: " ";
- height: 0;
- width: 0;
- position: absolute;
-}
-
-#powerTip.n:after, #powerTip.s:after,
-#powerTip.w:after, #powerTip.e:after,
-#powerTip.nw:after, #powerTip.ne:after,
-#powerTip.sw:after, #powerTip.se:after {
- border-color: rgba(255, 255, 255, 0);
-}
-
-#powerTip.n:before, #powerTip.s:before,
-#powerTip.w:before, #powerTip.e:before,
-#powerTip.nw:before, #powerTip.ne:before,
-#powerTip.sw:before, #powerTip.se:before {
- border-color: rgba(128, 128, 128, 0);
-}
-
-#powerTip.n:after, #powerTip.n:before,
-#powerTip.ne:after, #powerTip.ne:before,
-#powerTip.nw:after, #powerTip.nw:before {
- top: 100%;
-}
-
-#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
- border-top-color: #ffffff;
- border-width: 10px;
- margin: 0px -10px;
-}
-#powerTip.n:before {
- border-top-color: #808080;
- border-width: 11px;
- margin: 0px -11px;
-}
-#powerTip.n:after, #powerTip.n:before {
- left: 50%;
-}
-
-#powerTip.nw:after, #powerTip.nw:before {
- right: 14px;
-}
-
-#powerTip.ne:after, #powerTip.ne:before {
- left: 14px;
-}
-
-#powerTip.s:after, #powerTip.s:before,
-#powerTip.se:after, #powerTip.se:before,
-#powerTip.sw:after, #powerTip.sw:before {
- bottom: 100%;
-}
-
-#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
- border-bottom-color: #ffffff;
- border-width: 10px;
- margin: 0px -10px;
-}
-
-#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
- border-bottom-color: #808080;
- border-width: 11px;
- margin: 0px -11px;
-}
-
-#powerTip.s:after, #powerTip.s:before {
- left: 50%;
-}
-
-#powerTip.sw:after, #powerTip.sw:before {
- right: 14px;
-}
-
-#powerTip.se:after, #powerTip.se:before {
- left: 14px;
-}
-
-#powerTip.e:after, #powerTip.e:before {
- left: 100%;
-}
-#powerTip.e:after {
- border-left-color: #ffffff;
- border-width: 10px;
- top: 50%;
- margin-top: -10px;
-}
-#powerTip.e:before {
- border-left-color: #808080;
- border-width: 11px;
- top: 50%;
- margin-top: -11px;
-}
-
-#powerTip.w:after, #powerTip.w:before {
- right: 100%;
-}
-#powerTip.w:after {
- border-right-color: #ffffff;
- border-width: 10px;
- top: 50%;
- margin-top: -10px;
-}
-#powerTip.w:before {
- border-right-color: #808080;
- border-width: 11px;
- top: 50%;
- margin-top: -11px;
-}
-
-/*
- * Centered container for all content
- */
-
-div.contents,
-div.header > *,
-ul.tablist,
-.navpath ul {
- margin:0 15px;
-}
-@media (min-width: 568px) {
- div.contents,
- div.header > *,
- ul.tablist,
- .navpath ul {
- margin: 0 auto;
- width: 90%;
- max-width: 1200px;
- }
-}
-
-/*
- * padding inside content
- */
-
-div.contents > * {
- padding-top: 8px;
- padding-bottom: 8px;
-}
-
-@media (min-width: 568px) {
- div.contents > h2,
- div.contents > div.textblock,
- div.contents > div.memitem,
- div.contents > table.memberdecls h2,
- div.contents > p {
- padding-top: 30px;
- }
-}
-
-div.contents h2 {
- margin-top: 0px;
-}
-
-div.summary {
- display: none;
-}
-
-/*
- * Tabs
- *
- * Based on doxygen tabs.css
- */
-
-.tabs, .tabs2, .tabs3 {
- width: 100%;
- background-color: #f4f4f4;
- border-top: solid 1px #ececec;
-}
-
-.tablist {
- margin: 0;
- padding: 0;
- display: table;
-}
-
-.tablist li {
- float: left;
- display: table-cell;
- line-height: 36px;
- list-style: none;
-}
-
-.tablist a {
- display: block;
- padding: 0 30px 0 0;
-}
-
-.tabs3 .tablist a {
- padding: 0 20px 0 0;
-}
-
-.tablist li.current a {
- color: #54a23d;
-}
-
-/*
- * Navpath
- */
-
-.navpath ul
-{
- padding:20px 0px;
-}
-
-.navpath li
-{
- list-style-type:none;
- padding-right: 10px;
- float:left;
-}
-
-.navpath li.navelem a
-{
- padding-left: 10px;
-}
-
-.navpath li.navelem:before {
- content: "/";
- color: #777;
-}
-
-/*
- * Member
- *
- * Styles for detailed member documentation
- */
-
-.memitem {
- border-top: solid 1px #c9c9c9;
-}
-
-.memname {
- font-weight: bold;
- font-family: monospace;
-}
-
-td.memname {
- color: #54a23d;
-}
-
-.memname td {
- vertical-align: bottom;
-}
-
-.memproto, dl.reflist dt {
- font-weight: bold;
-}
-
-.memdoc, dl.reflist dd {
-}
-
-/*
- * Parameters
- */
-
-.paramkey {
- text-align: right;
-}
-
-.paramtype {
- white-space: nowrap;
-}
-
-.paramname {
- color: #aa0e0e;
- white-space: nowrap;
-}
-
-.paramname em {
- font-style: normal;
-}
-
-.params, .retval, .exception, .tparams {
- margin-left: 0px;
- padding-left: 0px;
-}
-
-.params td {
- padding-right: 1em;
- padding-bottom: 0.5em;
-}
-
-.params .paramname, .retval .paramname {
- font-weight: bold;
- vertical-align: top;
-}
-
-.params .paramtype {
- font-style: italic;
- vertical-align: top;
-}
-
-/*
- * Inline Label etc.
- */
-
-table.mlabels {
- border-spacing: 0px;
-}
-
-td.mlabels-left {
- width: 100%;
- padding: 0px;
-}
-
-td.mlabels-right {
- vertical-align: bottom;
- padding: 0px;
- white-space: nowrap;
-}
-
-span.mlabels {
- margin-left: 8px;
-}
-
-/*
- * Member Descriptions
- */
-
-table.memberdecls {
- font-family: monospace;
- border-spacing: 0px;
- padding: 0px;
-}
-
-.memSeparator {
- line-height: 1px;
- margin: 0px;
- padding: 0 0 0.2em 0;
-}
-
-.memItemLeft, .memTemplItemLeft {
- white-space: nowrap;
-}
-
-.memItemRight {
- width: 100%;
-}
-
-.memTemplParams {
- color: #4665A2;
- white-space: nowrap;
- font-size: 80%;
-}
-
-/*
- * Fieldtable (Enums)
- */
-
-.fieldtable td, .fieldtable th {
- padding: 0 1em 0.2em 0;
-}
-
-.fieldtable td.fieldtype, .fieldtable td.fieldname {
- white-space: nowrap;
- vertical-align: top;
-}
-
-/*
- * Directory
- */
-
-.directory table {
- border-collapse:collapse;
-}
-
-.directory td {
- margin: 0px;
- padding: 0px;
- vertical-align: top;
-}
-
-.directory td.entry {
- white-space: nowrap;
- padding-right: 6px;
- padding-top: 3px;
-}
-
-.directory td.entry a {
- outline:none;
-}
-
-.directory td.entry a img {
- border: none;
-}
-
-.directory td.desc {
- width: 100%;
- padding-left: 6px;
- padding-right: 6px;
- padding-top: 3px;
-}
-
-.directory tr.even {
- padding-left: 6px;
-}
-
-.directory img {
- vertical-align: -30%;
-}
-
-.directory .levels {
- white-space: nowrap;
- width: 100%;
- text-align: right;
-}
-
-.directory .levels span {
- cursor: pointer;
- padding-left: 2px;
- padding-right: 2px;
- color: #3c92d1;
-}
-
-.arrow {
- color: #9CAFD4;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- cursor: pointer;
- font-size: 80%;
- display: inline-block;
- width: 16px;
- height: 22px;
-}
-
-.icon {
- font-family: Arial, Helvetica;
- font-weight: bold;
- font-size: 12px;
- height: 14px;
- width: 16px;
- display: inline-block;
- background-color: #54a23d;
- color: white;
- text-align: center;
- border-radius: 4px;
- margin-left: 2px;
- margin-right: 2px;
-}
-
-.icona {
- width: 24px;
- height: 22px;
- display: inline-block;
-}
-
-.iconfopen {
- width: 24px;
- height: 18px;
- margin-bottom: 4px;
- background-image:url('ftv2folderopen.png');
- background-position: 0px 0px;
- background-repeat: repeat-y;
- vertical-align:top;
- display: inline-block;
-}
-
-.iconfclosed {
- width: 24px;
- height: 18px;
- margin-bottom: 4px;
- background-image:url('ftv2folderclosed.png');
- background-position: 0px 0px;
- background-repeat: repeat-y;
- vertical-align:top;
- display: inline-block;
-}
-
-.icondoc {
- width: 24px;
- height: 18px;
- margin-bottom: 4px;
- background-image:url('ftv2doc.png');
- background-position: 0px -1px;
- background-repeat: repeat-y;
- vertical-align:top;
- display: inline-block;
-}
-
-/*
- * Data Structure Index
- *
- * Hardcoded style attribute
- */
-
-.contents > table[style] {
- margin: 20px auto !important;
-}
-
-/*
- * Search Box
- */
-
-#MSearchBox {
- right: 4%;
-}
-
-@media print
-{
- #top { display: none; }
- #side-nav { display: none; }
- #nav-path { display: none; }
- body { overflow:visible; }
- h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
- .summary { display: none; }
- .memitem { page-break-inside: avoid; }
- #doc-content
- {
- margin-left:0 !important;
- height:auto !important;
- width:auto !important;
- overflow:inherit;
- display:inline;
- }
-}
-
diff --git a/contrib/doxygen/extra.css b/contrib/doxygen/extra.css
deleted file mode 100644
index 59e0c25848..0000000000
--- a/contrib/doxygen/extra.css
+++ /dev/null
@@ -1,777 +0,0 @@
-/*! normalize.css v3.0.0 | MIT License | git.io/normalize */
-
-/**
- * 1. Set default font family to sans-serif.
- * 2. Prevent iOS text size adjust after orientation change, without disabling
- * user zoom.
- */
-
-html {
- font-family: sans-serif; /* 1 */
- -ms-text-size-adjust: 100%; /* 2 */
- -webkit-text-size-adjust: 100%; /* 2 */
-}
-
-/**
- * Remove default margin.
- */
-
-body {
- margin: 0;
-}
-
-/* HTML5 display definitions
- ========================================================================== */
-
-/**
- * Correct `block` display not defined in IE 8/9.
- */
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-nav,
-section,
-summary {
- display: block;
-}
-
-/**
- * 1. Correct `inline-block` display not defined in IE 8/9.
- * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
- */
-
-audio,
-canvas,
-progress,
-video {
- display: inline-block; /* 1 */
- vertical-align: baseline; /* 2 */
-}
-
-/**
- * Prevent modern browsers from displaying `audio` without controls.
- * Remove excess height in iOS 5 devices.
- */
-
-audio:not([controls]) {
- display: none;
- height: 0;
-}
-
-/**
- * Address `[hidden]` styling not present in IE 8/9.
- * Hide the `template` element in IE, Safari, and Firefox < 22.
- */
-
-[hidden],
-template {
- display: none;
-}
-
-/* Links
- ========================================================================== */
-
-/**
- * Remove the gray background color from active links in IE 10.
- */
-
-a {
- background: transparent;
-}
-
-/**
- * Improve readability when focused and also mouse hovered in all browsers.
- */
-
-a:active,
-a:hover {
- outline: 0;
-}
-
-/* Text-level semantics
- ========================================================================== */
-
-/**
- * Address styling not present in IE 8/9, Safari 5, and Chrome.
- */
-
-abbr[title] {
- border-bottom: 1px dotted;
-}
-
-/**
- * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
- */
-
-b,
-strong {
- font-weight: bold;
-}
-
-/**
- * Address styling not present in Safari 5 and Chrome.
- */
-
-dfn {
- font-style: italic;
-}
-
-/**
- * Address variable `h1` font-size and margin within `section` and `article`
- * contexts in Firefox 4+, Safari 5, and Chrome.
- */
-
-h1 {
- font-size: 2em;
- margin: 0.67em 0;
-}
-
-/**
- * Address styling not present in IE 8/9.
- */
-
-mark {
- background: #ff0;
- color: #000;
-}
-
-/**
- * Address inconsistent and variable font size in all browsers.
- */
-
-small {
- font-size: 80%;
-}
-
-/**
- * Prevent `sub` and `sup` affecting `line-height` in all browsers.
- */
-
-sub,
-sup {
- font-size: 75%;
- line-height: 0;
- position: relative;
- vertical-align: baseline;
-}
-
-sup {
- top: -0.5em;
-}
-
-sub {
- bottom: -0.25em;
-}
-
-/* Embedded content
- ========================================================================== */
-
-/**
- * Remove border when inside `a` element in IE 8/9.
- */
-
-img {
- border: 0;
-}
-
-/**
- * Correct overflow displayed oddly in IE 9.
- */
-
-svg:not(:root) {
- overflow: hidden;
-}
-
-/* Grouping content
- ========================================================================== */
-
-/**
- * Address margin not present in IE 8/9 and Safari 5.
- */
-
-figure {
- margin: 1em 40px;
-}
-
-/**
- * Address differences between Firefox and other browsers.
- */
-
-hr {
- -moz-box-sizing: content-box;
- box-sizing: content-box;
- height: 0;
-}
-
-/**
- * Contain overflow in all browsers.
- */
-
-pre {
- overflow: auto;
-}
-
-/**
- * Address odd `em`-unit font size rendering in all browsers.
- */
-
-code,
-kbd,
-pre,
-samp {
- font-family: monospace, monospace;
- font-size: 1em;
-}
-
-/* Forms
- ========================================================================== */
-
-/**
- * Known limitation: by default, Chrome and Safari on OS X allow very limited
- * styling of `select`, unless a `border` property is set.
- */
-
-/**
- * 1. Correct color not being inherited.
- * Known issue: affects color of disabled elements.
- * 2. Correct font properties not being inherited.
- * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
- */
-
-button,
-input,
-optgroup,
-select,
-textarea {
- color: inherit; /* 1 */
- font: inherit; /* 2 */
- margin: 0; /* 3 */
-}
-
-/**
- * Address `overflow` set to `hidden` in IE 8/9/10.
- */
-
-button {
- overflow: visible;
-}
-
-/**
- * Address inconsistent `text-transform` inheritance for `button` and `select`.
- * All other form control elements do not inherit `text-transform` values.
- * Correct `button` style inheritance in Firefox, IE 8+, and Opera
- * Correct `select` style inheritance in Firefox.
- */
-
-button,
-select {
- text-transform: none;
-}
-
-/**
- * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
- * and `video` controls.
- * 2. Correct inability to style clickable `input` types in iOS.
- * 3. Improve usability and consistency of cursor style between image-type
- * `input` and others.
- */
-
-button,
-html input[type="button"], /* 1 */
-input[type="reset"],
-input[type="submit"] {
- -webkit-appearance: button; /* 2 */
- cursor: pointer; /* 3 */
-}
-
-/**
- * Re-set default cursor for disabled elements.
- */
-
-button[disabled],
-html input[disabled] {
- cursor: default;
-}
-
-/**
- * Remove inner padding and border in Firefox 4+.
- */
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
- border: 0;
- padding: 0;
-}
-
-/**
- * Address Firefox 4+ setting `line-height` on `input` using `!important` in
- * the UA stylesheet.
- */
-
-input {
- line-height: normal;
-}
-
-/**
- * It's recommended that you don't attempt to style these elements.
- * Firefox's implementation doesn't respect box-sizing, padding, or width.
- *
- * 1. Address box sizing set to `content-box` in IE 8/9/10.
- * 2. Remove excess padding in IE 8/9/10.
- */
-
-input[type="checkbox"],
-input[type="radio"] {
- box-sizing: border-box; /* 1 */
- padding: 0; /* 2 */
-}
-
-/**
- * Fix the cursor style for Chrome's increment/decrement buttons. For certain
- * `font-size` values of the `input`, it causes the cursor style of the
- * decrement button to change from `default` to `text`.
- */
-
-input[type="number"]::-webkit-inner-spin-button,
-input[type="number"]::-webkit-outer-spin-button {
- height: auto;
-}
-
-/**
- * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
- * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
- * (include `-moz` to future-proof).
- */
-
-input[type="search"] {
- -webkit-appearance: textfield; /* 1 */
- -moz-box-sizing: content-box;
- -webkit-box-sizing: content-box; /* 2 */
- box-sizing: content-box;
-}
-
-/**
- * Remove inner padding and search cancel button in Safari and Chrome on OS X.
- * Safari (but not Chrome) clips the cancel button when the search input has
- * padding (and `textfield` appearance).
- */
-
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none;
-}
-
-/**
- * Define consistent border, margin, and padding.
- */
-
-fieldset {
- border: 1px solid #c0c0c0;
- margin: 0 2px;
- padding: 0.35em 0.625em 0.75em;
-}
-
-/**
- * 1. Correct `color` not being inherited in IE 8/9.
- * 2. Remove padding so people aren't caught out if they zero out fieldsets.
- */
-
-legend {
- border: 0; /* 1 */
- padding: 0; /* 2 */
-}
-
-/**
- * Remove default vertical scrollbar in IE 8/9.
- */
-
-textarea {
- overflow: auto;
-}
-
-/**
- * Don't inherit the `font-weight` (applied by a rule above).
- * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
- */
-
-optgroup {
- font-weight: bold;
-}
-
-/* Tables
- ========================================================================== */
-
-/**
- * Remove most spacing between table cells.
- */
-
-table {
- border-collapse: collapse;
- border-spacing: 0;
-}
-
-td,
-th {
- padding: 0;
-}
-
-/* neovim.io/css/main.css */
-
-* {
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-
-body {
- font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
- font-size: 15px;
- line-height: 1.4;
- color: #444;
- background-color: #fbfbfb;
-}
-@media (min-width: 568px) {
- body {
- font-size: 17px;
- }
-}
-
-a {
- color: #3c92d1;
- text-decoration: none;
-}
-
-h1,
-h2,
-h3 {
- font-family: 'Lato', sans-serif;
-}
-
-h2 {
- font-size: 24px;
- font-weight: 400;
- color: #54a23d;
- margin-bottom: 0;
-}
-@media (min-width: 568px) {
- h2 {
- font-size: 30px;
- }
-}
-h3 {
- /* color: #54a23d; */
-}
-
-blockquote {
- border-left: 5px solid #eeeeee;
- margin-left: 0;
- padding-left: 15px;
-}
-
-/*
- * Content container
- *
- * Centered container for all content
- */
-
-.container {
- margin: 0 15px;
-}
-@media (min-width: 568px) {
- .container {
- margin: 0 auto;
- width: 90%;
- max-width: 1200px;
- }
-}
-
-/*
- * Navbar
- *
- * Logo and navigation at the top of the page
- */
-
-.navbar {
- padding: 12px 0;
-}
-@media (min-width: 568px) {
- .navbar {
- padding-top: 30px;
- padding-bottom: 30px;
- }
-}
-
-.logo {
- width: 120px;
- position: relative;
- top: 4px;
-}
-@media (min-width: 568px) {
- .logo {
- width: 180px;
- }
-}
-
-.site-nav {
- display: none;
-}
-@media (min-width: 568px) {
- .site-nav {
- display: block;
- float: right;
- }
- .site-nav ul {
- list-style: none;
- }
- .site-nav li {
- display: inline-block;
- margin-top: 5px;
- margin-left: 20px;
- font-size: 18px;
- font-family: 'Lato', sans-serif;
- }
-}
-
-/*
- * Masthead
- *
- * Big intro billboard
- */
-
-.masthead {
- border-top: solid 1px #ececec;
- border-bottom: solid 1px #ececec;
- text-align: center;
- padding: 20px 12px;
-}
-@media (min-width: 568px) {
- .masthead {
- padding-top: 40px;
- padding-bottom: 40px;
- }
-}
-
-.masthead .container {
-}
-@media (min-width: 568px) {
- .masthead .container {
- width: 568px;
- margin: 0 auto;
- }
-}
-
-.masthead h1 {
- font-size: 20px;
- font-weight: 400;
-}
-@media (min-width: 568px) {
- .masthead h1 {
- font-size: 40px;
- margin-bottom: 50px;
- }
-}
-
-.masthead .lead {
- font-weight: 900;
- color: #54a23d;
- font-family: 'Lato', sans-serif;
- font-size: 16px;
- font-weight: 900;
-}
-@media (min-width: 568px) {
- .masthead .lead {
- font-size: 26px;
- }
-}
-
-/*
- * Columns
- *
- * Two columns utilizing the golden ratio
- */
-
-.col-wide,
-.col-narrow {
- display: block;
-}
-@media (min-width: 568px) {
- .col-wide {
- display: table-cell;
- width: 61.8%;
- vertical-align: top;
- }
- .col-narrow {
- display: table-cell;
- width: 38.2%;
- padding-left: 6%;
- vertical-align: top;
- }
-}
-
-/*
- * Front page
- *
- * Big section blocks for the front page
- */
-
-.front-section {
- padding: 8px 0;
-}
-@media (min-width: 568px) {
- .front-section {
- padding-top: 30px;
- padding-bottom: 30px;
- display: table;
- width: 100%;
- }
- .front-section h2:first-child {
- margin-top: 0;
- }
-}
-
-.front-section.shaded {
- background-color: #f4f4f4;
-}
-
-/*
- * FAQs
- *
- * Formatted as a definition list
- */
-
-.faqs dt {
- font-weight: 700;
-}
-
-.faqs dd {
- color: #777;
- font-size: 15px;
- margin-left: 0;
- margin-bottom: 20px;
-}
-
-/*
- * Buttons
- *
- * Fun to click
- */
-
-.btn {
- display: inline-block;
- text-align: center;
- vertical-align: middle;
- background-color: #3c92d1;
- color: #fff;
- font-family: 'Lato', sans-serif;
- border-radius: 4px;
- padding: 15px 30px;
-}
-
-.btn:hover {
- background-color: #3889c4;
-}
-
-.btn.full-width {
- width: 100%;
-}
-
-/*
- * Sponsors
- *
- * Callout-style box
- */
-.sponsors {
- background-color: #f5f5f5;
- padding: 5px 20px;
- border-radius: 4px;
- margin-top: 10px;
-}
-
-.sponsors h3 {
- color: #54a23d;
-}
-
-.first-level-sponsor {
- margin-bottom: 20px;
-}
-
-.first-level-sponsor img {
- max-width: 100%;
-}
-
-.second-level-sponsors {
- width: 100%;
-}
-
-.second-level-sponsors td {
- width: 50%;
- padding: 12px 0;
- text-align: center;
- vertical-align: middle;
-}
-
-.second-level-sponsors img {
- width: 80%;
-}
-@media (min-width: 568px) {
- .second-level-sponsor img {
- width: auto;
- }
-}
-
-/*
- * Footer
- *
- * Links, legalese, etc.
- */
-
-footer .container {
- border-top: solid 1px #ececec;
- padding: 20px 0 50px;
- font-size: 12px;
- color: #777;
-}
-@media (min-width: 568px) {
- footer .container {
- font-size: 14px;
- display: table;
- }
-}
-
-footer a {
- color: #444;
-}
-
-
-/*
- * Misc
- *
- * Odds 'n ends
- */
-
-.light {
- color: #777;
-}
-
-.light a {
- color: #444;
-}
-
-.small {
- font-size: 70%;
-}
-
-/*
- * Newsletter CSS
- */
-
-.newsletter h1 {
- margin-bottom: 0px;
-}
-
diff --git a/contrib/doxygen/footer.html b/contrib/doxygen/footer.html
deleted file mode 100644
index a6d8bb1ee4..0000000000
--- a/contrib/doxygen/footer.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!-- HTML footer for doxygen 1.8.6-->
-<!-- start footer part -->
-<!--BEGIN GENERATE_TREEVIEW-->
-<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
- <ul>
- $navpath
- <li class="footer">$generatedby
- <a href="http://www.doxygen.org/index.html">
- <img class="footer" src="$relpath^doxygen.png" alt="doxygen"/></a> $doxygenversion </li>
- </ul>
-</div>
-<!--END GENERATE_TREEVIEW-->
-<!--BEGIN !GENERATE_TREEVIEW-->
-<footer>
- <div class="container">
- $generatedby
- <a href="http://www.doxygen.org/index.html">Doxygen</a>
- $doxygenversion
- </div>
-</footer>
-<!--END !GENERATE_TREEVIEW-->
-</body>
-</html>
diff --git a/contrib/doxygen/header.html b/contrib/doxygen/header.html
deleted file mode 100644
index c9c1509d86..0000000000
--- a/contrib/doxygen/header.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!-- HTML header for doxygen 1.8.6-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen $doxygenversion"/>
-<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
-<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
-<script type="text/javascript" src="$relpath^jquery.js"></script>
-<script type="text/javascript" src="$relpath^dynsections.js"></script>
-$treeview
-$search
-$mathjax
-<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
-$extrastylesheet
-<link href="http://fonts.googleapis.com/css?family=Lato:400,700,900" rel="stylesheet">
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-
-<!--BEGIN TITLEAREA-->
-<header class="navbar">
- <div class="container">
- <nav class="site-nav">
- <ul>
- <li><a href="http://neovim.io/">Neovim Home</a></li>
- </ul>
- </nav>
- <a href="$relpath^index.html">
- <img src="$relpath^$projectlogo" class="logo" alt="Neovim Dev-Doc">
- </a>
- </div>
-</header>
-<!--END TITLEAREA-->
-<!-- end header part -->
diff --git a/contrib/doxygen/logo-devdoc.png b/contrib/doxygen/logo-devdoc.png
deleted file mode 100644
index a25ef2b9d7..0000000000
--- a/contrib/doxygen/logo-devdoc.png
+++ /dev/null
Binary files differ
diff --git a/contrib/flake.lock b/contrib/flake.lock
index b72e1f8d5f..c6dfb4642b 100644
--- a/contrib/flake.lock
+++ b/contrib/flake.lock
@@ -2,11 +2,11 @@
"nodes": {
"flake-utils": {
"locked": {
- "lastModified": 1644229661,
- "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
+ "lastModified": 1667395993,
+ "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
"owner": "numtide",
"repo": "flake-utils",
- "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
+ "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
"type": "github"
},
"original": {
@@ -17,11 +17,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1646254136,
- "narHash": "sha256-8nQx02tTzgYO21BP/dy5BCRopE8OwE8Drsw98j+Qoaw=",
+ "lastModified": 1671983799,
+ "narHash": "sha256-Z2Ro6hFPZHkBqkVXY5/aBUzxi5xizQGvuHQ9+T5B/ks=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "3e072546ea98db00c2364b81491b893673267827",
+ "rev": "fad51abd42ca17a60fc1d4cb9382e2d79ae31836",
"type": "github"
},
"original": {
diff --git a/contrib/flake.nix b/contrib/flake.nix
index a1072674ba..0898c943d7 100644
--- a/contrib/flake.nix
+++ b/contrib/flake.nix
@@ -8,130 +8,110 @@
outputs = { self, nixpkgs, flake-utils }:
{
- overlay = final: prev:
- let
- pkgs = nixpkgs.legacyPackages.${prev.system};
- in
- rec {
- neovim = pkgs.neovim-unwrapped.overrideAttrs (oa: {
- version = "master";
- src = ../.;
-
- buildInputs = oa.buildInputs ++ pkgs.lib.optionals pkgs.stdenv.isDarwin (with pkgs.darwin.apple_sdk.frameworks; [
- CoreServices
- ]);
- });
-
- # a development binary to help debug issues
- neovim-debug = let
- stdenv = if pkgs.stdenv.isLinux then pkgs.llvmPackages_latest.stdenv else pkgs.stdenv;
- in
- ((neovim.override {
- lua = pkgs.luajit;
- inherit stdenv;
- }).overrideAttrs (oa: {
-
- dontStrip = true;
- NIX_CFLAGS_COMPILE = " -ggdb -Og";
-
- cmakeBuildType = "Debug";
- cmakeFlags = oa.cmakeFlags ++ [
- "-DMIN_LOG_LEVEL=0"
- ];
-
- disallowedReferences = [];
- }));
-
- # for neovim developers, beware of the slow binary
- neovim-developer =
- let
- lib = nixpkgs.lib;
- luacheck = pkgs.luaPackages.luacheck;
- in
- (neovim-debug.override ({ doCheck = pkgs.stdenv.isLinux; })).overrideAttrs (oa: {
- cmakeFlags = oa.cmakeFlags ++ [
- "-DLUACHECK_PRG=${luacheck}/bin/luacheck"
- "-DMIN_LOG_LEVEL=0"
- "-DENABLE_LTO=OFF"
- ] ++ pkgs.lib.optionals pkgs.stdenv.isLinux [
- # https://github.com/google/sanitizers/wiki/AddressSanitizerFlags
- # https://clang.llvm.org/docs/AddressSanitizer.html#symbolizing-the-reports
- "-DCLANG_ASAN_UBSAN=ON"
- ];
- });
- };
- } //
- flake-utils.lib.eachDefaultSystem (system:
+ overlay = final: prev: {
+
+ neovim = final.neovim-unwrapped.overrideAttrs (oa: rec {
+ version = self.shortRev or "dirty";
+ src = ../.;
+ preConfigure = ''
+ sed -i cmake.config/versiondef.h.in -e 's/@NVIM_VERSION_PRERELEASE@/-dev-${version}/'
+ '';
+ });
+
+ # a development binary to help debug issues
+ neovim-debug = let
+ stdenv = if final.stdenv.isLinux then
+ final.llvmPackages_latest.stdenv
+ else
+ final.stdenv;
+ in (final.neovim.override {
+ lua = final.luajit;
+ inherit stdenv;
+ }).overrideAttrs (oa: {
+
+ dontStrip = true;
+ NIX_CFLAGS_COMPILE = " -ggdb -Og";
+
+ cmakeBuildType = "Debug";
+ cmakeFlags = oa.cmakeFlags ++ [ "-DMIN_LOG_LEVEL=0" ];
+
+ disallowedReferences = [ ];
+ });
+
+ # for neovim developers, beware of the slow binary
+ neovim-developer = let inherit (final.luaPackages) luacheck;
+ in (final.neovim-debug.override {
+ doCheck = final.stdenv.isLinux;
+ }).overrideAttrs (oa: {
+ cmakeFlags = oa.cmakeFlags ++ [
+ "-DLUACHECK_PRG=${luacheck}/bin/luacheck"
+ "-DMIN_LOG_LEVEL=0"
+ "-DENABLE_LTO=OFF"
+ ] ++ final.lib.optionals final.stdenv.isLinux [
+ # https://github.com/google/sanitizers/wiki/AddressSanitizerFlags
+ # https://clang.llvm.org/docs/AddressSanitizer.html#symbolizing-the-reports
+ "-DCLANG_ASAN_UBSAN=ON"
+ ];
+ });
+ };
+ } // flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs {
overlays = [ self.overlay ];
inherit system;
};
- pythonEnv = pkgs.python3.withPackages(ps: [
+ lua = pkgs.lua5_1;
+
+ pythonEnv = pkgs.python3.withPackages (ps: [
ps.msgpack
- ps.flake8 # for 'make pylint'
]);
- in
- rec {
-
+ in {
packages = with pkgs; {
+ default = neovim;
inherit neovim neovim-debug neovim-developer;
};
checks = {
- pylint = pkgs.runCommandNoCC "pylint" {
- nativeBuildInputs = [ pythonEnv ];
- preferLocalBuild = true;
- } "make -C ${./..} pylint > $out";
-
- shlint = pkgs.runCommandNoCC "shlint" {
+ shlint = pkgs.runCommand "shlint" {
nativeBuildInputs = [ pkgs.shellcheck ];
preferLocalBuild = true;
- } "make -C ${./..} shlint > $out";
+ } "make -C ${./..} shlint > $out";
};
+ # kept for backwards-compatibility
defaultPackage = pkgs.neovim;
- apps = {
- nvim = flake-utils.lib.mkApp { drv = pkgs.neovim; name = "nvim"; };
- nvim-debug = flake-utils.lib.mkApp { drv = pkgs.neovim-debug; name = "nvim"; };
- };
-
- defaultApp = apps.nvim;
+ devShells = {
+ default = pkgs.neovim-developer.overrideAttrs (oa: {
- devShell = let
- in
- pkgs.neovim-developer.overrideAttrs(oa: {
-
- buildInputs = with pkgs; oa.buildInputs ++ [
+ buildInputs = with pkgs;
+ oa.buildInputs ++ [
cmake
+ lua.pkgs.luacheck
+ sumneko-lua-language-server
pythonEnv
include-what-you-use # for scripts/check-includes.py
jq # jq for scripts/vim-patch.sh -r
shellcheck # for `make shlint`
- doxygen # for script/gen_vimdoc.py
+ doxygen # for script/gen_vimdoc.py
clang-tools # for clangd to find the correct headers
];
- shellHook = oa.shellHook + ''
- export NVIM_PYTHON_LOG_LEVEL=DEBUG
- export NVIM_LOG_FILE=/tmp/nvim.log
- export ASAN_SYMBOLIZER_PATH=${pkgs.llvm_11}/bin/llvm-symbolizer
-
- # ASAN_OPTIONS=detect_leaks=1
- export ASAN_OPTIONS="log_path=./test.log:abort_on_error=1"
- export UBSAN_OPTIONS=print_stacktrace=1
- mkdir -p build/runtime/parser
- # nvim looks into CMAKE_INSTALL_DIR. Hack to avoid errors
- # when running the functionaltests
- mkdir -p outputs/out/share/nvim/syntax
- touch outputs/out/share/nvim/syntax/syntax.vim
-
- # for treesitter functionaltests
- mkdir -p runtime/parser
- cp -f ${pkgs.tree-sitter.builtGrammars.tree-sitter-c}/parser runtime/parser/c.so
- '';
- });
- });
+ shellHook = oa.shellHook + ''
+ export NVIM_PYTHON_LOG_LEVEL=DEBUG
+ export NVIM_LOG_FILE=/tmp/nvim.log
+ export ASAN_SYMBOLIZER_PATH=${pkgs.llvm_11}/bin/llvm-symbolizer
+
+ # ASAN_OPTIONS=detect_leaks=1
+ export ASAN_OPTIONS="log_path=./test.log:abort_on_error=1"
+ export UBSAN_OPTIONS=print_stacktrace=1
+
+ # for treesitter functionaltests
+ mkdir -p runtime/parser
+ cp -f ${pkgs.vimPlugins.nvim-treesitter.builtGrammars.c}/parser runtime/parser/c.so
+ '';
+ });
+ };
+ });
}
diff --git a/contrib/luarc.json b/contrib/luarc.json
index 8d76d1261d..ebad0581b9 100644
--- a/contrib/luarc.json
+++ b/contrib/luarc.json
@@ -10,13 +10,17 @@
"before_each",
"after_each",
"setup",
- "teardown"
+ "teardown",
+ "finally",
+ "lfs"
]
},
"workspace": {
- "library": {
- "runtime/lua": true
- },
+ "library": [
+ "runtime/lua",
+ "${3rd}/lfs/library"
+ ],
+ "checkThirdParty": false,
"maxPreload": 2000,
"preloadFileSize": 1000
},
diff --git a/contrib/vim-addon-local-vimrc/README.md b/contrib/vim-addon-local-vimrc/README.md
deleted file mode 100644
index 2ff9f0d627..0000000000
--- a/contrib/vim-addon-local-vimrc/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# vim-addon-local-vimrc
-
-## Installation
-
-### Step 1
-
-Install [vim-addon-local-vimrc](https://github.com/MarcWeber/vim-addon-local-vimrc).
-For example with [Vundle](https://github.com/MarcWeber/vim-addon-local-vimrc):
-```vim
-Bundle 'MarcWeber/vim-addon-local-vimrc'
-```
-
-### Step 2
-
-```bash
-cp vimrc ../../.vimrc
-echo .vimrc >> ../../.git/info/exclude
-```
diff --git a/contrib/vim-addon-local-vimrc/vimrc b/contrib/vim-addon-local-vimrc/vimrc
deleted file mode 100644
index cd8a2896ed..0000000000
--- a/contrib/vim-addon-local-vimrc/vimrc
+++ /dev/null
@@ -1,11 +0,0 @@
-set modelines=0
-
-augroup LOCAL_SETUP
- autocmd!
- autocmd BufRead,BufNewFile *.h set filetype=c
- autocmd FileType c setlocal expandtab
- autocmd FileType c setlocal shiftwidth=2
- autocmd FileType c setlocal softtabstop=2
- autocmd FileType c setlocal textwidth=80
- autocmd FileType c setlocal comments=:///,://
-augroup end