devbox setup, dep upgrades, lint fixes, Android build fixes

- Add devbox.json pinning Flutter 3.35.7, Android SDK (Nix flake),
  openjdk17, just, openssl
- Add android/nix-android-sdk/ Nix flake + flake.lock + Android Studio
  config script
- Add justfile with build/get/upgrade/icons/analyze/rebuild recipes
- flutter pub upgrade --major-versions: file_picker ^11, google_fonts ^8,
  permission_handler ^12, share_plus ^12, flutter_lints ^6 (+71 transitive)
- Fix file_picker v11 API: FilePicker.platform → FilePicker.getDirectoryPath()
- Fix all 37 analyzer issues: deprecated APIs (window, WillPopScope, Share,
  SvgPicture color), async BuildContext guards, key constructors, private
  createState() return types, unused locals, print → debugPrint, etc.
- Hook _handleCommand into onSubmitted for : prefix commands
- Android: Gradle 8.3→8.11.1, AGP 8.2.2→8.9.1, KGP 1.8.22→2.2.20,
  compileSdk/targetSdk 34→36, namespace auto-derivation for library modules,
  kotlin.compiler.execution.strategy=in-process

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
randogoth 2026-06-19 17:08:29 +03:00
parent 9dbd638fa8
commit fc6c69db24
19 changed files with 1287 additions and 383 deletions

273
lib/themes/markdown.dart Normal file → Executable file
View file

@ -1,61 +1,218 @@
import 'package:highlight/highlight.dart';
final markdown = Mode(refs: {}, aliases: [
"md",
"mkdown",
"mkd"
], contains: [
Mode(className: "section", variants: [
Mode(begin: "^#\\s{1,6}", end: "\$"),
Mode(begin: "^.+?\\n[=-]{2,}\$")
]),
Mode(begin: "<", end: ">", subLanguage: ["xml"], relevance: 0),
Mode(className: "bullet", begin: "^\\s*([*+-]|(\\d+\\.))\\s+"),
Mode(className: "strong", begin: "[*_]{2}.+?[*_]{2}"),
final markdown = Mode(
refs: {},
aliases: [
"md",
"mkdown",
"mkd"
],
contains: [
// Headers (with distinct classes for each level)
Mode(
className: "header",
variants: [
// Level 1 header (#)
Mode(
className: "header-h1",
begin: "^#\\s+",
end: "\$"
),
// Level 2 header (##)
Mode(
className: "header-h2",
begin: "^##\\s+",
end: "\$"
),
// Level 3 header (###)
Mode(
className: "header-h3",
begin: "^###\\s+",
end: "\$"
),
// Level 4 header (####)
Mode(
className: "header-h4",
begin: "^####\\s+",
end: "\$"
),
// Level 5 header (#####)
Mode(
className: "header-h5",
begin: "^#####\\s+",
end: "\$"
),
// Level 6 header (######)
Mode(
className: "header-h6",
begin: "^######\\s+",
end: "\$"
),
// Underlined headers (=== and ---)
Mode(
className: "header-underline",
begin: "^.+?\\n[=-]{2,}\$"
)
]
),
// HTML tags
Mode(
begin: "<",
end: ">",
subLanguage: ["xml"],
relevance: 0
),
// Lists
Mode(
className: "list",
begin: "^\\s*([*+-]|(\\d+\\.))\\s+"
),
// Bold text
Mode(
className: "bold",
begin: "[*_]{2}.+?[*_]{2}"
),
// Italic text
Mode(
className: "italic",
variants: [
Mode(begin: "\\*.+?\\*"),
Mode(begin: "_.+?_", relevance: 0)
]
),
// Blockquotes
Mode(
className: "blockquote",
begin: "^>\\s+",
end: "\$"
),
// Code blocks and inline code
Mode(
className: "code",
variants: [
Mode(begin: "^```\\w*\\s*\$", end: "^```[ ]*\$"), // Fenced code blocks
Mode(begin: "`.+?`"), // Inline code
Mode(begin: "^( {4}|\\t)", end: "\$", relevance: 0) // Indented code blocks
]
),
// Horizontal rules
Mode(
className: "horizontal-rule",
begin: "^[-\\*]{3,}",
end: "\$"
),
// Links and images
Mode(
begin: "\\[.+?\\][\\(\\[].*?[\\)\\]]",
returnBegin: true,
contains: [
Mode(
className: "link-text",
begin: "\\[",
end: "\\]",
excludeBegin: true,
returnEnd: true,
relevance: 0
),
Mode(
className: "link-url",
begin: "\\]\\(",
end: "\\)",
excludeBegin: true,
excludeEnd: true
),
Mode(
className: "link-reference",
begin: "\\]\\[",
end: "\\]",
excludeBegin: true,
excludeEnd: true
)
],
relevance: 10
),
// Reference-style links
Mode(
begin: "^\\[[^\\n]+\\]:",
returnBegin: true,
contains: [
Mode(
className: "link-reference",
begin: "\\[",
end: "\\]",
excludeBegin: true,
excludeEnd: true
),
Mode(
className: "link-url",
begin: ":\\s*",
end: "\$",
excludeBegin: true
)
]
),
// Strikethrough text
Mode(
className: "strikethrough",
begin: "~~.+?~~"
),
// Tables
Mode(
className: "table",
begin: "^\\|.+?\\|",
end: "\$",
contains: [
Mode(
className: "table-header",
begin: "^\\|",
end: "\\|",
contains: [
Mode(
className: "table-cell",
begin: "[^|]+",
end: "\$"
)
]
),
Mode(
className: "table-row",
begin: "^\\|",
end: "\\|",
contains: [
Mode(
className: "table-cell",
begin: "[^|]+",
end: "\$"
)
]
)
]
),
// Task lists
Mode(
className: "task-list",
begin: "^\\s*-\\s*\\[\\s*[xX ]?\\s*\\]\\s+"
),
Mode(
className: "emphasis",
variants: [Mode(begin: "\\*.+?\\*"), Mode(begin: "_.+?_", relevance: 0)]),
Mode(className: "quote", begin: "^>\\s+", end: "\$"),
Mode(className: "code", variants: [
Mode(begin: "^```\\w*\\s*\$", end: "^```[ ]*\$"),
Mode(begin: "`.+?`"),
Mode(begin: "^( {4}|\\t)", end: "\$", relevance: 0)
]),
Mode(begin: "^[-\\*]{3,}", end: "\$"),
Mode(
begin: "\\[.+?\\][\\(\\[].*?[\\)\\]]",
returnBegin: true,
contains: [
Mode(
className: "string",
begin: "\\[",
end: "\\]",
excludeBegin: true,
returnEnd: true,
relevance: 0),
Mode(
className: "link",
begin: "\\]\\(",
end: "\\)",
excludeBegin: true,
excludeEnd: true),
Mode(
className: "symbol",
begin: "\\]\\[",
end: "\\]",
excludeBegin: true,
excludeEnd: true)
],
relevance: 10),
Mode(begin: "^\\[[^\\n]+\\]:", returnBegin: true, contains: [
Mode(
className: "symbol",
begin: "\\[",
end: "\\]",
excludeBegin: true,
excludeEnd: true),
Mode(className: "link", begin: ":\\s*", end: "\$", excludeBegin: true)
]),
className: "link-reference",
begin: "\\[",
end: "\\]",
excludeBegin: true,
excludeEnd: true
),
// Custom Tag Highlighting
Mode(
@ -71,11 +228,11 @@ final markdown = Mode(refs: {}, aliases: [
begin: "(?<=\\s|^)@[a-zA-Z0-9_]+",
relevance: 10), // Yellow
Mode(
className: "keyword",
className: "command",
begin: "(?<=\\s|^):[a-zA-Z0-9_]+",
relevance: 10),
Mode(
className: "variable",
begin: "(?<=\\s|^)\/[a-zA-Z0-9_\/]+",
className: "link-url",
begin: "(?<=\\s|^)/[a-zA-Z0-9_/]+",
relevance: 10), // Yellow
]);