diff --git a/.gitignore b/.gitignore index d2847ea9a09903689f8c8c4ad06f6d475e5036b3..30c4ef506e1c8f0d3e03283602f49107bec542d4 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,7 @@ auto-save-list /custom.el /Installation.tex /.last-package-update-day +.lsp-session-v1 +forge-database.sqlite +games/ +projectile.cache diff --git a/Configuration.org b/Configuration.org index 8216064f0c9df40697996cf5f0ada4c8f6daf78b..e8cf1a17ceb04572464ee6a08635a28200eb013b 100644 --- a/Configuration.org +++ b/Configuration.org @@ -1216,6 +1216,13 @@ statistiques, utiliser la commande ~M-x keyfreq-show~ :ensure t) #+END_SRC +** Mode pugs +#+BEGIN_SRC emacs-lisp + (load-library "~/.emacs.d/extra/pugs.el") + (add-to-list 'auto-mode-alist '("\\.pgs?\\'" . pugs-mode)) + (require 'pugs-mode) +#+END_SRC + * Annexes ** Génération de toute la documentation diff --git a/extra/pugs.el b/extra/pugs.el new file mode 100644 index 0000000000000000000000000000000000000000..36830ffa5036575b65b08690cb22d986b34473a9 --- /dev/null +++ b/extra/pugs.el @@ -0,0 +1,75 @@ +;;; pugs -- simple major mode for pgs files +;;; Commentary: +;;; simple major mode for pugs +;;; Code: + +(define-derived-mode pugs-output-mode compilation-mode "pugs-output" + "Define a special mode for pugs process output." +) + +(defun pugs-run-file () + "Execute the current pugs script. +Ask to save the buffer if needed" + (interactive) + (when (buffer-modified-p) + (save-buffer)) + (let ((output-buffer "*pugs-output*") + (pugs-binary "~/src/pugs/build/pugs") + (pugs-file (buffer-file-name (current-buffer))) + (pugs-buffer (current-buffer))) + (when (get-buffer output-buffer) + (kill-buffer output-buffer)) + (get-buffer-create output-buffer) + (follow-mode) + (display-buffer output-buffer) + (set-buffer output-buffer) + (pugs-output-mode) + (setq-local inhibit-read-only t) + (insert (format "started: %s\n" (current-time-string))) + (insert (format "binary : %s\n" pugs-binary)) + (insert (format "script : %s\n\n" pugs-file)) + ;;; run the process + (process-file pugs-binary nil output-buffer nil pugs-file "--no-color") +; (start-process pugs-binary nil output-buffer t pugs-file "--no-color") + ;;; + (insert (format "\nfinished: %s\n" (current-time-string))) + (insert (format "binary : %s\n" pugs-binary)) + (insert (format "script : %s\n" pugs-file)) + )) + +(define-derived-mode pugs-mode prog-mode "pugs" + "pugs mode is a major mode for editing pugs files" + ;; define pugs keywords + (defvar pugs-keywords + '("import" "let" "Z" "N" "B" "R" "string" "and" "or" "xor" "not" "true" "false" "let" "do" "while" "for" "if" "else" "break" "continue" "cout" "cerr" "clog" "+")) + + (defvar pugs-special-symbols + '(":" "," ";" "{" "}" "->" "<=" ">=" "=" "+" "-" "*" "/" "<" ">" "^")) + + (defvar pugs-font-lock-defaults + `(( + ;; strings + ("\"\\.\\*\\?" . font-lock-string-face) + ;; keywords + ( ,(regexp-opt pugs-keywords 'words) . font-lock-keyword-face) + ;; special symbols + ( ,(regexp-opt pugs-special-symbols) . font-lock-constant-face) + ))) + + (setq font-lock-defaults pugs-font-lock-defaults) + + ;; for comments + (setq comment-start "//") + (setq comment-end "") + + (modify-syntax-entry ?\\ "\\" pugs-mode-syntax-table) + (modify-syntax-entry ?/ ". 124b" pugs-mode-syntax-table) + (modify-syntax-entry ?* ". 23" pugs-mode-syntax-table) + (modify-syntax-entry ?\n "> b" pugs-mode-syntax-table) + + (local-set-key (kbd "C-c C-c") 'pugs-run-file) + ) +(provide 'pugs-mode) + +;;; (provide 'pugs-mode) +;;; pugs.el ends here diff --git a/snippets/cc-mode/once b/snippets/cc-mode/once new file mode 100644 index 0000000000000000000000000000000000000000..9abbd3cab8e574acb088d7c6da361b2f0c756b42 --- /dev/null +++ b/snippets/cc-mode/once @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: #ifndef XXX; #define XXX; #endif +# key: ONCE +# -- +#ifndef ${1:`(let ((case-fold-search nil)) (concat (upcase (replace-regexp-in-string "\\([A-Z][a-z]*\\)" "\\1_" (file-name-nondirectory (file-name-sans-extension (or (buffer-file-name) ""))))) "HPP"))`} +#define $1 + +$0 + +#endif // $1