All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Allow hovering over symbol-like commands (e. g.
\pi
) to show a unicode preview or a preview image if the client supports it (#1261) - Add
texlab.symbols.customEnvironments
setting for specifying additional environments that will be included in the document symbols (#1292) - Add
texlab.experimental.labelReferenceRangeCommands
setting (#1210) - Add
tex-fmt
as a formatter forlatex
andbibtex
(#1320)
- Fix parsing links with URL encoding (#1279)
- Improve error message when
texlab.build.executable
does not exist (#1303)
- Support starred variants in "Go to References" (#1234)
- Add
texlab.latexindent.replacement
setting to allow passing a replacement flag tolatexindent
(#1222) - Don't require a label to show section numbers for document symbols (#910)
- Support navigating to files that are part of the
TEXINPUTS
similar toBIBINPUTS
(#1228)
- Fix opening
untitled
documents (#1242) - Handle
\bibitem
when checking for undefined references (#1171) - Fix false-positive syntax error when using a command inside a
\label
(#879)
- Add
texlab.inlayHints.maxLength
setting to allow limiting inlay hint text length (#1212) - Allow suppressing diagnostics using
% texlab: ignore
magic comments (#1211)
- Fix enabling
texlab.build.useFileList
setting - Make "Goto Definition" work correctly with starred commands (#1197)
- Add
texlab.build.useFileList
setting to allow controlling whether to use the.fls
files
- Disable using
.fls
files for project detection by default
- Parse
.fls
files to make the project detection more reliable (#1145)
- Fix parsing commands with unicode characters inside BibTeX entries (#1147)
- Improve detection of included files when non-ASCII characters are used (#923)
- Fix resolving includes starting from files included using
\subimport
(#1145)
- Add label commands from
zref
andzref-clever
to the list of default label commands (#1140) - Add
texlab.experimental.labelDefinitionPrefixes
andtexlab.experimental.labelReferencePrefixes
options (#1139)
- Don't treat
\label{}
and\ref{}
with macro parameter as label commands (#1119) - Fix parsing
latexmkrc
forlatexmk
versions older thanv4.8.4
(#1128) - Remove unused
texlab.rootDirectory
setting from documentation
- Add
texlab.experimental.labelDefinitionCommands
setting to customize the list of\label
-like commands (#1093) - Extend list of commands treated as command definitions and environment definitions (#1087)
- Allow the server to trigger the forward search in an editor-agnostic way:
Running
texlab inverse-search --input <FILE> --line <LINE>
will open the specified document in the editor if the client supports it (#1091)
- Fix detection of log dir when using
latexmkrc
(use$aux_dir
instead of$out_dir
) (#1079) - Fix extracting
$aux_dir
and$out_dir
fromlatexmkrc
(#1079) - Add support for extracting
$aux_dir
and$out_dir
fromlatexmk >= v4.85
((#1079)) - Improve log file change detection under Windows
- Cleanup diagnostics of deleted files
- Let
\declaretheorem
accept a list of environment names instead of just a single name (#1075) - Use configured directories if not set explicitly by
latexmkrc
file (#1095)
- Replace tilde (
~
), environment variables,${userHome}
,${workspaceFolder}
in options - Replace tidle (
~
) and environment variables in\include
-like commands - Add "Go To Definition" support for user-defined commands with
\def
and\let
(#1081) - Add "Find all References" for commands (#1082)
- Support more macros for defining commands (#1083)
- Avoid panicking when malformed URIs are sent to the server (#1078)
- Don't report errors for citations with macro arguments (#1080)
- Fix parsing
\label
with options (for example, when usingcleverref
) (#1056) - Fix detecting project root if the home directory contains a
.latexmkrc
file (#1061)
- Improve support for handling
Tectonic.toml
projects (#1014) - Cache results of project detection to improve performance
- Triggering completion inside
\label{...}
will suggest undefined labels (#1046) - Add snippets for
\( ... \)
,\[ ... \]
and\{ ... \}
(#1010)
- Don't return document symbol with empty name if
\item[]
is encountered (#1040) - Fix extracting label numbers inside theorems defined by
ntheorem
package (#1053)
- Fix clearing stale diagnostics reported by the server (#1042)
- Speed up reading bibliographies with many string definitions (#1039)
- Add experimental
texlab.experimental.labelReferenceCommands
setting to customize the list of\ref
-like commands (#1032)
- Don't report diagnostics for files that are part of the TeX distro (#1028)
- When
workspace/didChangeConfiguration
contains the configuration of multiple LSP servers,texlab
will try to extract thetexlab
configuration instead of falling back to the default settings (#1003) - Keep filtering completion lists server-side if prefix matcher is set (#1003)
- Allow brackets and parentheses in label names and similar constructs (#1016)
- Fix completing includes in conjunction with
\graphicspath
(#997)
- Fix parsing commands when they are used with subscript (#990)
- Don't append a newline each time a BibTeX document is being formatted (#996)
- Avoid trying to parse most of the TeX distro when building the dependency graph. Add
texlab.experimental.followPackageLinks
setting to allow re-enabling the old behavior (#986)
- Infer
texlab.build.auxDirectory
,texlab.build.logDirectory
andtexlab.build.pdfDirectory
fromlatexmkrc
if available (#907)
- Do not report
undefined reference
errors when using\nocite{*}
(#964) - Fix potential crash when parsing build log files (#973)
- Set the final tab stop of the
\begin
snippet inside the environment (#963)
- Add
texlab.inlayHints.labelDefinitions
andtexlab.inlayHints.labelReferences
options (#753) - Display inlay hints for label references by default (#753)
- Moving the build logs to the recycle bin will now clear the diagnostics (texlab-vscode/#825)
- Fix false positive when reporting syntax errors for BibTeX accents (#945)
- Fix regression when renaming commands (#936)
- Allow passing additional arguments to
ChkTeX
usingtexlab.chktex.additionalArgs
(#927)
- Fix loading bibliographies from
kpathsea
search path (#923) - Don't report duplicate results when using goto definition on includes (#924)
- Fix project detection when there exist files with the same name (#923)
- Do not report parse errors with
$
in paths (#931)
- Don't crash when using comments inside
\include
-like commands (#919) - Folding ranges include only the contents instead of the entire range of the structure.
For example, the folding range of an environment will start after the
\begin
and stop before the\end
(#915)
- Improve performance when completing BibTeX entries (#493)
- Don't report unused entries for very large bibliographies
- Avoid redundant reparses after saving documents
- Use bibliographies found in
BIBINPUTS
environment variable (#493) - Add
texlab.build.pdfDirectory
setting (#911)
- Fix search path for aux files when using
\include
instead of\input
(#906)
- Report diagnostics for unused and undefined labels
- Report diagnostics for unused BibTeX entries and undefined citations
- Report diagnostics for duplicate BibTeX entries
- Report diagnostics for duplicate labels
- Add
texlab.build.auxDirectory
andtexlab.build.logDirectory
settings (#906)
- Deprecate
texlab.auxDirectory
in favor oftexlab.build.auxDirectory
- Add symbol support for
thmtools
package (#894) - Add
texlab.findEnvironments
command to return the list of environments containing a position (#892)
- Show inlay hints for labels after the command instead of inside the argument (#890)
- Prevent adding trailing newline after formatting with
latexmk
(#895) - Improving
\paragraph
parsing
- Add
texlab.cancelBuild
command to cancel the currently active build (#887)
- Fix resolving include commands from the
import
package (#885) - Fix regression when tracking active cursor position (#880)
- Fix spurious completion results when completing environments (#883)
- Fix regression when guessing cursor position after formatting (#880)
- Fix parsing
\verb
command (#828) - Add
flalign
andflalign*
to default list of math environments (#884)
- Allow optionally passing cursor position to
textDocument/build
request for use in forward search after building. Previously, the server had to guess the cursor position (#475) - Add experimental
texlab.experimental.citationCommands
setting to allow extending the list of citation commands (#832) - Add support for escaping placeholders in build arguments similar to forward search
- Allow configuring completion matching algorithm (#872)
- Fix regression introduced in
v5.4.2
involvingtexlab.cleanArtifacts
command.
- Fix memory leak when editing documents over a long time (#856)
- Fix parsing parentheses in file paths (#874)
- Do not return symbols with empty names (e. g. sections without name) (#870)
- Repair
textDocument/formatting
request (#871)
- Add experimental settings to allow extending the list of special environments:
texlab.experimental.mathEnvironments
texlab.experimental.enumEnvironments
texlab.experimental.verbatimEnvironments
- Add
texlab.changeEnvironment
workspace command (#849) - Add
texlab.showDependencyGraph
workspace command
- Do not show caption or section names in label inlay hints (#858)
- Include more user-defined commands in command completion
- Parse nested
\iffalse
blocks correctly (#853) - Parse commands with multi-byte characters correctly (#857)
- Fix checking whether a document can be a root file
- Allow filtering
textDocument/documentSymbols
using regular expressions specified viatexlab.symbols.allowedPatterns
andtexlab.symbols.ignoredPatterns
(#851)
- Do not use percent-encoded path when searching for PDF files during forward search (#848)
- Always return an empty list of code actions instead of returning "method not found" (#850)
- Include line numbers in build warnings when available (#840)
- Add
none
formatter totexlab.latexFormatter
andtexlab.bibtexFormatter
options to allow disabling formatting (#846)
- Concatenate more than two lines of maximum length in build diagnostics (#842)
- Apply the correct range of references to labels when renaming (#841)
- Use
document
environment to detect root file instead of\documentclass
(#845)
- Allow manually overriding the root directory using a
texlabroot
/.texlabroot
marker file. See the wiki for more information. (#826, #838)
- Deprecate
texlab.rootDirectory
setting in favor of.texlabroot
files
- Do not use
.git
,.chktexrc
,.latexmkrc
files/directories to determine the root directory (#826) - Fix building documents without an explicit root directory (#837)
- BREAKING:
texlab.rootDirectory
is now used as the folder path from which the compiler is executed relative to the main document. By default it is equal to"."
. For more information, please visit the wiki. - Improve performance of completion by a huge margin due to a faster filtering method used internally
- Do not discover project files beyond the provided workspace folders
- Try to guess the root directory by checking for files such as
.latexmkrc
orTectonic.toml
iftexlab.rootDirectory
is not set
- Update positions of reported build diagnostics when editing the affected line
- Do not treat links to files as bidirectional by default. This prevents issues where
texlab
ends up compiling the wrong file in projects with shared files (#806, #757, #679) - Fix coverage of directories which need to be watched for changes (#502, #491)
- Resolve links of the
import
package correctly - Use
filterText
of completion items when filtering internally (#829)
- Do not try to run the TeX engine on package files and fail the build instead (#801)
- Handle URIs with URL-encoded drive letters on Windows (#802)
- Parse BibTeX entries with unbalanced quotes correctly (#809)
- Provide completion for more acronym commands (#813)
- Fix parsing acronym definitions (#813)
- Do not crash with a stack overflow when trying to load packages with many internal dependencies (#793)
- Normalize drive letters of all document URIs
- Fix parsing commands that take file paths as arguments (#789)
- Use the correct working directory and command line arguments when calling
latexindent
(#645) - Fix publishing to CTAN
- Add inlay hints for
\label{...}
(#753)
- Improve accuracy of the error locations reported by the TeX engine (#738)
- Reduce number of false positive errors reported by
texlab
(#745)
- Do not watch the same directory multiple times, which can result in a memory leak on Windows (#737)
- Fix detection of root document when sharing files between projects (#679)
- Fix text synchronization problem caused by file watcher (#724)
- Deserialize server options with missing keys (or not keys at all) correctly (#707)
- Pass
chktexrc
files if they are not in the current directory (#683) - Revert back to server-side file watching due to lack of client support (#679)
- Add support for escaping placeholders in forward search (#649)
- Add support for diagnostic filtering (#323)
- Add pre-built binaries for the following targets:
aarch64-unknown-linux-gnu
armv7-unknown-linux-gnueabihf
x86_64-unknown-linux-musl
aarch64-pc-windows-msvc
i686-pc-windows-msvc
- Parse incomplete server options correctly (#651)
- Add server commands to clean build directory (#607)
- Improve output when hovering over BibTeX strings
- Improve the heuristic for finding build artifacts (#635)
- Add
--version
command line flag - Provide pre-built binaries for
aarch64-apple-darwin
architecture (#591) - Autocomplete files based on
\graphicspath
(#590) - Release
texlab
oncrates.io
(#399)
- BREAKING: Use client-side file watching instead of server-side notifications (
workspace/didChangeWatchedFiles
) - BREAKING: Bump minimum supported Rust version to 1.58.1
- BREAKING: Do not use
citeproc-rs
to render citations. Instead, use a custom approach that tries to resemble theBibLaTeX
output (#629)
- Parse
\subinputfrom
command correctly (#610) - Parse verbatim environments correctly (#490)
- Stop capturing stdout when build exits (#588)
- Fix parsing of key-value pairs (#573)
- Normalize
texlab.rootDirectory
when resolving includes (#571) - Allow optional arguments in environment definitions (#570)
- Allow
=
in include paths (#568)
- Parse command definitions with optional arguments correctly
- Fix detection of command definitions in completion (latex-lsp/texlab-vscode#618)
- Watch aux directory by default for changes (#563)
- Do not allow multi-line keys in the grammar (#559)
- Use
textEdit
property for snippets (#558) - Allow simple commands as text argument for most commands (#557)
- Treat
\renewcommand
as an environment definition (#556) - Do not return
null
from forward search request - Make directory path in
\import
optional (#540) - Do not spam workspace/configuration requests (#533)
- Fix completion for symbols in commands with incomplete braces (#510)
- Do not produce syntax errors for macro parameters inside special command arguments (#508)
- Fix a bug that sometimes causes the
aux
file to pick up the diagnostics of thetex
file (#502) - Fix a bug that sometimes prevents
log
files from being reanalyzed (#502)
- Enable incremental text synchronization to reduce serialization overhead (#460)
- Reduce size of executable by compressing the completion database
- Fix completion of commands near delimiters (#449)
- Prevent
texlab
from hanging because of unanswered configuration requests sent to Emacs (#456) - Re-analyze the workspace if the initial configuration has been received late
- Re-introduce
texlab.build.forwardSearchAfter
with a more reliable way of detecting the current line number. - Re-introduce
texlab.build.onSave
due to popular request (#427). - Re-introduce work done progress notifications for building.
- Recommend
texlab.build.onSave
instead of-pvc
in documentation. - Do not rely on
.latexmkrc
for previewing anymore, insteadtexlab.build.forwardSearchAfter
can be used (#440, #436). - Deprecate
texlab.build.isContinuous
setting
- Fix conditional compilation of the
citation
feature.
- Add
texlab.latexFormatter
setting to allow turning offlatexindent
. At the moment,texlab.latexFormatter: texlab
is not implemented yet and does nothing. - Expose the
--local
flag oflatexindent
viatexlab.latexindent.local
setting (#365) - Expose the
--modifylinebreaks
flag oflatexindent
viatexlab.latexindent.modifyLineBreaks
setting (#365) - Assign (unique) error codes to static analysis diagnostics.
- Avoid creating defunct
latexindent
processes which clear out the document (#437) - Allow whitespace in LaTeX identifiers like labels (#433)
- Run CI on Ubuntu 18.04 to allow an older
glibc
version (#439).
- Sometimes the log parser does not pick up errors from the log file (#426)
- Fix a bug involving characters that are not part of the ASCII charset (#428)
- Basic error analysis for LaTeX files (#323)
- Parse LaTeX3 commands correctly (#410)
- Allow configuring ChkTeX using a
chktexrc
file (#309) - Implement goto definition for includes (#386)
- Provide completion for
\citeA{...}
(#409) - Allow passing additional arguments to
latexindent
(#365) - Document symbols and label completion now correctly handle
subequations
.
- BREAKING: The configuration format has changed.
Every setting is now under the
texlab
scope instead of the two scopeslatex
andbibtex
. For a list of possible options, please see here. Thelatex.build.onSave
setting has been removed in favor of-pvc
oflatexmk
. In the VSCode extension, thelatex.build.onSave
setting is still available along with thelatex.build.forwardSearchAfter
setting. The reasoning is that thatlatex.build.forwardSearchAfter
cannot reliably implemented in the server because it requires the current cursor position, which the LSP spec does not offer. In previous versions, TexLab had to guess the cursor position. We encourage editor extensions, to still support these settings under thetexlab
scope. - BREAKING: Previewing equations has been removed for now until a better solution is found. The existing approach is way too slow and does not work reliably.
- Distribution detection no longer produces an error message in the client. Instead, a log message is generated. A TeX distribution is only required to compile documents.
- Improve compile times a bit.
- Do not send snippets if the client does not support them (#413)
- Fix protocol violation when exiting the server (#310)
- Fix reporting compile-time diagnostics using file watching (#339)
- Fix compilation warnings (#359)
- Fix crash when exiting with NeoVim LSP client (#405)
- Hopefully fixes the ChkTeX spamming issue (#186)
- Reduce CPU-load when idle (#400)
- Fix compilation on
arm64-apple-darwin
(Apple Silicon) (#343)
- Add basic support for RNW files
- Add support for
varioref
package
- Set
isIncomplete
tofalse
for small completion lists
- Fix compilation on
aarch64
andarmv7l
(#289)
- Fuzzy matching now works with Visual Studio Code
- Improve performance of completion
- Fix the ordering of completion items when using
lsp-mode
(#227) - Fix preview when using custom class files (#228)
- Add a new setting
latex.build.forwardSearchAfter
to trigger the forward search after building. - Add option to write the log output to a log file
- Fix crash in symbols when encountering theorem descriptions (#220)
- Fix a parsing error that caused
texlab
to take 100% CPU usage in some cases (#212) - Prevent building the same file multiple times at once
- Add basic support for the
import
package - Allow LaTeX and BibTeX formatting via
latexindent
. The built-in BibTeX formatter is still available via"bibtex.formatting.formatter": "texlab"
(#151)
- Handle
subfiles
package when executing forward search (#208) - Fix detection of terminated builds
- Ensure that there is at most one instance of ChkTeX running
- Fix deserialization of incoming JSON-RPC errors
- Fix preview when including packages in a child file
- Breaking change:
latex.build.args
now uses placeholders like the forward search. The filename (%f
) is no longer implicitly appended to the end of the argument list. - Breaking change: Update the LSP types to accommodate newer LSP clients (#200)
- Improve performance of completion (when completing LaTeX commands)
- Improve workspace detection algorithm
- Add a new setting
latex.build.outputDirectory
to specify the directory containing the build artifacts. This setting can be used in combination with the-outdir
flag oflatexmk
(#147) - Add basic support for push-based configuration via
workspace/didChangeConfiguration
(#123)
- Show all digits of chktex warning number (#160)
- Provide completion for local packages if
kpsewhich
is installed - Add
.def
and.bibtex
to the list of supported extensions - Add basic support for
tectonic
- Fix rendering of citations with DOIs (#117)
- Fix building of LaTeX files without
\begin{document}
(#122) - Do not crash when editing remote files
- Run LaTeX linter when opening a file if enabled
- Handle
\hyphen
when rendering citations
- Add support for
crossref
when previewing citations (#16) - Warn if the user does not have a TeX distribution installed
- Change license to GPLv3
- Do not require Node.js when building the server (#87)
- Add logging for JSON-RPC errors via
stderr
(#111) - Provide completion for
\subfile
- Provide completion for glossary entries
- Show full path when hovering over includes
- Implement "Goto Definition" for BibTeX strings
- Use Rust Stable (1.39+) instead of Rust Beta
- Sort symbols by project order (#93)
- Improve detection of local packages inside the current workspace (#110)
- Fix potential crash in "Goto Definition"
- Include enumeration environments in symbols
- Implement
workspace/symbol
request - Handle enumeration items when rendering labels
- Handle subtables in symbols and completion
- Handle BibTeX strings when rendering citations
- Improve rendering of labels
- Do not require a label when generating symbols
- Improve detection of included files
- Reorganize completion and symbol kinds
- Do not rely on
workspace/didChangeWatchedFiles
- Use Rust Beta instead of Rust Nightly
- Make rendering of section labels more consistent
- Fix theorem numbers in multi-file projects
- Fix filter text of citations with braces inside a field
- Handle invalid UTF-8 in log files
- Add support for clients that do not support hierarchical symbols
- Add support for hovering over BibTeX strings
- Use formatted references in symbol request
- Do not run ChkTeX on BibTeX files
- Fix build freezes on Windows (#63)
- Add support for \part
- Increase hover range when hovering over labels
- Fix rendering of theorem labels
- Handle Windows paths correctly
- Provide symbols for BibTeX fields and BibTeX strings
- Provide symbols for LaTeX labels
- Show theorem name when hovering over theorem references
- Show Unicode glyps when completing symbols
- Use LocationLink for "peek definition" when possible
- Node.js is no longer a dependency
- Provide document symbols for BibTeX entries and LaTeX sections
- Hovering over a package does not require an internet connection anymore
- The Linux server binaries do not depend on
libssl
anymore (#55)
- Add completion support for
\RequirePackage
- Filter completion list based on the contents of the reference
- The index mechanism has been removed. Packages are now indexed with a script beforehand.
- Add section name and caption to label completion
- Show section name and caption when hovering over labels
- Add some missing kernel commands with stars
- Add support for comma-separated imports
- Add setting to lint after a change occurs
- Improve completion at the end of the file
- Fix preselect for environments with missing braces
- Add support citations with multiple keys (#22)
- Add support for the cleveref package (#21)
- Implement "Go to Definition" for commands (#15)
- Provide preview for user-defined commands
- Provide completion and preview for theorem environments
- Java is no longer a required dependency
- Node.js is now an optional dependency required to display citations
- Improve performance of completion
- Improve startup time
- The server no longer depends on a workspace folder
- "Find all References" works from a reference instead of just the definition (#25)
- All configuration items are now optional
- Provide only math labels when completing \eqref
- Preselect the matching environment name (#29)
- Let the client decide whether to include the declaration when finding all references (#25)
- Renaming a label with colons now works as expected (#30)
- Handle colons when completing labels and citations (#30)
- Do not crash when encountering a BibTeX entry with
a
crossref
field (#16) - Hovering over uppercase BibTeX fields now shows the documentation (#17)
- Do not depend on extensions when resolving included files (#22)
- Do not depend on the
workspace/configuration
request (#22) - Prevent completion from triggering too often
- Fix completion inside
\( \)
. (#14) - Do not crash on invalid requests.
- Improve startup time
- Improve MiKTeX support (#8)
- Add linting support for LaTeX via ChkTeX
- Analyze referenced files that are not part of the current workspace
- Improve completion for includes
- Improve performance of completion
- Show preview when hovering over math expressions
- Show package name when hovering over a command
- Store completion database in
~/.texlab
directory
- Fix crash when editing a BibTeX file
- Fix crash when hovering over invalid BibTeX entries
- Fix a bug where the completion does not get triggered correctly
- Show bibliography when completing citations
- Show bibliography when hovering over citations
- Completion for equation references
- Fix completion of file includes
- Prevent server crash when opening a locked file
- Do not display an error when PDF viewers return a non-zero exit code while performing forward search
- Reduce binary size
- Fix rendering of completion symbols
- Initial release