feat: Editor configs

This commit is contained in:
Frederik Beimgraben 2025-10-30 20:54:29 +01:00
parent 9db24ee9b6
commit 5fc289c096
8 changed files with 831 additions and 2 deletions

2
.gitignore vendored
View File

@ -52,5 +52,3 @@ venv/
Build/
Output/
.vscode/

103
.vscode/README.md vendored Normal file
View File

@ -0,0 +1,103 @@
# VSCode Configuration for LaTeX Project
This directory contains Visual Studio Code workspace settings optimized for LaTeX development with this project.
## Features
### LaTeX Workshop Integration
- Configured to use `make` command for building
- Multiple build recipes available:
- `make` - Standard build using Docker
- `make clean` - Clean auxiliary files
- `make full` - Clean and full rebuild
### Key Settings
- **Auto-build disabled** - Build manually with `Ctrl+Shift+B` (Windows/Linux) or `Cmd+Shift+B` (Mac)
- **PDF viewer** - Opens in a new tab within VSCode
- **Output directory** - Configured to use `Output/` folder
- **Auto-clean** - Cleans auxiliary files after successful build
## Usage
### Building the Document
1. **Quick Build**: Press `Ctrl+Shift+B` / `Cmd+Shift+B`
2. **Build Menu**: Press `Ctrl+Alt+B` / `Cmd+Alt+B` to see all build options
3. **Command Palette**: Press `F1` and type "LaTeX Workshop: Build"
### Viewing the PDF
- After building, the PDF will automatically open in a new tab
- Use `Ctrl+Alt+V` / `Cmd+Alt+V` to manually open the PDF
### Tasks
Additional tasks are available through the Command Palette (`F1`):
- `Tasks: Run Task` shows all available make commands:
- Build LaTeX Document
- Clean Build Files
- Full Build
- View PDF
- Docker Build/Clean
- List Chapters
- Word Count
- Check Prerequisites
## Recommended Extensions
The following extensions are recommended for the best experience:
- **LaTeX Workshop** - Main LaTeX support (required)
- **Code Spell Checker** + German dictionary - Spell checking
- **PDF Viewer** - Enhanced PDF viewing
- **GitLens** - Git integration
- **Docker** - Docker support for containerized builds
Install all recommended extensions:
1. Open Extensions sidebar (`Ctrl+Shift+X` / `Cmd+Shift+X`)
2. Filter by `@recommended`
3. Click "Install Workspace Recommended Extensions"
## Customization
To override any settings for your personal preferences, create a `.vscode/settings.local.json` file (git-ignored) or modify your user settings.
### Enable Auto-Build on Save
If you want to enable automatic building when saving `.tex` files, add this to your user settings:
```json
{
"latex-workshop.latex.autoBuild.run": "onSave"
}
```
### Change PDF Viewer
To use an external PDF viewer instead of the built-in one:
```json
{
"latex-workshop.view.pdf.viewer": "external",
"latex-workshop.view.pdf.external.viewer.command": "your-pdf-viewer",
"latex-workshop.view.pdf.external.viewer.args": ["%PDF%"]
}
```
## Troubleshooting
### Build Fails
1. Ensure Docker is running: `make docker-info`
2. Check prerequisites: `make check`
3. Try a clean build: `make full`
### PDF Doesn't Open
- Check if the PDF was created in `Output/Main.pdf`
- Try manually opening: `make view`
### Extensions Not Working
1. Ensure LaTeX Workshop extension is installed and enabled
2. Reload VSCode window: `F1` → "Developer: Reload Window"
3. Check extension output: View → Output → Select "LaTeX Workshop"
## File Exclusions
The configuration hides common LaTeX auxiliary files from the file explorer:
- `*.aux`, `*.log`, `*.synctex.gz`
- `*.fdb_latexmk`, `*.fls`
- `*.out`, `*.toc`, `*.bbl`, `*.blg`
- Build directory contents (can be shown if needed)
To show hidden files temporarily, use the file explorer's filter settings.

26
.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,26 @@
{
// Recommended extensions for LaTeX development
"recommendations": [
// LaTeX Workshop - Main LaTeX extension
"james-yu.latex-workshop",
// PDF viewer
"tomoki1207.pdf",
// Spell checking
"streetsidesoftware.code-spell-checker",
"streetsidesoftware.code-spell-checker-german",
// File icons
"vscode-icons-team.vscode-icons",
// Docker support (for building with Docker)
"ms-azuretools.vscode-docker",
// Path intellisense
"christian-kohler.path-intellisense",
// TODO highlighting
"gruntfuggly.todo-tree"
]
}

114
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,114 @@
{
// LaTeX Workshop Configuration
"latex-workshop.latex.recipes": [
{
"name": "make",
"tools": ["make"]
},
{
"name": "make clean",
"tools": ["make-clean"]
},
{
"name": "make full",
"tools": ["make-full"]
}
],
"latex-workshop.latex.tools": [
{
"name": "make",
"command": "make",
"args": [],
"env": {},
"cwd": "${workspaceFolder}"
},
{
"name": "make-clean",
"command": "make",
"args": ["clean"],
"env": {},
"cwd": "${workspaceFolder}"
},
{
"name": "make-full",
"command": "make",
"args": ["full"],
"env": {},
"cwd": "${workspaceFolder}"
}
],
// Set default recipe
"latex-workshop.latex.recipe.default": "first",
// Use external build command
"latex-workshop.latex.external.build.command": "make",
"latex-workshop.latex.external.build.args": [],
// Disable auto-build on save (optional, remove if you want auto-build)
"latex-workshop.latex.autoBuild.run": "never",
// Clean auxiliary files
"latex-workshop.latex.autoClean.run": "onBuilt",
// PDF viewer settings
"latex-workshop.view.pdf.viewer": "tab",
"latex-workshop.view.pdf.zoom": "auto",
// Output directory
"latex-workshop.latex.outDir": "./Output",
// Root file
"latex-workshop.latex.rootFile.usePolling": true,
"latex-workshop.latex.rootFile.indicator": "\\documentclass",
// Disable other build methods to avoid confusion
"latex-workshop.latex.magic.enabled": false,
"latex-workshop.latex.build.forceRecipeUsage": true,
// File associations
"files.associations": {
"*.tex": "latex",
"*.cls": "latex",
"*.sty": "latex",
"*.bib": "bibtex"
},
// Editor settings for LaTeX files
"[latex]": {
"editor.wordWrap": "on",
"editor.rulers": [80, 100],
"editor.formatOnSave": false,
"editor.suggestSelection": "first"
},
// Spell check settings (optional)
"cSpell.language": "de,en",
"cSpell.enableFiletypes": ["latex", "bibtex"],
// Hide auxiliary files from explorer (optional)
"files.exclude": {
"**/*.aux": true,
"**/*.log": true,
"**/*.synctex.gz": true,
"**/*.fdb_latexmk": true,
"**/*.fls": true,
"**/*.out": true,
"**/*.toc": true,
"**/*.bbl": true,
"**/*.blg": true,
"**/*.lof": true,
"**/*.lot": true,
"**/*.nav": true,
"**/*.snm": true,
"**/*.vrb": true,
"Build/**": false
},
// Search exclude patterns
"search.exclude": {
"Build/**": true,
"Output/**": false
}
}

169
.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,169 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Build LaTeX Document",
"type": "shell",
"command": "make",
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": false
},
"problemMatcher": []
},
{
"label": "Clean Build Files",
"type": "shell",
"command": "make",
"args": ["clean"],
"group": "build",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": false
},
"problemMatcher": []
},
{
"label": "Full Build (Clean + Build)",
"type": "shell",
"command": "make",
"args": ["full"],
"group": "build",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": false
},
"problemMatcher": []
},
{
"label": "View PDF",
"type": "shell",
"command": "make",
"args": ["view"],
"group": "none",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": false
},
"problemMatcher": []
},
{
"label": "Docker Build",
"type": "shell",
"command": "make",
"args": ["docker-build"],
"group": "build",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": false
},
"problemMatcher": []
},
{
"label": "Docker Clean",
"type": "shell",
"command": "make",
"args": ["docker-clean"],
"group": "build",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": false
},
"problemMatcher": []
},
{
"label": "List Chapters",
"type": "shell",
"command": "make",
"args": ["chapters"],
"group": "none",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": false
},
"problemMatcher": []
},
{
"label": "Word Count",
"type": "shell",
"command": "make",
"args": ["count"],
"group": "none",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": false
},
"problemMatcher": []
},
{
"label": "Check Prerequisites",
"type": "shell",
"command": "make",
"args": ["check"],
"group": "none",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": false
},
"problemMatcher": []
},
{
"label": "Docker Info",
"type": "shell",
"command": "make",
"args": ["docker-info"],
"group": "none",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": false
},
"problemMatcher": []
}
]
}

169
.zed/README.md Normal file
View File

@ -0,0 +1,169 @@
# Zed Configuration for LaTeX Project
This directory contains Zed editor workspace settings optimized for LaTeX development with this project.
## Features
### Build System Integration
- Configured to use `make` command for all builds
- **Auto-compile on save is DISABLED** as requested
- Manual build triggers only
### Key Settings
- **Format on save** - Disabled for LaTeX files
- **Auto-save** - Disabled to prevent unwanted builds
- **Build command** - Uses `make` via Docker
- **PDF viewer** - Uses system default (xdg-open on Linux)
- **Word wrap** - Enabled for better readability
## Usage
### Building the Document
1. **Default Build**: Press `Cmd+B` (Mac) / `Ctrl+B` (Linux)
2. **Full Build**: Press `Cmd+Shift+B` (Mac) / `Ctrl+Shift+B` (Linux)
3. **Command Palette**: Press `Cmd+Shift+P` and select a task
### Available Tasks
- **Build LaTeX Document** - Standard build using Docker
- **Clean Build Files** - Remove auxiliary files
- **Full Build** - Clean and rebuild from scratch
- **View PDF** - Open the generated PDF
- **Docker Build** - Explicit Docker build
- **Docker Clean** - Clean Docker containers
- **Word Count** - Show document statistics
- **List Chapters** - Show all chapters
- **Check Prerequisites** - Verify system requirements
### Keyboard Shortcuts
| Action | Mac | Linux/Windows |
|--------|-----|---------------|
| Build | `Cmd+B` | `Ctrl+B` |
| Full Build | `Cmd+Shift+B` | `Ctrl+Shift+B` |
| Clean | `Cmd+K Cmd+C` | `Ctrl+K Ctrl+C` |
| View PDF | `Cmd+K Cmd+V` | `Ctrl+K Ctrl+V` |
## Configuration Details
### LaTeX Language Settings
```json
{
"LaTeX": {
"format_on_save": false, // No auto-formatting
"autosave": false, // No auto-save
"tab_size": 2, // 2-space indentation
"soft_wrap": "editor_width", // Wrap at editor width
"enable_language_server": true // Enable LSP support
}
}
```
### Build Configuration
The project is configured to use `make` for all build operations:
- Build command: `make`
- Working directory: Project root
- Output directory: `Output/`
### File Exclusions
The following files are hidden from the file tree:
- Build artifacts (`*.aux`, `*.log`, `*.synctex.gz`)
- Bibliography files (`*.bbl`, `*.blg`)
- Table of contents (`*.toc`, `*.lof`, `*.lot`)
- Build directory contents
## LSP Configuration (texlab)
If you have `texlab` language server installed, it's configured with:
- Build on save: **DISABLED**
- Forward search: Disabled
- ChkTeX: Enabled on open and save
- Formatter: latexindent
To install texlab:
```bash
# macOS
brew install texlab
# Linux (via cargo)
cargo install texlab
# Or download from GitHub releases
```
## Customization
### Enable Auto-Save (Not Recommended)
If you want to enable auto-save (will NOT trigger builds):
```json
{
"autosave": {
"after_delay": 1000
}
}
```
### Change PDF Viewer
To use a different PDF viewer:
```json
{
"preview": {
"pdf_viewer": {
"open_command": "your-pdf-viewer"
}
}
}
```
### Enable Build on Save (Not Recommended)
If you really want to build on every save:
```json
{
"lsp": {
"texlab": {
"initialization_options": {
"build": {
"onSave": true
}
}
}
}
}
```
## Troubleshooting
### Build Doesn't Start
1. Ensure Docker is running
2. Check that `make` command works in terminal
3. Try running `make docker-info` in terminal
### Tasks Not Available
1. Ensure you're in the project root
2. Reload Zed: `Cmd+Q` and restart
3. Check tasks.json is properly loaded
### PDF Doesn't Open
1. Check if PDF exists in `Output/Main.pdf`
2. Verify system PDF viewer is configured
3. Try manually: `make view` in terminal
### Language Server Issues
1. Install texlab if not already installed
2. Check Zed's language server logs
3. Disable and re-enable language server in settings
## Important Notes
1. **Auto-compile is intentionally disabled** - You must manually trigger builds
2. **Format on save is disabled** - LaTeX formatting can break documents
3. **Use Docker builds** - Ensures consistent environment
4. **Check git status** - Some files are auto-generated and should not be committed
## File Structure
```
.zed/
├── settings.json # Zed workspace settings
├── tasks.json # Build task definitions
└── README.md # This file
```
These configuration files are workspace-specific and should be committed to the repository so all team members have the same settings.

80
.zed/settings.json Normal file
View File

@ -0,0 +1,80 @@
{
"languages": {
"LaTeX": {
"tab_size": 2,
"hard_tabs": false,
"soft_wrap": "editor_width",
"show_whitespaces": "selection",
"use_autoclose": true,
"enable_language_server": true
}
},
"file_scan_exclusions": [
"Build/",
"*.aux",
"*.log",
"*.out",
"*.toc",
"*.lof",
"*.lot",
"*.lol",
"*.bbl",
"*.blg",
"*.synctex.gz",
"*.fdb_latexmk",
"*.fls",
"*.idx",
"*.ind",
"*.ilg",
"*.glo",
"*.gls",
"*.glg",
"*.nav",
"*.snm",
"*.vrb",
"*.bcf",
"*.run.xml"
],
"show_line_numbers": true,
"relative_line_numbers": false,
"cursor_blink": true,
"git": {
"git_gutter": "tracked_files",
"inline_blame": {
"enabled": false
}
},
"lsp": {
"texlab": {
"settings": {
"texlab": {
"build": {
"executable": "make",
"args": [],
"onSave": false,
"forwardSearchAfter": false
},
"chktex": {
"onEdit": false,
"onOpenAndSave": true
},
"latexFormatter": "latexindent",
"latexindent": {
"modifyLineBreaks": false
}
}
}
}
},
"task_aliases": {
"build": "make",
"clean": "make clean",
"full": "make full",
"view": "make view"
}
}

170
.zed/tasks.json Normal file
View File

@ -0,0 +1,170 @@
[
{
"label": "Build LaTeX Document",
"command": "make",
"args": [],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Clean Build Files",
"command": "make",
"args": ["clean"],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Full Build (Clean + Build)",
"command": "make",
"args": ["full"],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "View PDF",
"command": "make",
"args": ["view"],
"use_new_terminal": false,
"allow_concurrent_runs": true,
"reveal": "never"
},
{
"label": "Docker Build",
"command": "make",
"args": ["docker-build"],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Docker Build (Cached)",
"command": "make",
"args": ["docker-build-cached"],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Docker Clean",
"command": "make",
"args": ["docker-clean"],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Docker Shell",
"command": "make",
"args": ["docker-shell"],
"use_new_terminal": true,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Docker Info",
"command": "make",
"args": ["docker-info"],
"use_new_terminal": false,
"allow_concurrent_runs": true,
"reveal": "always"
},
{
"label": "List Chapters",
"command": "make",
"args": ["chapters"],
"use_new_terminal": false,
"allow_concurrent_runs": true,
"reveal": "always"
},
{
"label": "Word Count",
"command": "make",
"args": ["count"],
"use_new_terminal": false,
"allow_concurrent_runs": true,
"reveal": "always"
},
{
"label": "Check Prerequisites",
"command": "make",
"args": ["check"],
"use_new_terminal": false,
"allow_concurrent_runs": true,
"reveal": "always"
},
{
"label": "Project Structure",
"command": "make",
"args": ["structure"],
"use_new_terminal": false,
"allow_concurrent_runs": true,
"reveal": "always"
},
{
"label": "Help",
"command": "make",
"args": ["help"],
"use_new_terminal": false,
"allow_concurrent_runs": true,
"reveal": "always"
},
{
"label": "Watch (Continuous Build)",
"command": "make",
"args": ["watch"],
"use_new_terminal": true,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Draft Build",
"command": "make",
"args": ["draft"],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Local Build (No Docker)",
"command": "make",
"args": ["local"],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Compile Only",
"command": "make",
"args": ["compile"],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Clean Output",
"command": "make",
"args": ["clean-output"],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Clean Auxiliary Files",
"command": "make",
"args": ["clean-aux"],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
},
{
"label": "Distribution Clean",
"command": "make",
"args": ["distclean"],
"use_new_terminal": false,
"allow_concurrent_runs": false,
"reveal": "always"
}
]