fix(bicep): support multi-line array completion for roles and other enums
Adds support for autocomplete in multi-line array syntax like:
roles: [
'KEY_VAULT_ ← cursor triggers completion here
]
Previously only worked on same line as opening bracket:
roles: ['KEY_VAULT_ ← only this worked
Changes:
- Walk backwards up to 10 lines to find array opening (e.g. "roles: [")
- Detect if cursor is inside array based on indentation and quotes
- Stop lookback if closing bracket found (not in array anymore)
- Add test case for nested multi-line array completion
- Improve lsp_bridge.py error handling with traceback logging
- Add lsp_bridge_debug.sh wrapper for easier IntelliJ debugging
- Update EDITOR_SETUP.md with correct IntelliJ LSP4IJ config
Fixes autocomplete for deeply nested structures like:
assignments: [{ roles: ['APP_CONFIGURATION_...'] }]
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -17,6 +17,7 @@ frames straight to stdout.
|
||||
import asyncio
|
||||
import ssl
|
||||
import sys
|
||||
import traceback
|
||||
|
||||
import websockets
|
||||
|
||||
@@ -71,8 +72,9 @@ async def main(uri: str) -> None:
|
||||
if msg is None:
|
||||
break
|
||||
await ws.send(msg)
|
||||
except Exception:
|
||||
pass
|
||||
except Exception as e:
|
||||
print(f"stdin_to_ws error: {e}", file=sys.stderr)
|
||||
traceback.print_exc(file=sys.stderr)
|
||||
|
||||
async def ws_to_stdout() -> None:
|
||||
try:
|
||||
@@ -80,8 +82,9 @@ async def main(uri: str) -> None:
|
||||
data = frame if isinstance(frame, bytes) else frame.encode()
|
||||
sys.stdout.buffer.write(data)
|
||||
sys.stdout.buffer.flush()
|
||||
except Exception:
|
||||
pass
|
||||
except Exception as e:
|
||||
print(f"ws_to_stdout error: {e}", file=sys.stderr)
|
||||
traceback.print_exc(file=sys.stderr)
|
||||
|
||||
await asyncio.gather(stdin_to_ws(), ws_to_stdout())
|
||||
|
||||
@@ -90,4 +93,9 @@ if __name__ == "__main__":
|
||||
if len(sys.argv) < 2:
|
||||
print("Usage: lsp_bridge.py <wss://...>", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
asyncio.run(main(sys.argv[1]))
|
||||
try:
|
||||
asyncio.run(main(sys.argv[1]))
|
||||
except Exception as e:
|
||||
print(f"Fatal error: {e}", file=sys.stderr)
|
||||
traceback.print_exc(file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
Reference in New Issue
Block a user