├── CLAUDE.md ├── .github ├── copilot-instructions.md ├── ISSUE_TEMPLATE │ ├── config.yml │ └── issue_template.md ├── workflows │ └── test.yml ├── CONTRIBUTING.md └── env │ └── macos.env ├── crates ├── harp │ ├── .zed │ │ └── settings.json │ ├── README.md │ ├── src │ │ ├── parser │ │ │ └── mod.rs │ │ ├── polled_events.rs │ │ ├── sys │ │ │ ├── unix.rs │ │ │ ├── windows.rs │ │ │ ├── unix │ │ │ │ ├── command.rs │ │ │ │ ├── line_ending.rs │ │ │ │ └── polled_events.rs │ │ │ └── windows │ │ │ │ ├── command.rs │ │ │ │ ├── polled_events.rs │ │ │ │ ├── line_ending.rs │ │ │ │ └── locale.rs │ │ ├── traits │ │ │ ├── mod.rs │ │ │ ├── number.rs │ │ │ └── slice.rs │ │ ├── sys.rs │ │ ├── options.rs │ │ ├── modules │ │ │ ├── expressions.R │ │ │ └── utils.R │ │ ├── matrix.rs │ │ ├── external_ptr.rs │ │ ├── protect.rs │ │ ├── line_ending.rs │ │ ├── source.rs │ │ ├── table.rs │ │ └── vector │ │ │ └── names.rs │ ├── harp-macros │ │ └── Cargo.toml │ ├── resources │ │ └── manifest │ │ │ └── harp-manifest.rc │ ├── Cargo.toml │ └── build.rs ├── amalthea │ ├── src │ │ ├── fixtures │ │ │ └── mod.rs │ │ ├── sys │ │ │ ├── unix.rs │ │ │ ├── windows.rs │ │ │ └── windows │ │ │ │ └── stream_capture.rs │ │ ├── language │ │ │ ├── mod.rs │ │ │ ├── server_handler.rs │ │ │ └── control_handler.rs │ │ ├── socket │ │ │ └── mod.rs │ │ ├── sys.rs │ │ ├── wire │ │ │ ├── help_link.rs │ │ │ ├── interrupt_request.rs │ │ │ ├── kernel_info_request.rs │ │ │ ├── comm_msg.rs │ │ │ ├── comm_info_request.rs │ │ │ ├── comm_open.rs │ │ │ ├── is_complete_request.rs │ │ │ ├── originator.rs │ │ │ ├── input_reply.rs │ │ │ ├── handshake_reply.rs │ │ │ ├── interrupt_reply.rs │ │ │ ├── shutdown_request.rs │ │ │ ├── comm_close.rs │ │ │ ├── display_data.rs │ │ │ ├── shutdown_reply.rs │ │ │ ├── complete_request.rs │ │ │ ├── execute_input.rs │ │ │ ├── exception.rs │ │ │ ├── execute_result.rs │ │ │ ├── inspect_request.rs │ │ │ ├── execute_reply.rs │ │ │ ├── execute_error.rs │ │ │ ├── execute_reply_exception.rs │ │ │ ├── inspect_reply.rs │ │ │ ├── stream.rs │ │ │ ├── comm_info_reply.rs │ │ │ ├── handshake_request.rs │ │ │ ├── kernel_info_reply.rs │ │ │ ├── status.rs │ │ │ ├── complete_reply.rs │ │ │ ├── is_complete_reply.rs │ │ │ ├── update_display_data.rs │ │ │ ├── execute_request.rs │ │ │ ├── header.rs │ │ │ ├── mod.rs │ │ │ ├── error_reply.rs │ │ │ ├── welcome.rs │ │ │ └── language_info.rs │ │ ├── lib.rs │ │ ├── comm │ │ │ ├── mod.rs │ │ │ └── event.rs │ │ ├── stream_capture.rs │ │ ├── kernel_dirs.rs │ │ └── session.rs │ ├── Cargo.toml │ ├── tests │ │ └── control │ │ │ └── mod.rs │ └── README.md ├── ark │ ├── src │ │ ├── coordinates │ │ │ ├── mod.rs │ │ │ └── line_range.rs │ │ ├── fixtures │ │ │ └── mod.rs │ │ ├── modules │ │ │ ├── rstudio │ │ │ │ ├── prefs.R │ │ │ │ ├── help.R │ │ │ │ ├── dialogs.R │ │ │ │ ├── commands.R │ │ │ │ └── rstudioapi.R │ │ │ └── positron │ │ │ │ ├── testing.R │ │ │ │ ├── format.R │ │ │ │ ├── positron.R │ │ │ │ ├── renv.R │ │ │ │ ├── environment.R │ │ │ │ ├── console.R │ │ │ │ ├── binding.R │ │ │ │ ├── cli.R │ │ │ │ ├── editor.R │ │ │ │ ├── variables.R │ │ │ │ ├── calls.R │ │ │ │ ├── s3.R │ │ │ │ ├── viewer.R │ │ │ │ ├── repos.R │ │ │ │ ├── options.R │ │ │ │ └── system.R │ │ ├── connections │ │ │ └── mod.rs │ │ ├── plots │ │ │ └── mod.rs │ │ ├── help │ │ │ ├── mod.rs │ │ │ └── message.rs │ │ ├── analysis │ │ │ └── mod.rs │ │ ├── sys │ │ │ ├── unix │ │ │ │ ├── linux.rs │ │ │ │ ├── macos.rs │ │ │ │ ├── path.rs │ │ │ │ ├── macos │ │ │ │ │ └── parent_monitor.rs │ │ │ │ ├── control.rs │ │ │ │ ├── traps.rs │ │ │ │ └── console.rs │ │ │ ├── windows │ │ │ │ ├── control.rs │ │ │ │ ├── path.rs │ │ │ │ ├── parent_monitor.rs │ │ │ │ ├── traps.rs │ │ │ │ ├── signals.rs │ │ │ │ ├── locale.rs │ │ │ │ └── strings.rs │ │ │ ├── windows.rs │ │ │ └── unix.rs │ │ ├── snapshots │ │ │ ├── ark__view__tests__view_function_namespace.snap │ │ │ ├── ark__view__tests__view_function.snap │ │ │ ├── ark__view__tests__view_function_trace.snap │ │ │ ├── ark__view__tests__view_function_local.snap │ │ │ └── ark__view__tests__view_function_unknown.snap │ │ ├── variables │ │ │ └── mod.rs │ │ ├── lsp │ │ │ ├── completions │ │ │ │ ├── sources │ │ │ │ │ ├── common.rs │ │ │ │ │ ├── common │ │ │ │ │ │ └── subset.rs │ │ │ │ │ └── unique │ │ │ │ │ │ └── colon.rs │ │ │ │ ├── tests.rs │ │ │ │ ├── types.rs │ │ │ │ ├── sources.rs │ │ │ │ └── provide.rs │ │ │ ├── snapshots │ │ │ │ ├── ark__lsp__diagnostics_syntax__tests__error_precision.snap │ │ │ │ ├── ark__lsp__diagnostics_syntax__tests__unmatched_braces.snap │ │ │ │ ├── ark__lsp__diagnostics_syntax__tests__unmatched_parentheses.snap │ │ │ │ ├── ark__lsp__diagnostics__tests__dotty_assignment_named.snap │ │ │ │ ├── ark__lsp__diagnostics__tests__mixed_syntax_and_semantic_diagnostics.snap │ │ │ │ ├── ark__lsp__diagnostics_syntax__tests__unmatched_binary_operator.snap │ │ │ │ ├── ark__lsp__diagnostics_syntax__tests__unmatched_closing_token-2.snap │ │ │ │ ├── ark__lsp__diagnostics_syntax__tests__unmatched_closing_token-3.snap │ │ │ │ ├── ark__lsp__diagnostics_syntax__tests__unmatched_closing_token.snap │ │ │ │ ├── ark__lsp__diagnostics_syntax__tests__unmatched_parentheses-3.snap │ │ │ │ ├── ark__lsp__diagnostics_syntax__tests__unmatched_parentheses-4.snap │ │ │ │ ├── ark__lsp__diagnostics__tests__dotty_assignment_basic.snap │ │ │ │ ├── ark__lsp__diagnostics__tests__dotty_assignment_recursive.snap │ │ │ │ ├── ark__lsp__diagnostics__tests__dotty_right_assignment_basic.snap │ │ │ │ ├── ark__lsp__diagnostics_syntax__tests__unmatched_closing_token_precision.snap │ │ │ │ ├── ark__lsp__diagnostics__tests__assignment_within_function_arguments.snap │ │ │ │ ├── ark__lsp__diagnostics_syntax__tests__repeated_call_arguments_without_delimiter.snap │ │ │ │ ├── ark__lsp__diagnostics_syntax__tests__unmatched_function_parameters_parentheses.snap │ │ │ │ ├── ark__lsp__diagnostics__tests__mixed_syntax_and_semantic_diagnostics-2.snap │ │ │ │ ├── ark__lsp__diagnostics_syntax__tests__unmatched_function_parameters_parentheses-2.snap │ │ │ │ ├── ark__lsp__folding_range__tests__folding_unterminated.snap │ │ │ │ ├── ark__lsp__diagnostics__tests__dotty_assignment_within_magrittr_pipe_braced_expr.snap │ │ │ │ ├── ark__lsp__diagnostics__tests__dotty_assignment_within_native_pipe_braced_expr.snap │ │ │ │ ├── ark__lsp__diagnostics__tests__missing_namespace_rhs.snap │ │ │ │ ├── ark__lsp__diagnostics_syntax__tests__syntax_error_truncation.snap │ │ │ │ ├── ark__lsp__diagnostics_syntax__tests__unmatched_braces-2.snap │ │ │ │ ├── ark__lsp__help__tests__parameter_on_non_functions.snap │ │ │ │ ├── ark__lsp__diagnostics_syntax__tests__unmatched_call_delimiter-2.snap │ │ │ │ ├── ark__lsp__diagnostics_syntax__tests__unmatched_call_delimiter-3.snap │ │ │ │ ├── ark__lsp__diagnostics_syntax__tests__unmatched_call_delimiter.snap │ │ │ │ ├── ark__lsp__diagnostics_syntax__tests__unmatched_parentheses-2.snap │ │ │ │ ├── ark__lsp__help__tests__parameters_on_non_functions.snap │ │ │ │ ├── ark__lsp__diagnostics_syntax__tests__unmatched_call_delimiter_with_trailing_info.snap │ │ │ │ ├── ark__lsp__folding_range__tests__folding_section_comments_no_trailing_empty_line.snap │ │ │ │ ├── ark__lsp__folding_range__tests__folding_single_line_braces.snap │ │ │ │ ├── ark__lsp__folding_range__tests__folding_section_comments.snap │ │ │ │ ├── ark__lsp__folding_range__tests__folding_regions.snap │ │ │ │ ├── ark__lsp__folding_range__tests__folding_with_empty_lines.snap │ │ │ │ ├── ark__lsp__folding_range__tests__folding_brace_in_call.snap │ │ │ │ ├── ark__lsp__folding_range__tests__folding_indentation.snap │ │ │ │ ├── ark__lsp__folding_range__tests__folding_brace_in_call_prefix_arg.snap │ │ │ │ ├── ark__lsp__folding_range__tests__folding_brace_in_call_prefix_postfix_args.snap │ │ │ │ ├── ark__lsp__indexer__tests__index_variable.snap │ │ │ │ ├── ark__lsp__indexer__tests__index_r6class_namespaced.snap │ │ │ │ ├── ark__lsp__folding_range__tests__folding_cells.snap │ │ │ │ ├── ark__lsp__folding_range__tests__folding_section_chunks_with_section_in_middle.snap │ │ │ │ ├── ark__lsp__folding_range__tests__folding_empty_sections.snap │ │ │ │ ├── ark__lsp__folding_range__tests__nested_sibling_levels.snap │ │ │ │ ├── ark__lsp__indexer__tests__index_function.snap │ │ │ │ ├── ark__lsp__folding_range__tests__folding_section_chunks_with_sections.snap │ │ │ │ ├── ark__lsp__folding_range__tests__folding_section_comments_basic.snap │ │ │ │ ├── ark__lsp__folding_range__tests__folding_brackets.snap │ │ │ │ └── ark__lsp__indexer__tests__index_s7_methods.snap │ │ │ ├── traits │ │ │ │ ├── mod.rs │ │ │ │ ├── url.rs │ │ │ │ ├── string.rs │ │ │ │ └── rope.rs │ │ │ ├── code_action │ │ │ │ └── snapshots │ │ │ │ │ ├── ark__lsp__code_action__roxygen__tests__no_parameters.snap │ │ │ │ │ ├── ark__lsp__code_action__roxygen__tests__adds_parameters-2.snap │ │ │ │ │ ├── ark__lsp__code_action__roxygen__tests__adds_parameters.snap │ │ │ │ │ ├── ark__lsp__code_action__roxygen__tests__adds_parameters-3.snap │ │ │ │ │ ├── ark__lsp__code_action__roxygen__tests__supports_equals_assignment.snap │ │ │ │ │ ├── ark__lsp__code_action__roxygen__tests__adds_documentation_when_direct_preceding_line_is_not_documentation.snap │ │ │ │ │ └── ark__lsp__code_action__roxygen__tests__uses_hash_map_of_text_edits_without_document_changes_support.snap │ │ │ ├── inputs │ │ │ │ ├── mod.rs │ │ │ │ └── source_root.rs │ │ │ ├── events.rs │ │ │ ├── comm.rs │ │ │ ├── completions.rs │ │ │ ├── input_boundaries.rs │ │ │ ├── TODO.md │ │ │ └── util.rs │ │ ├── dap │ │ │ └── mod.rs │ │ ├── ui │ │ │ └── mod.rs │ │ ├── data_explorer │ │ │ ├── mod.rs │ │ │ └── table.rs │ │ ├── sys.rs │ │ ├── signals.rs │ │ ├── modules_utils.rs │ │ ├── json.rs │ │ ├── debug.c │ │ ├── strings.rs │ │ ├── lib.rs │ │ └── request.rs │ ├── .editorconfig │ ├── ark.Rproj │ ├── tests │ │ ├── test-diagnostics.R │ │ ├── kernel-srcref.rs │ │ ├── stack.rs │ │ ├── repos-auto.rs │ │ └── kernel.rs │ └── resources │ │ └── manifest │ │ └── ark-manifest.rc ├── stdext │ ├── README.md │ ├── src │ │ ├── local.rs │ │ ├── ok.rs │ │ ├── spawn.rs │ │ ├── any.rs │ │ ├── all.rs │ │ ├── case.rs │ │ ├── push.rs │ │ ├── testing.rs │ │ └── lib.rs │ └── Cargo.toml ├── libr │ ├── src │ │ ├── sys │ │ │ ├── unix.rs │ │ │ ├── windows.rs │ │ │ └── unix │ │ │ │ └── types.rs │ │ ├── sys.rs │ │ └── graphapp.rs │ └── Cargo.toml ├── echo │ ├── Cargo.toml │ └── src │ │ └── control.rs └── README.md ├── .gitignore ├── doc ├── lab.png ├── logo.png ├── positron.png ├── variables-pane.png └── configuration.md ├── .vscode ├── extensions.json ├── tasks.json └── settings.json ├── air.toml ├── .editorconfig ├── .cargo └── config.toml ├── justfile ├── .config └── nextest.toml ├── .rustfmt.toml ├── .zed └── settings.json ├── scripts └── manifest │ ├── template.rc │ └── generate.R ├── Cargo.toml └── LICENSE /CLAUDE.md: -------------------------------------------------------------------------------- 1 | AGENTS.md -------------------------------------------------------------------------------- /.github/copilot-instructions.md: -------------------------------------------------------------------------------- 1 | ../AGENTS.md -------------------------------------------------------------------------------- /crates/harp/.zed/settings.json: -------------------------------------------------------------------------------- 1 | ../../../.zed/settings.json -------------------------------------------------------------------------------- /crates/amalthea/src/fixtures/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod dummy_frontend; 2 | -------------------------------------------------------------------------------- /crates/harp/README.md: -------------------------------------------------------------------------------- 1 | # harp 2 | 3 | Rust bindings for R. 4 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | /target 3 | tags 4 | *.tags 5 | .Rproj.user 6 | -------------------------------------------------------------------------------- /crates/harp/src/parser/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod parse_data; 2 | pub mod srcref; 3 | -------------------------------------------------------------------------------- /doc/lab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/ark/HEAD/doc/lab.png -------------------------------------------------------------------------------- /doc/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/ark/HEAD/doc/logo.png -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["Posit.air-vscode"] 3 | } 4 | -------------------------------------------------------------------------------- /doc/positron.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/ark/HEAD/doc/positron.png -------------------------------------------------------------------------------- /crates/ark/src/coordinates/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod line_range; 2 | 3 | pub use line_range::*; 4 | -------------------------------------------------------------------------------- /doc/variables-pane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posit-dev/ark/HEAD/doc/variables-pane.png -------------------------------------------------------------------------------- /air.toml: -------------------------------------------------------------------------------- 1 | [format] 2 | indent-width = 4 3 | exclude = ["crates/ark/src/lsp/snapshots/indent.R"] 4 | -------------------------------------------------------------------------------- /crates/stdext/README.md: -------------------------------------------------------------------------------- 1 | # stdext 2 | 3 | A set of generally-useful extensions to the Rust standard library. 4 | -------------------------------------------------------------------------------- /crates/ark/src/fixtures/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod dummy_frontend; 2 | pub mod utils; 3 | 4 | pub use dummy_frontend::*; 5 | pub use utils::*; 6 | -------------------------------------------------------------------------------- /crates/ark/.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: https://EditorConfig.org 2 | 3 | [{*.R}] 4 | indent_style = space 5 | indent_size = 2 6 | 7 | -------------------------------------------------------------------------------- /crates/ark/src/modules/rstudio/prefs.R: -------------------------------------------------------------------------------- 1 | #' @export 2 | .rs.api.readRStudioPreference <- function(name, default = NULL) { 3 | default 4 | } 5 | -------------------------------------------------------------------------------- /crates/ark/src/connections/mod.rs: -------------------------------------------------------------------------------- 1 | // 2 | // mod.rs 3 | // 4 | // Copyright (C) 2023 by Posit Software, PBC 5 | // 6 | // 7 | 8 | pub mod r_connection; 9 | -------------------------------------------------------------------------------- /crates/ark/src/plots/mod.rs: -------------------------------------------------------------------------------- 1 | // 2 | // mod.rs 3 | // 4 | // Copyright (C) 2022-2023 by Posit Software, PBC 5 | // 6 | // 7 | 8 | pub mod graphics_device; 9 | -------------------------------------------------------------------------------- /crates/libr/src/sys/unix.rs: -------------------------------------------------------------------------------- 1 | // 2 | // unix.rs 3 | // 4 | // Copyright (C) 2024 Posit Software, PBC. All rights reserved. 5 | // 6 | // 7 | 8 | pub mod types; 9 | -------------------------------------------------------------------------------- /crates/libr/src/sys/windows.rs: -------------------------------------------------------------------------------- 1 | // 2 | // windows.rs 3 | // 4 | // Copyright (C) 2024 Posit Software, PBC. All rights reserved. 5 | // 6 | // 7 | 8 | pub mod types; 9 | -------------------------------------------------------------------------------- /crates/ark/src/help/mod.rs: -------------------------------------------------------------------------------- 1 | // 2 | // mod.rs 3 | // 4 | // Copyright (C) 2023 by Posit Software, PBC 5 | // 6 | // 7 | 8 | pub mod message; 9 | pub mod r_help; 10 | -------------------------------------------------------------------------------- /crates/amalthea/src/sys/unix.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * unix.rs 3 | * 4 | * Copyright (C) 2023 Posit Software, PBC. All rights reserved. 5 | * 6 | */ 7 | 8 | pub mod stream_capture; 9 | -------------------------------------------------------------------------------- /crates/ark/src/analysis/mod.rs: -------------------------------------------------------------------------------- 1 | // 2 | // mod.rs 3 | // 4 | // Copyright (C) 2024 Posit Software, PBC. All rights reserved. 5 | // 6 | // 7 | 8 | pub mod input_boundaries; 9 | -------------------------------------------------------------------------------- /crates/ark/src/sys/unix/linux.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * linux.rs 3 | * 4 | * Copyright (C) 2025 Posit Software, PBC. All rights reserved. 5 | * 6 | */ 7 | 8 | pub mod parent_monitor; 9 | -------------------------------------------------------------------------------- /crates/ark/src/sys/unix/macos.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * macos.rs 3 | * 4 | * Copyright (C) 2025 Posit Software, PBC. All rights reserved. 5 | * 6 | */ 7 | 8 | pub mod parent_monitor; 9 | -------------------------------------------------------------------------------- /crates/amalthea/src/sys/windows.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * windows.rs 3 | * 4 | * Copyright (C) 2023 Posit Software, PBC. All rights reserved. 5 | * 6 | */ 7 | 8 | pub mod stream_capture; 9 | -------------------------------------------------------------------------------- /crates/ark/src/snapshots/ark__view__tests__view_function_namespace.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/view.rs 3 | expression: doc 4 | --- 5 | URI: ark:ark-*pid*/namespace/base.R 6 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: https://EditorConfig.org 2 | 3 | # Space indentation 4 | [*] 5 | indent_style = space 6 | trim_trailing_whitespace = true 7 | indent_size = 4 8 | -------------------------------------------------------------------------------- /crates/ark/src/variables/mod.rs: -------------------------------------------------------------------------------- 1 | // 2 | // mod.rs 3 | // 4 | // Copyright (C) 2023 by Posit Software, PBC 5 | // 6 | // 7 | 8 | pub mod r_variables; 9 | pub mod variable; 10 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/completions/sources/common.rs: -------------------------------------------------------------------------------- 1 | // 2 | // common.rs 3 | // 4 | // Copyright (C) 2024 Posit Software, PBC. All rights reserved. 5 | // 6 | // 7 | 8 | pub(crate) mod subset; 9 | -------------------------------------------------------------------------------- /crates/ark/src/snapshots/ark__view__tests__view_function.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/view.rs 3 | expression: doc 4 | --- 5 | URI: ark:ark-*pid*/global/foo.R 6 | 7 | function (arg) 8 | body 9 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/completions/tests.rs: -------------------------------------------------------------------------------- 1 | // 2 | // tests.rs 3 | // 4 | // Copyright (C) 2025 Posit Software, PBC. All rights reserved. 5 | // 6 | 7 | mod function_completions; 8 | pub(crate) mod utils; 9 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics_syntax__tests__error_precision.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics_syntax.rs 3 | expression: diagnostic.message 4 | --- 5 | Syntax error 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics_syntax__tests__unmatched_braces.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics_syntax.rs 3 | expression: diagnostic.message 4 | --- 5 | Syntax error 6 | -------------------------------------------------------------------------------- /crates/ark/src/snapshots/ark__view__tests__view_function_trace.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/view.rs 3 | expression: doc 4 | --- 5 | URI: ark:ark-*pid*/global/foo.R 6 | 7 | function (arg) 8 | body 9 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics_syntax__tests__unmatched_parentheses.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics_syntax.rs 3 | expression: diagnostic.message 4 | --- 5 | Syntax error 6 | -------------------------------------------------------------------------------- /crates/ark/src/snapshots/ark__view__tests__view_function_local.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/view.rs 3 | expression: doc 4 | --- 5 | URI: ark:ark-*pid*/0x*address*/foo.R 6 | 7 | function (arg) 8 | body 9 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics__tests__dotty_assignment_named.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics.rs 3 | expression: diagnostic.message 4 | --- 5 | No symbol named 'x' in scope. 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics__tests__mixed_syntax_and_semantic_diagnostics.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics.rs 3 | expression: diagnostic.message 4 | --- 5 | Syntax error 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics_syntax__tests__unmatched_binary_operator.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics_syntax.rs 3 | expression: diagnostic.message 4 | --- 5 | Syntax error 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics_syntax__tests__unmatched_closing_token-2.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics_syntax.rs 3 | expression: diagnostic.message 4 | --- 5 | Syntax error 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics_syntax__tests__unmatched_closing_token-3.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics_syntax.rs 3 | expression: diagnostic.message 4 | --- 5 | Syntax error 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics_syntax__tests__unmatched_closing_token.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics_syntax.rs 3 | expression: diagnostic.message 4 | --- 5 | Syntax error 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics_syntax__tests__unmatched_parentheses-3.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics_syntax.rs 3 | expression: diagnostic.message 4 | --- 5 | Syntax error 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics_syntax__tests__unmatched_parentheses-4.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics_syntax.rs 3 | expression: diagnostic.message 4 | --- 5 | Syntax error 6 | -------------------------------------------------------------------------------- /crates/ark/src/snapshots/ark__view__tests__view_function_unknown.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/view.rs 3 | expression: doc 4 | --- 5 | URI: ark:ark-*pid*/global/unknown.R 6 | 7 | function (arg) 8 | body 9 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics__tests__dotty_assignment_basic.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics.rs 3 | expression: diagnostic.message 4 | --- 5 | No symbol named 'cherry' in scope. 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics__tests__dotty_assignment_recursive.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics.rs 3 | expression: diagnostic.message 4 | --- 5 | No symbol named 'cherry' in scope. 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics__tests__dotty_right_assignment_basic.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics.rs 3 | expression: diagnostic.message 4 | --- 5 | No symbol named 'cherry' in scope. 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics_syntax__tests__unmatched_closing_token_precision.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics_syntax.rs 3 | expression: diagnostic.message 4 | --- 5 | Syntax error 6 | -------------------------------------------------------------------------------- /crates/harp/src/polled_events.rs: -------------------------------------------------------------------------------- 1 | // 2 | // polled_events.rs 3 | // 4 | // Copyright (C) 2023 Posit Software, PBC. All rights reserved. 5 | // 6 | // 7 | 8 | pub use crate::sys::polled_events::RLocalPolledEventsSuspended; 9 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics__tests__assignment_within_function_arguments.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics.rs 3 | expression: diagnostic.message 4 | --- 5 | No symbol named 'x' in scope. 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics_syntax__tests__repeated_call_arguments_without_delimiter.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics_syntax.rs 3 | expression: diagnostic.message 4 | --- 5 | Syntax error 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics_syntax__tests__unmatched_function_parameters_parentheses.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics_syntax.rs 3 | expression: diagnostic.message 4 | --- 5 | Syntax error 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics__tests__mixed_syntax_and_semantic_diagnostics-2.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics.rs 3 | expression: diagnostic.message 4 | --- 5 | No symbol named 'foo' in scope. 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics_syntax__tests__unmatched_function_parameters_parentheses-2.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics_syntax.rs 3 | expression: diagnostic.message 4 | --- 5 | Syntax error 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__folding_range__tests__folding_unterminated.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/folding_range.rs 3 | expression: "format!(\"Expected error: {}\", e)" 4 | --- 5 | "Expected error: Parse error" 6 | -------------------------------------------------------------------------------- /crates/amalthea/src/language/mod.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * mod.rs 3 | * 4 | * Copyright (C) 2022 Posit Software, PBC. All rights reserved. 5 | * 6 | */ 7 | 8 | pub mod control_handler; 9 | pub mod server_handler; 10 | pub mod shell_handler; 11 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics__tests__dotty_assignment_within_magrittr_pipe_braced_expr.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics.rs 3 | expression: diagnostic.message 4 | --- 5 | No symbol named 'apple' in scope. 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics__tests__dotty_assignment_within_native_pipe_braced_expr.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics.rs 3 | expression: diagnostic.message 4 | --- 5 | No symbol named 'apple' in scope. 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics__tests__missing_namespace_rhs.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics.rs 3 | expression: diagnostic.message 4 | --- 5 | Invalid namespace operator '::'. Missing a right hand side. 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics_syntax__tests__syntax_error_truncation.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics_syntax.rs 3 | expression: diagnostic.message 4 | --- 5 | Syntax error. Starts here and ends on line 21. 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics_syntax__tests__unmatched_braces-2.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics_syntax.rs 3 | expression: diagnostic.message 4 | --- 5 | Unmatched opening delimiter. Missing a closing '}'. 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__help__tests__parameter_on_non_functions.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/help.rs 3 | expression: "help.parameter(\"foo\").unwrap_err()" 4 | --- 5 | Called `parameter()` on a topic that isn't a function. 6 | -------------------------------------------------------------------------------- /crates/ark/src/modules/positron/testing.R: -------------------------------------------------------------------------------- 1 | # 2 | # testing.R 3 | # 4 | # Copyright (C) 2023 Posit Software, PBC. All rights reserved. 5 | # 6 | # 7 | 8 | in_ark_tests <- function() { 9 | getOption("ark.testing", default = FALSE) 10 | } 11 | -------------------------------------------------------------------------------- /crates/harp/src/sys/unix.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * unix.rs 3 | * 4 | * Copyright (C) 2023 Posit Software, PBC. All rights reserved. 5 | * 6 | */ 7 | 8 | pub mod command; 9 | pub mod library; 10 | pub mod line_ending; 11 | pub mod polled_events; 12 | -------------------------------------------------------------------------------- /crates/harp/src/traits/mod.rs: -------------------------------------------------------------------------------- 1 | // 2 | // mod.rs 3 | // 4 | // Copyright (C) 2022 Posit Software, PBC. All rights reserved. 5 | // 6 | // 7 | 8 | mod number; 9 | mod slice; 10 | 11 | pub use number::Number; 12 | pub use slice::AsSlice; 13 | -------------------------------------------------------------------------------- /crates/ark/src/dap/mod.rs: -------------------------------------------------------------------------------- 1 | // 2 | // mod.rs 3 | // 4 | // Copyright (C) 2023 Posit Software, PBC. All rights reserved. 5 | // 6 | // 7 | 8 | pub mod dap; 9 | pub mod dap_server; 10 | pub mod dap_variables; 11 | 12 | pub use self::dap::Dap; 13 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics_syntax__tests__unmatched_call_delimiter-2.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics_syntax.rs 3 | expression: diagnostic.message 4 | --- 5 | Unmatched opening delimiter. Missing a closing ']'. 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics_syntax__tests__unmatched_call_delimiter-3.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics_syntax.rs 3 | expression: diagnostic.message 4 | --- 5 | Unmatched opening delimiter. Missing a closing ']]'. 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics_syntax__tests__unmatched_call_delimiter.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics_syntax.rs 3 | expression: diagnostic.message 4 | --- 5 | Unmatched opening delimiter. Missing a closing ')'. 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics_syntax__tests__unmatched_parentheses-2.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics_syntax.rs 3 | expression: diagnostic.message 4 | --- 5 | Unmatched opening delimiter. Missing a closing ')'. 6 | -------------------------------------------------------------------------------- /crates/ark/src/ui/mod.rs: -------------------------------------------------------------------------------- 1 | // 2 | // mod.rs 3 | // 4 | // Copyright (C) 2023 by Posit Software, PBC 5 | // 6 | // 7 | 8 | pub mod events; 9 | pub mod methods; 10 | 11 | mod sender; 12 | pub use sender::*; 13 | 14 | mod ui; 15 | pub use ui::*; 16 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__help__tests__parameters_on_non_functions.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/help.rs 3 | expression: "help.parameters(|_, _| Status::Done).unwrap_err()" 4 | --- 5 | Called `parameters()` on a topic that isn't a function. 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/traits/mod.rs: -------------------------------------------------------------------------------- 1 | // 2 | // mod.rs 3 | // 4 | // Copyright (C) 2022 Posit Software, PBC. All rights reserved. 5 | // 6 | // 7 | 8 | pub mod cursor; 9 | pub mod node; 10 | pub mod point; 11 | pub mod rope; 12 | pub mod string; 13 | pub mod url; 14 | -------------------------------------------------------------------------------- /crates/harp/src/sys/windows.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * windows.rs 3 | * 4 | * Copyright (C) 2023 Posit Software, PBC. All rights reserved. 5 | * 6 | */ 7 | 8 | pub mod command; 9 | pub mod library; 10 | pub mod line_ending; 11 | mod locale; 12 | pub mod polled_events; 13 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/snapshots/ark__lsp__diagnostics_syntax__tests__unmatched_call_delimiter_with_trailing_info.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/diagnostics_syntax.rs 3 | expression: diagnostic.message 4 | --- 5 | Unmatched opening delimiter. Missing a closing ')'. 6 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/code_action/snapshots/ark__lsp__code_action__roxygen__tests__no_parameters.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/code_action/roxygen.rs 3 | expression: new_text 4 | --- 5 | #' Title 6 | #' 7 | #' @returns 8 | #' 9 | #' @export 10 | #' @examples 11 | -------------------------------------------------------------------------------- /crates/ark/src/modules/positron/format.R: -------------------------------------------------------------------------------- 1 | # 2 | # format.R 3 | # 4 | # Copyright (C) 2022-2024 Posit Software, PBC. All rights reserved. 5 | # 6 | # 7 | 8 | #' @export 9 | .ps.format.toHtml <- function(data) { 10 | "
Hello, world!
" 11 | } 12 | -------------------------------------------------------------------------------- /crates/harp/src/sys/unix/command.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * command.rs 3 | * 4 | * Copyright (C) 2024 Posit Software, PBC. All rights reserved. 5 | * 6 | */ 7 | 8 | /// Locations on the `PATH` to look for R when using `Command::new()` 9 | pub(crate) const COMMAND_R_NAMES: [&str; 1] = ["R"]; 10 | -------------------------------------------------------------------------------- /crates/amalthea/src/socket/mod.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * mod.rs 3 | * 4 | * Copyright (C) 2022 Posit Software, PBC. All rights reserved. 5 | * 6 | */ 7 | 8 | pub mod comm; 9 | pub mod control; 10 | pub mod heartbeat; 11 | pub mod iopub; 12 | pub mod shell; 13 | pub mod socket; 14 | pub mod stdin; 15 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/inputs/mod.rs: -------------------------------------------------------------------------------- 1 | // 2 | // mod.rs 3 | // 4 | // Copyright (C) 2025 by Posit Software, PBC 5 | // 6 | // 7 | 8 | pub mod library; 9 | pub mod package; 10 | pub mod package_description; 11 | pub mod package_index; 12 | pub mod package_namespace; 13 | pub mod source_root; 14 | -------------------------------------------------------------------------------- /crates/ark/src/sys/unix/path.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * path.rs 3 | * 4 | * Copyright (C) 2024 Posit Software, PBC. All rights reserved. 5 | * 6 | */ 7 | 8 | use std::path::PathBuf; 9 | 10 | pub fn r_user_home() -> Option { 11 | std::env::var("HOME").ok().map(PathBuf::from) 12 | } 13 | -------------------------------------------------------------------------------- /crates/ark/src/sys/windows/control.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * control.rs 3 | * 4 | * Copyright (C) 2023 Posit Software, PBC. All rights reserved. 5 | * 6 | */ 7 | 8 | use crate::signals::set_interrupts_pending; 9 | 10 | pub fn handle_interrupt_request() { 11 | set_interrupts_pending(true); 12 | } 13 | -------------------------------------------------------------------------------- /crates/ark/src/sys/windows/path.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * path.rs 3 | * 4 | * Copyright (C) 2024 Posit Software, PBC. All rights reserved. 5 | * 6 | */ 7 | 8 | use std::path::PathBuf; 9 | 10 | pub fn r_user_home() -> Option { 11 | std::env::var("R_USER").ok().map(PathBuf::from) 12 | } 13 | -------------------------------------------------------------------------------- /crates/harp/src/sys/windows/command.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * command.rs 3 | * 4 | * Copyright (C) 2024 Posit Software, PBC. All rights reserved. 5 | * 6 | */ 7 | 8 | /// Locations on the `PATH` to look for R when using `Command::new()` 9 | pub(crate) const COMMAND_R_NAMES: [&str; 2] = ["R", "R.bat"]; 10 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/code_action/snapshots/ark__lsp__code_action__roxygen__tests__adds_parameters-2.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/code_action/roxygen.rs 3 | expression: new_text 4 | --- 5 | #' Title 6 | #' 7 | #' @param ... 8 | #' 9 | #' @returns 10 | #' 11 | #' @export 12 | #' @examples 13 | -------------------------------------------------------------------------------- /crates/stdext/src/local.rs: -------------------------------------------------------------------------------- 1 | // 2 | // local.rs 3 | // 4 | // Copyright (C) 2022 Posit Software, PBC. All rights reserved. 5 | // 6 | // 7 | 8 | #[macro_export] 9 | macro_rules! local { 10 | ($($tokens:tt)*) => { 11 | (|| { 12 | $($tokens)* 13 | })() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/code_action/snapshots/ark__lsp__code_action__roxygen__tests__adds_parameters.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/code_action/roxygen.rs 3 | expression: new_text 4 | --- 5 | #' Title 6 | #' 7 | #' @param a 8 | #' @param b 9 | #' 10 | #' @returns 11 | #' 12 | #' @export 13 | #' @examples 14 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/code_action/snapshots/ark__lsp__code_action__roxygen__tests__adds_parameters-3.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/code_action/roxygen.rs 3 | expression: new_text 4 | --- 5 | #' Title 6 | #' 7 | #' @param ... 8 | #' 9 | #' @returns 10 | #' 11 | #' @export 12 | #' @examples 13 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/code_action/snapshots/ark__lsp__code_action__roxygen__tests__supports_equals_assignment.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/code_action/roxygen.rs 3 | expression: new_text 4 | --- 5 | #' Title 6 | #' 7 | #' @param a 8 | #' @param b 9 | #' 10 | #' @returns 11 | #' 12 | #' @export 13 | #' @examples 14 | -------------------------------------------------------------------------------- /crates/stdext/src/ok.rs: -------------------------------------------------------------------------------- 1 | // 2 | // ok.rs 3 | // 4 | // Copyright (C) 2022 Posit Software, PBC. All rights reserved. 5 | // 6 | // 7 | 8 | pub trait Ok { 9 | fn ok(self) -> Result; 10 | } 11 | 12 | impl Ok for T { 13 | fn ok(self) -> Result { 14 | Ok(self) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /crates/ark/src/modules/positron/positron.R: -------------------------------------------------------------------------------- 1 | # 2 | # positron.R 3 | # 4 | # Copyright (C) 2025 Posit Software, PBC. All rights reserved. 5 | # 6 | # 7 | 8 | if (Sys.getenv("POSITRON") == 1) { 9 | .Platform <- base::.Platform 10 | .Platform$GUI <- "Positron" 11 | env_bind_force(baseenv(), ".Platform", .Platform) 12 | } 13 | -------------------------------------------------------------------------------- /crates/ark/src/sys/windows.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * windows.rs 3 | * 4 | * Copyright (C) 2023 Posit Software, PBC. All rights reserved. 5 | * 6 | */ 7 | 8 | pub mod console; 9 | pub mod control; 10 | pub mod interface; 11 | mod locale; 12 | pub mod parent_monitor; 13 | pub mod path; 14 | pub mod signals; 15 | mod strings; 16 | pub mod traps; 17 | -------------------------------------------------------------------------------- /.cargo/config.toml: -------------------------------------------------------------------------------- 1 | # Increase stack space on Windows to 8m 2 | # See https://github.com/posit-dev/positron/issues/1975 3 | 4 | [target.x86_64-pc-windows-msvc] 5 | rustflags = [ 6 | "-C", "link-arg=/STACK:8000000" 7 | ] 8 | # 64 bit Mingw 9 | [target.x86_64-pc-windows-gnu] 10 | rustflags = [ 11 | "-C", "link-arg=-Wl,--stack,8000000" 12 | ] 13 | -------------------------------------------------------------------------------- /crates/ark/ark.Rproj: -------------------------------------------------------------------------------- 1 | Version: 1.0 2 | 3 | RestoreWorkspace: Default 4 | SaveWorkspace: Default 5 | AlwaysSaveHistory: Default 6 | 7 | EnableCodeIndexing: Yes 8 | UseSpacesForTab: Yes 9 | NumSpacesForTab: 2 10 | Encoding: UTF-8 11 | 12 | RnwWeave: Sweave 13 | LaTeX: pdfLaTeX 14 | 15 | AutoAppendNewline: Yes 16 | StripTrailingWhitespace: Yes 17 | -------------------------------------------------------------------------------- /crates/harp/harp-macros/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "harp-macros" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [lib] 7 | proc-macro = true 8 | 9 | [dependencies] 10 | quote = "*" 11 | syn = { version = "*", features = ["full"] } 12 | 13 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 14 | -------------------------------------------------------------------------------- /crates/ark/src/modules/positron/renv.R: -------------------------------------------------------------------------------- 1 | # 2 | # renv.R 3 | # 4 | # Copyright (C) 2025 Posit Software, PBC. All rights reserved. 5 | # 6 | # 7 | 8 | is_renv_1_0_1_or_earlier <- function() { 9 | tryCatch( 10 | { 11 | utils::packageVersion("renv") <= "1.0.1" 12 | }, 13 | error = function(e) FALSE 14 | ) 15 | } 16 | -------------------------------------------------------------------------------- /crates/ark/src/data_explorer/mod.rs: -------------------------------------------------------------------------------- 1 | // 2 | // mod.rs 3 | // 4 | // Copyright (C) 2023-2024 by Posit Software, PBC 5 | // 6 | // 7 | 8 | pub mod column_profile; 9 | pub mod convert_to_code; 10 | pub mod export_selection; 11 | pub mod format; 12 | pub mod histogram; 13 | pub mod r_data_explorer; 14 | pub mod summary_stats; 15 | pub mod table; 16 | pub mod utils; 17 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/code_action/snapshots/ark__lsp__code_action__roxygen__tests__adds_documentation_when_direct_preceding_line_is_not_documentation.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/code_action/roxygen.rs 3 | expression: new_text 4 | --- 5 | #' Title 6 | #' 7 | #' @param a 8 | #' @param b 9 | #' 10 | #' @returns 11 | #' 12 | #' @export 13 | #' @examples 14 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/code_action/snapshots/ark__lsp__code_action__roxygen__tests__uses_hash_map_of_text_edits_without_document_changes_support.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: crates/ark/src/lsp/code_action/roxygen.rs 3 | expression: text_edit.new_text 4 | --- 5 | #' Title 6 | #' 7 | #' @param a 8 | #' @param b 9 | #' 10 | #' @returns 11 | #' 12 | #' @export 13 | #' @examples 14 | -------------------------------------------------------------------------------- /crates/ark/src/sys.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * sys.rs 3 | * 4 | * Copyright (C) 2023 Posit Software, PBC. All rights reserved. 5 | * 6 | */ 7 | 8 | cfg_if::cfg_if! { 9 | if #[cfg(unix)] { 10 | mod unix; 11 | pub use self::unix::*; 12 | } else if #[cfg(windows)] { 13 | mod windows; 14 | pub use self::windows::*; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /crates/harp/src/sys.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * sys.rs 3 | * 4 | * Copyright (C) 2023 Posit Software, PBC. All rights reserved. 5 | * 6 | */ 7 | 8 | cfg_if::cfg_if! { 9 | if #[cfg(unix)] { 10 | mod unix; 11 | pub use self::unix::*; 12 | } else if #[cfg(windows)] { 13 | mod windows; 14 | pub use self::windows::*; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /crates/libr/src/sys.rs: -------------------------------------------------------------------------------- 1 | // 2 | // sys.rs 3 | // 4 | // Copyright (C) 2024 Posit Software, PBC. All rights reserved. 5 | // 6 | // 7 | 8 | cfg_if::cfg_if! { 9 | if #[cfg(unix)] { 10 | mod unix; 11 | pub use self::unix::*; 12 | } else if #[cfg(windows)] { 13 | mod windows; 14 | pub use self::windows::*; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /crates/libr/src/sys/unix/types.rs: -------------------------------------------------------------------------------- 1 | // 2 | // types.rs 3 | // 4 | // Copyright (C) 2024 Posit Software, PBC. All rights reserved. 5 | // 6 | // 7 | 8 | // Currently not used, but this keeps us aligned with `sys/windows/types.rs`. 9 | // If we start using this, remove this line from `types.rs`: 10 | // `#[cfg_attr(target_family = "unix", allow(unused_imports))]` 11 | -------------------------------------------------------------------------------- /crates/amalthea/src/sys.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * sys.rs 3 | * 4 | * Copyright (C) 2023 Posit Software, PBC. All rights reserved. 5 | * 6 | */ 7 | 8 | cfg_if::cfg_if! { 9 | if #[cfg(unix)] { 10 | mod unix; 11 | pub use self::unix::*; 12 | } else if #[cfg(windows)] { 13 | mod windows; 14 | pub use self::windows::*; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /crates/ark/src/signals.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * signals.rs 3 | * 4 | * Copyright (C) 2023 Posit Software, PBC. All rights reserved. 5 | * 6 | */ 7 | 8 | pub use crate::sys::signals::initialize_signal_block; 9 | pub use crate::sys::signals::initialize_signal_handlers; 10 | pub use crate::sys::signals::interrupts_pending; 11 | pub use crate::sys::signals::set_interrupts_pending; 12 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/events.rs: -------------------------------------------------------------------------------- 1 | // 2 | // events.rs 3 | // 4 | // Copyright (C) 2022 Posit Software, PBC. All rights reserved. 5 | // 6 | // 7 | 8 | use once_cell::sync::Lazy; 9 | use stdext::event::Event; 10 | 11 | #[derive(Default)] 12 | pub struct Events { 13 | pub console_prompt: Event<()>, 14 | } 15 | 16 | pub static EVENTS: Lazy = Lazy::new(|| Events::default()); 17 | -------------------------------------------------------------------------------- /crates/ark/src/modules/rstudio/help.R: -------------------------------------------------------------------------------- 1 | #' @export 2 | .rs.api.previewRd <- function(rdFile) { 3 | if (!is.character(rdFile) || (length(rdFile) != 1)) 4 | stop("rdFile must be a single element character vector.") 5 | if (!file.exists(rdFile)) 6 | stop("The specified rdFile ' ", rdFile, "' does not exist.") 7 | 8 | invisible(.ps.help.previewRd(rdFile)) 9 | } 10 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/comm.rs: -------------------------------------------------------------------------------- 1 | // 2 | // comm.rs 3 | // 4 | // Copyright (C) 2022 Posit Software, PBC. All rights reserved. 5 | // 6 | // 7 | 8 | use serde::Deserialize; 9 | use serde::Serialize; 10 | 11 | #[derive(Debug, Serialize, Deserialize)] 12 | pub struct StartLsp { 13 | /// The address on which the client is listening for LSP requests. 14 | pub client_address: String, 15 | } 16 | -------------------------------------------------------------------------------- /crates/ark/src/modules/positron/environment.R: -------------------------------------------------------------------------------- 1 | # 2 | # environment.R 3 | # 4 | # Copyright (C) 2023-2024 Posit Software, PBC. All rights reserved. 5 | # 6 | # 7 | 8 | #' @export 9 | .ps.environment.clipboardFormatDataFrame <- function(x) { 10 | tf <- tempfile() 11 | on.exit(unlink(tf)) 12 | 13 | write.table(x, sep = "\t", file = tf, col.names = NA) 14 | 15 | readLines(tf) 16 | } 17 | -------------------------------------------------------------------------------- /crates/ark/src/sys/unix/macos/parent_monitor.rs: -------------------------------------------------------------------------------- 1 | // 2 | // parent_monitor.rs 3 | // 4 | // Copyright (C) 2025 Posit Software, PBC. All rights reserved. 5 | // 6 | 7 | use crossbeam::channel::Sender; 8 | 9 | use crate::request::RRequest; 10 | 11 | /// No parent monitoring on MacOS 12 | pub fn start_parent_monitoring(_r_request_tx: Sender) -> anyhow::Result<()> { 13 | Ok(()) 14 | } 15 | -------------------------------------------------------------------------------- /crates/ark/src/sys/windows/parent_monitor.rs: -------------------------------------------------------------------------------- 1 | // 2 | // parent_monitor.rs 3 | // 4 | // Copyright (C) 2025 Posit Software, PBC. All rights reserved. 5 | // 6 | 7 | use crossbeam::channel::Sender; 8 | 9 | use crate::request::RRequest; 10 | 11 | /// No parent monitoring on Windows 12 | pub fn start_parent_monitoring(_r_request_tx: Sender) -> anyhow::Result<()> { 13 | Ok(()) 14 | } 15 | -------------------------------------------------------------------------------- /crates/harp/src/sys/windows/polled_events.rs: -------------------------------------------------------------------------------- 1 | // 2 | // polled_events.rs 3 | // 4 | // Copyright (C) 2023-2024 Posit Software, PBC. All rights reserved. 5 | // 6 | // 7 | 8 | // Polled events aren't used on Windows, so this is a no-op 9 | pub struct RLocalPolledEventsSuspended {} 10 | 11 | impl RLocalPolledEventsSuspended { 12 | pub fn new(_value: bool) -> Self { 13 | Self {} 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /crates/libr/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "libr" 3 | version = "0.1.0" 4 | description = """ 5 | Bindings to R's C API, resolved dynamically at runtime. 6 | """ 7 | 8 | authors.workspace = true 9 | edition.workspace = true 10 | license.workspace = true 11 | rust-version.workspace = true 12 | 13 | [dependencies] 14 | cfg-if = "1.0.0" 15 | libc = "0.2.152" 16 | libloading = "0.8.1" 17 | paste = "1.0.14" 18 | -------------------------------------------------------------------------------- /crates/harp/src/options.rs: -------------------------------------------------------------------------------- 1 | // 2 | // options.rs 3 | // 4 | // Copyright (C) 2025 Posit Software, PBC. All rights reserved. 5 | // 6 | // 7 | 8 | use crate::{r_symbol, RObject}; 9 | 10 | pub fn get_option(name: &str) -> RObject { 11 | unsafe { libr::Rf_GetOption1(r_symbol!(name)).into() } 12 | } 13 | 14 | pub fn get_option_bool(name: &str) -> bool { 15 | harp::get_option(name).try_into().unwrap_or(false) 16 | } 17 | -------------------------------------------------------------------------------- /crates/ark/src/sys/windows/traps.rs: -------------------------------------------------------------------------------- 1 | /* 2 | * traps.rs 3 | * 4 | * Copyright (C) 2023 Posit Software, PBC. All rights reserved. 5 | * 6 | */ 7 | 8 | use crate::traps::backtrace_handler; 9 | 10 | pub fn register_trap_handlers() { 11 | unsafe { 12 | libc::signal(libc::SIGSEGV, backtrace_handler as libc::sighandler_t); 13 | libc::signal(libc::SIGILL, backtrace_handler as libc::sighandler_t); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/completions.rs: -------------------------------------------------------------------------------- 1 | // 2 | // completions.rs 3 | // 4 | // Copyright (C) 2023 Posit Software, PBC. All rights reserved. 5 | // 6 | // 7 | 8 | mod completion_context; 9 | mod completion_item; 10 | mod function_context; 11 | mod provide; 12 | mod resolve; 13 | mod sources; 14 | mod types; 15 | 16 | #[cfg(test)] 17 | mod tests; 18 | 19 | pub(crate) use provide::provide_completions; 20 | pub(crate) use resolve::resolve_completion; 21 | -------------------------------------------------------------------------------- /crates/ark/src/lsp/inputs/source_root.rs: -------------------------------------------------------------------------------- 1 | // 2 | // source_root.rs 3 | // 4 | // Copyright (C) 2025 by Posit Software, PBC 5 | // 6 | // 7 | 8 | use super::package::Package; 9 | 10 | /// The root of a source tree. 11 | /// Currently only supports packages, but can be extended to scripts. 12 | #[derive(Clone, Debug)] 13 | pub enum SourceRoot { 14 | Package(Package), 15 | // Scripts(Vec