diff --git a/.config/coc/ultisnips/html.snippets b/.config/coc/ultisnips/html.snippets
deleted file mode 100644
index 0d236bf..0000000
--- a/.config/coc/ultisnips/html.snippets
+++ /dev/null
@@ -1,88 +0,0 @@
-# A valid snippet should starts with:
-#
-# snippet trigger_word [ "description" [ options ] ]
-#
-# and end with:
-#
-# endsnippet
-#
-# Snippet options:
-#
-# b - Beginning of line.
-# i - In-word expansion.
-# w - Word boundary.
-# r - Regular expression
-# e - Custom context snippet
-# A - Snippet will be triggered automatically, when condition matches.
-#
-# Basic example:
-#
-# snippet emitter "emitter properties" b
-# private readonly ${1} = new Emitter<$2>()
-# public readonly ${1/^_(.*)/$2/}: Event<$2> = this.$2.event
-# endsnippet
-#
-# Online reference: https://github.com/SirVer/ultisnips/blob/master/doc/UltiSnips.txt
-
-snippet ,b "Bold" A
-$1 $2
-endsnippet
-
-snippet ,it "Italics" A
-$1 $2
-endsnippet
-
-snippet ,1 "Header 1" A
-
$1
-$2
-endsnippet
-
-snippet ,2 "Header 2" A
-$1
-$2
-endsnippet
-
-snippet ,3 "Header 3" A
-$1
-$2
-endsnippet
-
-snippet ,p "Paragraph" A
-$1
-$2
-endsnippet
-
-snippet ,a "Hyperlink" A
-$2 $3
-endsnippet
-
-snippet ,e "External Hyperlink" A
-$2 $3
-endsnippet
-
-snippet ,ul "Itemization" A
-
-endsnippet
-
-snippet ,li "List Element" A
-$1
-$2
-endsnippet
-
-snippet ,ol "Enumeration" A
-
- - $1
- $2
-
-endsnippet
-
-snippet ,im "Image" A
- $3
-endsnippet
-
-snippet & "Et Sign" A
-& $1
-endsnippet
diff --git a/.config/coc/ultisnips/tex.snippets b/.config/coc/ultisnips/tex.snippets
deleted file mode 100644
index 09962bb..0000000
--- a/.config/coc/ultisnips/tex.snippets
+++ /dev/null
@@ -1,117 +0,0 @@
-# A valid snippet should starts with:
-#
-# snippet trigger_word [ "description" [ options ] ]
-#
-# and end with:
-#
-# endsnippet
-#
-# Snippet options:
-#
-# b - Beginning of line.
-# i - In-word expansion.
-# w - Word boundary.
-# r - Regular expression
-# e - Custom context snippet
-# A - Snippet will be triggered automatically, when condition matches.
-#
-# Basic example:
-#
-# snippet emitter "emitter properties" b
-# private readonly ${1} = new Emitter<$2>()
-# public readonly ${1/^_(.*)/$1/}: Event<$2> = this.$1.event
-# endsnippet
-#
-# Online reference: https://github.com/SirVer/ultisnips/blob/master/doc/UltiSnips.txt
-
-snippet ,fr "Frame" A
-\begin{frame}
- \frametitle{$1}
- $2
-\end{frame}
-endsnippet
-
-snippet ,em "Emphasis" A
-\emph{$1}
-endsnippet
-
-snippet ,bf "Bold" A
-\textbf{$1} $2
-endsnippet
-
-snippet ,it "Italic" A
-\textit{$1} $2
-endsnippet
-
-snippet ,ct "Text cite" A
-\textcite{$1} $2
-endsnippet
-
-snippet ,cp "Parenthesis cite" A
-\parencite{$1} $2
-endsnippet
-
-snippet ,ol "Enumeration" A
-\begin{enumerate}
- \item $1
- $2
-\end{enumerate}
-endsnippet
-
-snippet ,ul "Itemization" A
-\begin{itemize}
- \item $1
- $2
-\end{itemize}
-endsnippet
-
-snippet ,li "List element" A
-\item $1
-$2
-endsnippet
-
-snippet ,ref "Reference" A
-\ref{$1} $2
-endsnippet
-
-snippet ,tab "Tabular" A
-\begin{tabular}
-$1
-\end{tabular}
-endsnippet
-
-snippet ,a "Hyperlink" A
-\href{$1}{$2}
-endsnippet
-
-snippet ,sc "Small caps" A
-\textsc{$1} $2
-endsnippet
-
-snippet ,chap "Chapter" A
-\chapter{$1}
-$2
-endsnippet
-
-snippet ,sec "Section" A
-\section{$1}
-$2
-endsnippet
-
-snippet ,ssec "Subsection" A
-\subsection{$1}
-$2
-endsnippet
-
-snippet ,sssec "Subsubsection" A
-\subsubsection{$1}
-$2
-endsnippet
-
-snippet ,up "Use Packagage" A
-\usepackage{$1}
-endsnippet
-
-snippet ,tt "Typewriter" A
-\texttt{$1} $2
-endsnippet
diff --git a/.config/coc/ultisnips/vim.snippets b/.config/coc/ultisnips/vim.snippets
deleted file mode 100644
index caf3f05..0000000
--- a/.config/coc/ultisnips/vim.snippets
+++ /dev/null
@@ -1,25 +0,0 @@
-# A valid snippet should starts with:
-#
-# snippet trigger_word [ "description" [ options ] ]
-#
-# and end with:
-#
-# endsnippet
-#
-# Snippet options:
-#
-# b - Beginning of line.
-# i - In-word expansion.
-# w - Word boundary.
-# r - Regular expression
-# e - Custom context snippet
-# A - Snippet will be triggered automatically, when condition matches.
-#
-# Basic example:
-#
-# snippet emitter "emitter properties" b
-# private readonly ${1} = new Emitter<$2>()
-# public readonly ${1/^_(.*)/$1/}: Event<$2> = this.$1.event
-# endsnippet
-#
-# Online reference: https://github.com/SirVer/ultisnips/blob/master/doc/UltiSnips.txt
diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim
index c89be33..11ba0fd 100644
--- a/.config/nvim/init.vim
+++ b/.config/nvim/init.vim
@@ -62,7 +62,6 @@ autocmd BufWritePre * %s/\s\+$//e
" Plugin section
call plug#begin('~/.config/nvim/plugged')
-Plug 'neoclide/coc.nvim', {'branch': 'release'} " Autocomplete
Plug 'lervag/vimtex' , { 'for' : 'tex'} " tex library for coc autocompletion
Plug 'donRaphaco/neotex', { 'for': 'tex'} " Asynchronous pdf rendering
Plug 'preservim/nerdtree' " Filetree
@@ -72,23 +71,10 @@ Plug 'FredKSchott/CoVim' "Use vim together
Plug 'qpkorr/vim-renamer' " Bulk renamer
call plug#end()
-" Coc extensions
-let g:coc_global_extensions = ['coc-snippets', 'coc-vimtex']
-" tab through suggestions
-let g:coc_snippet_next = ''
-inoremap
- \ pumvisible() ? "\" :
- \ check_back_space() ? "\" :
- \ coc#refresh()
-" jump to next placeholder
-inoremap pumvisible() ? "\" : "\"
-" ending suggestions
-function! s:check_back_space() abort
- let col = col('.') - 1
- return !col || getline('.')[col - 1] =~# '\s'
-endfunction
-" expand snippets on enter
-inoremap pumvisible() ? "\" : "\"
+let g:ycm_global_ycm_extra_conf = '/home/tiynger/.config/nvim/ycm_extra_conf.py'
+let g:ycm_semantic_triggers = {
+ \ 'tex' : ['{']
+ \}
"tagbar
map :TagbarToggle
diff --git a/.config/nvim/ycm_extra_conf.py b/.config/nvim/ycm_extra_conf.py
new file mode 100644
index 0000000..8d98a5d
--- /dev/null
+++ b/.config/nvim/ycm_extra_conf.py
@@ -0,0 +1,220 @@
+# This file is NOT licensed under the GPLv3, which is the license for the rest
+# of YouCompleteMe.
+#
+# Here's the license text for this file:
+#
+# This is free and unencumbered software released into the public domain.
+#
+# Anyone is free to copy, modify, publish, use, compile, sell, or
+# distribute this software, either in source code form or as a compiled
+# binary, for any purpose, commercial or non-commercial, and by any
+# means.
+#
+# In jurisdictions that recognize copyright laws, the author or authors
+# of this software dedicate any and all copyright interest in the
+# software to the public domain. We make this dedication for the benefit
+# of the public at large and to the detriment of our heirs and
+# successors. We intend this dedication to be an overt act of
+# relinquishment in perpetuity of all present and future rights to this
+# software under copyright law.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+# OTHER DEALINGS IN THE SOFTWARE.
+#
+# For more information, please refer to
+
+from distutils.sysconfig import get_python_inc
+import os
+import platform
+import os.path as p
+import subprocess
+
+DIR_OF_THIS_SCRIPT = p.abspath( p.dirname( __file__ ) )
+DIR_OF_THIRD_PARTY = p.join( DIR_OF_THIS_SCRIPT, 'third_party' )
+SOURCE_EXTENSIONS = [ '.cpp', '.cxx', '.cc', '.c', '.m', '.mm' ]
+
+database = None
+
+# These are the compilation flags that will be used in case there's no
+# compilation database set (by default, one is not set).
+# CHANGE THIS LIST OF FLAGS. YES, THIS IS THE DROID YOU HAVE BEEN LOOKING FOR.
+flags = [
+'-Wall',
+'-Wextra',
+'-Werror',
+'-Wno-long-long',
+'-Wno-variadic-macros',
+'-fexceptions',
+'-DNDEBUG',
+# You 100% do NOT need -DUSE_CLANG_COMPLETER and/or -DYCM_EXPORT in your flags;
+# only the YCM source code needs it.
+'-DUSE_CLANG_COMPLETER',
+'-DYCM_EXPORT=',
+# THIS IS IMPORTANT! Without the '-x' flag, Clang won't know which language to
+# use when compiling headers. So it will guess. Badly. So C++ headers will be
+# compiled as C headers. You don't want that so ALWAYS specify the '-x' flag.
+# For a C project, you would set this to 'c' instead of 'c++'.
+'-x',
+'c++',
+'-isystem',
+'cpp/pybind11',
+'-isystem',
+'cpp/whereami',
+'-isystem',
+'cpp/BoostParts',
+'-isystem',
+get_python_inc(),
+'-isystem',
+'cpp/llvm/include',
+'-isystem',
+'cpp/llvm/tools/clang/include',
+'-I',
+'cpp/ycm',
+'-I',
+'cpp/ycm/ClangCompleter',
+'-isystem',
+'cpp/ycm/tests/gmock/gtest',
+'-isystem',
+'cpp/ycm/tests/gmock/gtest/include',
+'-isystem',
+'cpp/ycm/tests/gmock',
+'-isystem',
+'cpp/ycm/tests/gmock/include',
+'-isystem',
+'cpp/ycm/benchmarks/benchmark/include',
+]
+
+# Clang automatically sets the '-std=' flag to 'c++14' for MSVC 2015 or later,
+# which is required for compiling the standard library, and to 'c++11' for older
+# versions.
+if platform.system() != 'Windows':
+ flags.append( '-std=c++11' )
+
+
+# Set this to the absolute path to the folder (NOT the file!) containing the
+# compile_commands.json file to use that instead of 'flags'. See here for
+# more details: http://clang.llvm.org/docs/JSONCompilationDatabase.html
+#
+# You can get CMake to generate this file for you by adding:
+# set( CMAKE_EXPORT_COMPILE_COMMANDS 1 )
+# to your CMakeLists.txt file.
+#
+# Most projects will NOT need to set this to anything; you can just change the
+# 'flags' list of compilation flags. Notice that YCM itself uses that approach.
+compilation_database_folder = ''
+
+
+def IsHeaderFile( filename ):
+ extension = p.splitext( filename )[ 1 ]
+ return extension in [ '.h', '.hxx', '.hpp', '.hh' ]
+
+
+def FindCorrespondingSourceFile( filename ):
+ if IsHeaderFile( filename ):
+ basename = p.splitext( filename )[ 0 ]
+ for extension in SOURCE_EXTENSIONS:
+ replacement_file = basename + extension
+ if p.exists( replacement_file ):
+ return replacement_file
+ return filename
+
+
+def PathToPythonUsedDuringBuild():
+ try:
+ filepath = p.join( DIR_OF_THIS_SCRIPT, 'PYTHON_USED_DURING_BUILDING' )
+ with open( filepath ) as f:
+ return f.read().strip()
+ except OSError:
+ return None
+
+
+def Settings( **kwargs ):
+ # Do NOT import ycm_core at module scope.
+ import ycm_core
+
+ global database
+ if database is None and p.exists( compilation_database_folder ):
+ database = ycm_core.CompilationDatabase( compilation_database_folder )
+
+ language = kwargs[ 'language' ]
+
+ if language == 'cfamily':
+ # If the file is a header, try to find the corresponding source file and
+ # retrieve its flags from the compilation database if using one. This is
+ # necessary since compilation databases don't have entries for header files.
+ # In addition, use this source file as the translation unit. This makes it
+ # possible to jump from a declaration in the header file to its definition
+ # in the corresponding source file.
+ filename = FindCorrespondingSourceFile( kwargs[ 'filename' ] )
+
+ if not database:
+ return {
+ 'flags': flags,
+ 'include_paths_relative_to_dir': DIR_OF_THIS_SCRIPT,
+ 'override_filename': filename
+ }
+
+ compilation_info = database.GetCompilationInfoForFile( filename )
+ if not compilation_info.compiler_flags_:
+ return {}
+
+ # Bear in mind that compilation_info.compiler_flags_ does NOT return a
+ # python list, but a "list-like" StringVec object.
+ final_flags = list( compilation_info.compiler_flags_ )
+
+ # NOTE: This is just for YouCompleteMe; it's highly likely that your project
+ # does NOT need to remove the stdlib flag. DO NOT USE THIS IN YOUR
+ # ycm_extra_conf IF YOU'RE NOT 100% SURE YOU NEED IT.
+ try:
+ final_flags.remove( '-stdlib=libc++' )
+ except ValueError:
+ pass
+
+ return {
+ 'flags': final_flags,
+ 'include_paths_relative_to_dir': compilation_info.compiler_working_dir_,
+ 'override_filename': filename
+ }
+
+ if language == 'python':
+ return {
+ 'interpreter_path': PathToPythonUsedDuringBuild()
+ }
+
+ return {}
+
+
+def PythonSysPath( **kwargs ):
+ sys_path = kwargs[ 'sys_path' ]
+
+ interpreter_path = kwargs[ 'interpreter_path' ]
+ major_version = subprocess.check_output( [
+ interpreter_path, '-c', 'import sys; print( sys.version_info[ 0 ] )' ]
+ ).rstrip().decode( 'utf8' )
+
+ sys_path[ 0:0 ] = [ p.join( DIR_OF_THIS_SCRIPT ),
+ p.join( DIR_OF_THIRD_PARTY, 'bottle' ),
+ p.join( DIR_OF_THIRD_PARTY, 'cregex',
+ 'regex_{}'.format( major_version ) ),
+ p.join( DIR_OF_THIRD_PARTY, 'frozendict' ),
+ p.join( DIR_OF_THIRD_PARTY, 'jedi_deps', 'jedi' ),
+ p.join( DIR_OF_THIRD_PARTY, 'jedi_deps', 'parso' ),
+ p.join( DIR_OF_THIRD_PARTY, 'requests_deps', 'requests' ),
+ p.join( DIR_OF_THIRD_PARTY, 'requests_deps',
+ 'urllib3',
+ 'src' ),
+ p.join( DIR_OF_THIRD_PARTY, 'requests_deps',
+ 'chardet' ),
+ p.join( DIR_OF_THIRD_PARTY, 'requests_deps',
+ 'certifi' ),
+ p.join( DIR_OF_THIRD_PARTY, 'requests_deps',
+ 'idna' ),
+ p.join( DIR_OF_THIRD_PARTY, 'waitress' ) ]
+
+ sys_path.append( p.join( DIR_OF_THIRD_PARTY, 'jedi_deps', 'numpydoc' ) )
+ return sys_path