https://bugs.kde.org/show_bug.cgi?id=479496
Bug ID: 479496 Summary: Kate seems to issue `textDocument/documentSymbol` requests without checking if the LSP server supports this part of the protocol. Classification: Applications Product: kate Version: 23.08.4 Platform: Other OS: Linux Status: REPORTED Severity: normal Priority: NOR Component: application Assignee: kwrite-bugs-n...@kde.org Reporter: k...@malplena.net Target Milestone: --- SUMMARY Kate seems to issue `textDocument/documentSymbol` requests without checking if the LSP server (asm-lsp in this case) supports this part of the protocol. STEPS TO REPRODUCE 1. Use code: ```nasm section .bss input_char resb 1 ; Reserve 1 byte for the input character ; registers ; r12 num a section .data total dq 0 ; the total sum num dq 0 ; entry integer print_char db 0 section .text global _start is_digit: ; check if value of input_char is a digit cmp byte [input_char], '0' jl not_digit cmp byte [input_char], '9' jg not_digit mov rax, 1 ret not_digit: xor rax, rax; set 0 ret error: mov rax, 60 mov rdi, 1 syscall read_char: ; Read a single character mov rax, 0 ; sys_read mov rdi, 0 ; fd 0 (standard input) mov rsi, input_char ; ptr to input mov rdx, 1 ; number of bytes to read syscall ret sum: add [total], r12 mov r12, 0 ret number_input: call read_char cmp byte [input_char], 10 ; \n je sum cmp byte [input_char], -1 ; EOF je error call is_digit cmp rax, 0 je error call is_digit je append_number append_number: imul r12, 10 sub byte [input_char], '0' ; char to num movzx r13, byte [input_char] ; zero-extend the byte to 64 bits add r12, r13 call number_input ret reverse_number: mov r13, rdi ; r13 = input number xor r14, r14 ; r14 = 0 call reverse_loop mov rax, r14 ret reverse_loop: imul r14, r14, 10 mov rax, r13 xor rdx, rdx mov rcx, 10 div rcx add r14, rdx mov r13, rax cmp r13, 0 jg reverse_loop ; continue loop if r13 > 0 ret print_number: call reverse_number mov r13, rax ; number to print/decrement call print_number_loop ret print_number_loop: ; divide r13 and puts it back with 1 less digit on right mov rax, r13 mov rcx, 10 mov rdx, 0 div rcx mov r13, rax ; print remainder mov [print_char], rdx; add byte [print_char], '0' mov rax, 1 ; sys_write system call number mov rdi, 1 ; file descriptor 1 (stdout) mov rsi, print_char ; pointer to the character mov rdx, 1 ; number of bytes to write syscall cmp r13, 0 jg print_number_loop ; continue loop if r13 > 0 ret _start: call number_input call number_input call sum mov rdi, [total] call print_number mov [print_char], byte 10 ; newline mov rax, 1 mov rdi, 1 mov rsi, print_char mov rdx, 1 syscall mov rax, 60 ; System call number for sys_exit mov rdi, 0 ; Exit code 0 syscall ``` 2. Use asm-lsp (https://github.com/bergercookie/asm-lsp) 3. Open "Output" view using the button in the bottom-left corner OBSERVED RESULT ``` [09:42:51  LSP Client Log] Started server asm-lsp@/home/user: /home/user/.cargo/bin/asm-lsp [09:42:51  LSP Server Log] asm-lsp@/home/user INFO [asm_lsp] Starting LSP server... [09:42:51  LSP Server Log] asm-lsp@/home/user INFO [asm_lsp] Populating register set -> x86... [09:42:51  LSP Server Log] asm-lsp@/home/user INFO [asm_lsp] Populating register set -> x86_64... [09:42:51  LSP Server Log] asm-lsp@/home/user INFO [asm_lsp] Populating instruction set -> x86... [09:42:51  LSP Server Log] asm-lsp@/home/user INFO [asm_lsp::x86_parser] Fetching html page containing further documentation, from the cache -> /home/user/.cache/asm-lsp/x86_instr_docs.html... [09:42:51  LSP Server Log] asm-lsp@/home/user INFO [asm_lsp] Populating instruction set -> x86_64... [09:42:51  LSP Server Log] asm-lsp@/home/user INFO [asm_lsp::x86_parser] Fetching html page containing further documentation, from the cache -> /home/user/.cache/asm-lsp/x86_instr_docs.html... [09:42:51  LSP Server Log] asm-lsp@/home/user INFO [asm_lsp] Populating register set -> x86... [09:42:51  LSP Server Log] asm-lsp@/home/user INFO [asm_lsp] Populating register set -> x86_64... [09:42:51  LSP Server Log] asm-lsp@/home/user INFO [asm_lsp] Starting LSP loop... [09:42:51  LSP Server Log] asm-lsp@/home/user ERROR [asm_lsp] Invalid request fromat -> Request { id: RequestId( I32( 2, ), ), method: "textDocument/documentSymbol", params: Object { "textDocument": Object { "uri": String("file:///home/user/Programming/ASM/Sum/sum.asm"), }, }, } [09:42:52  LSP Server Log] asm-lsp@/home/user ERROR [asm_lsp] Invalid request fromat -> Request { id: RequestId( I32( 3, ), ), method: "textDocument/documentSymbol", params: Object { "textDocument": Object { "uri": String("file:///home/user/Programming/ASM/Sum/sum.asm"), }, }, } ``` EXPECTED RESULT No unsupported requests SOFTWARE/OS VERSIONS Operating System: openSUSE Tumbleweed 20231228 KDE Plasma Version: 5.27.10 KDE Frameworks Version: 5.113.0 Qt Version: 5.15.11 Kernel Version: 6.6.7-1-default (64-bit) Graphics Platform: X11 ADDITIONAL INFORMATION Issue on LSP server gitforge: https://github.com/bergercookie/asm-lsp/issues/58 -- You are receiving this mail because: You are watching all bug changes.