diff --git a/.julia/environments/nvim-lspconfig/Example.jl b/.julia/environments/nvim-lspconfig/Example.jl deleted file mode 100644 index fff6233..0000000 --- a/.julia/environments/nvim-lspconfig/Example.jl +++ /dev/null @@ -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 diff --git a/.julia/environments/nvim-lspconfig/Makefile b/.julia/environments/nvim-lspconfig/Makefile index 246654a..08fbd0b 100644 --- a/.julia/environments/nvim-lspconfig/Makefile +++ b/.julia/environments/nvim-lspconfig/Makefile @@ -32,7 +32,7 @@ packagecompiler/precompile_statements.jl: Manifest.toml bin/julia 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.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 && \ rm -rf $${TMPDIR} @@ -54,3 +54,62 @@ clean: rm -rf $(SYSIMAGE) packagecompiler bin .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