17 mai 2022

System Setup

Prérequis :

brew install git

# git est livré avec macOs
git --version

# pour connaître la version utilisée (macOs par défaut)
which git

# si besoin de switcher sur la version homebrew
sudo mv /usr/bin/git /usr/bin/git-apple
# ou 
brew link --overwrite git

Récupération des fichiers de configuration

J’utilise chezmoi pour la gestion de mes dotfiles (.gitconfig, .gitignore, .zshrc, etc.).

#macos
brew install chezmoi
#arch
sudo pacman -S chezmoi

Récupération automatique des fichiers sur une nouvelle machine :

# si le repo github est nommé 'dotefiles'
chezmoi init --apply $GITHUB_USERNAME
# autrement
chezmoi init --apply https://github.com/$GITHUB_USERNAME/$GITHUB_REPO.git

Fonts

Voir fonts

Terminal/shell

Ajouter le thème Hyper snazzy et l’activer par défaut. Autres thèmes :

Depuis macOS Catalina, zsh est le shell par défaut. Pour les versions antérieurs, ou sur d’autres systèmes, il peut être nécessaire d’installer zsh ou de l’activer. Pour l’installation et l’activation, voir Installing-ZSH.

Pour la configuration du shell j’utilise Oh-my-zsh.

# installation
sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"

Pour une configuration manuelle du .zshrc (sans chezmoi), suivre les étapes suivantes :

  • plugins
plugins=(git web-search aliases)
git clone https://github.com/reobin/typewritten.git $ZSH_CUSTOM/themes/typewritten
# NB $ZSH_CUSTOM est une variable par defaut de oh-my-zsh)
#.zshrc
ZSH_THEME="typewritten/typewritten"

TYPEWRITTEN_RELATIVE_PATH="adaptive"
TYPEWRITTEN_PROMPT_LAYOUT="pure"
TYPEWRITTEN_ARROW_SYMBOL="|"
TYPEWRITTEN_COLOR_MAPPINGS="primary:red"

Navigateurs

Langages de programmation

Pour l’installation de Julia, voir https://julialang.org/downloads/.

Installer Python avec Homebrew ou avec un gestionnaire de paquets Linux (brew install python). Pour plus d’informations sur Homebrew et Python : https://docs.brew.sh/Homebrew-and-Python.

Librairies

J’utilise le package n pour la gestion des versions de NodeJS. Pour l’installer : brew install n

Pour définir le dossier d’installation de NodeJS, il faut configurer la variable d’environnement N_PREFIX (déjà configurée dans mes dotefiles).

# .zshrc
export N_PREFIX=$HOME/.n
export PATH=$N_PREFIX/bin:$PATH

Il est ensuite possible d’installer différentes versions de node :

  • n stable pour installer la version stable
  • n <version> pour installer une version spécifique, par exemple n 16.15.0
  • n lts pour installer la version de support à long terme
  • n latest pour installer la dernière version.

Pour vérifier la version de node : node -v.

Pour passer d’une version de Node à l’autre il suffit de taper n dans le terminal, de sélectionner la version désirée avec les flèches et d’appuyer sur enter.

Penser à ajouter Ant dans le $Path

Pour une installation avec macOS, voir : tei Stylesheets

Éditeurs de texte

  • Vim Vim est installé par défaut sur macOs mais pas sur toutes les distributions Linux. Pour l’installer s’il est manquant brew install vim. Un fichier .vimrc est présent dans mes dotefiles.

  • Neovim :

# macos
brew install neovim
#arch
pacman -S neovim

Les fichiers de configuration se trouvent dans mes dotefiles (.config/nvim).

La configuration de JuliaLS nécessite une étape manuelle pour la création d’un environnement julia nvim-lspconfig (voir ce post pour plus de détails, une copie est présente dans mon zotero pour la procédure complète. Voir aussi le repos fredrikekre/.dotfiles).

  • lancer la commande julia --project=~/.julia/environments/nvim-lspconfig -e 'using Pkg; Pkg.add("LanguageServer")' pour créer l’environnement ;
  • changer de répertoire : cd ~.julia/environment/nvim-lspconfig ;
  • lancer la commande make.

NB : le fichier makefile et le dossier .julia/environments/nvim-lspconfig sont aussi dans mes dotefiles.

NB2 : Pour une raison que j’ignore, sous macos Sonoma 14.5, le fichier languageserver.dylib créé avec la commande make cause une erreur à l’ouverture d’un fichier julia avec neovim. Le supprimer règle toutefois le problème (julia 1.10+). Le problème n’a cependant pas été constatée sous macos Catalina et Archlinux.

Commandes utiles pour le deboggage :

:TSUpdate ---mise à jour des parsers
:LspInfo --- statuts et serveurs de langages actifs et configurés
--- ouvrir un fichier julia puis lancer la commande 
:LspInfo --- puis <tab> permet d'accéder à plus d'informations sur la configuration requise
:LspUpdate --- mettre à jour les serveurs de langages
:LspLog --- logs des serveurs de langages
:checkhealth --- diagnostics de la configuration neovim
:Lazy --- pour la gestion des plugins
  • Webstorm Webstorm permet la synchronisation de paramètres depuis un compte Jetbrains. Pour activer la synchronisation : Webstorm/Settings/Settings Sync/Enable Settings Sync, puis dans la popup Get Settings from Account. Le changement de font s’effectue dans Webstorm/settings/Editor/Font.

Plugins :

Intégration de BaseX : voir la documentation BaseX.

Le changement de font s’effectue dans Code/Réglages/ParamètresEditor: Font Family. Il est également possible de définir une font pour un langage particulier, voir la documentation et aussi https://worldofzero.com/posts/enable-font-ligatures-vscode/.

Pour synchroniser les balises ouvrantes et fermantes (html/xml) : ⌘ + ⇧ + p, puis choisir settings.json (user) et ajouter "editor.linkedEditing": true.

Le fichier settings.json complet :

{
    "editor.fontFamily": "MonoLisa, 'IBM Plex Mono', Menlo, Monaco, 'Courier New', monospace",
    "editor.fontSize": 16,
    "editor.formatOnType": false,
    "editor.indentSize": "tabSize",
    "editor.fontLigatures": true,
    "editor.formatOnPaste": true,
    "editor.lineHeight": 1.6,
    "editor.linkedEditing": true,
    "editor.renderWhitespace": "all",
    "editor.tabSize": 4,
    "explorer.compactFolders": false,
    "explorer.confirmDragAndDrop": false,
    "git.openRepositoryInParentFolders": "never",
    "[julia]": {
        "editor.fontFamily": "JuliaMono, MonoLisa, 'IBM Plex Mono', Menlo, Monaco, 'Courier New', monospace"
    },
    "julia.enableTelemetry": false,
    "julia.symbolCacheDownload": true,
    "security.workspace.trust.untrustedFiles": "open",
    "settingsSync.ignoredExtensions": [
        "james-yu.latex-workshop"
    ],
    "svelte.enable-ts-plugin": true,
    "terminal.integrated.commandsToSkipShell": [
        "language-julia.interrupt"
    ],
    "workbench.colorTheme": "One Dark Pro",
    "workbench.sideBar.location": "right",
    "workbench.startupEditor": "none",
    "workbench.tree.indent": 24
}

Les raccourcis clavier dans le fichier keybindings.json

// Placer vos combinaisons de touches dans ce fichier pour remplacer les valeurs par défautauto[]
[
    {
        "key": "alt+w",
        "command": "editor.emmet.action.wrapWithAbbreviation",
        "when": "editorHasSelection && editorTextFocus"
    },{
        "key": "cmd+enter",
        "command": "editor.action.insertLineAfter",
        "when": "editorTextFocus"
    },{
        "key": "cmd+shift+enter",
        "command": "editor.action.insertLineBefore",
        "when": "editorTextFocus"
    },{
        "key": "alt+f",
        "command": "editor.action.formatDocument",
        "when": "editorTextFocus"
    },{
        "key": "shift+alt+f",
        "command": "editor.action.formatSelection",
        "when": "editorHasSelection"
    },{
        "key": "ctrl+alt+c",
        "command": "editor.action.transformToCamelcase",
        "when": "editorHasSelection"
    },{
        "key": "ctrl+alt+l",
        "command": "editor.action.transformToLowercase",
        "when": "editorHasSelection"
    },{
        "key": "ctrl+alt+s",
        "command": "editor.action.transformToSnakecase",
        "when": "editorHasSelection"
    },{
        "key": "ctrl+alt+u",
        "command": "editor.action.transformToUppercase",
        "when": "editorHasSelection"
    }
]

Plugins :

Mes paramètres personnalisés sont stockés dans le fichier globalSettings.xml et les scénarios de transformation dans transformation.scenarios (repo oxygenxml-config).

Pour importer les paramètres et les scénarios : options/(importer les options globales | importer les scénarios de transformation)

Pour une configuration manuelle :

  • Formatage :
    • Préférences/Éditeur/Formatage :
      • cocher seulement : détecter l'indentation à l'ouverture ; indenter avec Entrée ; activer Smart Enter
      • changer les valeurs pour : largeur d'indentation : 3 et Longueur de ligne : 10000
    • Préférences/Éditeur/Formatage/XML :
      • cocher : Conserver les lignes vides ; Conserver les sauts de ligne dans les attributs ; Indenter les éléments en ligne
      • ajouter //p/* ; //head//* ; //dateline//* ; //signed//* ; //choice à Espacement des éléments/Conserver les espaces
  • Saxon
    • Préférences/XML/XSLT/FO/XQuery/XSLT/Saxon/Saxon HE/PE/EE
      • désélectionner Étendre les attributs par défaut ("-expand")

Image/video editing