Skip to content

Instantly share code, notes, and snippets.

View rougier's full-sized avatar
:octocat:

Nicolas P. Rougier rougier

:octocat:
View GitHub Profile
@xoolive
xoolive / parse_index.py
Last active February 23, 2021 05:39
Explore \index{} elements in your LaTeX aborescence
import sys
from collections import defaultdict
from itertools import repeat
from pathlib import Path
from typing import DefaultDict, Iterator, List, Optional, Tuple
import click
import regex as re
from rich import print
@rougier
rougier / Toolbar.el
Created November 30, 2020 12:05
Emacs SVG Toolbar
;; An experiment for an SVG toolbar using icons from material.io
;;
;; Example usage: (toolbar 48 "black" "white" t t)
;; Material icons freely available (Apache 2 license) from
;; - https://material.io/resources/icons/?style=outline
;; - https://github.com/google/material-design-icons
(require 'xml) (require 'svg)
(defun toobar-item (label icon fg-color bg-color size with-icon with-label)
@rougier
rougier / tag.el
Last active May 29, 2024 15:51
Rounded boxed tags for Emacs
;; ---------------------------------------------------------------------
;; Tag minor mode
;; Copyright (C) 2020 Nicolas .P Rougier
;;
;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
@rougier
rougier / echo-line.el
Created August 11, 2020 10:58
An extension of the echo area to display static messages (emacs)
;; -------------------------------------------------------------------
;; An extension of the echo area to display static messages
;; Copyright 2020 Nicolas P. Rougier
;; -------------------------------------------------------------------
;; This file is not part of GNU Emacs.
;;
;; This program is free software: you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
;; published by the Free Software Foundation, either version 3 of the
;; License, or (at your option) any later version.
@rougier
rougier / enhanced-message.el
Last active October 21, 2020 18:05
Emacs: persistent message in the echo area
(require 'subr-x)
(defun enhanced-message (orig-fun &rest args)
"This enhanced message displays a regular message in the echo area
and adds a specific text on the right part of the echo area. This
is to be used as an advice."
(let* ((right (propertize
;; Hack: The first space is a thin space, not a regular space
(format-time-string "  %A %d %B %Y, %H:%M ")
'face '(:height 0.85
@rougier
rougier / gist:ddb84c16c28f7cd75e27e50d4c3c43da
Created August 1, 2020 17:48
Elegant Emacs daily agenda
(defun elegant-agenda (char-width char-height)
""
(interactive)
(select-frame (make-frame))
(set-frame-width (selected-frame) char-width)
(set-frame-height (selected-frame) char-height)
(set-frame-position (selected-frame)
(/ (- (display-pixel-width) (frame-outer-width)) 2)
(/ (- (display-pixel-height) (frame-outer-height)) 2))
(x-focus-frame nil)
@rougier
rougier / material-colors.el
Created July 31, 2020 17:54
Emacs year calendar in a dedicated frame
;; Material colors from https://material.io/design/color/
(defconst levels
(list "L50" "L100" "L200" "L300" "L400"
"L500" "L600" "L700" "L800" "L900"
"A100" "A200" "A400" "A700"))
(defconst red
(list "#FFEBEE" "#FFCDD2" "#EF9A9A" "#E57373" "#EF5350"
"#F44336" "#E53935" "#D32F2F" "#C62828" "#B71C1C"
"#FF8A80" "#FF5252" "#FF1744" "#D50000"))
@rougier
rougier / enriched.py
Created June 20, 2020 09:21
Emacs enriched test minor mode
import json
palettes = json.load(open("material-colors.json"))
levels = [ "L50", "L100", "L200", "L300", "L400",
"L500", "L600", "L700", "L800", "L900",
"A100", "A200", "A400", "A700"]
def enriched_text(t, fg_color, bg_color, space, bold=False):
if bold: u0, u1 = "<bold>", "</bold>"
else: u0, u1 = "", ""
print(f"<x-bg-color><param>{bg_color}</param>"
@rougier
rougier / multiline-header.el
Created June 3, 2020 06:13
Emacs Multiline mode-line
;; -------------------------------------------------------------------
;; A proof of concept for a multi header or mode line
;;
;; Multi line header or mode line is made possible by generating an
;; SVG image made of two small lines of text. It is certainly memory
;; hungry but it seems to be fast enough to display line/column while
;; typing text. It can probably be extended in a number of ways.
;;
;; Feel free to modify it for your own needs.
;; -------------------------------------------------------------------
@rougier
rougier / rounded-box.el
Last active October 3, 2020 13:24
SVG Rounded box for Emacs
(require 'svg)
;; Rounded boxes using SVG:
;; This could be made into a function but size of text needs to be computed
(defun tag (text &optional foreground background font-size)
(let* ((font-size (or font-size 12))
;; The char-width ratio depends on the font family
(char-width (* font-size 0.58))
(char-height (+ font-size 1))