Browse Source

[neovim] Embed example package in Makefile for sysimg compilation.

master
Fredrik Ekre 3 years ago
parent
commit
b5f1ec9deb
  1. 51
      .julia/environments/nvim-lspconfig/Example.jl
  2. 61
      .julia/environments/nvim-lspconfig/Makefile

51
.julia/environments/nvim-lspconfig/Example.jl

@ -1,51 +0,0 @@
# This file is opened in Neovim with a LanguageServer.jl process that records Julia
# compilation statements for creating a custom sysimage.
#
# This file has a bunch of linter errors which will exercise the linter and record
# statements for that. When the diagnostic messages corresponding to those errors show up in
# the buffer the language server should be ready to accept other commands (note: this may
# take a while -- be patient). Here are some suggestions for various LSP functionality that
# can be exercised (your regular keybindings should work):
#
# - :lua vim.lsp.buf.hover()
# - :lua vim.lsp.buf.definition()
# - :lua vim.lsp.buf.references()
# - :lua vim.lsp.buf.rename()
# - :lua vim.lsp.buf.formatting()
# - :lua vim.lsp.buf.formatting_sync()
# - :lua vim.lsp.buf.code_action()
# - Tab completion (if you have set this up using LSP)
# - ...
#
# When you are finished, simply exit neovim and PackageCompiler.jl will use all the recorded
# statements to create a custom sysimage. This sysimage will be used for the language server
# process in the future, and should result in almost instant response.
module Example
import JSON
import fzf_jll
using Random
using Zlib_jll
function hello(who, notused)
println("hello", who)
shuffle([1, 2, 3])
shoffle([1, 2, 3])
fzzf = fzf_jll.fzzf()
fzf = fzf_jll.fzf(1)
JSON.print(stdout, Dict("hello" => [1, 2, 3]), 2, 123)
JSON.print(stdout, Dict("hello" => [1, 2, 3]))
hi(who)
return Zlib_jll.libz
end
function world(s)
if s == nothing
hello(s)
else
hello(s)
end
end
end # module

61
.julia/environments/nvim-lspconfig/Makefile

@ -32,7 +32,7 @@ packagecompiler/precompile_statements.jl: Manifest.toml bin/julia
cd Example && \ cd Example && \
JULIA_LOAD_PATH=$${PWD}:@stdlib ${JULIA} -e 'using Pkg; Pkg.add(["JSON", "fzf_jll", "Random", "Zlib_jll"])' 2> /dev/null && \ JULIA_LOAD_PATH=$${PWD}:@stdlib ${JULIA} -e 'using Pkg; Pkg.add(["JSON", "fzf_jll", "Random", "Zlib_jll"])' 2> /dev/null && \
JULIA_LOAD_PATH=$${PWD}:@stdlib ${JULIA} -e 'using Pkg; Pkg.precompile()' 2> /dev/null && \ JULIA_LOAD_PATH=$${PWD}:@stdlib ${JULIA} -e 'using Pkg; Pkg.precompile()' 2> /dev/null && \
cat ${SRCDIR}/Example.jl > src/Example.jl && \ echo "$$PACKAGE_CONTENT" > src/Example.jl && \
JULIA_TRACE_COMPILE=1 nvim src/Example.jl && \ JULIA_TRACE_COMPILE=1 nvim src/Example.jl && \
rm -rf $${TMPDIR} rm -rf $${TMPDIR}
@ -54,3 +54,62 @@ clean:
rm -rf $(SYSIMAGE) packagecompiler bin rm -rf $(SYSIMAGE) packagecompiler bin
.PHONY: clean default .PHONY: clean default
export PACKAGE_CONTENT
define PACKAGE_CONTENT
# This file is opened in neovim with a LanguageServer.jl process that records Julia
# compilation statements for creating a custom sysimage.
#
# This file has a bunch of linter errors which will exercise the linter and record
# statements for that. When the diagnostic messages corresponding to those errors show up in
# the buffer the language server should be ready to accept other commands (note: this may
# take a while -- be patient). Here are some suggestions for various LSP functionality that
# can be exercised (your regular keybindings should work):
#
# - :lua vim.lsp.buf.hover()
# - :lua vim.lsp.buf.definition()
# - :lua vim.lsp.buf.references()
# - :lua vim.lsp.buf.rename()
# - :lua vim.lsp.buf.formatting()
# - :lua vim.lsp.buf.formatting_sync()
# - :lua vim.lsp.buf.code_action()
# - Tab completion (if you have set this up using LSP)
# - ...
#
# When you are finished, simply exit neovim and PackageCompiler.jl will use all the recorded
# statements to create a custom sysimage. This sysimage will be used for the language server
# process in the future, and should result in almost instant response.
module Example
import JSON
import fzf_jll
using Random
using Zlib_jll
function hello(who, notused)
println("hello", who)
shuffle([1, 2, 3])
shoffle([1, 2, 3])
fzzf = fzf_jll.fzzf()
fzf = fzf_jll.fzf(1)
JSON.print(stdout, Dict("hello" => [1, 2, 3]), 2, 123)
JSON.print(stdout, Dict("hello" => [1, 2, 3]))
hi(who)
return Zlib_jll.libz
end
function world(s)
if s == nothing
hello(s)
else
hello(s)
end
x = [1, 2, 3]
for i in 1:length(x)
println(x[i])
end
end
end # module
endef

Loading…
Cancel
Save