Skip to content
This repository was archived by the owner on Feb 23, 2025. It is now read-only.

Next release #473

Merged
merged 10 commits into from
Feb 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
- uses: DeLaGuardo/setup-clojure@master
with:
cli: latest
- uses: actions/cache@v3
- uses: actions/cache@v4
with:
path: ~/.m2
key: clojure-m2-${{ hashFiles('deps.edn') }}
Expand Down
8 changes: 8 additions & 0 deletions CHANGELOG.adoc
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
All notable changes to this project will be documented in this file. This change log follows the conventions of http://keepachangelog.com/[keepachangelog.com].

== Unreleased (dev)
// {{{
=== Changed
* Bumped cider-nrepl to 0.45.0.
* Bumped nrepl to 1.1.1.

=== Fixed
* https://github.com/liquidz/vim-iced/issues/472[#472]: Fixed timeout error on connecting shadow-cljs REPL which has multiple builds.
// }}}

== 3.15.3271 (2024-01-04)
// {{{
Expand Down
47 changes: 25 additions & 22 deletions autoload/iced/nrepl/cljs.vim
Original file line number Diff line number Diff line change
Expand Up @@ -138,33 +138,36 @@ function! iced#nrepl#cljs#start_repl_via_env(env_key, ...) abort
endif

if empty(iced#nrepl#get_cljs_env())
let env = s:env[env_key](a:000)
if type(env) != v:t_dict | return iced#message#error_str(env) | endif

let warning = get(env, 'warning', '')
if !empty(warning)
call iced#message#warning_str(warning)
let res = iced#system#get('io').input(iced#message#get('confirm_proceeding'))
if res !=# '' && res !=# 'y' && res !=# 'Y'
return iced#message#error('canceled_cljs_repl')
endif
endif
call s:env[env_key](funcref('s:__start_repl_via_env'), a:000)
endif
endfunction

let Pre_code_f = get(env, 'pre-code', '')
let Env_code_f = get(env, 'env-code', '')
function! s:__start_repl_via_env(env) abort
if type(a:env) != v:t_dict | return iced#message#error_str(a:env) | endif

if type(Env_code_f) != v:t_func
return iced#message#error('invalid_cljs_env')
let warning = get(a:env, 'warning', '')
if !empty(warning)
call iced#message#warning_str(warning)
let res = iced#system#get('io').input(iced#message#get('confirm_proceeding'))
if res !=# '' && res !=# 'y' && res !=# 'Y'
return iced#message#error('canceled_cljs_repl')
endif
endif

let pre_code = type(Pre_code_f) == v:t_func ? Pre_code_f() : ''
let env_code = Env_code_f()
let Pre_code_f = get(a:env, 'pre-code', '')
let Env_code_f = get(a:env, 'env-code', '')

let opt = copy(env)
call extend(opt, {'pre': pre_code})
if iced#nrepl#cljs#start_repl(env_code, opt)
call iced#nrepl#set_cljs_env(env)
endif
if type(Env_code_f) != v:t_func
return iced#message#error('invalid_cljs_env')
endif

let pre_code = type(Pre_code_f) == v:t_func ? Pre_code_f() : ''
let env_code = Env_code_f()

let opt = copy(a:env)
call extend(opt, {'pre': pre_code})
if iced#nrepl#cljs#start_repl(env_code, opt)
call iced#nrepl#set_cljs_env(a:env)
endif
endfunction

Expand Down
7 changes: 4 additions & 3 deletions autoload/iced/nrepl/cljs/figwheel_main.vim
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,18 @@ function! s:post_code() abort
return code
endfunction

function! iced#nrepl#cljs#figwheel_main#get_env(options) abort
function! iced#nrepl#cljs#figwheel_main#get_env(callback, options) abort
if len(a:options) <= 0
return iced#message#get('argument_missing', 'build-id is required.')
endif

let s:build_id = a:options[0]
return {
return a:callback({
\ 'name': 'figwheel-main',
\ 'pre-code': funcref('s:pre_code'),
\ 'env-code': funcref('s:env_code'),
\ 'post-code': funcref('s:post_code')}
\ 'post-code': funcref('s:post_code'),
\ })
endfunction

let &cpo = s:save_cpo
Expand Down
7 changes: 4 additions & 3 deletions autoload/iced/nrepl/cljs/figwheel_sidecar.vim
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
let s:save_cpo = &cpo
set cpo&vim

function! iced#nrepl#cljs#figwheel_sidecar#get_env(_) abort
return {
function! iced#nrepl#cljs#figwheel_sidecar#get_env(callback, _) abort
return a:callback({
\ 'name': 'figwheel-sidecar',
\ 'pre-code': {-> '(do (require ''figwheel-sidecar.repl-api) (figwheel-sidecar.repl-api/start-figwheel!))'},
\ 'env-code': {-> '(figwheel-sidecar.repl-api/repl-env)'},
\ 'post-code': {-> '(figwheel-sidecar.repl-api/stop-figwheel!)'}}
\ 'post-code': {-> '(figwheel-sidecar.repl-api/stop-figwheel!)'},
\ })
endfunction

let &cpo = s:save_cpo
Expand Down
56 changes: 29 additions & 27 deletions autoload/iced/nrepl/cljs/shadow_cljs.vim
Original file line number Diff line number Diff line change
Expand Up @@ -24,47 +24,49 @@ function! s:validate_config() abort
return warn
endfunction

function! iced#nrepl#cljs#shadow_cljs#get_env(options) abort
function! iced#nrepl#cljs#shadow_cljs#get_env(callback, options) abort
if len(a:options) > 0
let s:build_id = trim(a:options[0], ' :')
else
" fetch running build ids
" `v:null` means to wait for ever
call iced#message#info('wait_a_minute')
let build_ids = get(iced#eval_and_read(s:get_build_ids_code, '', v:null), 'value', [])
if empty(build_ids) && len(a:options) <= 0
return iced#message#get('argument_missing', 'build-id is required.')
endif
return s:__select_build_id(a:callback, '', trim(a:options[0], ' :'))
endif

let build_id_count = len(build_ids)
if build_id_count == 0
return iced#message#get('argument_missing', 'build-id is required.')
elseif build_id_count == 1
let s:build_id = trim(build_ids[0], ' :')
else
" select build id
let p = iced#promise#new({resolve -> iced#selector({'accept': {_, v -> resolve(v)},
\ 'candidates': build_ids})})
let [result, error] = iced#promise#wait(p)
if !empty(error)
return iced#message#get('argument_missing', 'build-id is required.')
endif
" fetch running build ids
" `v:null` means to wait for ever
call iced#message#info('wait_a_minute')
let build_ids = get(iced#eval_and_read(s:get_build_ids_code, '', v:null), 'value', [])
if empty(build_ids) && len(a:options) <= 0
return iced#message#get('argument_missing', 'build-id is required.')
endif

let s:build_id = trim(result, ' :')
endif
let build_id_count = len(build_ids)
if build_id_count == 0
return iced#message#get('argument_missing', 'build-id is required.')
endif

if build_id_count == 1
return s:__select_build_id(a:callback, '', trim(build_ids[0], ' :'))
endif

" select build id
return iced#selector({
\ 'accept': funcref('s:__select_build_id', [a:callback]),
\ 'candidates': build_ids,
\ })
endfunction

function! s:__select_build_id(callback, _, v) abort
let s:build_id = trim(a:v, ' :')
" HACK: For shadow-cljs, vim-iced ignores quit detecting
" because shadow-cljs returns exact current ns instead of 'cljs.user'
return {
return a:callback({
\ 'name': 'shadow-cljs',
\ 'does_use_piggieback': v:false,
\ 'pre-code': {-> '(require ''shadow.cljs.devtools.api)'},
\ 'env-code': {-> {'raw': printf('(do (shadow.cljs.devtools.api/watch :%s) (shadow.cljs.devtools.api/nrepl-select :%s))', s:build_id, s:build_id) }},
\ 'ignore-quit-detecting': v:true,
\ 'warning': s:validate_config(),
\ }
\ })
endfunction


let &cpoptions = s:save_cpo
unlet s:save_cpo
2 changes: 1 addition & 1 deletion bin/iced
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ SCRIPT_DIR=$(cd $(dirname $0); pwd)
PROJECT_DIR=$(cd $SCRIPT_DIR; cd ..; pwd)
VERSION=$(grep 'Version: ' ${SCRIPT_DIR}/../doc/vim-iced.txt | cut -d' ' -f2)

BASE_DEPENDENCIES='nrepl/nrepl:1.1.0 refactor-nrepl/refactor-nrepl:3.9.1 cider/cider-nrepl:0.44.0 com.github.liquidz/iced-nrepl:1.2.480'
BASE_DEPENDENCIES='nrepl/nrepl:1.1.1 refactor-nrepl/refactor-nrepl:3.9.1 cider/cider-nrepl:0.45.0 com.github.liquidz/iced-nrepl:1.2.480'
BASE_MIDDLEWARES='cider.nrepl/wrap-classpath cider.nrepl/wrap-clojuredocs cider.nrepl/wrap-complete cider.nrepl/wrap-debug cider.nrepl/wrap-format cider.nrepl/wrap-info cider.nrepl/wrap-macroexpand cider.nrepl/wrap-ns cider.nrepl/wrap-out cider.nrepl/wrap-refresh cider.nrepl/wrap-stacktrace cider.nrepl/wrap-spec cider.nrepl/wrap-test cider.nrepl/wrap-trace cider.nrepl/wrap-undef cider.nrepl/wrap-xref refactor-nrepl.middleware/wrap-refactor iced.nrepl/wrap-iced'

CLJS_DEPENDENCIES='cider/piggieback:0.5.3'
Expand Down
4 changes: 2 additions & 2 deletions deps.edn
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{:paths ["clj/repl"]
:deps {nrepl/nrepl {:mvn/version "1.1.0"}
:deps {nrepl/nrepl {:mvn/version "1.1.1"}
refactor-nrepl/refactor-nrepl {:mvn/version "3.9.1"}
cider/cider-nrepl {:mvn/version "0.44.0"}
cider/cider-nrepl {:mvn/version "0.45.0"}
com.github.liquidz/iced-nrepl {:mvn/version "1.2.480"}}
:__middlewares__
["cider.nrepl/wrap-classpath"
Expand Down
8 changes: 4 additions & 4 deletions doc/vim-iced.txt
Original file line number Diff line number Diff line change
Expand Up @@ -142,9 +142,9 @@ LEININGEN~
$HOME/.lein/profile.clj
>
{:user
{:dependencies [[nrepl "1.1.0"]
{:dependencies [[nrepl "1.1.1"]
[com.github.liquidz/iced-nrepl "1.2.480"]
[cider/cider-nrepl "0.44.0"]]
[cider/cider-nrepl "0.45.0"]]
:repl-options {:nrepl-middleware [cider.nrepl/wrap-classpath
cider.nrepl/wrap-clojuredocs
cider.nrepl/wrap-complete
Expand Down Expand Up @@ -174,7 +174,7 @@ BOOT~

(swap! boot.repl/*default-dependencies* concat
'[[refactor-nrepl "3.9.1"]
[cider/cider-nrepl "0.44.0"]
[cider/cider-nrepl "0.45.0"]
[com.github.liquidz/iced-nrepl "1.2.480"]])

(swap! boot.repl/*default-middleware* concat
Expand Down Expand Up @@ -204,7 +204,7 @@ SHADOW-CLJS~
>
{
:dependencies [[refactor-nrepl "3.9.1"]
[cider/cider-nrepl "0.44.0"]
[cider/cider-nrepl "0.45.0"]
[com.github.liquidz/iced-nrepl "1.2.480"]]
}
<
Expand Down
9 changes: 5 additions & 4 deletions installer/cljstyle.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@

set -e

version='0.15.0'
file='cljstyle.tar.gz'
version='0.16.626'
file='cljstyle.zip'
if [ "$(uname)" == 'Darwin' ]; then
os='macos'
else
os='linux'
fi
url="https://github.com/greglook/cljstyle/releases/download/${version}/cljstyle_${version}_${os}.tar.gz"
arch="$(uname -m)"
url="https://github.com/greglook/cljstyle/releases/download/${version}/cljstyle_${version}_${os}_${arch}.zip"

curl -L -o ${file} ${url} && tar xvf ${file} && rm -f ${file}
curl -L -o ${file} ${url} && unzip ${file} && rm -f ${file}
2 changes: 1 addition & 1 deletion installer/joker.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

set -e

version='1.3.0'
version='1.3.4'
file='joker.zip'
if [ "$(uname)" == 'Darwin' ]; then
os='mac'
Expand Down
Loading