~estraw/.emacs.d

dc18245ce48064deedf5ad8b4d979118f8720539 — Evan Straw 2 years ago 891f05c
Add huge performance improvements
A .gitmodules => .gitmodules +3 -0
@@ 0,0 1,3 @@
[submodule "thirdparty/telega.el"]
	path = thirdparty/telega.el
	url = https://github.com/zevlg/telega.el

M custom.el => custom.el +177 -2
@@ 6,16 6,191 @@
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(ccls-args
   (quote
    ("--log-file=/tmp/ccls.log" "-v=1" "--init={\"compilationDatabaseDirectory\": \"build\"}")))
 '(ccls-initialization-options (quote (quote (:compilationDatabaseDirectory "src"))))
 '(comment-padding "*  ")
 '(dark-mode t)
 '(light-mode nil)
 '(magit-commit-arguments (quote ("-S")))
 '(org-agenda-files (quote ("~/Sync/notes/org-test.org")))
 '(package-selected-packages
   (quote
    (utop ocp-indent merlin-eldoc merlin tuareg yaml-mode groovy-mode go-mode guix slime emojify restclient folding web-mode php-mode company-coq proof-general csv-mode company-arduino arduino-mode flymd impatient-mode web-beautify ein auctex pandoc-mode neotree racket-mode company-quickhelp clang-format ccls cquery column-enforce-mode rainbow-delimiters pdf-tools gradle-mode smartparens geiser yasnippet-snippets yasnippet projectile use-package treemacs lsp-java flycheck lsp-ui company-lsp company lsp-mode magit doom-themes doom-modeline)))
    (telega lua-mode dune hydra all-the-icons markdown-mode+ utop ocp-indent merlin-eldoc merlin tuareg yaml-mode groovy-mode go-mode guix slime emojify restclient folding web-mode php-mode company-coq proof-general csv-mode company-arduino arduino-mode flymd impatient-mode web-beautify ein auctex pandoc-mode neotree racket-mode company-quickhelp clang-format ccls cquery column-enforce-mode rainbow-delimiters pdf-tools gradle-mode smartparens geiser yasnippet-snippets yasnippet projectile use-package treemacs lsp-java flycheck lsp-ui company-lsp company lsp-mode magit doom-themes doom-modeline)))
 '(safe-local-variable-values
   (quote
    ((eval modify-syntax-entry 43 "'")
    ((_ progn
	(c-set-offset
	 (quote substatement-open)
	 0))
     (c-file-style
      (progn
	(c-add-style "PY2020 style"
		     (quote
		      ("gnu"
		       (c-basic-offset . 4)
		       (c-offsets-alist
			(block-close . 0)
			(defun-block-intro . +)
			(defun-close . 0)
			(defun-open . 0)
			(statement . 0)
			(statement-block-intro . +)
			(substatement-open . 0)
			(topmost-intro . 0)
			(access-label . -)
			(annotation-top-cont . 0)
			(annotation-var-cont . +)
			(arglist-close . c-lineup-close-paren)
			(arglist-cont c-lineup-gcc-asm-reg 0)
			(arglist-cont-nonempty . c-lineup-arglist)
			(arglist-intro . c-lineup-arglist-intro-after-paren)
			(block-open . 0)
			(brace-entry-open . 0)
			(brace-list-close . 0)
			(brace-list-entry . c-lineup-under-anchor)
			(brace-list-intro . c-lineup-arglist-intro-after-paren)
			(brace-list-open . +)
			(c . c-lineup-C-comments)
			(case-label . 0)
			(catch-clause . 0)
			(class-close . 0)
			(class-open . 0)
			(comment-intro . c-lineup-comment)
			(composition-close . 0)
			(composition-open . 0)
			(cpp-define-intro c-lineup-cpp-define +)
			(cpp-macro . -1000)
			(cpp-macro-cont . +)
			(do-while-closure . 0)
			(else-clause . 0)
			(extern-lang-close . 0)
			(extern-lang-open . 0)
			(friend . 0)
			(func-decl-cont . +)
			(inclass . +)
			(incomposition . +)
			(inexpr-class . +)
			(inexpr-statement . +)
			(inextern-lang . +)
			(inher-cont . c-lineup-multi-inher)
			(inher-intro . +)
			(inlambda . c-lineup-inexpr-block)
			(inline-close . 0)
			(inline-open . 0)
			(inmodule . +)
			(innamespace . +)
			(knr-argdecl . 0)
			(knr-argdecl-intro . 5)
			(label . 0)
			(lambda-intro-cont . +)
			(member-init-cont . c-lineup-multi-inher)
			(member-init-intro . +)
			(module-close . 0)
			(module-open . 0)
			(namespace-close . 0)
			(namespace-open . 0)
			(objc-method-args-cont . c-lineup-ObjC-method-args)
			(objc-method-call-cont c-lineup-ObjC-method-call-colons c-lineup-ObjC-method-call +)
			(objc-method-intro .
					   [0])
			(statement-case-intro . +)
			(statement-case-open . +)
			(statement-cont . +)
			(stream-op . c-lineup-streamop)
			(string . -1000)
			(substatement . +)
			(substatement-label . 0)
			(template-args-cont c-lineup-template-args +)
			(topmost-intro-cont first c-lineup-topmost-intro-cont c-lineup-gnu-DEFUN-intro-cont))))))
      "PY2020 style")
     (style c-add-style "PY2020 style"
	    (quote
	     ("gnu"
	      (c-basic-offset . 4)
	      (c-offsets-alist
	       (block-close . 0)
	       (defun-block-intro . +)
	       (defun-close . 0)
	       (defun-open . 0)
	       (statement . 0)
	       (statement-block-intro . +)
	       (substatement-open . 0)
	       (topmost-intro . 0)
	       (access-label . -)
	       (annotation-top-cont . 0)
	       (annotation-var-cont . +)
	       (arglist-close . c-lineup-close-paren)
	       (arglist-cont c-lineup-gcc-asm-reg 0)
	       (arglist-cont-nonempty . c-lineup-arglist)
	       (arglist-intro . c-lineup-arglist-intro-after-paren)
	       (block-open . 0)
	       (brace-entry-open . 0)
	       (brace-list-close . 0)
	       (brace-list-entry . c-lineup-under-anchor)
	       (brace-list-intro . c-lineup-arglist-intro-after-paren)
	       (brace-list-open . +)
	       (c . c-lineup-C-comments)
	       (case-label . 0)
	       (catch-clause . 0)
	       (class-close . 0)
	       (class-open . 0)
	       (comment-intro . c-lineup-comment)
	       (composition-close . 0)
	       (composition-open . 0)
	       (cpp-define-intro c-lineup-cpp-define +)
	       (cpp-macro . -1000)
	       (cpp-macro-cont . +)
	       (do-while-closure . 0)
	       (else-clause . 0)
	       (extern-lang-close . 0)
	       (extern-lang-open . 0)
	       (friend . 0)
	       (func-decl-cont . +)
	       (inclass . +)
	       (incomposition . +)
	       (inexpr-class . +)
	       (inexpr-statement . +)
	       (inextern-lang . +)
	       (inher-cont . c-lineup-multi-inher)
	       (inher-intro . +)
	       (inlambda . c-lineup-inexpr-block)
	       (inline-close . 0)
	       (inline-open . 0)
	       (inmodule . +)
	       (innamespace . +)
	       (knr-argdecl . 0)
	       (knr-argdecl-intro . 5)
	       (label . 0)
	       (lambda-intro-cont . +)
	       (member-init-cont . c-lineup-multi-inher)
	       (member-init-intro . +)
	       (module-close . 0)
	       (module-open . 0)
	       (namespace-close . 0)
	       (namespace-open . 0)
	       (objc-method-args-cont . c-lineup-ObjC-method-args)
	       (objc-method-call-cont c-lineup-ObjC-method-call-colons c-lineup-ObjC-method-call +)
	       (objc-method-intro .
				  [0])
	       (statement-case-intro . +)
	       (statement-case-open . +)
	       (statement-cont . +)
	       (stream-op . c-lineup-streamop)
	       (string . -1000)
	       (substatement . +)
	       (substatement-label . 0)
	       (template-args-cont c-lineup-template-args +)
	       (topmost-intro-cont first c-lineup-topmost-intro-cont c-lineup-gnu-DEFUN-intro-cont)))))
     (ccls-args quote
		("--log-file=/tmp/ccls.log" "-v=1"))
     (ccls-args quote
		("--log-file=/tmp/ccls.log -v=1"))
     (ccls-args . "--log-file=/tmp/ccls.log -v=1")
     (ccls-initialization-options quote
				  (:compilationDatabaseDirectory "src"))
     (eval modify-syntax-entry 43 "'")
     (eval modify-syntax-entry 36 "'")
     (eval modify-syntax-entry 126 "'")
     (bug-reference-bug-regexp . "<https?://\\(debbugs\\|bugs\\)\\.gnu\\.org/\\([0-9]+\\)>")))))

M init.el => init.el +35 -7
@@ 8,12 8,35 @@
(if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))

;; ----------------
;; Temporarily raise GC threshold while loading
;; ----------------
(setq gc-cons-threshold most-positive-fixnum)

;; ----------------
;; Configure package sources
;; ----------------
(setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3")
(require 'package)
;; Add MELPA
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
(let* ((no-ssl (and (memq system-type '(windows-nt ms-dos))
                    (not (gnutls-available-p))))
       (proto (if no-ssl "http" "https")))
  (when no-ssl
    (warn "\
Your version of Emacs does not support SSL connections,
which is unsafe because it allows man-in-the-middle attacks.
There are two things you can do about this warning:
1. Install an Emacs version that does support SSL and be safe.
2. Remove this warning from your init file so you won't see it again."))
  ;; Comment/uncomment these two lines to enable/disable MELPA and MELPA Stable as desired
  (add-to-list 'package-archives
	       (cons "melpa" (concat proto "://melpa.org/packages/")) t)
  ;;(add-to-list 'package-archives
  ;;              (cons "melpa-stable" (concat proto "://stable.melpa.org/packages/")) t)
  (when (< emacs-major-version 24)
    ;; For important compatibility libraries like cl-lib
    (add-to-list 'package-archives (cons "gnu" (concat proto "://elpa.gnu.org/packages/")))))
(package-initialize)
;;(package-refresh-contents)
(eval-when-compile
  (require 'use-package))



@@ 39,11 62,11 @@
	  (package-install package)))
    (ensure-packages-installed (cdr packages))))

(condition-case nil
  (ensure-packages-installed package-selected-packages)
  (error
   (package-refresh-contents)
   (ensure-packages-installed package-selected-packages)))
;;(condition-case nil
;;  (ensure-packages-installed package-selected-packages)
;;  (error
;;   (package-refresh-contents)
;;   (ensure-packages-installed package-selected-packages)))

(setq modules-dir
      (expand-file-name "modules" user-emacs-directory))


@@ 73,3 96,8 @@
(require 'module-lang-lua)
(require 'module-pdf)
(require 'module-telegram)

;; ----------------
;; Return GC threshold to normal
;; ----------------
(setq gc-cons-threshold 800000)

M modules/module-appearance.el => modules/module-appearance.el +27 -28
@@ 1,56 1,55 @@
;; -----------------
;; Configure themes
;; -----------------
(require 'doom-themes)
(require 'all-the-icons)
(require 'doom-modeline)

(defconst dark-theme 'doom-outrun-electric);;'doom-molokai)
(defconst light-theme 'doom-tomorrow-day)
(defconst dark-theme 'doom-outrun-electric "The theme to use when in dark mode.")
(defconst light-theme 'doom-tomorrow-day "The theme to use when not in dark mode.")


(defcustom dark-mode t
(defcustom use-dark-mode t
  "Whether or not 'dark mode' should be activated, which uses a dark theme instead
of a light theme."
  :type '(boolean))

(defun doom-themes-configuration ()
  "`doom-themes-configuration' is interactive by the modeline, it will
start the nice defaults for the theme and establish `doom-modeline-mode'."
  (interactive)
  (if dark-mode
(defun doom-themes-init ()
  (if use-dark-mode
      (load-theme dark-theme t)
    (load-theme light-theme t))
  (setq doom-themes-enable-bold t      ; If nil, bold is universally disabled
	doom-themes-enable-italic t)   ; If nil, italics is universally disabled
  (doom-themes-visual-bell-config)
  (doom-themes-org-config)
  (doom-modeline-mode)
  (setq doom-modeline-buffer-file-name-style 'file-name))
  (doom-themes-org-config))

(defun dark-mode-on ()
  (interactive)
  (customize-save-variable 'dark-mode t)
  (doom-themes-configuration))
  (customize-save-variable 'use-dark-mode t)
  (doom-themes-init))

(defun dark-mode-off ()
  (interactive)
  (customize-save-variable 'dark-mode nil)
  (doom-themes-configuration))
  (customize-save-variable 'use-dark-mode nil)
  (doom-themes-init))

(defun dark-mode-toggle ()
  (interactive)
  (if dark-mode
  (if use-dark-mode
      (dark-mode-off)
    (dark-mode-on)))

;;(set-face-attribute 'default nil
;;		    :family "Source Code Pro"
;;		    :height 120
;;		    :width 'normal
;;		    :weight 'semi-bold)

(use-package doom-themes
  :ensure t
  :config
  (setq doom-themes-enable-bold t      ; If nil, bold is universally disabled
	doom-themes-enable-italic t)   ; If nil, italics is universally disabled
  (doom-themes-init))

(doom-themes-configuration) ; Execute `doom-themes-configuration'
(use-package all-the-icons
  :ensure t
  :after (doom-themes))

(use-package doom-modeline
  :ensure t
  :config
  (setq doom-modeline-buffer-file-name-style 'file-name)
  (doom-modeline-mode)
  :after (doom-themes all-the-icons))

(provide 'module-appearance)

M modules/module-lang-arduino.el => modules/module-lang-arduino.el +3 -5
@@ 1,8 1,6 @@
(use-package arduino-mode
  :ensure t)

(add-hook 'arduino-mode-hook
	  (lambda ()
	    (flycheck-mode)))
  :ensure t
  :defer t
  :hook (arduino-mode . flycheck-mode))

(provide 'module-lang-arduino)

M modules/module-lang-c-c++.el => modules/module-lang-c-c++.el +14 -11
@@ 1,17 1,20 @@
;; ---------------
;; Cquery configuration (C/C++)
;; CCLS configuration (C/C++)
;; ---------------
;; (require 'cquery)
;; (setq cquery-executable "/usr/bin/cquery")
;; (setq cquery-extra-init-params '(:index (:comments 2) :cacheFormat "msgpack"))
;; (defun cquery//enable ()
;;   (condition-case nil
;;       (lsp)
;;     (user-error nil)))
;; (add-hook 'c-mode-hook #'cquery//enable)
;; (add-hook 'c++-mode-hook #'cquery//enable)

(use-package ccls
  :ensure t
  :defer t
  :hook ((c-mode c++-mode objc-mode) .
	 (lambda () (require 'ccls) (lsp))))
         (lambda ()
	   (require 'ccls)
	   (require 'yasnippet)
	   (lsp))))

(c-add-style
 "sasha"
 '("bsd"
   (c-basic-offset . 4)
   (c-offsets-alist . ((substatement-open . 0)))))

(provide 'module-lang-c-c++)

M modules/module-lang-cl.el => modules/module-lang-cl.el +4 -3
@@ 1,6 1,7 @@
(use-package slime
  :ensure t)

(add-to-list 'slime-contribs 'slime-repl)
  :ensure t
  :config
  (add-to-list 'slime-contribs 'slime-repl)
  :defer t)

(provide 'module-lang-cl)

M modules/module-lang-general.el => modules/module-lang-general.el +53 -13
@@ 1,24 1,67 @@
;; ---------------
;; Generic LSP Configuration
;; ---------------
(use-package projectile :ensure t)
(use-package neotree :ensure t)
(use-package yasnippet :ensure t)
(use-package lsp-mode :ensure t)
(use-package hydra :ensure t)
(use-package company-lsp :ensure t)
(use-package lsp-ui :ensure t)
(use-package projectile
  :ensure t
  :defer t)
(use-package neotree
  :ensure t
  :defer t)
(use-package lsp-mode
  :ensure t
  :defer t)
(use-package hydra
  :ensure t
  :defer t)
(use-package yasnippet
  :ensure t
  :defer t)
(use-package company
  :ensure
  :defer t)
(use-package company-lsp
  :ensure t
  :defer t
  :after (company))
(use-package company-quickhelp
  :ensure t
  :defer t
  :after (company))
(use-package lsp-ui
  :ensure t
  :defer t)
(use-package magit
  :ensure t
  :defer t)
(use-package smartparens
  :ensure t
  :config
  (require 'smartparens-config)
  (smartparens-global-mode)
  (sp-with-modes '(java-mode c++-mode c-mode go-mode groovy-mode)
    (sp-local-pair "{" nil :post-handlers '(("||\n[i]" "RET")))
    (sp-local-pair "/**" "*/" :post-handlers '(("| " "SPC")
     					       (" ||\n[i]" "RET"))))
  (sp-with-modes '(css-mode js2-mode js-mode)
    (sp-local-pair "{" nil :post-handlers '(("||\n[i]" "RET")))
    (sp-local-pair "/**" "*/" :post-handlers '(("| " "SPC")
     					       (" ||\n[i]" "RET"))))
  (sp-with-modes '(tuareg-mode utop-mode)
    (sp-local-pair "(*" "*)" :post-handlers '(("| " "SPC")
					      (" ||\n[i]" "RET")))))

;; ---------------
;; Generic configuration for all languages
;; ---------------

(require 'smartparens-config)
(use-package column-enforce-mode :ensure t)
(smartparens-global-mode)
(global-hl-line-mode)
(column-number-mode)

(use-package rainbow-delimiters
  :ensure t
  :defer t)

;; turn on warning at 95 columns
(defconst column-limit 95)



@@ 45,10 88,7 @@
;; ---------------
;; Smartparens config for CC-like modes
;; ---------------
(sp-with-modes '(java-mode c++-mode c-mode go-mode groovy-mode)
  (sp-local-pair "{" nil :post-handlers '(("||\n[i]" "RET")))
  (sp-local-pair "/**" "*/" :post-handlers '(("| " "SPC")
     					     (" ||\n[i]" "RET"))))

;;  (sp-local-pair "/*" nil)
;;  (sp-local-pair "/*" "*/" :post-handlers '((" | " "SPC")


M modules/module-lang-go.el => modules/module-lang-go.el +6 -7
@@ 1,12 1,11 @@
(use-package go-mode
  :ensure t)

(add-hook 'go-mode-hook
	  '(lambda ()
  :ensure t
  :defer t
  :bind (("C-c C-r" . lsp-rename)
	 ("C-c C-p" . lsp-format-buffer))
  :hook (go-mode . (lambda ()
	     (setq tab-width 4)
	     (lsp)
	     (flycheck-mode)
	     (local-set-key "\C-c\C-r" 'lsp-rename)
	     (local-set-key "\C-c\C-p" 'lsp-format-buffer)))
	     (flycheck-mode))))

(provide 'module-lang-go)

M modules/module-lang-ocaml.el => modules/module-lang-ocaml.el +4 -4
@@ 23,11 23,11 @@

(use-package utop
  :ensure t
  :hook (tuareg-mode . utop-setup-ocaml-buffer)
  :hook (tuareg-mode . utop-minor-mode)
  :hook (utop-mode . company-mode))

(sp-with-modes '(tuareg-mode utop-mode)
  (sp-local-pair "(*" "*)" :post-handlers '(("| " "SPC")
     					     (" ||\n[i]" "RET"))))
(use-package dune
  :ensure t
  :defer t)

(provide 'module-lang-ocaml)

M modules/module-lang-scheme.el => modules/module-lang-scheme.el +21 -19
@@ 2,29 2,31 @@
;; Scheme config
;; ---------------
(setq geiser-active-implementations '(guile racket chicken))
(require 'geiser)

(use-package geiser
  :ensure t
  :defer t
  :hook ((scheme-mode . (lambda ()
			  (geiser-mode)
			  (rainbow-delimiters-mode)
			  (setup-prettify-symbols)))
	 (geiser-repl-mode . (lambda ()
			       (rainbow-delimiters-mode)
			       (setup-prettify-symbols)))))

(use-package racket-mode
  :ensure t
  :defer t
  :mode "\\.rkt\\'"
  :hook (racket-mode . (lambda ()
			 (rainbow-delimiters-mode)
			 (company-mode)
			 (company-quickhelp-mode)
			 (setup-prettify-symbols))))

(defun setup-prettify-symbols ()
  (setq prettify-symbols-alist '(("lambda" . 955)
				 ("->" . 8594)))
  (prettify-symbols-mode))

(add-hook 'scheme-mode-hook
	  '(lambda ()
	     (geiser-mode)
	     (setup-prettify-symbols)))

(add-hook 'geiser-repl-mode-hook
	  '(lambda ()
	     (rainbow-delimiters-mode)
	     (setup-prettify-symbols)))

(add-hook 'racket-repl-mode-hook
	  '(lambda ()
	     (rainbow-delimiters-mode)	  
	     (company-mode)
	     (company-quickhelp-mode)
	     (setup-prettify-symbols)))
(add-to-list 'auto-mode-alist '("\\.rkt\\'" . racket-mode))

(provide 'module-lang-scheme)

M modules/module-lang-web.el => modules/module-lang-web.el +6 -29
@@ 1,30 1,12 @@
;;(defvar tidy-path
;;  (expand-file-name "tidy.el" thirdparty-dir))

;;(use-package tidy
;;  :load-path tidy-path
;;  :commands (tidy-buffer
;;  	     tidy-parse-config-file
;;	     tidy-save-settings
;;	     tidy-build-menu))

;; (autoload 'tidy-buffer tidy-path "Run Tidy HTML parser on current buffer" t)
;; (autoload 'tidy-parse-config-file tidy-path "Parse the `tidy-config-file'" t)
;; (autoload 'tidy-save-settings tidy-path "Save settings to `tidy-config-file'" t)
;; (autoload 'tidy-build-menu tidy-path "Install an options menu for HTML Tidy." t)

;; (setq tidy-config-dir "")
;; (setq tidy-temp-dir "")
;;(setq tidy-shell-command "/usr/bin/tidy")
;;(setq tidy-menu-lock t)
;; (setq tidy-menu-x-position 211)

(use-package web-beautify
  :ensure t)
  :ensure t
  :defer t)
(use-package impatient-mode
  :ensure t)
  :ensure t
  :defer t)
(use-package php-mode
  :ensure t)
  :ensure t
  :defer t)
;;(use-package flymd
;;  :ensure t)



@@ 74,9 56,4 @@
          (lambda ()
            (toggle-truncate-lines t)))

(sp-with-modes '(css-mode js2-mode js-mode)
  (sp-local-pair "{" nil :post-handlers '(("||\n[i]" "RET")))
  (sp-local-pair "/**" "*/" :post-handlers '(("| " "SPC")
     					     (" ||\n[i]" "RET"))))

(provide 'module-lang-web)

M modules/module-pdf.el => modules/module-pdf.el +13 -13
@@ 1,18 1,18 @@
;; ---------------
;; PDF-Tools config
;; ---------------
(use-package pdf-tools :ensure t)
(setq pdf-info-epdfinfo-program "~/bin/epdfinfo")
(pdf-tools-install)

;; ---------------
;; Configure pdf-tools
;; ---------------
(use-package pdf-tools :ensure t)
(add-hook 'pdf-view-mode-hook
	  '(lambda ()
	     (setq pdf-view-midnight-colors '("white" . "#1c1e1f"))
	     (pdf-view-midnight-minor-mode)
	     (linum-mode -1)))
(use-package pdf-tools
  :ensure t
  :defer t
  :init
  (setq pdf-info-epdfinfo-program "~/bin/epdfinfo")
  :config
  (pdf-tools-install :no-query)
  :magic ("%PDF" . pdf-view-mode)
  :hook
  (pdf-view-mode . (lambda ()
		     (setq pdf-view-midnight-colors '("white" . "#1c1e1f"))
		     (pdf-view-midnight-minor-mode)
		     (linum-mode -1))))

(provide 'module-pdf)

M modules/module-telegram.el => modules/module-telegram.el +4 -4
@@ 2,10 2,10 @@
      (expand-file-name "telega.el" thirdparty-dir))

(use-package telega
  :load-path telega-dir
  ;;  :load-path telega-dir
  :ensure t
  :commands (telega)
  :hook ((telega-root-mode . emojify-mode)
	 (telega-chat-mode . emojify-mode))
  :defer t)

(global-emojify-mode)

(provide 'module-telegram)

A thirdparty/telega.el => thirdparty/telega.el +1 -0
@@ 0,0 1,1 @@
Subproject commit 24c8d473d1c92713f406ad224ec3311f802edfab