Compare commits

...

11 Commits

Author SHA1 Message Date
Gwen a41c46b9ca Merge pull request 'Re-organize doc files' (#5) from re-organize into master
Reviewed-on: #5
2022-12-23 01:56:38 +00:00
Gwen bf6a57f7ed
Add helix install script 2022-12-22 20:36:20 -05:00
Gwen 4303e26f2a
Re-arrange git config
Moved more things from my global gitconfig to user config where it
feels appropriate.
2022-12-22 20:32:06 -05:00
Gwen 83594f3b8f
Undot and move bashrc stuff to config/bash 2022-12-22 15:00:39 -05:00
Gwen 30decb6580
Un-dot git files and move them to config folder 2022-12-22 14:52:44 -05:00
Gwen 42ab116eb3
Move dotfiles to config and unhide them 2022-12-22 14:49:56 -05:00
Gwen 6750a3df5f
Move fish config to config directory 2022-12-22 14:38:42 -05:00
Gwen b64f29b767
Link helix config files in setup script 2022-12-22 14:19:40 -05:00
Gwen 2054a6dfda
Give operators more contrast
This will make them more obvious as & is considered an operator in
rust without drawing too much attention to them.
2022-12-22 14:15:38 -05:00
Gwen ea227abea8
Add helix editor configuration
Mostly just customizations to the gruvbox theme to fit a bit better
to my eye and my preferences.
2022-12-22 14:13:35 -05:00
Gwen 92c48f0ced
Remove Emacs dotfiles
I love the core text editing experience of emacs, but I have grown
tired of the work it takes to just do so many things.  I like the
experience of customizing things, but I feel like I never have the
chance to do the polish I need in order to get things working smoothly.

I also really want better integration with LSP and debugging, things
which have always been sort of difficult for me in emacs.  Going to
try to start from a clean slate this winter break with helix (`hx`),
which has a lot of the text editing features that I like from emacs
but integrated through tree-sitter.  The ability to search though
code easily with goto and space modes really blows my mind, there
truely is nothing else like it.

It also has very good performance so far, though I haven't tested
anything especially huge.

So all of that is to say that I'm going to be using helix instead
of emacs.
2022-12-22 11:45:55 -05:00
29 changed files with 137 additions and 772 deletions

4
.gitmodules vendored
View File

@ -1,4 +0,0 @@
[submodule "emacs/github-packages/wgsl-mode"]
path = emacs/github-packages/wgsl-mode
url = https://github.com/glfmn/wgsl-mode
branch = fix-regex

View File

@ -11,7 +11,7 @@ esac
DIR="$(dirname $(readlink ~/.bashrc))"
# load all dotfiles in dotfiles repository
for DOTFILE in `find $DIR/system/.{prompt,alias,functions,path,env,shell}.sh`
for DOTFILE in `find $DIR/.{prompt,alias,functions,path,env,shell}.sh`
do
[ -f "$DOTFILE" ] && source "$DOTFILE"
done

View File

@ -0,0 +1,32 @@
# This file contains fish universal variable definitions.
# VERSION: 3.0
SETUVAR __fish_initialized:3100
SETUVAR fish_color_autosuggestion:555\x1ebrblack
SETUVAR fish_color_cancel:\x2dr
SETUVAR fish_color_command:005fd7
SETUVAR fish_color_comment:990000
SETUVAR fish_color_cwd:green
SETUVAR fish_color_cwd_root:red
SETUVAR fish_color_end:009900
SETUVAR fish_color_error:ff0000
SETUVAR fish_color_escape:00a6b2
SETUVAR fish_color_history_current:\x2d\x2dbold
SETUVAR fish_color_host:normal
SETUVAR fish_color_host_remote:yellow
SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue
SETUVAR fish_color_normal:normal
SETUVAR fish_color_operator:00a6b2
SETUVAR fish_color_param:00afff
SETUVAR fish_color_quote:999900
SETUVAR fish_color_redirection:00afff
SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_status:red
SETUVAR fish_color_user:brgreen
SETUVAR fish_color_valid_path:\x2d\x2dunderline
SETUVAR fish_greeting:Welcome\x20to\x20fish\x2c\x20the\x20friendly\x20interactive\x20shell\x0aType\x20\x60help\x60\x20for\x20instructions\x20on\x20how\x20to\x20use\x20fish
SETUVAR fish_key_bindings:fish_default_key_bindings
SETUVAR fish_pager_color_completion:\x1d
SETUVAR fish_pager_color_description:B3A06D\x1eyellow
SETUVAR fish_pager_color_prefix:white\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan

35
config/git/gitconfig Normal file
View File

@ -0,0 +1,35 @@
[push]
default = simple
[core]
editor = "vi"
excludesfile = ~/.gitignore_global
attributesfile = ~/.gitattributes_global
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
required = true
process = git-lfs filter-process
[filter "nbstrip_full"]
clean = "jq --indent 1 \
'(.cells[] | select(has(\"outputs\")) | .outputs) = [] \
| (.cells[] | select(has(\"execution_count\")) | .execution_count) = null \
| .metadata = {\"language_info\": {\"name\": \"python\", \"pygments_lexer\": \"ipython3\"}} \
| .cells[].metadata = {} \
'"
smudge = cat
required = true
[commit]
verbose = true
[help]
autocorrect = 10
[init]
defaultBranch = main
[include]
path = ~/.gitconfig.user

View File

@ -1,28 +1,18 @@
[push]
default = simple
[user]
name = Gwen Lofman
email = git@glfmn.io
signingkey = 4DB217ABEC8E37B0
[commit]
gpgSign = true
[tag]
gpgSign = true
[core]
editor = "vi"
excludesfile = ~/.gitignore_global
attributesfile = ~/.gitattributes_global
editor = "hx"
pager = delta --dark
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
required = true
process = git-lfs filter-process
[filter "nbstrip_full"]
clean = "jq --indent 1 \
'(.cells[] | select(has(\"outputs\")) | .outputs) = [] \
| (.cells[] | select(has(\"execution_count\")) | .execution_count) = null \
| .metadata = {\"language_info\": {\"name\": \"python\", \"pygments_lexer\": \"ipython3\"}} \
| .cells[].metadata = {} \
'"
smudge = cat
required = true
[alias]
# "Custom" commands
# diff against characters instead of lines
@ -71,15 +61,3 @@ required = true
fll = !git lgl --follow -- # long-format commits
fst = !git lst --follow -- # stat-style commits
fpa = !git lpa --follow -- # full patch commits
[commit]
verbose = true
[help]
autocorrect = 10
[init]
defaultBranch = main
[include]
path = ~/.gitconfig.user

11
config/helix/config.toml Normal file
View File

@ -0,0 +1,11 @@
# Configuration for helix editor.
#
# See https://docs.helix-editor.com/configuration.html
# Custom derivative of gruvbox
theme = "glfmn"
[editor]
color-modes = true # Differentiate between modes in lower left-hand corner
bufferline = "multiple" # Show buffers as tabs

View File

@ -0,0 +1,27 @@
inherits = "gruvbox"
# Make delimiters less loud
"punctuation" = "gray1"
"punctuation.delimiter" = "gray1"
# Make operators less loud but stil stand out
"operator" = "fg3"
# Remove italics (can cause issues with tmux)
"comment" = "gray1"
# Unify look of variables with slight contrast difference to emphasize
# function parameters.
"variable" = "fg2"
"variable.parameter" = "fg1"
"variable.builtin" = "fg1"
# Unify look of functions
"function" = "green1"
"function.macro" = "aqua1"
"function.builtin" = { fg = "green1", modifiers = ["bold"] }
# Differentiate ui modes more clearly
"ui.statusline.normal" = { fg = "fg1", bg = "green0" }
"ui.statusline.insert" = { fg = "fg1", bg = "blue0", modifiers = ["bold"] }
"ui.statusline.select" = { fg = "fg1", bg = "orange0", modifiers = ["bold"] }

View File

@ -1,451 +0,0 @@
;;; glsl-mode.el --- major mode for Open GLSL shader files
;; Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
;; Copyright (C) 2011, 2014, 2019 Jim Hourihan
;;
;; Authors: Xavier.Decoret@imag.fr,
;; Jim Hourihan <jimhourihan ~at~ gmail.com> (updated for 4.6, etc)
;; Keywords: languages OpenGL GPU SPIR-V Vulkan
;; Version: 2.4
;; X-URL: https://github.com/jimhourihan/glsl-mode
;;
;; Original X-URL http://artis.inrialpes.fr/~Xavier.Decoret/resources/glsl-mode/
;; This file 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, or (at your option)
;; any later version.
;; This file is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; For a full copy of the GNU General Public License
;; see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; Major mode for editing OpenGLSL grammar files, usually files ending with
;; `.vert', `.frag', `.glsl', `.geom'. Is is based on c-mode plus some
;; features and pre-specified fontifications.
;;
;; Modifications from the 1.0 version of glsl-mode (jimhourihan):
;; * Removed original optimized regexps for font-lock-keywords and
;; replaced with keyword lists for easier maintenance
;; * Added customization group and faces
;; * Preprocessor faces
;; * Updated to GLSL 4.6
;; * Separate deprecated symbols
;; * Made _ part of a word
;; * man page lookup at opengl.org
;; This package provides the following features:
;; * Syntax coloring (via font-lock) for grammar symbols and
;; builtin functions and variables for up to GLSL version 4.6
;; * Indentation for the current line (TAB) and selected region (C-M-\).
;; * Switching between file.vert and file.frag
;; with S-lefttab (via ff-find-other-file)
;; * interactive function glsl-find-man-page prompts for glsl built
;; in function, formats opengl.org url and passes to browse-url
;;; Installation:
;; This file requires Emacs-20.3 or higher and package cc-mode.
;; If glsl-mode is not part of your distribution, put this file into your
;; load-path and the following into your ~/.emacs:
;; (autoload 'glsl-mode "glsl-mode" nil t)
;; (add-to-list 'auto-mode-alist '("\\.glsl\\'" . glsl-mode))
;; (add-to-list 'auto-mode-alist '("\\.vert\\'" . glsl-mode))
;; (add-to-list 'auto-mode-alist '("\\.frag\\'" . glsl-mode))
;; (add-to-list 'auto-mode-alist '("\\.geom\\'" . glsl-mode))
;; Reference:
;; https://www.khronos.org/registry/OpenGL/specs/gl/GLSLangSpec.4.60.pdf
;;; Code:
(provide 'glsl-mode)
(eval-when-compile ; required and optional libraries
(require 'cc-mode)
(require 'find-file))
(require 'align)
(defgroup glsl nil
"OpenGL Shading Language Major Mode"
:group 'languages)
(defconst glsl-language-version "4.6"
"GLSL language version number.")
(defconst gl-version "4.6"
"OpenGL major mode version number.")
(defvar glsl-mode-menu nil "Menu for GLSL mode")
(defvar glsl-mode-hook nil "GLSL mode hook")
(defvar glsl-type-face 'glsl-type-face)
(defface glsl-type-face
'((t (:inherit font-lock-type-face))) "glsl: type face"
:group 'glsl)
(defvar glsl-builtin-face 'glsl-builtin-face)
(defface glsl-builtin-face
'((t (:inherit font-lock-builtin-face))) "glsl: builtin face"
:group 'glsl)
(defvar glsl-deprecated-builtin-face 'glsl-deprecated-builtin-face)
(defface glsl-deprecated-builtin-face
'((t (:inherit font-lock-warning-face))) "glsl: deprecated builtin face"
:group 'glsl)
(defvar glsl-qualifier-face 'glsl-qualifier-face)
(defface glsl-qualifier-face
'((t (:inherit font-lock-keyword-face))) "glsl: qualifier face"
:group 'glsl)
(defvar glsl-keyword-face 'glsl-keyword-face)
(defface glsl-keyword-face
'((t (:inherit font-lock-keyword-face))) "glsl: keyword face"
:group 'glsl)
(defvar glsl-deprecated-keyword-face 'glsl-deprecated-keyword-face)
(defface glsl-deprecated-keyword-face
'((t (:inherit font-lock-warning-face))) "glsl: deprecated keyword face"
:group 'glsl)
(defvar glsl-variable-name-face 'glsl-variable-name-face)
(defface glsl-variable-name-face
'((t (:inherit font-lock-variable-name-face))) "glsl: variable face"
:group 'glsl)
(defvar glsl-deprecated-variable-name-face 'glsl-deprecated-variable-name-face)
(defface glsl-deprecated-variable-name-face
'((t (:inherit font-lock-warning-face))) "glsl: deprecated variable face"
:group 'glsl)
(defvar glsl-reserved-keyword-face 'glsl-reserved-keyword-face)
(defface glsl-reserved-keyword-face
'((t (:inherit glsl-keyword-face))) "glsl: reserved keyword face"
:group 'glsl)
(defvar glsl-preprocessor-face 'glsl-preprocessor-face)
(defface glsl-preprocessor-face
'((t (:inherit font-lock-preprocessor-face))) "glsl: preprocessor face"
:group 'glsl)
(defcustom glsl-additional-types nil
"List of additional keywords to be considered types. These are
added to the `glsl-type-list' and are fontified using the
`glsl-type-face'. Examples of existing types include \"float\", \"vec4\",
and \"int\"."
:type '(repeat (string :tag "Type Name"))
:group 'glsl)
(defcustom glsl-additional-qualifiers nil
"List of additional keywords to be considered qualifiers. These
are added to the `glsl-qualifier-list' and are fontified using
the `glsl-qualifier-face'. Examples of existing qualifiers
include \"const\", \"in\", and \"out\"."
:type '(repeat (string :tag "Qualifier Name"))
:group 'glsl)
(defcustom glsl-additional-keywords nil
"List of additional GLSL keywords. These are added to the
`glsl-keyword-list' and are fontified using the
`glsl-keyword-face'. Example existing keywords include \"while\",
\"if\", and \"return\"."
:type '(repeat (string :tag "Keyword"))
:group 'glsl)
(defcustom glsl-additional-built-ins nil
"List of additional functions to be considered built-in. These
are added to the `glsl-builtin-list' and are fontified using the
`glsl-builtin-face'."
:type '(repeat (string :tag "Keyword"))
:group 'glsl)
(defvar glsl-mode-hook nil)
(defvar glsl-mode-map
(let ((glsl-mode-map (make-sparse-keymap)))
(define-key glsl-mode-map [S-iso-lefttab] 'ff-find-other-file)
glsl-mode-map)
"Keymap for GLSL major mode.")
(defcustom glsl-browse-url-function 'browse-url
"Function used to display GLSL man pages. E.g. browse-url, eww, w3m, etc"
:type 'function
:group 'glsl)
(defcustom glsl-man-pages-base-url "http://www.opengl.org/sdk/docs/man/html/"
"Location of GL man pages."
:type 'string
:group 'glsl)
;;;###autoload
(progn
(add-to-list 'auto-mode-alist '("\\.vert\\'" . glsl-mode))
(add-to-list 'auto-mode-alist '("\\.frag\\'" . glsl-mode))
(add-to-list 'auto-mode-alist '("\\.geom\\'" . glsl-mode))
(add-to-list 'auto-mode-alist '("\\.glsl\\'" . glsl-mode)))
(eval-and-compile
;; These vars are useful for completion so keep them around after
;; compile as well. The goal here is to have the byte compiled code
;; have optimized regexps so its not done at eval time.
(defvar glsl-type-list
'("float" "double" "int" "void" "bool" "true" "false" "mat2" "mat3"
"mat4" "dmat2" "dmat3" "dmat4" "mat2x2" "mat2x3" "mat2x4" "dmat2x2"
"dmat2x3" "dmat2x4" "mat3x2" "mat3x3" "mat3x4" "dmat3x2" "dmat3x3"
"dmat3x4" "mat4x2" "mat4x3" "mat4x4" "dmat4x2" "dmat4x3" "dmat4x4" "vec2"
"vec3" "vec4" "ivec2" "ivec3" "ivec4" "bvec2" "bvec3" "bvec4" "dvec2"
"dvec3" "dvec4" "uint" "uvec2" "uvec3" "uvec4" "atomic_uint"
"sampler1D" "sampler2D" "sampler3D" "samplerCube" "sampler1DShadow"
"sampler2DShadow" "samplerCubeShadow" "sampler1DArray" "sampler2DArray"
"sampler1DArrayShadow" "sampler2DArrayShadow" "isampler1D" "isampler2D"
"isampler3D" "isamplerCube" "isampler1DArray" "isampler2DArray"
"usampler1D" "usampler2D" "usampler3D" "usamplerCube" "usampler1DArray"
"usampler2DArray" "sampler2DRect" "sampler2DRectShadow" "isampler2DRect"
"usampler2DRect" "samplerBuffer" "isamplerBuffer" "usamplerBuffer"
"sampler2DMS" "isampler2DMS" "usampler2DMS" "sampler2DMSArray"
"isampler2DMSArray" "usampler2DMSArray" "samplerCubeArray"
"samplerCubeArrayShadow" "isamplerCubeArray" "usamplerCubeArray"
"image1D" "iimage1D" "uimage1D" "image2D" "iimage2D" "uimage2D" "image3D"
"iimage3D" "uimage3D" "image2DRect" "iimage2DRect" "uimage2DRect"
"imageCube" "iimageCube" "uimageCube" "imageBuffer" "iimageBuffer"
"uimageBuffer" "image1DArray" "iimage1DArray" "uimage1DArray"
"image2DArray" "iimage2DArray" "uimage2DArray" "imageCubeArray"
"iimageCubeArray" "uimageCubeArray" "image2DMS" "iimage2DMS" "uimage2DMS"
"image2DMSArray" "iimage2DMSArray" "uimage2DMSArray"))
(defvar glsl-qualifier-list
'("attribute" "const" "uniform" "varying" "buffer" "shared" "coherent"
"volatile" "restrict" "readonly" "writeonly" "layout" "centroid" "flat"
"smooth" "noperspective" "patch" "sample" "in" "out" "inout"
"invariant" "lowp" "mediump" "highp"))
(defvar glsl-keyword-list
'("break" "continue" "do" "for" "while" "if" "else" "subroutine"
"discard" "return" "precision" "struct" "switch" "default" "case"))
(defvar glsl-reserved-list
'("input" "output" "asm" "class" "union" "enum" "typedef" "template" "this"
"packed" "resource" "goto" "inline" "noinline"
"common" "partition" "active" "long" "short" "half" "fixed" "unsigned" "superp"
"public" "static" "extern" "external" "interface"
"hvec2" "hvec3" "hvec4" "fvec2" "fvec3" "fvec4"
"filter" "sizeof" "cast" "namespace" "using"
"sampler3DRect"))
(defvar glsl-deprecated-qualifier-list
'("varying" "attribute")) ; centroid is deprecated when used with varying
(defvar glsl-builtin-list
'("abs" "acos" "acosh" "all" "any" "anyInvocation" "allInvocations"
"allInvocationsEqual" "asin" "asinh" "atan" "atanh"
"atomicAdd" "atomicMin" "atomicMax" "atomicAnd" "atomicOr"
"atomicXor" "atomicExchange" "atomicCompSwap"
"atomicCounter" "atomicCounterDecrement" "atomicCounterIncrement"
"atomicCounterAdd" "atomicCounterSubtract" "atomicCounterMin"
"atomicCounterMax" "atomicCounterAnd" "atomicCounterOr"
"atomicCounterXor" "atomicCounterExchange" "atomicCounterCompSwap"
"barrier" "bitCount" "bitfieldExtract" "bitfieldInsert" "bitfieldReverse"
"ceil" "clamp" "cos" "cosh" "cross" "degrees" "determinant" "dFdx" "dFdy"
"dFdyFine" "dFdxFine" "dFdyCoarse" "dFdxCoarse" "distance" "dot"
"fwidthFine" "fwidthCoarse"
"EmitStreamVertex" "EmitStreamPrimitive" "EmitVertex" "EndPrimitive"
"EndStreamPrimitive" "equal" "exp" "exp2" "faceforward" "findLSB"
"findMSB" "floatBitsToInt" "floatBitsToUint" "floor" "fma" "fract"
"frexp" "fwidth" "greaterThan" "greaterThanEqual" "groupMemoryBarrier"
"imageAtomicAdd" "imageAtomicAnd" "imageAtomicCompSwap" "imageAtomicExchange"
"imageAtomicMax" "imageAtomicMin" "imageAtomicOr" "imageAtomicXor"
"imageLoad" "imageSize" "imageStore" "imulExtended" "intBitsToFloat"
"imageSamples" "interpolateAtCentroid" "interpolateAtOffset" "interpolateAtSample"
"inverse" "inversesqrt" "isinf" "isnan" "ldexp" "length" "lessThan"
"lessThanEqual" "log" "log2" "matrixCompMult" "max" "memoryBarrier"
"memoryBarrierAtomicCounter" "memoryBarrierBuffer"
"memoryBarrierShared" "memoryBarrierImage" "memoryBarrier"
"min" "mix" "mod" "modf" "normalize" "not" "notEqual" "outerProduct"
"packDouble2x32" "packHalf2x16" "packSnorm2x16" "packSnorm4x8"
"packUnorm2x16" "packUnorm4x8" "pow" "radians" "reflect" "refract"
"round" "roundEven" "sign" "sin" "sinh" "smoothstep" "sqrt" "step" "tan"
"tanh" "texelFetch" "texelFetchOffset" "texture" "textureGather"
"textureGatherOffset" "textureGatherOffsets" "textureGrad" "textureSamples"
"textureGradOffset" "textureLod" "textureLodOffset" "textureOffset"
"textureProj" "textureProjGrad" "textureProjGradOffset" "textureProjLod"
"textureProjLodOffset" "textureProjOffset" "textureQueryLevels" "textureQueryLod"
"textureSize" "transpose" "trunc" "uaddCarry" "uintBitsToFloat"
"umulExtended" "unpackDouble2x32" "unpackHalf2x16" "unpackSnorm2x16"
"unpackSnorm4x8" "unpackUnorm2x16" "unpackUnorm4x8" "usubBorrow"))
(defvar glsl-deprecated-builtin-list
'("noise1" "noise2" "noise3" "noise4"
"texture1D" "texture1DProj" "texture1DLod" "texture1DProjLod"
"texture2D" "texture2DProj" "texture2DLod" "texture2DProjLod"
"texture2DRect" "texture2DRectProj"
"texture3D" "texture3DProj" "texture3DLod" "texture3DProjLod"
"shadow1D" "shadow1DProj" "shadow1DLod" "shadow1DProjLod"
"shadow2D" "shadow2DProj" "shadow2DLod" "shadow2DProjLod"
"textureCube" "textureCubeLod"))
(defvar glsl-deprecated-variables-list
'("gl_FragColor" "gl_FragData" "gl_MaxVarying" "gl_MaxVaryingFloats"
"gl_MaxVaryingComponents"))
(defvar glsl-preprocessor-directive-list
'("define" "undef" "if" "ifdef" "ifndef" "else" "elif" "endif"
"error" "pragma" "extension" "version" "line"))
(defvar glsl-preprocessor-expr-list
'("defined" "##"))
(defvar glsl-preprocessor-builtin-list
'("__LINE__" "__FILE__" "__VERSION__"))
) ; eval-and-compile
(eval-and-compile
(defun glsl-ppre (re)
(format "\\<\\(%s\\)\\>" (regexp-opt re))))
(defvar glsl-font-lock-keywords-1
(append
(list
(cons (eval-when-compile
(format "^[ \t]*#[ \t]*\\<\\(%s\\)\\>"
(regexp-opt glsl-preprocessor-directive-list)))
glsl-preprocessor-face)
(cons (eval-when-compile
(glsl-ppre glsl-type-list))
glsl-type-face)
(cons (eval-when-compile
(glsl-ppre glsl-deprecated-qualifier-list))
glsl-deprecated-keyword-face)
(cons (eval-when-compile
(glsl-ppre glsl-reserved-list))
glsl-reserved-keyword-face)
(cons (eval-when-compile
(glsl-ppre glsl-qualifier-list))
glsl-qualifier-face)
(cons (eval-when-compile
(glsl-ppre glsl-keyword-list))
glsl-keyword-face)
(cons (eval-when-compile
(glsl-ppre glsl-preprocessor-builtin-list))
glsl-keyword-face)
(cons (eval-when-compile
(glsl-ppre glsl-deprecated-builtin-list))
glsl-deprecated-builtin-face)
(cons (eval-when-compile
(glsl-ppre glsl-builtin-list))
glsl-builtin-face)
(cons (eval-when-compile
(glsl-ppre glsl-deprecated-variables-list))
glsl-deprecated-variable-name-face)
(cons "gl_[A-Z][A-Za-z_]+" glsl-variable-name-face)
)
(when glsl-additional-types
(list
(cons (glsl-ppre glsl-additional-types) glsl-type-face)))
(when glsl-additional-keywords
(list
(cons (glsl-ppre glsl-additional-keywords) glsl-keyword-face)))
(when glsl-additional-qualifiers
(list
(cons (glsl-ppre glsl-additional-qualifiers) glsl-qualifier-face)))
(when glsl-additional-built-ins
(list
(cons (glsl-ppre glsl-additional-built-ins) glsl-builtin-face)))
)
"Highlighting expressions for GLSL mode.")
(defvar glsl-font-lock-keywords glsl-font-lock-keywords-1
"Default highlighting expressions for GLSL mode.")
(defvar glsl-mode-syntax-table
(let ((glsl-mode-syntax-table (make-syntax-table)))
(modify-syntax-entry ?/ ". 124b" glsl-mode-syntax-table)
(modify-syntax-entry ?* ". 23" glsl-mode-syntax-table)
(modify-syntax-entry ?\n "> b" glsl-mode-syntax-table)
(modify-syntax-entry ?_ "w" glsl-mode-syntax-table)
glsl-mode-syntax-table)
"Syntax table for glsl-mode.")
(defvar glsl-other-file-alist
'(("\\.frag$" (".vert"))
("\\.vert$" (".frag"))
)
"Alist of extensions to find given the current file's extension.")
(defun glsl-man-completion-list ()
"Return list of all GLSL keywords."
(append glsl-builtin-list glsl-deprecated-builtin-list))
(defun glsl-find-man-page (thing)
"Collects and displays manual entry for GLSL built-in function THING."
(interactive
(let ((word (current-word nil t)))
(list
(completing-read
(concat "OpenGL.org GLSL man page: (" word "): ")
(glsl-man-completion-list)
nil nil nil nil word))))
(save-excursion
(apply glsl-browse-url-function
(list (concat glsl-man-pages-base-url thing ".xhtml")))))
(easy-menu-define glsl-menu glsl-mode-map
"GLSL Menu"
`("GLSL"
["Comment Out Region" comment-region
(c-fn-region-is-active-p)]
["Uncomment Region" (comment-region (region-beginning)
(region-end) '(4))
(c-fn-region-is-active-p)]
["Indent Expression" c-indent-exp
(memq (char-after) '(?\( ?\[ ?\{))]
["Indent Line or Region" c-indent-line-or-region t]
["Fill Comment Paragraph" c-fill-paragraph t]
"----"
["Backward Statement" c-beginning-of-statement t]
["Forward Statement" c-end-of-statement t]
"----"
["Up Conditional" c-up-conditional t]
["Backward Conditional" c-backward-conditional t]
["Forward Conditional" c-forward-conditional t]
"----"
["Backslashify" c-backslash-region (c-fn-region-is-active-p)]
"----"
["Find GLSL Man Page" glsl-find-man-page t]
))
;;;###autoload
(define-derived-mode glsl-mode prog-mode "GLSL"
"Major mode for editing GLSL shader files."
(c-initialize-cc-mode t)
(setq abbrev-mode t)
(c-init-language-vars-for 'c-mode)
(c-common-init 'c-mode)
(cc-imenu-init cc-imenu-c++-generic-expression)
(set (make-local-variable 'font-lock-defaults) '(glsl-font-lock-keywords))
(set (make-local-variable 'ff-other-file-alist) 'glsl-other-file-alist)
(set (make-local-variable 'comment-start) "// ")
(set (make-local-variable 'comment-end) "")
(set (make-local-variable 'comment-padding) "")
(easy-menu-add glsl-menu)
(add-to-list 'align-c++-modes 'glsl-mode)
(c-run-mode-hooks 'c-mode-common-hook)
(run-mode-hooks 'glsl-mode-hook)
:after-hook (progn (c-make-noise-macro-regexps)
(c-make-macro-with-semi-re)
(c-update-modeline))
)
;;; glsl-mode.el ends here

@ -1 +0,0 @@
Subproject commit cf2779ec15cb6315f2d887a7287afc7da5d734b9

View File

@ -1,257 +0,0 @@
;;; Configuration --- my config for emacs
;;; Commentary:
;; Setting up Emacs as a minimal text editor with support for LSP
;;; Code:
;; Start up to a more minimal text editor
(setq inhibit-startup-message t)
(menu-bar-mode -1) ; no menu bar
(scroll-bar-mode -1) ; no visible scrollbar
(tool-bar-mode -1) ; no toolbar
(tooltip-mode -1) ; no tooltips
(set-fringe-mode 10) ; horizontal padding
(global-auto-revert-mode t) ; automatically refresh files when I do git stuff
(setq visible-bell t) ; visual instead of audio indicator for errors
(setq create-lockfiles nil) ; don't create .# files
(setq make-backup-files nil) ; don't create backfup files
(setq gc-cons-threshold #x8000000) ; garbage collection limit
; Set the initial window size
(if (window-system) (set-frame-size (selected-frame) 180 50))
;; Set Default font and font size
(add-to-list 'default-frame-alist '(font . "Source Code Pro"))
(set-face-attribute 'default t :font "Source Code Pro")
(set-face-attribute 'default nil :height 105)
;; Make ESQ quit prompts
(global-set-key (kbd "<escape>") 'keyboard-escape-quit)
;; Line numbers
(column-number-mode)
(global-display-line-numbers-mode t)
(dolist (mode '(org-mode-hook
term-mode-hook
eshell-mode-hook))
(add-hook mode (lambda () (display-line-numbers-mode 0))))
;; Initialize package sources
(require 'package)
(setq package-archives '(("melpa" . "https://melpa.org/packages/")
("org" . "https://orgmode.org/elpa/")
("gnu" . "https://elpa.gnu.org/packages/")))
(package-initialize)
(unless package-archive-contents
(package-refresh-contents))
; Initialize use-package on non-Linux platforms
(unless (package-installed-p 'use-package)
(package-install 'use-package))
(require 'use-package)
(setq use-package-always-ensure t)
;; Themes
(use-package doom-modeline
:ensure t
:init (doom-modeline-mode 1)
:custom ((doom-modeline-height 15)))
(use-package doom-themes
:config
(setq doom-themes-enable-bold t
doom-themes-enable-italic t)
(doom-themes-visual-bell-config)
:init (load-theme 'doom-gruvbox t))
;; Search Functionality
(use-package counsel
:bind (("M-x" . counsel-M-x)
("C-x b" . counsel-ibuffer)
("C-x C-f" . counsel-find-file)
:map minibuffer-local-map
("C-r" . 'counsel-minibuffer-history))
:config (setq ivy-initial-inputs-alist nil))
(use-package swiper)
(use-package ivy
:diminish
:bind (("C-s" . swiper)
:map ivy-minibuffer-map
("TAB" . ivy-partial-or-done)
("C-j" . ivy-immediate-done)
("RET" . ivy-alt-done)
:map ivy-switch-buffer-map
("C-d" . ivy-switch-buffer-kill)
:map ivy-reverse-i-search-map
("C-d" . ivy-reverse-i-search-kill))
:config
(setq ivy-re-builders-alist '((t . ivy--regex-ignore-order)))
(ivy-mode 1))
(use-package ivy-rich
:init (ivy-rich-mode 1))
;; Help
(use-package which-key
:init (which-key-mode)
:diminish which-key-mode
:config (setq which-key-idle-delay 0.3))
(use-package helpful
:custom
(counsel-describe-function-function #'helpful-callable)
(counsel-describe-variable-function #'helpful-variable)
:bind (([remap describe-function] . counsel-describe-function)
([remap describe-command] . helpful-command)
([remap describe-variable] . counsel-describe-variable)
([remap describe-key] . helpful-key)))
;; Project management
(use-package projectile
:diminish projectile-mode
:config (projectile-mode)
:custom ((projectile-completion-system 'ivy))
:bind-keymap ("C-c p" . projectile-command-map)
:init (when (file-directory-p "~/Code")
(setq projectile-project-search-path '("~/Code"))))
(use-package counsel-projectile
:config (counsel-projectile-mode))
;; Programming
(use-package rainbow-delimiters
:hook (prog-mode . rainbow-delimiters-mode))
;; Use smartparens for rust and perhaps other C-like
(use-package smartparens-config
:ensure smartparens
:diminish smartparens-mode
:hook (rustic-mode . smartparens-mode)
:bind (("C-M-a" . sp-beginning-of-sexp)
("C-M-e" . sp-end-of-sexp)
("C-M-n" . sp-next-sexp)
("C-M-p" . sp-previous-sexp)
("C-M-f" . sp-forward-sexp)
("C-M-b" . sp-backward-sexp)
("M-f" . sp-forward-symbol)
("M-b" . sp-backward-symbol)
("C-k" . sp-kill-hybrid-sexp)
("C-)" . sp-slurp-hybrid-sexp))
:config (require 'smartparens-config))
;; Use paredit for everything else
(use-package paredit
:diminish paredit-mode
:hook ((emacs-lisp-mode . enable-paredit-mode)
(ielm-mode . enable-paredit-mode)))
;; Spaces over tabs
(setq-default indent-tabs-mode nil)
(defun disable-tabs ()
"Use spaces for indentation."
(setq indent-tabs-mode nil))
(dolist (mode '(prog-mode-hook
lisp-mode-hook
emacs-lisp-mode-hook))
(add-hook mode 'disable-tabs))
;; Highlight whitespace
(use-package whitespace-mode
:ensure nil ; don't actually install the package
:hook
(prog-mode . whitespace-mode)
(before-save . whitespace-cleanup)
(whitespace-mode . (lambda ()
(setq whitespace-display-mappings
'((space-mark 32 [183] [46])
(space-mark 160 [164] [95])
(newline-mark 10 [#x23CE 10] [36 10])
(tab-mark 9 [187 9] [92 9])))))
:custom (whitespace-line '((t (:underline (:color "dim gray" :style wave))))))
;; Error checking
(use-package flycheck
:hook (prog-mode . flycheck-mode))
;; Auto-completion
(use-package company
:hook (prog-mode . company-mode)
:config (setq company-tooltip-align-annotations t
company-minimum-prefix-length 2))
;; Must be installed for rust-analyzer to work
(use-package yasnippet
:ensure
:config
(yas-reload-all)
(add-hook 'prog-mode-hook 'yas-minor-mode))
;; Language server protocol
(use-package lsp-mode
:init (setq lsp-keymap-prefix "C-c l")
:hook ((lsp-mode . lsp-enable-which-key-integration))
:bind (:map lsp-mode-map
("M-?" . lsp-find-references))
:commands lsp
:config
(setq lsp-eldoc-render-all nil)
; (setq lsp-signature-auto-activate t)
(setq lsp-enable-xref t))
(use-package lsp-ivy
:commands lsp-ivy-workspace-symbol)
(use-package markdown-mode
:ensure t
:mode "\\.\\(?:mdx\\|md\\|markdown\\)\\'"
:init (setq markdown-command "multimarkdown"))
;; Rust programming
;; Nuke rust-mode from the auto-mode-alist so that rustic mode loads instead
(use-package rust-mode
:config
(while (rassoc 'rust-mode auto-mode-alist)
(setq auto-mode-alist
(assq-delete-all (car (rassoc 'rust-mode auto-mode-alist))
auto-mode-alist))))
(use-package rustic
:bind (:map rustic-mode-map ("C-c C-c l" . flycheck-list-errors))
:config
(setq rustic-format-on-save t)
(add-hook 'rustic-mode-hook 'glfmn/rustic-mode-hook))
(defun glfmn/rustic-mode-hook ()
;; so that run C-c C-c C-r works without having to confirm
(setq-local buffer-save-without-query t))
(use-package flycheck-rust
:config (add-hook 'flycheck-mode-hook #'flycheck-rust-setup))
(use-package toml-mode)
(use-package wgsl-mode
:load-path "~/.emacs.d/github-packages/wgsl-mode"
:mode "\\.wgsl\\'")
(use-package glsl-mode
:load-path "~/.emacs.d/github-packages/glsl-mode")
;;; init.el ends here

View File

@ -1,10 +0,0 @@
[user]
name = Gwen Lofman
email = git@glfmn.io
signingkey = 4DB217ABEC8E37B0
[commit]
gpgSign = true
[tag]
gpgSign = true

View File

@ -9,3 +9,9 @@ cargo install -f glit
# Rust alternatives for common programs
sudo apt install exa fd-find
cargo install -f git-delta batcat
# Helix text editor
mkdir -p ~/Code/util
git clone https://github.com/helix-editor/helix ~/Code/util/helix
cargo install --path ~/Code/util/helix/helix-term
ln -s ~/Code/util/helix/runtime ~/.config/helix/runtime

View File

@ -13,30 +13,29 @@ DIR=$(pwd -L)
echo -e "\n${GREEN}linking config files...${NC}\n"
# System profiles
echo -e "\n\t${BOLD}System profiles...${NC}\n"
ln -sbv "$DIR/.bashrc" ~
ln -sbv "$DIR/profiles/.bash_profile" ~
ln -sbv "$DIR/profiles/.inputrc" ~
ln -sbv "$DIR/profiles/fish" ~/.config/
ln -sbv "$DIR/emacs" ~/.emacs.d
# System config
echo -e "\n\t${BOLD}System config...${NC}\n"
ln -sbv "$DIR/config/bash/bashrc" ~/.bashrc
ln -sbv "$DIR/config/bash/profile" ~/.bash_profile
ln -sbv "$DIR/config/inputrc" ~/.inputrc
ln -sbv "$DIR/config/fish" ~/.config/
# Text editor config
echo -e "\n\t${BOLD}Text editors...${NC}\n"
ln -sbv "$DIR/profiles/.vimrc" ~
ln -sbv "$DIR/profiles/.spacemacs" ~
ln -sbv "$DIR/service/emacs.service" ~/.config/systemd/user/
ln -sbv "$DIR/config/vimrc" ~/.vimrc
ln -sbv "$DIR/config/helix/config.toml" ~/.config/helix/config.toml
ln -sbv "$DIR/config/helix/themes/" ~/.config/helix/
# Terminal Config
echo -e "\n\t${BOLD}Terminal Emulator...${NC}\n"
ln -sbv "$DIR/profiles/.alacritty.yml" ~
ln -sbv "$DIR/config/alacritty.yml" ~/.alacritty.yml
# Git
echo -e "\n\t${BOLD}git...${NC}\n"
ln -sbv "$DIR/git/.gitconfig" ~
ln -sbv "$DIR/git/.gitconfig.user" ~
ln -sbv "$DIR/git/.gitignore_global" ~
ln -sbv "$DIR/git/.gitattributes_global" ~
ln -sbv "$DIR/config/git/gitconfig" ~/.gitconfig
ln -sbv "$DIR/config/git/gitconfig.user" ~/.gitconfig.user
ln -sbv "$DIR/config/git/gitignore_global" ~/.gitignore_global
ln -sbv "$DIR/config/git/gitattributes_global" ~/.gitattributes_global
# e-mail
echo -e "\n\t${BOLD}email...${NC}\n"