Allow ruby based configs and custom syntax parsers
This commit is contained in:
@@ -1,8 +0,0 @@
|
||||
{
|
||||
"startup": "bash $CRIB_CONFIG_DIR/startup.sh",
|
||||
"shutdown": "bash $CRIB_CONFIG_DIR/shutdown.sh",
|
||||
|
||||
"theme": "theme.json",
|
||||
|
||||
"lsp_config": "lsp_config.json"
|
||||
}
|
||||
419
config/libcrib.rb
Normal file
419
config/libcrib.rb
Normal file
@@ -0,0 +1,419 @@
|
||||
module C
|
||||
K_DATA = 0
|
||||
K_SHEBANG = 1
|
||||
K_COMMENT = 2
|
||||
K_ERROR = 3
|
||||
K_STRING = 4
|
||||
K_ESCAPE = 5
|
||||
K_INTERPOLATION = 6
|
||||
K_REGEXP = 7
|
||||
K_NUMBER = 8
|
||||
K_TRUE = 9
|
||||
K_FALSE = 10
|
||||
K_CHAR = 11
|
||||
K_KEYWORD = 12
|
||||
K_KEYWORDOPERATOR = 13
|
||||
K_OPERATOR = 14
|
||||
K_FUNCTION = 15
|
||||
K_TYPE = 16
|
||||
K_CONSTANT = 17
|
||||
K_VARIABLEINSTANCE = 18
|
||||
K_VARIABLEGLOBAL = 19
|
||||
K_ANNOTATION = 20
|
||||
K_DIRECTIVE = 21
|
||||
K_LABEL = 22
|
||||
K_BRACE1 = 23
|
||||
K_BRACE2 = 24
|
||||
K_BRACE3 = 25
|
||||
K_BRACE4 = 26
|
||||
K_BRACE5 = 27
|
||||
K_HEADING1 = 28
|
||||
K_HEADING2 = 29
|
||||
K_HEADING3 = 30
|
||||
K_HEADING4 = 31
|
||||
K_HEADING5 = 32
|
||||
K_HEADING6 = 33
|
||||
K_BLOCKQUOTE = 34
|
||||
K_LIST = 35
|
||||
K_LISTITEM = 36
|
||||
K_CODE = 37
|
||||
K_LANGUAGENAME = 38
|
||||
K_LINKLABEL = 39
|
||||
K_IMAGELABEL = 40
|
||||
K_LINK = 41
|
||||
K_TABLE = 42
|
||||
K_TABLEHEADER = 43
|
||||
K_ITALIC = 44
|
||||
K_BOLD = 45
|
||||
K_UNDERLINE = 46
|
||||
K_STRIKETHROUGH = 47
|
||||
K_HORIXONTALRULE = 48
|
||||
K_TAG = 49
|
||||
K_ATTRIBUTE = 50
|
||||
K_CHECKDONE = 51
|
||||
K_CHECKNOTDONE = 52
|
||||
@lsp_config = {
|
||||
"clangd" => [
|
||||
"--background-index",
|
||||
"--clang-tidy",
|
||||
"--completion-style=detailed",
|
||||
"--header-insertion=never",
|
||||
"--pch-storage=memory",
|
||||
"--limit-results=50",
|
||||
"--log=error"
|
||||
],
|
||||
"ruby-lsp" => [],
|
||||
"solargraph" => ["stdio"],
|
||||
"bash-language-server" => ["start"],
|
||||
"vscode-css-language-server" => ["--stdio"],
|
||||
"vscode-json-language-server" => ["--stdio"],
|
||||
"fish-lsp" => ["start"],
|
||||
"gopls" => ["serve"],
|
||||
"haskell-language-server" => ["lsp"],
|
||||
"emmet-language-server" => ["--stdio"],
|
||||
"typescript-language-server" => ["--stdio"],
|
||||
"lua-language-server" => [],
|
||||
"pyright-langserver" => ["--stdio"],
|
||||
"rust-analyzer" => [],
|
||||
"intelephense" => ["--stdio"],
|
||||
"marksman" => ["server"],
|
||||
"nginx-language-server" => [],
|
||||
"taplo" => ["lsp", "stdio"],
|
||||
"yaml-language-server" => ["--stdio"],
|
||||
"sqls" => ["serve"],
|
||||
"make-language-server" => [],
|
||||
"sql-language-server" => ["up", "--method", "stdio"]
|
||||
}
|
||||
@languages = {
|
||||
c: {
|
||||
color: 0x555555,
|
||||
symbol: " ",
|
||||
extensions: ["c"],
|
||||
filenames: [],
|
||||
mimetypes: ["text/x-c"],
|
||||
lsp: "clangd"
|
||||
},
|
||||
cpp: {
|
||||
color: 0x00599C,
|
||||
symbol: " ",
|
||||
extensions: ["cpp", "cc", "cxx"],
|
||||
filenames: [],
|
||||
mimetypes: ["text/x-cpp"],
|
||||
lsp: "clangd"
|
||||
},
|
||||
h: {
|
||||
color: 0xA8B9CC,
|
||||
symbol: " ",
|
||||
extensions: ["h", "hpp"],
|
||||
filenames: [],
|
||||
mimetypes: ["text/x-c-header"],
|
||||
lsp: "clangd"
|
||||
},
|
||||
css: {
|
||||
color: 0x36a3d9,
|
||||
symbol: " ",
|
||||
extensions: ["css"],
|
||||
filenames: [],
|
||||
mimetypes: ["text/css"],
|
||||
lsp: "vscode-css-language-server"
|
||||
},
|
||||
fish: {
|
||||
color: 0x4d5a5e,
|
||||
symbol: " ",
|
||||
extensions: ["fish"],
|
||||
filenames: [],
|
||||
mimetypes: ["application/x-fish"],
|
||||
lsp: "fish-lsp"
|
||||
},
|
||||
go: {
|
||||
color: 0x00add8,
|
||||
symbol: " ",
|
||||
extensions: ["go"],
|
||||
filenames: [],
|
||||
mimetypes: ["text/x-go"],
|
||||
lsp: "gopls"
|
||||
},
|
||||
gomod: {
|
||||
color: 0x00add8,
|
||||
symbol: " ",
|
||||
extensions: ["mod"],
|
||||
filenames: [],
|
||||
mimetypes: ["text/x-go-mod"],
|
||||
lsp: "gopls"
|
||||
},
|
||||
haskell: {
|
||||
color: 0xa074c4,
|
||||
symbol: " ",
|
||||
extensions: ["hs", "lhs"],
|
||||
filenames: [],
|
||||
mimetypes: ["text/x-haskell"],
|
||||
lsp: "haskell-language-server"
|
||||
},
|
||||
html: {
|
||||
color: 0xef8a91,
|
||||
symbol: " ",
|
||||
extensions: ["html", "htm"],
|
||||
filenames: [],
|
||||
mimetypes: ["text/html"],
|
||||
lsp: "emmet-language-server"
|
||||
},
|
||||
javascript: {
|
||||
color: 0xf0df8a,
|
||||
symbol: " ",
|
||||
extensions: ["js"],
|
||||
filenames: [],
|
||||
mimetypes: ["application/javascript"],
|
||||
lsp: "typescript-language-server"
|
||||
},
|
||||
typescript: {
|
||||
color: 0x36a3d9,
|
||||
symbol: " ",
|
||||
extensions: ["ts"],
|
||||
filenames: [],
|
||||
mimetypes: ["application/typescript"],
|
||||
lsp: "typescript-language-server"
|
||||
},
|
||||
json: {
|
||||
color: 0xcbcb41,
|
||||
symbol: "{}",
|
||||
extensions: ["json"],
|
||||
filenames: [],
|
||||
mimetypes: ["application/json"],
|
||||
lsp: "vscode-json-language-server"
|
||||
},
|
||||
jsonc: {
|
||||
color: 0xcbcb41,
|
||||
symbol: "{}",
|
||||
extensions: ["jsonc"],
|
||||
filenames: [],
|
||||
mimetypes: ["application/json"],
|
||||
lsp: "vscode-json-language-server"
|
||||
},
|
||||
erb: {
|
||||
color: 0x6e1516,
|
||||
symbol: " ",
|
||||
extensions: ["erb"],
|
||||
filenames: [],
|
||||
mimetypes: ["text/x-erb"],
|
||||
lsp: "emmet-language-server"
|
||||
},
|
||||
lua: {
|
||||
color: 0x36a3d9,
|
||||
symbol: " ",
|
||||
extensions: ["lua"],
|
||||
filenames: [],
|
||||
mimetypes: ["text/x-lua"],
|
||||
lsp: "lua-language-server"
|
||||
},
|
||||
python: {
|
||||
color: 0x95e6cb,
|
||||
symbol: " ",
|
||||
extensions: ["py"],
|
||||
filenames: [],
|
||||
mimetypes: ["text/x-python"],
|
||||
lsp: "pyright"
|
||||
},
|
||||
rust: {
|
||||
color: 0xdea584,
|
||||
symbol: " ",
|
||||
extensions: ["rs"],
|
||||
filenames: [],
|
||||
mimetypes: ["text/x-rust"],
|
||||
lsp: "rust-analyzer"
|
||||
},
|
||||
php: {
|
||||
color: 0xa074c4,
|
||||
symbol: " ",
|
||||
extensions: ["php"],
|
||||
filenames: [],
|
||||
mimetypes: ["application/x-php"],
|
||||
lsp: "intelephense"
|
||||
},
|
||||
markdown: {
|
||||
color: 0x36a3d9,
|
||||
symbol: " ",
|
||||
extensions: ["md", "markdown"],
|
||||
filenames: [],
|
||||
mimetypes: ["text/markdown"],
|
||||
lsp: "marksman"
|
||||
},
|
||||
nginx: {
|
||||
color: 0x6d8086,
|
||||
symbol: " ",
|
||||
extensions: ["conf"],
|
||||
filenames: [],
|
||||
mimetypes: ["text/nginx"],
|
||||
lsp: "nginx-language-server"
|
||||
},
|
||||
toml: {
|
||||
color: 0x36a3d9,
|
||||
symbol: " ",
|
||||
extensions: ["toml"],
|
||||
filenames: [],
|
||||
mimetypes: ["application/toml"],
|
||||
lsp: "taplo"
|
||||
},
|
||||
yaml: {
|
||||
color: 0x6d8086,
|
||||
symbol: " ",
|
||||
extensions: ["yml", "yaml"],
|
||||
filenames: [],
|
||||
mimetypes: ["text/yaml"],
|
||||
lsp: "yaml-language-server"
|
||||
},
|
||||
sql: {
|
||||
color: 0xdad8d8,
|
||||
symbol: " ",
|
||||
extensions: ["sql"],
|
||||
filenames: [],
|
||||
mimetypes: ["text/x-sql"],
|
||||
lsp: "sqls"
|
||||
},
|
||||
make: {
|
||||
color: 0x4e5c61,
|
||||
symbol: " ",
|
||||
extensions: ["Makefile", "makefile"],
|
||||
filenames: [],
|
||||
mimetypes: ["text/x-makefile"],
|
||||
lsp: "make-language-server"
|
||||
},
|
||||
gdscript: {
|
||||
color: 0x6d8086,
|
||||
symbol: " ",
|
||||
extensions: ["gd"],
|
||||
filenames: [],
|
||||
mimetypes: ["text/x-gdscript"],
|
||||
lsp: nil
|
||||
},
|
||||
man: {
|
||||
color: 0xdad8d8,
|
||||
symbol: " ",
|
||||
extensions: ["man"],
|
||||
filenames: [],
|
||||
mimetypes: ["application/x-troff-man"],
|
||||
lsp: nil
|
||||
},
|
||||
diff: {
|
||||
color: 0xDD4C35,
|
||||
symbol: " ",
|
||||
extensions: ["diff", "patch"],
|
||||
filenames: [],
|
||||
mimetypes: ["text/x-diff"],
|
||||
lsp: nil
|
||||
},
|
||||
gitattributes: {
|
||||
color: 0xF05032,
|
||||
symbol: " ",
|
||||
extensions: ["gitattributes"],
|
||||
filenames: [],
|
||||
mimetypes: [],
|
||||
lsp: nil
|
||||
},
|
||||
gitignore: {
|
||||
color: 0xF05032,
|
||||
symbol: " ",
|
||||
extensions: ["gitignore"],
|
||||
filenames: [],
|
||||
mimetypes: [],
|
||||
lsp: nil
|
||||
},
|
||||
regex: {
|
||||
color: 0x9E9E9E,
|
||||
symbol: ".*",
|
||||
extensions: ["regex"],
|
||||
filenames: [],
|
||||
mimetypes: [],
|
||||
lsp: nil
|
||||
},
|
||||
ini: {
|
||||
color: 0x6d8086,
|
||||
symbol: " ",
|
||||
extensions: ["ini"],
|
||||
filenames: [],
|
||||
mimetypes: [],
|
||||
lsp: nil
|
||||
},
|
||||
ruby: {
|
||||
color: 0xff8087,
|
||||
symbol: " ",
|
||||
extensions: ["rb"],
|
||||
filenames: ["Gemfile"],
|
||||
mimetypes: ["text/x-ruby"],
|
||||
lsp: "solargraph"
|
||||
},
|
||||
bash: {
|
||||
color: 0x4d5a5e,
|
||||
symbol: " ",
|
||||
extensions: ["sh"],
|
||||
filenames: ["bash_profile", "bashrc"],
|
||||
mimetypes: ["text/x-sh"],
|
||||
lsp: "bash-language-server"
|
||||
}
|
||||
}
|
||||
@key_handlers = {}
|
||||
@key_binds = {}
|
||||
@highlighters = {}
|
||||
@log_queue = []
|
||||
@line_endings = :unix
|
||||
|
||||
class << self
|
||||
attr_accessor :theme, :lsp_config, :languages,
|
||||
:line_endings, :highlighters
|
||||
attr_reader :b_startup, :b_shutdown, :b_extra_highlights
|
||||
|
||||
def startup(&block)
|
||||
@b_startup = block
|
||||
end
|
||||
|
||||
def shutdown(&block)
|
||||
@b_shutdown = block
|
||||
end
|
||||
|
||||
def queue_log(msg)
|
||||
@log_queue << msg
|
||||
end
|
||||
|
||||
def log_all
|
||||
@log_queue.each do |msg|
|
||||
puts msg
|
||||
end
|
||||
@log_queue = []
|
||||
end
|
||||
|
||||
def extra_highlights(&block)
|
||||
@b_extra_highlights = block
|
||||
end
|
||||
|
||||
def bind(modes, keys = nil, action = nil, &block)
|
||||
modes = [modes] unless modes.is_a?(Array)
|
||||
if keys.nil?
|
||||
app = self
|
||||
dsl = Object.new
|
||||
dsl.define_singleton_method(:set) do |k, act = nil, &blk|
|
||||
app.bind(modes, k, act, &blk)
|
||||
end
|
||||
dsl.instance_exec(&block) if block_given?
|
||||
elsif block_given?
|
||||
keys = [keys] unless keys.is_a?(Array)
|
||||
modes.each do |mode|
|
||||
keys.each do |key|
|
||||
@key_handlers[mode] ||= {}
|
||||
@key_handlers[mode][key] ||= []
|
||||
@key_handlers[mode][key] << block
|
||||
end
|
||||
end
|
||||
elsif action.is_a?(String)
|
||||
keys = [keys] unless keys.is_a?(Array)
|
||||
modes.each do |mode|
|
||||
keys.each do |key|
|
||||
@key_binds[mode] ||= {}
|
||||
@key_binds[mode][key] ||= []
|
||||
@key_binds[mode][key] << action
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
at_exit { C.log_all }
|
||||
226
config/main.rb
226
config/main.rb
@@ -1,151 +1,127 @@
|
||||
module C
|
||||
attr_accessor :theme, :lsp_config, :languages,
|
||||
:line_endings, :utf_mode, :highlighters
|
||||
attr_reader :b_startup, :b_shutdown, :b_extra_highlights
|
||||
|
||||
@lsp_config = {}
|
||||
@languages = {}
|
||||
@key_handlers = {}
|
||||
@key_binds = {}
|
||||
|
||||
def startup(&block)
|
||||
@b_startup = block
|
||||
end
|
||||
|
||||
def shutdown(&block)
|
||||
@b_shutdown = block
|
||||
end
|
||||
|
||||
def extra_highlights(&block)
|
||||
@b_extra_highlights = block
|
||||
end
|
||||
|
||||
def bind(modes, keys = nil, action = nil, &block)
|
||||
modes = [modes] unless modes.is_a?(Array)
|
||||
if keys.nil?
|
||||
app = self
|
||||
dsl = Object.new
|
||||
dsl.define_singleton_method(:set) do |k, act = nil, &blk|
|
||||
app.bind(modes, k, act, &blk)
|
||||
end
|
||||
dsl.instance_exec(&handler)
|
||||
elsif block_given?
|
||||
keys = [keys] unless keys.is_a?(Array)
|
||||
modes.each do |mode|
|
||||
keys.each do |key|
|
||||
@key_handlers[mode] ||= {}
|
||||
@key_handlers[mode][key] ||= []
|
||||
@key_handlers[mode][key] << block
|
||||
end
|
||||
end
|
||||
elsif action.is_a?(String)
|
||||
keys = [keys] unless keys.is_a?(Array)
|
||||
modes.each do |mode|
|
||||
keys.each do |key|
|
||||
@key_binds[mode] ||= {}
|
||||
@key_binds[mode][key] ||= []
|
||||
@key_binds[mode][key] << action
|
||||
end
|
||||
end
|
||||
else
|
||||
raise ArgumentError("invalid arguments")
|
||||
end
|
||||
end
|
||||
end
|
||||
require_relative "libcrib"
|
||||
|
||||
# basic configuration
|
||||
|
||||
C.startup do
|
||||
do_something_random_here!
|
||||
puts "Starting crib..."
|
||||
end
|
||||
|
||||
C.shutdown do
|
||||
do_something_random_here!
|
||||
puts "Exiting crib..."
|
||||
end
|
||||
|
||||
# this can be modified by the user during runtime through keybindings
|
||||
# But i need to know how to ever read this value only when needed .
|
||||
# But i need to know how to ever read this value only when needed.
|
||||
# maybe i can write a function that notifies if theme maybe changed then reload
|
||||
# It can also be scripted to load different theme formats into a hash usable by crib
|
||||
C.theme = {
|
||||
# i have a predefined list of keys that can be used here
|
||||
:default => {
|
||||
# here fg bg and style are all optional and have default values
|
||||
# if not specified
|
||||
fg: 0xEEEEEE,
|
||||
bg: 0x000000,
|
||||
italic: false,
|
||||
bold: false,
|
||||
underline: false,
|
||||
strikethrough: false
|
||||
}
|
||||
:default => { fg: 0xEEEEEE },
|
||||
:shebang => { fg: 0x7DCFFF },
|
||||
:error => { fg: 0xEF5168 },
|
||||
:comment => { fg: 0xAAAAAA, italic: true },
|
||||
:string => { fg: 0xAAD94C },
|
||||
:escape => { fg: 0x7DCFFF },
|
||||
:interpolation => { fg: 0x7DCFFF },
|
||||
:regexp => { fg: 0xD2A6FF },
|
||||
:number => { fg: 0xE6C08A },
|
||||
# rubocop:disable Lint/BooleanSymbol
|
||||
:true => { fg: 0x7AE93C },
|
||||
:false => { fg: 0xEF5168 },
|
||||
# rubocop:enable Lint/BooleanSymbol
|
||||
:char => { fg: 0xFFAF70 },
|
||||
:keyword => { fg: 0xFF8F40 },
|
||||
:keywordoperator => { fg: 0xF07178 },
|
||||
:operator => { fg: 0xFFFFFF, italic: true },
|
||||
:function => { fg: 0xFFAF70 },
|
||||
:type => { fg: 0xF07178 },
|
||||
:constant => { fg: 0x7DCFFF },
|
||||
:variableinstance => { fg: 0x95E6CB },
|
||||
:variableglobal => { fg: 0xF07178 },
|
||||
:annotation => { fg: 0x7DCFFF },
|
||||
:directive => { fg: 0xFF8F40 },
|
||||
:label => { fg: 0xD2A6FF },
|
||||
:brace1 => { fg: 0xD2A6FF },
|
||||
:brace2 => { fg: 0xFFAFAF },
|
||||
:brace3 => { fg: 0xFFFF00 },
|
||||
:brace4 => { fg: 0x0FFF0F },
|
||||
:brace5 => { fg: 0xFF0F0F }
|
||||
}
|
||||
|
||||
# this part uses dsl bindings to define the bind function
|
||||
# Hopefully extend to give more context/power to bindings
|
||||
# but try to keep simple for performance
|
||||
# for default keybindings
|
||||
C.bind [:normal, :select], :a => "insert_mode"
|
||||
# for custom keybindings
|
||||
C.bind :select, [:x, :c] do
|
||||
puts "cut"
|
||||
end
|
||||
C.bind :jumper do
|
||||
set [:x, :c] do
|
||||
puts "jump to first bookmark"
|
||||
end
|
||||
end
|
||||
# they can also be defined conditionally
|
||||
# This code is just an example and doesnt actually work
|
||||
if using_tmux?
|
||||
bind :C-p do
|
||||
system("tmux select-pane -U")
|
||||
end
|
||||
end
|
||||
# # TODO: to be done once a proper api for binding and window drawing is made
|
||||
# # The binds will be connected to either `editor` or windows where editor can
|
||||
# # only use a preset set of stuff to bind while teh windows are purely custom
|
||||
# # # this part uses dsl bindings to define the bind function
|
||||
# # # Hopefully extend to give more context/power to bindings
|
||||
# # # but try to keep simple for performance
|
||||
# # # for default keybindings
|
||||
# # C.bind [:normal, :select], :a => "insert_mode"
|
||||
# # # for custom keybindings
|
||||
# # C.bind :select, [:x, :c] do
|
||||
# # puts "cut"
|
||||
# # end
|
||||
# # C.bind :jumper do
|
||||
# # set [:x, :c] do
|
||||
# # puts "jump to first bookmark"
|
||||
# # end
|
||||
# # end
|
||||
# # # they can also be defined conditionally
|
||||
# # # This code is just an example and doesnt actually work
|
||||
# # if using_tmux?
|
||||
# # bind :C-p do
|
||||
# # system("tmux select-pane -U")
|
||||
# # end
|
||||
# # end
|
||||
|
||||
# This can for example be modified by user bindings during runtime
|
||||
C.lsp_config[:solargraph] = {
|
||||
command: "solargraph",
|
||||
args: ["stdio"],
|
||||
languages: [:ruby]
|
||||
}
|
||||
# This can, for example, be modified by user bindings during runtime
|
||||
# TODO: dynamic registration to actually be implemented once keybinds and extentions are implemented
|
||||
# A predefined list already exists and can be found in libcrib.rb
|
||||
# C.lsp_config["solargraph"] = ["stdio"]
|
||||
#
|
||||
# C.languages[:ruby] = {
|
||||
# color: 0xff8087,
|
||||
# symbol: " ",
|
||||
# extensions: ["rb"],
|
||||
# filenames: ["Gemfile"],
|
||||
# mimetypes: ["text/x-ruby"],
|
||||
# lsp: "solargraph"
|
||||
# }
|
||||
|
||||
# these are actually cached into cpp by the editor upon setting
|
||||
C.languages[:ruby] = {
|
||||
color: 0xff8087,
|
||||
symbol: " ",
|
||||
extensions: ["rb"],
|
||||
filenames: ["Gemfile"],
|
||||
mimetypes: ["text/x-ruby"]
|
||||
}
|
||||
C.line_endings = :unix # or :windows
|
||||
|
||||
C.line_endings = :auto_unix # or :auto_windows or :unix or :windows to force
|
||||
C.utf_mode = :auto_utf8 # or :auto_utf16 or :utf8 or :utf16 to force
|
||||
# C.extra_highlights do |_line, _idx|
|
||||
# # the return can be an array of
|
||||
# # [fg, bg. flags, start, end]
|
||||
# # where fg and bg are integers (using 24 bit color)
|
||||
# # and flags is a bitmask of bold/underline/italic etc
|
||||
# # and start and end are integers strictly inside the line
|
||||
# return []
|
||||
# end
|
||||
|
||||
C.extra_highlights do |_line, _idx|
|
||||
# the return can be an array of
|
||||
# [fg, bg. flags, start, end]
|
||||
# where fg and bg are integers (using 24 bit color)
|
||||
# and flags is a bitmask of bold/underline/italic etc
|
||||
# and start and end are integers strictly inside the line
|
||||
return []
|
||||
end
|
||||
|
||||
C.highlighters[:language_name] = {
|
||||
parser: ->(_state, _line) {
|
||||
# the return value is an array of
|
||||
# [state, highlights]
|
||||
# The highlighter will be aplied to the language as long as the langauge is defined in C.languages
|
||||
C.highlighters[:ruby_n] = {
|
||||
parser: ->(line, state) {
|
||||
# the return value is a hash
|
||||
# it contains the state and the highlights
|
||||
# state can be of any type but will be consistent between calls
|
||||
# initially nil is sent for uninitialized state
|
||||
# initially nil is sent for uninitialized state the returned must be anything but nil
|
||||
# the same state can be used for multiple lines
|
||||
# the highlights can be an array of
|
||||
# [fg, bg. flags, start, end]
|
||||
# where fg and bg are integers (using 24 bit color)
|
||||
# and flags is a bitmask of bold/underline/italic etc
|
||||
# [K_type, start, end]
|
||||
# K_type is a constant from the constants defined in libcrib.rb
|
||||
# for ex: for strings it would be C::K_STRING or for numbers C::K_NUMBER etc.
|
||||
# and start and end are integers strictly inside the line
|
||||
return []
|
||||
return {
|
||||
state: "",
|
||||
tokens: [
|
||||
# This will highlight the entire line as a string
|
||||
# Any wrong format will not be handled and lead to crashes
|
||||
{ type: C::K_STRING, start: 0, end: line.length }
|
||||
]
|
||||
}
|
||||
},
|
||||
matcher: ->(_state1, _state2) {
|
||||
matcher: ->(state1, state2) {
|
||||
# returns true if the states are equal
|
||||
# And so would not need recomputation for further lines
|
||||
return false
|
||||
return state1 == state2
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
# This file can be used to execute commands right after the editor session ends.
|
||||
#
|
||||
# The location of this file is defined in the editor's config.json and can be changed
|
||||
#
|
||||
# It can for example be used to unset environment variables for any lsp(s) used
|
||||
# Or like this example to set kitty padding back higher
|
||||
# kitty @ --to="$KITTY_LISTEN_ON" set-spacing padding=8 margin=0 2>/dev/null || true
|
||||
|
||||
echo "Exiting crib editor..."
|
||||
@@ -1,11 +0,0 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
# This file can be used to execute commands before the editor session starts.
|
||||
#
|
||||
# The location of this file is defined in the editor's config.json and can be changed
|
||||
#
|
||||
# It can for example be used to set environment variables for any lsp(s) used
|
||||
# Or like this example to set kitty padding to 0
|
||||
# kitty @ --to="$KITTY_LISTEN_ON" set-spacing padding=0 margin=0 2>/dev/null || true
|
||||
|
||||
echo "Starting crib editor..."
|
||||
@@ -1,88 +0,0 @@
|
||||
{
|
||||
"Default": {
|
||||
"fg": "#EEEEEE"
|
||||
},
|
||||
"Shebang": {
|
||||
"fg": "#7dcfff"
|
||||
},
|
||||
"Error": {
|
||||
"fg": "#EF5168"
|
||||
},
|
||||
"Comment": {
|
||||
"fg": "#AAAAAA",
|
||||
"italic": true
|
||||
},
|
||||
"String": {
|
||||
"fg": "#AAD94C"
|
||||
},
|
||||
"Escape": {
|
||||
"fg": "#7dcfff"
|
||||
},
|
||||
"Interpolation": {
|
||||
"fg": "#7dcfff"
|
||||
},
|
||||
"Regexp": {
|
||||
"fg": "#D2A6FF"
|
||||
},
|
||||
"Number": {
|
||||
"fg": "#E6C08A"
|
||||
},
|
||||
"True": {
|
||||
"fg": "#7AE93C"
|
||||
},
|
||||
"False": {
|
||||
"fg": "#EF5168"
|
||||
},
|
||||
"Char": {
|
||||
"fg": "#FFAF70"
|
||||
},
|
||||
"Keyword": {
|
||||
"fg": "#FF8F40"
|
||||
},
|
||||
"KeywordOperator": {
|
||||
"fg": "#F07178"
|
||||
},
|
||||
"Operator": {
|
||||
"fg": "#FFFFFF",
|
||||
"italic": true
|
||||
},
|
||||
"Function": {
|
||||
"fg": "#FFAF70"
|
||||
},
|
||||
"Type": {
|
||||
"fg": "#F07178"
|
||||
},
|
||||
"Constant": {
|
||||
"fg": "#7dcfff"
|
||||
},
|
||||
"VariableInstance": {
|
||||
"fg": "#95E6CB"
|
||||
},
|
||||
"VariableGlobal": {
|
||||
"fg": "#F07178"
|
||||
},
|
||||
"Annotation": {
|
||||
"fg": "#7dcfff"
|
||||
},
|
||||
"Directive": {
|
||||
"fg": "#FF8F40"
|
||||
},
|
||||
"Label": {
|
||||
"fg": "#D2A6FF"
|
||||
},
|
||||
"Brace1": {
|
||||
"fg": "#D2A6FF"
|
||||
},
|
||||
"Brace2": {
|
||||
"fg": "#FFAFAF"
|
||||
},
|
||||
"Brace3": {
|
||||
"fg": "#FFFF00"
|
||||
},
|
||||
"Brace4": {
|
||||
"fg": "#0FFF0F"
|
||||
},
|
||||
"Brace5": {
|
||||
"fg": "#FF0F0F"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user