Introduction
Introduction Statistics Contact Development Disclaimer Help
gph-mode.el - geomyidae - A small C-based gopherd.
git clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfri…
Log
Files
Refs
Tags
README
LICENSE
---
gph-mode.el (2267B)
---
1 ;;; gph-mode.el --- major mode for gph files -*- lexical-binding: t; -*-
2
3 ;; Copyright (C) Troels Henriksen ([email protected]) 2022
4 ;;
5 ;; URL: gopher://sigkill.dk/1/programming
6 ;; Keywords: gopher
7 ;; Version: 1.1
8 ;; Package-Requires: ((emacs "25.1"))
9
10 ;; This file is not part of GNU Emacs.
11
12 ;;; License:
13 ;; GPL-3+
14
15 ;;; Commentary:
16 ;; .gph is the map file format used by the geomyidae Gopher daemon.
17 ;; This Emacs mode provides basic understanding of the link syntax,
18 ;; such that highlighting and folding works properly. It also
19 ;; highlights tab characters in pink because these are not allowed in
20 ;; .gph files.
21 ;;
22 ;; Files with the ".gph" extension are automatically handled by this mod…
23 ;;
24 ;; For extensions: Define local keybindings in `gph-mode-map'. Add
25 ;; startup functions to `gph-mode-hook'.
26
27 ;;; Code:
28
29 (eval-when-compile
30 (require 'rx))
31
32 (defface gph-tabs-face
33 '((((class color)) (:background "hotpink"))
34 (t (:reverse-video t)))
35 "Face to use for highlighting tabs in Font-Lock mode.")
36
37 (defvar gph-tabs 'gph-tabs-face
38 "Face to use for highlighting tabs in Font-Lock mode.")
39
40 (defvar gph--font-lock-defaults
41 (let* ((type-rx '(or "0" "1" "3" "7" "8" "9" "g" "I" "h" "i"))
42 (desc-rx '(* (not "|")))
43 (path-rx '(* (not "|")))
44 (host-rx '(* (not "|")))
45 (port-rx '(+ digit))
46 (link-rx `(: line-start "[" ,type-rx "|" ,desc-rx "|" ,path-rx …
47 (badlink-rx `(: line-start "[" (* anything))))
48 `((,(rx-to-string link-rx) 0 font-lock-doc-markup-face)
49 (,(rx-to-string badlink-rx) 0 font-lock-warning-face)
50 ("\t" 0 gph-tabs))))
51
52 (defvar gph-mode-hook nil
53 "Hook for `gph-mode'. Is run whenever the mode is entered.")
54
55 (defvar gph-mode-map
56 (let ((map (make-keymap)))
57 map)
58 "Keymap for `gph-mode'.")
59
60 ;;;###autoload
61 (add-to-list 'auto-mode-alist '("\\.gph" . gph-mode))
62
63 ;;;###autoload
64 (define-derived-mode gph-mode text-mode "gph"
65 "Major mode for .gph files as used by geomyidae."
66 (setq-local paragraph-start (concat "^\\[|\\|[ \t]*$\\|" page-delimite…
67 (setq-local paragraph-separate (concat "^\\[\\|[ \t]*$\\|" page-delimi…
68 (setq-local font-lock-defaults '(gph--font-lock-defaults)))
69
70 (provide 'gph-mode)
71
72 ;;; gph-mode.el ends here
You are viewing proxied material from bitreich.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.