Skip to content

Instantly share code, notes, and snippets.

@randy3k
Last active April 26, 2018 03:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save randy3k/b18ceb94a4daf010528c1d281935cc65 to your computer and use it in GitHub Desktop.
Save randy3k/b18ceb94a4daf010528c1d281935cc65 to your computer and use it in GitHub Desktop.
LanguageHandler with custom Notification class
from LSP.plugin.core.handlers import LanguageHandler
from LSP.plugin.core.settings import ClientConfig
from LSP.plugin.core.rpc import Notification
import os
class LspClangRcppPlugin(LanguageHandler):
name = "clangd-rcpp"
def __init__(self):
self._config = ClientConfig(
name=self.name,
binary_args=["clangd"],
tcp_port=None,
scopes=["source.c", "source.c++", "source.objc", "source.objc++"],
syntaxes=[
"Packages/C++/C.sublime-syntax",
"Packages/C++/C++.sublime-syntax",
"Packages/Objective-C/Objective-C.sublime-syntax",
"Packages/Objective-C/Objective-C++.sublime-syntax"
"Packages/RIDE/Rcpp.sublime-syntax"
],
languageId='c++',
enabled=True,
init_options=dict(),
settings=dict(),
env=dict()
)
@property
def config(self):
return self._config
def on_start(self, window):
return True
def on_initialized(self, client):
class ClangNotification(Notification):
@classmethod
def didOpen(cls, params: dict):
if os.path.isfile(os.path.join(client.project_path, "DESCRIPTION")):
params["metadata"] = {"extraFlags": ["-I/usr/local/opt/r/include"]}
return cls("textDocument/didOpen", params)
client.notification_class = ClangNotification
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment