sublimelsp / LSP-rust-analyzer

Convenience package for rust-analyzer
MIT License
69 stars 11 forks source link

Inlay hints don't appear until an edit is made #80

Closed fgimian closed 1 year ago

fgimian commented 1 year ago

Hey there, thank you so much for this incredible extension! 😄

I've enabled inlay hints in my LSP settings with "show_inlay_hints": true, however they only seem to appear after an edit is made to my source code.

For example, after I open a source file, the inlay hints don't appear:

image

After making any edit (e.g. hitting the space key, typing a character etc.), the inlay hints show up:

image

I've verified that this doesn't happen with the gopls LSP package so I wonder if it's something that is related to this particular package?

Logs included below in case they are handy:

:: --> rust-analyzer initialize(1): {'initializationOptions': {}, 'capabilities': {'general': {'markdown': {'version': '3.2.2', 'parser': 'Python-Markdown'}, 'regularExpressions': {'engine': 'ECMAScript'}}, 'window': {'showDocument': {'support': True}, 'showMessage': {'messageActionItem': {'additionalPropertiesSupport': True}}, 'workDoneProgress': True}, 'workspace': {'configuration': True, 'symbol': {'tagSupport': {'valueSet': [1]}, 'symbolKind': {'valueSet': [15, 21, 9, 3, 5, 20, 4, 11, 24, 25, 10, 7, 18, 23, 1, 16, 19, 14, 22, 6, 2, 13, 17, 8, 12, 26]}, 'dynamicRegistration': True}, 'executeCommand': {}, 'applyEdit': True, 'semanticTokens': {'refreshSupport': True}, 'inlayHint': {'refreshSupport': True}, 'workspaceFolders': True, 'didChangeWatchedFiles': {'dynamicRegistration': True}, 'workspaceEdit': {'failureHandling': 'abort', 'documentChanges': True}, 'didChangeConfiguration': {'dynamicRegistration': True}, 'codeLens': {'refreshSupport': True}}, 'textDocument': {'documentLink': {'tooltipSupport': True, 'dynamicRegistration': True}, 'signatureHelp': {'contextSupport': True, 'signatureInformation': {'documentationFormat': ['markdown', 'plaintext'], 'activeParameterSupport': True, 'parameterInformation': {'labelOffsetSupport': True}}, 'dynamicRegistration': True}, 'hover': {'dynamicRegistration': True, 'contentFormat': ['markdown', 'plaintext']}, 'documentHighlight': {'dynamicRegistration': True}, 'formatting': {'dynamicRegistration': True}, 'completion': {'completionItem': {'insertTextModeSupport': {'valueSet': [2]}, 'tagSupport': {'valueSet': [1]}, 'labelDetailsSupport': True, 'documentationFormat': ['markdown', 'plaintext'], 'deprecatedSupport': True, 'resolveSupport': {'properties': ['detail', 'documentation', 'additionalTextEdits']}, 'snippetSupport': True}, 'insertTextMode': 2, 'dynamicRegistration': True, 'completionItemKind': {'valueSet': [12, 4, 7, 16, 8, 23, 24, 13, 11, 10, 18, 22, 19, 5, 14, 21, 20, 17, 9, 6, 15, 3, 1, 25, 2]}}, 'documentSymbol': {'hierarchicalDocumentSymbolSupport': True, 'tagSupport': {'valueSet': [1]}, 'symbolKind': {'valueSet': [15, 21, 9, 3, 5, 20, 4, 11, 24, 25, 10, 7, 18, 23, 1, 16, 19, 14, 22, 6, 2, 13, 17, 8, 12, 26]}, 'dynamicRegistration': True}, 'references': {'dynamicRegistration': True}, 'typeDefinition': {'linkSupport': True, 'dynamicRegistration': True}, 'semanticTokens': {'overlappingTokenSupport': False, 'tokenModifiers': ['deprecated', 'definition', 'abstract', 'static', 'readonly', 'async', 'declaration', 'modification', 'defaultLibrary', 'documentation'], 'requests': {'range': True, 'full': {'delta': True}}, 'tokenTypes': ['string', 'parameter', 'number', 'namespace', 'class', 'type', 'interface', 'event', 'operator', 'comment', 'enum', 'enumMember', 'struct', 'regexp', 'keyword', 'modifier', 'decorator', 'macro', 'method', 'property', 'variable', 'function', 'typeParameter'], 'dynamicRegistration': True, 'augmentsSyntaxTokens': True, 'multilineTokenSupport': True, 'formats': ['relative']}, 'publishDiagnostics': {'dataSupport': True, 'codeDescriptionSupport': True, 'tagSupport': {'valueSet': [2, 1]}, 'versionSupport': True, 'relatedInformation': True}, 'colorProvider': {'dynamicRegistration': True}, 'selectionRange': {'dynamicRegistration': True}, 'rename': {'prepareSupport': True, 'dynamicRegistration': True}, 'synchronization': {'willSave': True, 'dynamicRegistration': True, 'willSaveWaitUntil': True, 'didSave': True}, 'definition': {'linkSupport': True, 'dynamicRegistration': True}, 'codeAction': {'disabledSupport': True, 'codeActionLiteralSupport': {'codeActionKind': {'valueSet': ['quickfix', 'refactor', 'refactor.extract', 'refactor.inline', 'refactor.rewrite', 'source.organizeImports']}}, 'dataSupport': True, 'dynamicRegistration': True, 'resolveSupport': {'properties': ['edit']}}, 'inlayHint': {'resolveSupport': {'properties': ['textEdits', 'label.command']}, 'dynamicRegistration': True}, 'rangeFormatting': {'dynamicRegistration': True}, 'declaration': {'linkSupport': True, 'dynamicRegistration': True}, 'codeLens': {'dynamicRegistration': True}, 'implementation': {'linkSupport': True, 'dynamicRegistration': True}}}, 'rootPath': 'C:\\Users\\Fots\\source\\rust\\oriel-experiment\\wip\\file-permissions', 'clientInfo': {'name': 'Sublime Text LSP', 'version': '1.18.0'}, 'workspaceFolders': [{'name': 'file-permissions', 'uri': 'file:///C:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions'}], 'processId': 15480, 'rootUri': 'file:///C:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions'}
:: <<< rust-analyzer 1: {'capabilities': {'documentHighlightProvider': True, 'typeDefinitionProvider': True, 'signatureHelpProvider': {'triggerCharacters': ['(', ',', '<']}, 'documentRangeFormattingProvider': False, 'documentSymbolProvider': True, 'documentFormattingProvider': True, 'hoverProvider': True, 'selectionRangeProvider': True, 'callHierarchyProvider': True, 'semanticTokensProvider': {'range': True, 'full': {'delta': True}, 'legend': {'tokenModifiers': ['documentation', 'declaration', 'static', 'defaultLibrary', 'async', 'attribute', 'callable', 'constant', 'consuming', 'controlFlow', 'crateRoot', 'injected', 'intraDocLink', 'library', 'mutable', 'public', 'reference', 'trait', 'unsafe'], 'tokenTypes': ['comment', 'decorator', 'enumMember', 'enum', 'function', 'interface', 'keyword', 'macro', 'method', 'namespace', 'number', 'operator', 'parameter', 'property', 'string', 'struct', 'typeParameter', 'variable', 'angle', 'arithmetic', 'attribute', 'attributeBracket', 'bitwise', 'boolean', 'brace', 'bracket', 'builtinAttribute', 'builtinType', 'character', 'colon', 'comma', 'comparison', 'constParameter', 'derive', 'deriveHelper', 'dot', 'escapeSequence', 'formatSpecifier', 'generic', 'label', 'lifetime', 'logical', 'macroBang', 'parenthesis', 'punctuation', 'selfKeyword', 'selfTypeKeyword', 'semicolon', 'typeAlias', 'toolModule', 'union', 'unresolvedReference']}}, 'documentOnTypeFormattingProvider': {'moreTriggerCharacter': ['.', '>', '{'], 'firstTriggerCharacter': '='}, 'renameProvider': {'prepareProvider': True}, 'referencesProvider': True, 'declarationProvider': True, 'workspace': {'fileOperations': {'willRename': {'filters': [{'pattern': {'matches': 'file', 'glob': '**/*.rs'}, 'scheme': 'file'}, {'pattern': {'matches': 'folder', 'glob': '**'}, 'scheme': 'file'}]}}}, 'completionProvider': {'completionItem': {'labelDetailsSupport': True}, 'resolveProvider': True, 'triggerCharacters': [':', '.', "'", '(']}, 'textDocumentSync': {'didClose': {}, 'didOpen': {}, 'save': {}, 'change': {'syncKind': 2}}, 'codeActionProvider': {'codeActionKinds': ['', 'quickfix', 'refactor', 'refactor.extract', 'refactor.inline', 'refactor.rewrite'], 'resolveProvider': True}, 'workspaceSymbolProvider': True, 'codeLensProvider': {'resolveProvider': True}, 'inlayHintProvider': {'resolveProvider': True}, 'experimental': {'ssr': True, 'externalDocs': True, 'joinLines': True, 'moveItem': True, 'hoverRange': True, 'workspaceSymbolScopeKindFiltering': True, 'parentModule': True, 'onEnter': True, 'openCargoToml': True, 'matchingBrace': True, 'runnables': {'kinds': ['cargo']}}, 'implementationProvider': True, 'foldingRangeProvider': True, 'definitionProvider': True}, 'serverInfo': {'name': 'rust-analyzer', 'version': '0.3.1186-standalone (e8e598f64 2022-08-28)'}}
::  -> rust-analyzer initialized: {}
::  -> rust-analyzer workspace/didChangeConfiguration: {'settings': {'rust-analyzer': {'joinLines': {'joinElseIf': True, 'removeTrailingComma': True, 'joinAssignments': True, 'unwrapTrivialBlock': True}, 'hover': {'actions': {'gotoTypeDef': {'enable': True}, 'references': {'enable': False}, 'enable': True, 'implementations': {'enable': True}, 'run': {'enable': True}, 'debug': {'enable': True}}, 'links': {'enable': True}, 'documentation': {'keywords': {'enable': True}, 'enable': True}}, 'restartServerOnConfigChange': False, 'assist': {'expressionFillDefault': 'todo'}, 'runnables': {'command': None, 'extraArgs': []}, 'linkedProjects': [], 'completion': {'callable': {'snippets': 'fill_arguments'}, 'snippets': {'custom': {'Ok': {'body': 'Ok()', 'postfix': 'ok', 'description': 'Wrap the expression in a `Result::Ok`', 'scope': 'expr'}, 'Err': {'body': 'Err()', 'postfix': 'err', 'description': 'Wrap the expression in a `Result::Err`', 'scope': 'expr'}, 'Box::pin': {'body': 'Box::pin()', 'requires': 'std::boxed::Box', 'postfix': 'pinbox', 'description': 'Put the expression into a pinned `Box`', 'scope': 'expr'}, 'Some': {'body': 'Some()', 'postfix': 'some', 'description': 'Wrap the expression in an `Option::Some`', 'scope': 'expr'}, 'Rc::new': {'body': 'Rc::new()', 'requires': 'std::rc::Rc', 'postfix': 'rc', 'description': 'Put the expression into an `Rc`', 'scope': 'expr'}, 'Arc::new': {'body': 'Arc::new()', 'requires': 'std::sync::Arc', 'postfix': 'arc', 'description': 'Put the expression into an `Arc`', 'scope': 'expr'}}}, 'autoimport': {'enable': True}, 'postfix': {'enable': True}, 'autoself': {'enable': True}, 'privateEditable': {'enable': False}}, 'terminusAutoClose': False, 'cargo': {'autoreload': True, 'target': None, 'unsetTest': ['core'], 'features': [], 'noDefaultFeatures': False, 'buildScripts': {'overrideCommand': None, 'useRustcWrapper': True, 'enable': True}, 'noSysroot': False}, 'lru': {'capacity': None}, 'cachePriming': {'numThreads': 0, 'enable': True}, 'signatureInfo': {'detail': 'full', 'documentation': {'enable': True}}, 'checkOnSave': {'target': None, 'command': 'check', 'overrideCommand': None, 'enable': True, 'features': None, 'noDefaultFeatures': None, 'allTargets': True, 'extraArgs': []}, 'workspace': {'symbol': {'search': {'kind': 'only_types', 'scope': 'workspace', 'limit': 128}}}, 'rustc': {'source': None}, 'typing': {'autoClosingAngleBrackets': {'enable': False}, 'continueCommentsOnNewline': True}, 'imports': {'prefix': 'plain', 'merge': {'glob': True}, 'granularity': {'group': 'crate', 'enforce': False}, 'group': {'enable': True}}, 'semanticHighlighting': {'doc': {'comment': {'inject': {'enable': True}}}, 'operator': {'specialization': {'enable': False}, 'enable': True}, 'punctuation': {'separate': {'macro': {'bang': False}}, 'specialization': {'enable': False}, 'enable': False}, 'strings': {'enable': True}}, 'terminusUsePanel': False, 'files': {'excludeDirs': [], 'watcher': 'client'}, 'lens': {'references': {'trait': {'enable': False}, 'adt': {'enable': False}, 'method': {'enable': False}, 'enumVariant': {'enable': False}}, 'forceCustomCommands': True, 'implementations': {'enable': True}, 'run': {'enable': True}, 'enable': True, 'debug': {'enable': True}}, 'highlightRelated': {'yieldPoints': {'enable': True}, 'references': {'enable': True}, 'breakPoints': {'enable': True}, 'exitPoints': {'enable': True}}, 'inlayHints': {'renderColons': True, 'chainingHints': {'enable': True}, 'typeHints': {'hideNamedConstructor': False, 'hideClosureInitialization': False, 'enable': True}, 'lifetimeElisionHints': {'useParameterNames': False, 'enable': 'never'}, 'closingBraceHints': {'minLines': 25, 'enable': True}, 'bindingModeHints': {'enable': False}, 'reborrowHints': {'enable': 'never'}, 'parameterHints': {'enable': True}, 'maxLength': 25, 'closureReturnTypeHints': {'enable': 'never'}}, 'notifications': {'cargoTomlNotFound': True}, 'procMacro': {'server': None, 'ignored': {}, 'attributes': {'enable': True}, 'enable': True}, 'runnableEnv': None, 'rustfmt': {'extraArgs': [], 'rangeFormatting': {'enable': False}, 'overrideCommand': None}, 'cargoRunner': None, 'diagnostics': {'warningsAsInfo': [], 'warningsAsHint': [], 'experimental': {'enable': False}, 'remapPrefix': {}, 'enable': True, 'disabled': []}}}}
:: <-- rust-analyzer client/registerCapability(0): {'registrations': [{'registerOptions': {'includeText': False, 'documentSelector': [{'pattern': '**/*.rs'}, {'pattern': '**/Cargo.toml'}, {'pattern': '**/Cargo.lock'}]}, 'id': 'textDocument/didSave', 'method': 'textDocument/didSave'}]}
:: >>> rust-analyzer 0: None
:: <-- rust-analyzer window/workDoneProgress/create(1): {'token': 'rustAnalyzer/Fetching'}
:: >>> rust-analyzer 1: None
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Fetching', 'value': {'title': 'Fetching', 'kind': 'begin'}}
::  -> rust-analyzer textDocument/didOpen: {'textDocument': {'text': 'use std::{ffi::c_void, process, ptr};\nuse windows::{\n    core::PWSTR,\n    Win32::{\n        Foundation::{GetLastError, BOOL, INVALID_HANDLE_VALUE, LUID, PSID},\n        Security::{\n            AdjustTokenPrivileges,\n            Authorization::{\n                GetExplicitEntriesFromAclW, GetNamedSecurityInfoW, SetNamedSecurityInfoW,\n                EXPLICIT_ACCESS_W, SE_FILE_OBJECT,\n            },\n            GetAce, LookupAccountNameW, LookupAccountSidW, LookupPrivilegeValueW, SidTypeUnknown,\n            ACCESS_ALLOWED_ACE, ACCESS_DENIED_ACE, ACE_HEADER, ACL, DACL_SECURITY_INFORMATION,\n            LUID_AND_ATTRIBUTES, OWNER_SECURITY_INFORMATION, PSECURITY_DESCRIPTOR,\n            SE_PRIVILEGE_ENABLED, TOKEN_ADJUST_PRIVILEGES, TOKEN_PRIVILEGES, TOKEN_QUERY,\n        },\n        Storage::FileSystem::{\n            STANDARD_RIGHTS_ALL, STANDARD_RIGHTS_EXECUTE, STANDARD_RIGHTS_READ,\n            STANDARD_RIGHTS_REQUIRED, STANDARD_RIGHTS_WRITE,\n        },\n        System::{\n            SystemServices::{\n                ACCESS_ALLOWED_ACE_TYPE, ACCESS_DENIED_ACE_TYPE, MAXIMUM_ALLOWED, SE_RESTORE_NAME,\n            },\n            Threading::{OpenProcess, OpenProcessToken, PROCESS_QUERY_INFORMATION},\n        },\n    },\n};\n\nfn main() {\n    let path = "Cargo.toml";\n    unsafe {\n        let mut acl = ptr::null_mut();\n\n        let result = GetNamedSecurityInfoW(\n            &path.into(),\n            SE_FILE_OBJECT,\n            DACL_SECURITY_INFORMATION,\n            None,\n            None,\n            Some(&mut acl),\n            None,\n            std::ptr::null_mut(),\n        );\n        let error = GetLastError();\n\n        println!(\n            "GetNamedSecurityInfoW - Return Code: {:?}, Error: {:?}, Owner SID: {:?}",\n            result, error, *acl\n        );\n\n        let mut ace: *mut c_void = ptr::null_mut();\n\n        let result = GetAce(acl, 0, &mut ace);\n        println!("result: {:?} {:?}", result, ace);\n\n        let header = *(ace as *mut ACE_HEADER);\n        match header.AceType as u32 {\n            ACCESS_ALLOWED_ACE_TYPE => {\n                let thingo = *(ace as *mut ACCESS_ALLOWED_ACE);\n                println!("Allowed: {:?}", thingo);\n\n                if STANDARD_RIGHTS_ALL.0 & thingo.Mask != 0 {\n                    println!("All Rights");\n                }\n\n                if STANDARD_RIGHTS_EXECUTE.0 & thingo.Mask != 0 {\n                    println!("Execute Rights");\n                }\n\n                if STANDARD_RIGHTS_READ.0 & thingo.Mask != 0 {\n                    println!("Read Rights");\n                }\n\n                if STANDARD_RIGHTS_WRITE.0 & thingo.Mask != 0 {\n                    println!("Write Rights");\n                }\n\n                if STANDARD_RIGHTS_REQUIRED.0 & thingo.Mask != 0 {\n                    println!("Required Rights");\n                }\n\n                print!("{:?}", thingo.SidStart);\n            }\n            ACCESS_DENIED_ACE_TYPE => {\n                println!("Denied");\n            }\n            _ => {\n                println!("Unknown");\n            }\n        }\n\n        // let mut num_entries = 0u32;\n        // let mut explicit_access_ptr = ptr::null_mut();\n        // let result = GetExplicitEntriesFromAclW(acl, &mut num_entries, &mut explicit_access_ptr);\n\n        // println!(\n        //     "GetExplicitEntriesFromAclW - Return Code: {:?}, Num Entries: {:?}, Access: {:?}",\n        //     result, num_entries, explicit_access_ptr\n        // );\n    }\n\n    // ----------------------------------------------------------------------------------------\n\n    // change_privilege(SE_RESTORE_NAME);\n    // unsafe {\n    //     let mut sid_type = SidTypeUnknown;\n    //     let mut owner_sid_size = 0u32;\n    //     let mut domain_name_length = 0u32;\n    //     let owner_name = r"Fotsies-PC\\Fots";\n    //     // let owner_name = r"BUILTIN\\Administrators";\n    //     // let owner_name = r"NT AUTHORITY\\SYSTEM";\n\n    //     let result = LookupAccountNameW(\n    //         None, // Local Computer\n    //         &owner_name.into(),\n    //         PSID::default(),\n    //         &mut owner_sid_size,\n    //         PWSTR::null(),\n    //         &mut domain_name_length,\n    //         &mut sid_type,\n    //     );\n    //     let error = GetLastError();\n\n    //     println!(\n    //         "LookupAccountNameW - Result: {:?}, Error: {:?}, Owner SID Size: {:?}, Domain Name Length: {:?}, SID Type: {:?}",\n    //         result, error, owner_sid_size, domain_name_length, sid_type\n    //     );\n\n    //     let mut owner_sid_buffer = vec![0u8; owner_sid_size as usize];\n    //     let owner_sid = PSID(owner_sid_buffer.as_mut_ptr() as *mut c_void);\n\n    //     let mut domain_name_buffer = vec![0u16; domain_name_length as usize];\n    //     let domain_name = PWSTR(domain_name_buffer.as_mut_ptr());\n\n    //     let result = LookupAccountNameW(\n    //         None, // Local Computer\n    //         &owner_name.into(),\n    //         owner_sid,\n    //         &mut owner_sid_size,\n    //         domain_name,\n    //         &mut domain_name_length,\n    //         &mut sid_type,\n    //     );\n    //     let error = GetLastError();\n\n    //     println!(\n    //         "LookupAccountNameW - Result: {:?}, Error: {:?}, Owner SID Size: {:?}, Domain Name: {:?}, SID Type: {:?}",\n    //         result,\n    //         error,\n    //         owner_sid_size,\n    //         String::from_utf16(&domain_name_buffer).unwrap(),\n    //         sid_type\n    //     );\n\n    //     let result = SetNamedSecurityInfoW(\n    //         &path.into(),\n    //         SE_FILE_OBJECT,\n    //         OWNER_SECURITY_INFORMATION,\n    //         owner_sid,\n    //         None,\n    //         None,\n    //         None,\n    //     );\n    //     let error = GetLastError();\n\n    //     println!(\n    //         "SetNamedSecurityInfoW - Return Code: {:?}, Error: {:?}",\n    //         result, error\n    //     );\n    // }\n}\n\nfn change_privilege(privilege: &str) {\n    let process_handle =\n        unsafe { OpenProcess(PROCESS_QUERY_INFORMATION, false, process::id()) }.unwrap();\n\n    let mut token_handle = INVALID_HANDLE_VALUE;\n    let result = unsafe {\n        OpenProcessToken(\n            process_handle,\n            TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,\n            &mut token_handle,\n        )\n    };\n    println!("OpenProcessToken - Result: {:?}", result);\n\n    let mut luid = LUID::default();\n    let result = unsafe { LookupPrivilegeValueW(None, &privilege.into(), &mut luid) };\n    println!(\n        "LookupPrivilegeValueW - Result: {:?}, LUID: {:?}",\n        result, luid\n    );\n\n    let mut privileges = TOKEN_PRIVILEGES {\n        PrivilegeCount: 1,\n        Privileges: [LUID_AND_ATTRIBUTES {\n            Luid: luid,\n            Attributes: SE_PRIVILEGE_ENABLED,\n        }],\n    };\n\n    let result = unsafe {\n        AdjustTokenPrivileges(\n            token_handle,\n            BOOL::from(false),\n            Some(&mut privileges),\n            0,\n            None,\n            None,\n        )\n    };\n\n    let error = unsafe { GetLastError() };\n    println!(\n        "AdjustTokenPrivileges - Result: {:?}, Error: {:?}",\n        result, error\n    );\n}\n', 'languageId': 'rust', 'version': 0, 'uri': 'file:///C:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs'}}
:: --> rust-analyzer textDocument/inlayHint(2): {'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 219, 'character': 0}}, 'textDocument': {'uri': 'file:///C:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs'}}
:: --> rust-analyzer textDocument/codeLens(3): {'textDocument': {'uri': 'file:///C:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs'}}
:: <-- rust-analyzer workspace/configuration(2): {'items': [{'section': 'rust-analyzer'}]}
:: >>> rust-analyzer 2: [{'joinLines': {'joinElseIf': True, 'removeTrailingComma': True, 'joinAssignments': True, 'unwrapTrivialBlock': True}, 'hover': {'actions': {'gotoTypeDef': {'enable': True}, 'references': {'enable': False}, 'enable': True, 'implementations': {'enable': True}, 'run': {'enable': True}, 'debug': {'enable': True}}, 'links': {'enable': True}, 'documentation': {'keywords': {'enable': True}, 'enable': True}}, 'restartServerOnConfigChange': False, 'assist': {'expressionFillDefault': 'todo'}, 'runnables': {'command': None, 'extraArgs': []}, 'linkedProjects': [], 'completion': {'callable': {'snippets': 'fill_arguments'}, 'snippets': {'custom': {'Ok': {'body': 'Ok()', 'postfix': 'ok', 'description': 'Wrap the expression in a `Result::Ok`', 'scope': 'expr'}, 'Err': {'body': 'Err()', 'postfix': 'err', 'description': 'Wrap the expression in a `Result::Err`', 'scope': 'expr'}, 'Box::pin': {'body': 'Box::pin()', 'requires': 'std::boxed::Box', 'postfix': 'pinbox', 'description': 'Put the expression into a pinned `Box`', 'scope': 'expr'}, 'Some': {'body': 'Some()', 'postfix': 'some', 'description': 'Wrap the expression in an `Option::Some`', 'scope': 'expr'}, 'Rc::new': {'body': 'Rc::new()', 'requires': 'std::rc::Rc', 'postfix': 'rc', 'description': 'Put the expression into an `Rc`', 'scope': 'expr'}, 'Arc::new': {'body': 'Arc::new()', 'requires': 'std::sync::Arc', 'postfix': 'arc', 'description': 'Put the expression into an `Arc`', 'scope': 'expr'}}}, 'autoimport': {'enable': True}, 'postfix': {'enable': True}, 'autoself': {'enable': True}, 'privateEditable': {'enable': False}}, 'terminusAutoClose': False, 'cargo': {'autoreload': True, 'target': None, 'unsetTest': ['core'], 'features': [], 'noDefaultFeatures': False, 'buildScripts': {'overrideCommand': None, 'useRustcWrapper': True, 'enable': True}, 'noSysroot': False}, 'lru': {'capacity': None}, 'cachePriming': {'numThreads': 0, 'enable': True}, 'signatureInfo': {'detail': 'full', 'documentation': {'enable': True}}, 'checkOnSave': {'target': None, 'command': 'check', 'overrideCommand': None, 'enable': True, 'features': None, 'noDefaultFeatures': None, 'allTargets': True, 'extraArgs': []}, 'workspace': {'symbol': {'search': {'kind': 'only_types', 'scope': 'workspace', 'limit': 128}}}, 'rustc': {'source': None}, 'typing': {'autoClosingAngleBrackets': {'enable': False}, 'continueCommentsOnNewline': True}, 'imports': {'prefix': 'plain', 'merge': {'glob': True}, 'granularity': {'group': 'crate', 'enforce': False}, 'group': {'enable': True}}, 'semanticHighlighting': {'doc': {'comment': {'inject': {'enable': True}}}, 'operator': {'specialization': {'enable': False}, 'enable': True}, 'punctuation': {'separate': {'macro': {'bang': False}}, 'specialization': {'enable': False}, 'enable': False}, 'strings': {'enable': True}}, 'terminusUsePanel': False, 'files': {'excludeDirs': [], 'watcher': 'client'}, 'lens': {'references': {'trait': {'enable': False}, 'adt': {'enable': False}, 'method': {'enable': False}, 'enumVariant': {'enable': False}}, 'forceCustomCommands': True, 'implementations': {'enable': True}, 'run': {'enable': True}, 'enable': True, 'debug': {'enable': True}}, 'highlightRelated': {'yieldPoints': {'enable': True}, 'references': {'enable': True}, 'breakPoints': {'enable': True}, 'exitPoints': {'enable': True}}, 'inlayHints': {'renderColons': True, 'chainingHints': {'enable': True}, 'typeHints': {'hideNamedConstructor': False, 'hideClosureInitialization': False, 'enable': True}, 'lifetimeElisionHints': {'useParameterNames': False, 'enable': 'never'}, 'closingBraceHints': {'minLines': 25, 'enable': True}, 'bindingModeHints': {'enable': False}, 'reborrowHints': {'enable': 'never'}, 'parameterHints': {'enable': True}, 'maxLength': 25, 'closureReturnTypeHints': {'enable': 'never'}}, 'notifications': {'cargoTomlNotFound': True}, 'procMacro': {'server': None, 'ignored': {}, 'attributes': {'enable': True}, 'enable': True}, 'runnableEnv': None, 'rustfmt': {'extraArgs': [], 'rangeFormatting': {'enable': False}, 'overrideCommand': None}, 'cargoRunner': None, 'diagnostics': {'warningsAsInfo': [], 'warningsAsHint': [], 'experimental': {'enable': False}, 'remapPrefix': {}, 'enable': True, 'disabled': []}}]
:: <~~ rust-analyzer 2: {'message': 'waiting for cargo metadata or cargo check', 'code': -32801}
:: <~~ rust-analyzer 3: {'message': 'waiting for cargo metadata or cargo check', 'code': -32801}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Fetching', 'value': {'kind': 'report', 'message': 'metadata'}}
:: <-- rust-analyzer client/registerCapability(3): {'registrations': [{'registerOptions': {'watchers': [{'globPattern': 'C:\\Users\\Fots\\source\\rust\\oriel-experiment\\wip\\file-permissions/**/*.rs'}, {'globPattern': 'C:\\Users\\Fots\\source\\rust\\oriel-experiment\\wip\\file-permissions/**/Cargo.toml'}, {'globPattern': 'C:\\Users\\Fots\\source\\rust\\oriel-experiment\\wip\\file-permissions/**/Cargo.lock'}]}, 'id': 'workspace/didChangeWatchedFiles', 'method': 'workspace/didChangeWatchedFiles'}]}
:: >>> rust-analyzer 3: None
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Fetching', 'value': {'kind': 'end'}}
:: <-- rust-analyzer window/workDoneProgress/create(4): {'token': 'rustAnalyzer/Roots Scanned'}
:: >>> rust-analyzer 4: None
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Roots Scanned', 'value': {'title': 'Roots Scanned', 'kind': 'begin', 'message': '0/4', 'percentage': 0}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Roots Scanned', 'value': {'kind': 'report', 'message': '1/4', 'percentage': 25}}
:: <-- rust-analyzer window/workDoneProgress/create(5): {'token': 'rustAnalyzer/Fetching'}
:: >>> rust-analyzer 5: None
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Fetching', 'value': {'title': 'Fetching', 'kind': 'begin'}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Roots Scanned', 'value': {'kind': 'report', 'message': '2/4', 'percentage': 50}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Roots Scanned', 'value': {'kind': 'report', 'message': '3/4', 'percentage': 75}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Fetching', 'value': {'kind': 'report', 'message': 'metadata'}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Roots Scanned', 'value': {'kind': 'end', 'message': '4/4'}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Fetching', 'value': {'kind': 'end'}}
:: <-- rust-analyzer workspace/semanticTokens/refresh(6): None
:: >>> rust-analyzer 6: None
:: <-- rust-analyzer workspace/codeLens/refresh(7): None
:: >>> rust-analyzer 7: None
:: --> rust-analyzer textDocument/codeLens(4): {'textDocument': {'uri': 'file:///C:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs'}}
:: <-- rust-analyzer window/workDoneProgress/create(8): {'token': 'rustAnalyzer/Fetching'}
:: >>> rust-analyzer 8: None
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Fetching', 'value': {'title': 'Fetching', 'kind': 'begin'}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Fetching', 'value': {'kind': 'report', 'message': 'metadata'}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Fetching', 'value': {'kind': 'end'}}
:: <-- rust-analyzer workspace/semanticTokens/refresh(9): None
:: >>> rust-analyzer 9: None
:: <-- rust-analyzer workspace/codeLens/refresh(10): None
:: >>> rust-analyzer 10: None
:: --> rust-analyzer textDocument/codeLens(5): {'textDocument': {'uri': 'file:///C:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs'}}
:: <-- rust-analyzer window/workDoneProgress/create(11): {'token': 'rustAnalyzer/Loading'}
:: >>> rust-analyzer 11: None
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Loading', 'value': {'title': 'Loading', 'kind': 'begin'}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Loading', 'value': {'kind': 'report', 'message': 'metadata build-script-build'}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Loading', 'value': {'kind': 'report', 'message': 'metadata windows_x86_64_gnu'}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Loading', 'value': {'kind': 'report', 'message': 'metadata windows'}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Loading', 'value': {'kind': 'report', 'message': 'file-owners'}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Loading', 'value': {'kind': 'report', 'message': 'file-owners'}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Loading', 'value': {'kind': 'report', 'message': 'file-owners'}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Loading', 'value': {'kind': 'report', 'message': 'metadata file-owners'}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Loading', 'value': {'kind': 'report', 'message': 'file-owners'}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Loading', 'value': {'kind': 'report', 'message': 'file-owners'}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Loading', 'value': {'kind': 'report', 'message': 'file-owners'}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Loading', 'value': {'kind': 'report', 'message': 'metadata file-owners'}}
:: <-- rust-analyzer client/registerCapability(12): {'registrations': [{'registerOptions': {'watchers': [{'globPattern': 'C:\\Users\\Fots\\source\\rust\\oriel-experiment\\wip\\file-permissions/**/*.rs'}, {'globPattern': 'C:\\Users\\Fots\\source\\rust\\oriel-experiment\\wip\\file-permissions/**/Cargo.toml'}, {'globPattern': 'C:\\Users\\Fots\\source\\rust\\oriel-experiment\\wip\\file-permissions/**/Cargo.lock'}]}, 'id': 'workspace/didChangeWatchedFiles', 'method': 'workspace/didChangeWatchedFiles'}]}
:: >>> rust-analyzer 12: None
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Loading', 'value': {'kind': 'end'}}
:: <-- rust-analyzer window/workDoneProgress/create(13): {'token': 'rustAnalyzer/Roots Scanned'}
:: >>> rust-analyzer 13: None
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Roots Scanned', 'value': {'title': 'Roots Scanned', 'kind': 'begin', 'message': '0/4', 'percentage': 0}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Roots Scanned', 'value': {'kind': 'report', 'message': '1/4', 'percentage': 25}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Roots Scanned', 'value': {'kind': 'report', 'message': '2/4', 'percentage': 50}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Roots Scanned', 'value': {'kind': 'report', 'message': '3/4', 'percentage': 75}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Roots Scanned', 'value': {'kind': 'end', 'message': '4/4'}}
:: <-- rust-analyzer workspace/semanticTokens/refresh(14): None
:: >>> rust-analyzer 14: None
:: <-- rust-analyzer workspace/codeLens/refresh(15): None
:: >>> rust-analyzer 15: None
:: --> rust-analyzer textDocument/codeLens(6): {'textDocument': {'uri': 'file:///C:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs'}}
:: <-- rust-analyzer window/workDoneProgress/create(16): {'token': 'rustAnalyzer/Indexing'}
:: >>> rust-analyzer 16: None
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Indexing', 'value': {'title': 'Indexing', 'kind': 'begin', 'percentage': 0}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Indexing', 'value': {'kind': 'report', 'message': '0/6 (test)', 'percentage': 0}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Indexing', 'value': {'kind': 'report', 'message': '0/6 (test + 1 more)', 'percentage': 0}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Indexing', 'value': {'kind': 'report', 'message': '1/6 (core)', 'percentage': 16}}
:: <-- rust-analyzer window/workDoneProgress/create(17): {'token': 'rustAnalyzer/cargo check'}
:: >>> rust-analyzer 17: None
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/cargo check', 'value': {'title': 'cargo check', 'kind': 'begin'}}
:: <-  rust-analyzer textDocument/publishDiagnostics: <params with 11629 characters>
:: --> rust-analyzer textDocument/codeAction(7): {'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 0}}, 'context': {'diagnostics': []}, 'textDocument': {'uri': 'file:///C:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs'}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/cargo check', 'value': {'kind': 'end'}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Indexing', 'value': {'kind': 'report', 'message': '2/6 (alloc)', 'percentage': 33}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Indexing', 'value': {'kind': 'report', 'percentage': 50}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Indexing', 'value': {'kind': 'report', 'message': '3/6 (std)', 'percentage': 50}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Indexing', 'value': {'kind': 'report', 'percentage': 66}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Indexing', 'value': {'kind': 'report', 'message': '4/6 (proc_macro)', 'percentage': 66}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Indexing', 'value': {'kind': 'report', 'percentage': 83}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Indexing', 'value': {'kind': 'report', 'message': '5/6 (windows)', 'percentage': 83}}
:: <<< rust-analyzer 4: [{'range': {'start': {'line': 29, 'character': 3}, 'end': {'line': 29, 'character': 7}}, 'command': {'title': '▶︎ Run ', 'command': 'rust-analyzer.runSingle', 'arguments': [{'label': 'run file-owners', 'kind': 'cargo', 'args': {'workspaceRoot': 'C:\\Users\\Fots\\source\\rust\\oriel-experiment\\wip\\file-permissions', 'executableArgs': [], 'overrideCargo': None, 'cargoArgs': ['run', '--package', 'file-owners', '--bin', 'file-owners'], 'cargoExtraArgs': []}, 'location': {'targetUri': 'file:///c:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs', 'targetSelectionRange': {'start': {'line': 29, 'character': 3}, 'end': {'line': 29, 'character': 7}}, 'targetRange': {'start': {'line': 29, 'character': 0}, 'end': {'line': 171, 'character': 1}}}}]}}, {'range': {'start': {'line': 29, 'character': 3}, 'end': {'line': 29, 'character': 7}}, 'command': {'title': 'Debug', 'command': 'rust-analyzer.debugSingle', 'arguments': [{'label': 'run file-owners', 'kind': 'cargo', 'args': {'workspaceRoot': 'C:\\Users\\Fots\\source\\rust\\oriel-experiment\\wip\\file-permissions', 'executableArgs': [], 'overrideCargo': None, 'cargoArgs': ['run', '--package', 'file-owners', '--bin', 'file-owners'], 'cargoExtraArgs': []}, 'location': {'targetUri': 'file:///c:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs', 'targetSelectionRange': {'start': {'line': 29, 'character': 3}, 'end': {'line': 29, 'character': 7}}, 'targetRange': {'start': {'line': 29, 'character': 0}, 'end': {'line': 171, 'character': 1}}}}]}}]
:: <<< rust-analyzer 6: [{'range': {'start': {'line': 29, 'character': 3}, 'end': {'line': 29, 'character': 7}}, 'command': {'title': '▶︎ Run ', 'command': 'rust-analyzer.runSingle', 'arguments': [{'label': 'run file-owners', 'kind': 'cargo', 'args': {'workspaceRoot': 'C:\\Users\\Fots\\source\\rust\\oriel-experiment\\wip\\file-permissions', 'executableArgs': [], 'overrideCargo': None, 'cargoArgs': ['run', '--package', 'file-owners', '--bin', 'file-owners'], 'cargoExtraArgs': []}, 'location': {'targetUri': 'file:///c:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs', 'targetSelectionRange': {'start': {'line': 29, 'character': 3}, 'end': {'line': 29, 'character': 7}}, 'targetRange': {'start': {'line': 29, 'character': 0}, 'end': {'line': 171, 'character': 1}}}}]}}, {'range': {'start': {'line': 29, 'character': 3}, 'end': {'line': 29, 'character': 7}}, 'command': {'title': 'Debug', 'command': 'rust-analyzer.debugSingle', 'arguments': [{'label': 'run file-owners', 'kind': 'cargo', 'args': {'workspaceRoot': 'C:\\Users\\Fots\\source\\rust\\oriel-experiment\\wip\\file-permissions', 'executableArgs': [], 'overrideCargo': None, 'cargoArgs': ['run', '--package', 'file-owners', '--bin', 'file-owners'], 'cargoExtraArgs': []}, 'location': {'targetUri': 'file:///c:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs', 'targetSelectionRange': {'start': {'line': 29, 'character': 3}, 'end': {'line': 29, 'character': 7}}, 'targetRange': {'start': {'line': 29, 'character': 0}, 'end': {'line': 171, 'character': 1}}}}]}}]
:: <<< rust-analyzer 5: [{'range': {'start': {'line': 29, 'character': 3}, 'end': {'line': 29, 'character': 7}}, 'command': {'title': '▶︎ Run ', 'command': 'rust-analyzer.runSingle', 'arguments': [{'label': 'run file-owners', 'kind': 'cargo', 'args': {'workspaceRoot': 'C:\\Users\\Fots\\source\\rust\\oriel-experiment\\wip\\file-permissions', 'executableArgs': [], 'overrideCargo': None, 'cargoArgs': ['run', '--package', 'file-owners', '--bin', 'file-owners'], 'cargoExtraArgs': []}, 'location': {'targetUri': 'file:///c:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs', 'targetSelectionRange': {'start': {'line': 29, 'character': 3}, 'end': {'line': 29, 'character': 7}}, 'targetRange': {'start': {'line': 29, 'character': 0}, 'end': {'line': 171, 'character': 1}}}}]}}, {'range': {'start': {'line': 29, 'character': 3}, 'end': {'line': 29, 'character': 7}}, 'command': {'title': 'Debug', 'command': 'rust-analyzer.debugSingle', 'arguments': [{'label': 'run file-owners', 'kind': 'cargo', 'args': {'workspaceRoot': 'C:\\Users\\Fots\\source\\rust\\oriel-experiment\\wip\\file-permissions', 'executableArgs': [], 'overrideCargo': None, 'cargoArgs': ['run', '--package', 'file-owners', '--bin', 'file-owners'], 'cargoExtraArgs': []}, 'location': {'targetUri': 'file:///c:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs', 'targetSelectionRange': {'start': {'line': 29, 'character': 3}, 'end': {'line': 29, 'character': 7}}, 'targetRange': {'start': {'line': 29, 'character': 0}, 'end': {'line': 171, 'character': 1}}}}]}}]
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Indexing', 'value': {'kind': 'report', 'percentage': 100}}
:: <-  rust-analyzer $/progress: {'token': 'rustAnalyzer/Indexing', 'value': {'kind': 'end'}}
:: <-  rust-analyzer textDocument/publishDiagnostics: <params with 11629 characters>
:: <<< rust-analyzer 7: [{'data': {'id': 'change_visibility:RefactorRewrite:0', 'codeActionParams': {'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 0, 'character': 0}}, 'context': {'diagnostics': []}, 'textDocument': {'uri': 'file:///C:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs'}}}, 'title': 'Change visibility to pub(crate)', 'kind': 'refactor.rewrite'}]
:: --> rust-analyzer textDocument/documentHighlight(8): {'position': {'line': 33, 'character': 0}, 'textDocument': {'uri': 'file:///C:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs'}}
:: --> rust-analyzer textDocument/codeAction(9): {'range': {'start': {'line': 33, 'character': 0}, 'end': {'line': 33, 'character': 0}}, 'context': {'diagnostics': []}, 'textDocument': {'uri': 'file:///C:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs'}}
:: <<< rust-analyzer 8: None
:: <<< rust-analyzer 9: []
::  -> rust-analyzer textDocument/didChange: {'contentChanges': [{'range': {'start': {'line': 34, 'character': 43}, 'end': {'line': 34, 'character': 43}}, 'rangeLength': 0, 'text': ' '}], 'textDocument': {'version': 1, 'uri': 'file:///C:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs'}}
:: --> rust-analyzer textDocument/inlayHint(10): {'range': {'start': {'line': 0, 'character': 0}, 'end': {'line': 219, 'character': 0}}, 'textDocument': {'uri': 'file:///C:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs'}}
:: --> rust-analyzer textDocument/signatureHelp(11): {'context': {'isRetrigger': False, 'triggerCharacter': '(', 'triggerKind': 2}, 'position': {'line': 34, 'character': 44}, 'textDocument': {'uri': 'file:///C:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs'}}
:: <-- rust-analyzer workspace/semanticTokens/refresh(18): None
:: >>> rust-analyzer 18: None
:: <-- rust-analyzer workspace/codeLens/refresh(19): None
:: >>> rust-analyzer 19: None
:: --> rust-analyzer textDocument/codeLens(12): {'textDocument': {'uri': 'file:///C:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs'}}
:: <<< rust-analyzer 12: [{'range': {'start': {'line': 29, 'character': 3}, 'end': {'line': 29, 'character': 7}}, 'command': {'title': '▶︎ Run ', 'command': 'rust-analyzer.runSingle', 'arguments': [{'label': 'run file-owners', 'kind': 'cargo', 'args': {'workspaceRoot': 'C:\\Users\\Fots\\source\\rust\\oriel-experiment\\wip\\file-permissions', 'executableArgs': [], 'overrideCargo': None, 'cargoArgs': ['run', '--package', 'file-owners', '--bin', 'file-owners'], 'cargoExtraArgs': []}, 'location': {'targetUri': 'file:///c:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs', 'targetSelectionRange': {'start': {'line': 29, 'character': 3}, 'end': {'line': 29, 'character': 7}}, 'targetRange': {'start': {'line': 29, 'character': 0}, 'end': {'line': 171, 'character': 1}}}}]}}, {'range': {'start': {'line': 29, 'character': 3}, 'end': {'line': 29, 'character': 7}}, 'command': {'title': 'Debug', 'command': 'rust-analyzer.debugSingle', 'arguments': [{'label': 'run file-owners', 'kind': 'cargo', 'args': {'workspaceRoot': 'C:\\Users\\Fots\\source\\rust\\oriel-experiment\\wip\\file-permissions', 'executableArgs': [], 'overrideCargo': None, 'cargoArgs': ['run', '--package', 'file-owners', '--bin', 'file-owners'], 'cargoExtraArgs': []}, 'location': {'targetUri': 'file:///c:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs', 'targetSelectionRange': {'start': {'line': 29, 'character': 3}, 'end': {'line': 29, 'character': 7}}, 'targetRange': {'start': {'line': 29, 'character': 0}, 'end': {'line': 171, 'character': 1}}}}]}}]
:: --> rust-analyzer textDocument/completion(13): {'position': {'line': 34, 'character': 44}, 'textDocument': {'uri': 'file:///C:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs'}}
:: <<< rust-analyzer 11: {'activeParameter': 0, 'signatures': [{'label': 'fn GetNamedSecurityInfoW(pobjectname: &HSTRING, objecttype: SE_OBJECT_TYPE, securityinfo: OBJECT_SECURITY_INFORMATION, ppsidowner: Option<*mut PSID>, ppsidgroup: Option<*mut PSID>, ppdacl: Option<*mut *mut ACL>, ppsacl: Option<*mut *mut ACL>, ppsecuritydescriptor: *mut PSECURITY_DESCRIPTOR) -> WIN32_ERROR', 'activeParameter': 0, 'documentation': {'value': '*Required features: `"Win32_Security_Authorization"`, `"Win32_Foundation"`*', 'kind': 'markdown'}, 'parameters': [{'label': [25, 46]}, {'label': [48, 74]}, {'label': [76, 117]}, {'label': [119, 148]}, {'label': [150, 179]}, {'label': [181, 210]}, {'label': [212, 241]}, {'label': [243, 290]}]}], 'activeSignature': 0}
:: <<< rust-analyzer 13: <params with 213635 characters>
:: <<< rust-analyzer 10: <params with 16676 characters>
:: --> rust-analyzer textDocument/documentHighlight(14): {'position': {'line': 34, 'character': 44}, 'textDocument': {'uri': 'file:///C:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs'}}
:: --> rust-analyzer textDocument/codeLens(15): {'textDocument': {'uri': 'file:///C:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs'}}
:: <<< rust-analyzer 14: None
:: <<< rust-analyzer 15: [{'range': {'start': {'line': 29, 'character': 3}, 'end': {'line': 29, 'character': 7}}, 'command': {'title': '▶︎ Run ', 'command': 'rust-analyzer.runSingle', 'arguments': [{'label': 'run file-owners', 'kind': 'cargo', 'args': {'workspaceRoot': 'C:\\Users\\Fots\\source\\rust\\oriel-experiment\\wip\\file-permissions', 'executableArgs': [], 'overrideCargo': None, 'cargoArgs': ['run', '--package', 'file-owners', '--bin', 'file-owners'], 'cargoExtraArgs': []}, 'location': {'targetUri': 'file:///c:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs', 'targetSelectionRange': {'start': {'line': 29, 'character': 3}, 'end': {'line': 29, 'character': 7}}, 'targetRange': {'start': {'line': 29, 'character': 0}, 'end': {'line': 171, 'character': 1}}}}]}}, {'range': {'start': {'line': 29, 'character': 3}, 'end': {'line': 29, 'character': 7}}, 'command': {'title': 'Debug', 'command': 'rust-analyzer.debugSingle', 'arguments': [{'label': 'run file-owners', 'kind': 'cargo', 'args': {'workspaceRoot': 'C:\\Users\\Fots\\source\\rust\\oriel-experiment\\wip\\file-permissions', 'executableArgs': [], 'overrideCargo': None, 'cargoArgs': ['run', '--package', 'file-owners', '--bin', 'file-owners'], 'cargoExtraArgs': []}, 'location': {'targetUri': 'file:///c:/Users/Fots/source/rust/oriel-experiment/wip/file-permissions/src/main.rs', 'targetSelectionRange': {'start': {'line': 29, 'character': 3}, 'end': {'line': 29, 'character': 7}}, 'targetRange': {'start': {'line': 29, 'character': 0}, 'end': {'line': 171, 'character': 1}}}}]}}]

Thanks heaps in advance! 😄 Fotis

rchl commented 1 year ago

Server initially responds with an error to textDocument/inlayHint requests as it's still initializing.

Since in the new spec version there exists a workspace/inlayHint/refresh notification (and we support it), it would be most natural if the server would send it once it finishes loading.

You could raise this issue in https://github.com/rust-analyzer/rust-analyzer if there isn't one already.

fgimian commented 1 year ago

I've just raised a related issue in the rust-analyzer repo. Thanks so much @rchl! 😄

Feel free to close this issue if you wish or we can keep it open for visibility.

Kindest Regards Fotis

rchl commented 1 year ago

Appears to be working for me now.