Added Yassnippets for org-mode

This commit is contained in:
Bazsalanszky 2020-06-18 09:18:12 +02:00
parent 43ff89c0ee
commit f34b3d6c30
Signed by: Bazsalanszky
GPG key ID: 1B0B72C7139E2884
30 changed files with 2909 additions and 121 deletions

2
.org-id-locations Normal file
View file

@ -0,0 +1,2 @@
nil

View file

@ -0,0 +1,4 @@
/home/balazs/Dokumentumok/Org/bsz2/bsz2.org
/home/balazs/Dokumentumok/Org/bsz2/#bsz2.org#
/home/balazs/Dokumentumok/Org/bsz2/bsz2.tex
/home/balazs/Dokumentumok/Org/bsz2/#bsz2.tex#

View file

@ -1,6 +0,0 @@
/home/balazs/.emacs.d/conf.org
/home/balazs/.emacs.d/#conf.org#
/home/balazs/Dokumentumok/Org/SzhArch/szgarch.org
/home/balazs/Dokumentumok/Org/SzhArch/#szgarch.org#
/home/balazs/.emacs.d/init.el
/home/balazs/.emacs.d/#init.el#

View file

@ -0,0 +1,10 @@
/home/balazs/Dokumentumok/Org/bsz2/bsz2.org
/home/balazs/Dokumentumok/Org/bsz2/#bsz2.org#
/sudo:root@GlaDOS:/etc/fstab
/tmp/#!sudo:root@GlaDOS:!etc!fstab#
/home/balazs/Dokumentumok/bsz2_jegyzet.pdf
/home/balazs/Dokumentumok/#bsz2_jegyzet.pdf#
/home/balazs/Dokumentumok/bsz2_tetelsor_2020tavasz.pdf
/home/balazs/Dokumentumok/#bsz2_tetelsor_2020tavasz.pdf#
/home/balazs/.emacs.d/conf.org
/home/balazs/.emacs.d/#conf.org#

View file

View file

View file

@ -0,0 +1,4 @@
/home/balazs/Dokumentumok/Katona_Gyula_Recski_Andras_Szabo_Csaba--A_szamitastudomany_alapjai.pdf
/home/balazs/Dokumentumok/#Katona_Gyula_Recski_Andras_Szabo_Csaba--A_szamitastudomany_alapjai.pdf#
/home/balazs/Dokumentumok/Org/bsz2/bsz2.org
/home/balazs/Dokumentumok/Org/bsz2/#bsz2.org#

13
conf.el
View file

@ -109,7 +109,11 @@ There are two things you can do about this warning:
(global-set-key (kbd "M-RET d") 'srefactor-lisp-format-defun)
(global-set-key (kbd "M-RET b") 'srefactor-lisp-format-buffer)
(load-file "~/.emacs.d/elpa/discord-emacs.el/discord-emacs.el")
;(load-file "~/.emacs.d/elpa/discord-emacs.el/discord-emacs.el")
(add-to-list 'load-path "~/.emacs.d/plugins/")
(load "elcord")
(elcord-mode)
(require 'smex) ; Not needed if you use package.el
(smex-initialize) ; Can be omitted. This might cause a (minimal) delay
@ -134,6 +138,8 @@ There are two things you can do about this warning:
(require 'neotree)
(global-set-key [f8] 'neotree-toggle)
(global-unset-key (kbd "C-z"))
(define-key c-mode-base-map (kbd "M-.") (function rtags-find-symbol-at-point))
(define-key c-mode-base-map (kbd "M-,") (function rtags-find-references-at-point))
(define-key c-mode-base-map (kbd "M-;") (function rtags-find-file))
@ -151,6 +157,8 @@ There are two things you can do about this warning:
(message "Configuration reloaded")
))
(defvar cmake-last-target nil)
(defun cmake-build-and-run ()
"Asks for cmake target, then compiles and runs it."
(interactive)
@ -178,6 +186,7 @@ There are two things you can do about this warning:
(define-key org-mode-map (kbd "M-p") 'org-latex-export-to-pdf)
(define-key org-mode-map (kbd "<mouse-8>") 'org-mark-ring-goto)
(global-set-key (kbd "C-x g") 'magit-status)
@ -186,6 +195,8 @@ There are two things you can do about this warning:
;; This is your old M-x.
(global-set-key (kbd "C-c C-c M-x") 'execute-extended-command)
(global-set-key (kbd "C-z") 'yas-insert-snippet)
(setq minibuffer-completion-confirm nil)

View file

@ -135,9 +135,16 @@ There are two things you can do about this warning:
(global-set-key (kbd "M-RET b") 'srefactor-lisp-format-buffer)
#+END_SRC
*** Discord-Emacs
Ez nem működött
#+BEGIN_SRC emacs-lisp
(load-file "~/.emacs.d/elpa/discord-emacs.el/discord-emacs.el")
;(load-file "~/.emacs.d/elpa/discord-emacs.el/discord-emacs.el")
#+END_SRC
#+BEGIN_SRC emacs-lisp
(add-to-list 'load-path "~/.emacs.d/plugins/")
(load "elcord")
(elcord-mode)
#+END_SRC
*** Smex
#+BEGIN_SRC emacs-lisp
(require 'smex) ; Not needed if you use package.el
@ -175,6 +182,10 @@ There are two things you can do about this warning:
(global-set-key [f8] 'neotree-toggle)
#+END_SRC
* Makró beállítások
** Eltávolítás
#+BEGIN_SRC emacs-lisp
(global-unset-key (kbd "C-z"))
#+END_SRC
** Rtags
#+BEGIN_SRC emacs-lisp
(define-key c-mode-base-map (kbd "M-.") (function rtags-find-symbol-at-point))
@ -232,9 +243,10 @@ There are two things you can do about this warning:
#+BEGIN_SRC emacs-lisp
#+END_SRC
** Org export
** Org mode
#+BEGIN_SRC emacs-lisp
(define-key org-mode-map (kbd "M-p") 'org-latex-export-to-pdf)
(define-key org-mode-map (kbd "<mouse-8>") 'org-mark-ring-goto)
#+END_SRC
** Magit
#+BEGIN_SRC emacs-lisp
@ -247,6 +259,10 @@ There are two things you can do about this warning:
;; This is your old M-x.
(global-set-key (kbd "C-c C-c M-x") 'execute-extended-command)
#+END_SRC
** Yas
#+BEGIN_SRC emacs-lisp
(global-set-key (kbd "C-z") 'yas-insert-snippet)
#+END_SRC
* Saját változók
** Csomag változók
#+BEGIN_SRC emacs-lisp

View file

@ -4,7 +4,8 @@
;;
;; File auto-generated by irony-cdb-json.
;;
(("/home/balazs/Code/remo_sim/" . "/tmp/cmake55bC56/compile_commands.json")
(("/home/balazs/Code/Akos_rand/" . "/tmp/cmakerN1NYl/compile_commands.json")
("/home/balazs/Code/remo_sim/" . "/tmp/cmake55bC56/compile_commands.json")
("/home/balazs/Code/remo_sim/" . "/tmp/cmakef2iCaw/compile_commands.json")
("/home/balazs/Code/remo_sim/" . "/tmp/cmakeoZ5sr1/compile_commands.json")
("/home/balazs/Code/remo_sim/" . "/tmp/cmakep4K1fN/compile_commands.json")

View file

@ -0,0 +1,18 @@
This is the file .../info/dir, which contains the
topmost node of the Info hierarchy, called (dir)Top.
The first time you invoke Info you start off looking at this node.

File: dir, Node: Top This is the top of the INFO tree
This (the Directory node) gives a menu of major topics.
Typing "q" exits, "H" lists all Info commands, "d" returns here,
"h" gives a primer for first-timers,
"mEmacs<Return>" visits the Emacs manual, etc.
In Emacs, you can click mouse button 2 on a menu item or cross reference
to select it.
* Menu:
Emacs
* Magit-Popup: (magit-popup). Infix arguments with feedback.

View file

@ -0,0 +1,26 @@
;;; magit-popup-autoloads.el --- automatically extracted autoloads
;;
;;; Code:
(add-to-list 'load-path (directory-file-name
(or (file-name-directory #$) (car load-path))))
;;;### (autoloads nil "magit-popup" "magit-popup.el" (0 0 0 0))
;;; Generated autoloads from magit-popup.el
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "magit-popup" '("magit-")))
;;;***
;;;### (autoloads nil nil ("magit-popup-pkg.el") (0 0 0 0))
;;;***
;; Local Variables:
;; version-control: never
;; no-byte-compile: t
;; no-update-autoloads: t
;; coding: utf-8
;; End:
;;; magit-popup-autoloads.el ends here

View file

@ -0,0 +1,13 @@
(define-package "magit-popup" "20200306.223" "Define prefix-infix-suffix command combos"
'((emacs "24.4")
(dash "2.13.0"))
:commit "b8e886c4f2242d6c58f84d4549af712e86360db1" :keywords
'("bindings")
:authors
'(("Jonas Bernoulli" . "jonas@bernoul.li"))
:maintainer
'("Jonas Bernoulli" . "jonas@bernoul.li")
:url "https://github.com/magit/magit-popup")
;; Local Variables:
;; no-byte-compile: t
;; End:

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -0,0 +1,744 @@
This is magit-popup.info, produced by makeinfo version 6.5 from
magit-popup.texi.
Copyright (C) 2015-2020 Jonas Bernoulli <jonas@bernoul.li>
You can redistribute this document 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 document 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.
INFO-DIR-SECTION Emacs
START-INFO-DIR-ENTRY
* Magit-Popup: (magit-popup). Infix arguments with feedback.
END-INFO-DIR-ENTRY

File: magit-popup.info, Node: Top, Next: Introduction, Up: (dir)
Magit-Popup User Manual
***********************
This package implements a generic interface for toggling switches and
setting options and then invoking an Emacs command that does something
with these arguments. Usually the command calls an external process
with the specified arguments.
This package has been superseded by Transient (*note
(transient)Top::). No new features will be added but bugs will be
fixed.
This manual is for Magit-Popup version 2.13.2 (v2.13.2+1).
Copyright (C) 2015-2020 Jonas Bernoulli <jonas@bernoul.li>
You can redistribute this document 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 document 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.
* Menu:
* Introduction::
* Usage::
* Defining Prefix and Suffix Commands::
— The Detailed Node Listing —
Usage
* Customizing Existing Popups::
* Other Options::
Defining Prefix and Suffix Commands
* Defining Prefix Commands::
* Defining Suffix Commands::

File: magit-popup.info, Node: Introduction, Next: Usage, Prev: Top, Up: Top
1 Introduction
**************
Taking inspiration from regular prefix commands and prefix arguments,
this library implements a similar abstraction; a new kind of prefix
command that is associated with a specific set of infix arguments and
suffix commands.
Invoking such a prefix command displays a popup buffer which lists
the associated infix arguments and suffix commands. In that buffer each
argument is prefixed with the key sequence that can be used to toggle it
or change its value. Likewise each suffix command is prefixed with the
key used to invoke it. Such a popup buffer might look like this:
,-----------------------------------------
|Switches
| -l Show graph (--graph)
| -d Show refnames (--decorate)
|
|Options
| =m Search messages (--grep="popup")
| =p Search patches (-G)
|
|Action
| l Show log for current branch
| o Show log for another branch
'-----------------------------------------
The user could then for example type -l to toggle the --graph
*switch* (when it is on then it is shown in green, otherwise in gray),
or =m to change the value of the *option* --grep.
Once all arguments are as desired one invokes a suffix command, which
causes the popup buffer to disappear. The suffix command should then
retrieve the infix arguments in its interactive form like this is done
for prefix arguments.
While such "prefix-infix-suffix" combos were inspired by regular
prefix commands and prefix arguments, they are also quite different.
This should illustrate the most basic differences:
• A regular prefix command
/- command1
prefix --- command2
\- command3
• Prefix arguments
/- command1
C-u ... --- command2
\- well any command
• A Prefix-Infix-Suffix combo
/- argument1 -\ /- suffix1
prefix----- argument2 --+-- suffix2
^ \- argument3 -/
| |
'--------'
(refresh buffer)
This package has been superseded by Transient (*note
(transient)Top::). No new features will be added but bugs will be
fixed.

File: magit-popup.info, Node: Usage, Next: Defining Prefix and Suffix Commands, Prev: Introduction, Up: Top
2 Usage
*******
Every popup buffers created with a prefix command contains a section
named "Actions" listing the available suffix commands. Most buffers
also contain a "Switches" and/or an "Options" section which list the two
types of infix arguments separately.
Switches are arguments that can be toggled on or off. When a switch
is active then it is shown in color, when it is off then it is shown in
gray (of course the details depend on the color theme in use).
Options are arguments that have a value. When an option has a value
then that is shown after the option itself. Because for some options
the empty string is a valid value, options are additionally colorized
like switches to indicate whether they are active or not.
The events bound to suffix commands are always single alphabetic
characters. The bindings for arguments are always two events long. For
switches the first key is always -, for options it is always =. The
second key is always an alphabetic character.
By default popup buffers also feature a section listing commands
common to all popups. To avoid conflicts with suffix commands, the
bindings of these common commands are not alphabetic characters. This
section is shown by default so that documentation-resistant users get a
chance to notice them.
-- User Option: magit-popup-show-common-commands
This option controls whether the section that lists the commands
that are common to all popups is initially shown.
By default this is not the case, but note that you can temporarily
show this section using C-t, which therefore is the only common
command you actually have to memorize.
C-t (magit-popup-toggle-show-common-commands)
Show or hide the section listing the commands shared by all popups.
C-g (magit-popup-quit)
Quit popup buffer without invoking a suffix command.
Without further action, setting arguments only affects the next
suffix command. Invoking the same prefix command again resets the
arguments to their default value, but the defaults can be changed
directly from the popup buffer itself. For a prefix command named
NAME-popup the default values are stored as the value of the custom
option named NAME-arguments. While this option can be customized
using the Custom interface, it is better to do so directly from the
popup buffer.
C-c C-c (magit-popup-set-default-arguments)
This sets the default value for the arguments for the current
popup.
Then the popup buffer is closed without invoking a suffix command;
unless a prefix argument is used in which case the popup remains
open.
C-x C-s (magit-popup-save-default-arguments)
This sets the default value for the arguments for the current popup
and saves it for future Emacs sessions.
Then the popup buffer is closed without invoking an action; unless
a prefix argument is used in which case the popup remains open.
It is also possible to add additional arguments and commands to an
existing popup, but that cannot be done directly from the popup (or the
Custom interface). See *note Customizing Existing Popups::.
Documentation about a popups arguments and commands can be shown
directly from the popup.
C-h i (magit-popup-info)
Show this manual.
? (magit-popup-help)
This command reads a key sequence and then shows the documentation
of the argument or command that sequence is bound to. In other
words type the same keys that you would use to invoke the argument
or command, but prefix the sequence with ?.
For suffix commands this shows the doc-string. For arguments this
command can only show something for popups that have an associated
man-page. If the man-page is set, then this command displays it in
a separate buffer and puts point on the entry about the argument in
question.
The buffer which is used to display the documentation is selected.
Simply press q to leave that buffer and restore the old window
configuration.
While it isnt very useful, it is possible to move around in a popup
buffer using C-p and C-n, and to invoke the argument or command at
point using RET. But it is much more efficient to use the dedicated
key bindings instead, so these commands are not listed in popup buffers
along with the other common commands.
* Menu:
* Customizing Existing Popups::
* Other Options::

File: magit-popup.info, Node: Customizing Existing Popups, Next: Other Options, Up: Usage
2.1 Customizing Existing Popups
===============================
It is possible to define additional infix arguments and suffix commands
to an existing popup using the following functions.
You can find some examples which use the below commands at
<https://github.com/magit/magit/wiki/Additional-proposed-infix-arguments-and-suffix-commands>.
-- Function: magit-define-popup-switch popup key desc switch &optional
enable at prepend
In POPUP, define KEY as SWITCH.
POPUP is a popup command defined using magit-define-popup.
SWITCH is a string representing an argument that takes no value.
KEY is a character representing the second event in the sequence of
keystrokes used to toggle the argument. (The first event, the
prefix, is shared among all switches, defaults to -, and can be
changed in magit-popup-mode-keymap).
DESC is a string describing the purpose of the argument, it is
displayed in the popup.
If optional ENABLE is non-nil then the switch is on by default.
SWITCH is inserted after all other switches already defined for
POPUP, unless optional PREPEND is non-nil, in which case it is
placed first. If optional AT is non-nil then it should be the KEY
of another switch already defined for POPUP, the argument is then
placed before or after AT, depending on PREPEND.
-- Function: magit-define-popup-option popup key desc option &optional
reader value at prepend
In POPUP, define KEY as OPTION.
POPUP is a popup command defined using magit-define-popup.
OPTION is a string representing an argument that takes a value.
KEY is a character representing the second event in the sequence of
keystrokes used to set the arguments value. (The first event, the
prefix, is shared among all options, defaults to =, and can be
changed in magit-popup-mode-keymap).
DESC is a string describing the purpose of the argument, it is
displayed in the popup.
If optional VALUE is non-nil then the option is on by default, and
VALUE is its default value.
READER is used to read a value from the user when the option is
invoked and does not currently have a value. (When the option has
a value, then invoking the option causes it to be unset.) This
function must take two arguments but may choose to ignore them.
The first argument is the name of the option (with ": \" appended,
unless it ends with "=") and can be used as the prompt. The second
argument is nil or the value that was in effect before the option
was unset, which may be suitable as initial completion input. If
no reader is specified, then read-from-minibuffer is used.
OPTION is inserted after all other options already defined for
POPUP, unless optional PREPEND is non-nil, in which case it is
placed first. If optional AT is non-nil then it should be the KEY
of another option already defined for POPUP, the argument is then
placed before or after AT, depending on PREPEND.
-- Function: magit-define-popup-action popup key desc command &optional
at prepend
In POPUP, define KEY as COMMAND.
POPUP is a popup command defined using magit-define-popup.
COMMAND can be any command but should usually consume the popup
arguments in its interactive form. KEY is a character
representing the event used invoke the action, i.e. to
interactively call the COMMAND.
DESC is a string describing the purpose of the action, it is
displayed in the popup.
COMMAND is inserted after all other commands already defined for
POPUP, unless optional PREPEND is non-nil, in which case it is
placed first. If optional AT is non-nil then it should be the KEY
of another command already defined for POPUP, the command is then
placed before or after AT, depending on PREPEND.
-- Function: magit-define-popup-sequence-action popup key desc command
&optional at prepend
Like magit-define-popup-action, but modifies the value of the
:sequence-actions property instead of :actions.
-- Function: magit-define-popup-variable popup key desc command
formatter &optional at prepend
In POPUP, define KEY as COMMAND.
POPUP is a popup command defined using magit-define-popup.
COMMAND is a command which calls magit-popup-set-variable.
FORMATTER is a function which calls magit-popup-format-variable.
These two functions have to be called with the same arguments.
KEY is a character representing the event used interactively call
the COMMAND.
DESC is the variable or a representation thereof. Its not
actually used for anything.
COMMAND is inserted after all other commands already defined for
POPUP, unless optional PREPEND is non-nil, in which case it is
placed first. If optional AT is non-nil then it should be the KEY
of another command already defined for POPUP, the command is then
placed before or after AT, depending on PREPEND."
-- Function: magit-change-popup-key popup type from to
In POPUP, bind TO to what FROM was bound to. TYPE is one of
:action, :sequence-action, :switch, or :option. Bind TO
and unbind FROM, both are characters.
-- Function: magit-remove-popup-key popup type key
In POPUP, remove KEYs binding of TYPE. POPUP is a popup command
defined using magit-define-popup. TYPE is one of :action,
:sequence-action, :switch, or :option. KEY is the character
which is to be unbound.
It is also possible to change other aspects of a popup by setting a
property using plist-put. See *note Defining Prefix Commands:: for
valid properties. The most likely change Magit users might want to make
is:
(plist-put magit-show-refs-popup :use-prefix nil)

File: magit-popup.info, Node: Other Options, Prev: Customizing Existing Popups, Up: Usage
2.2 Other Options
=================
-- User Option: magit-popup-use-prefix-argument
This option controls the effect that the use of a prefix argument
before entering a popup has.
default
With a prefix argument directly invoke the popups default
action (an Emacs command), instead of bringing up the popup.
popup
With a prefix argument bring up the popup, otherwise directly
invoke the popups default action.
nil
Ignore prefix arguments.
This option can be overridden for individual popups.
magit-show-refs-popup for example defaults to invoking the
default action directly. It only shows the popup buffer when a
prefix argument is used. See *note Customizing Existing Popups::.
-- User Option: magit-popup-manpage-package
The Emacs package used to display man-pages, one of man or
woman.
-- User Option: magit-popup-display-buffer-action
The option controls how the window used to display a popup buffer
is created. Popup buffers are displayed using display-buffer
with the value of this option as ACTION argument. You can also set
this to nil and instead add an entry to display-buffer-alist.
To emphasize the default action by making it bold use this:
(button-type-put 'magit-popup-action-button 'format " %k %D")

File: magit-popup.info, Node: Defining Prefix and Suffix Commands, Prev: Usage, Up: Top
3 Defining Prefix and Suffix Commands
*************************************
If you write an extension for Magit then you should use this library now
and later when transient is released port to that.
If you are considering using this library to define popups for
packages not related to Magit, then keep in mind that it will be
superseded eventually. Once transient has been released I will only
fix bugs in magit-popup but not implement any new features.
Also consider using hydra instead. To some extend magit-popup
and hydra are similar but have a different focus. The main purpose of
magit-popup is to pass infix arguments to suffix commands. If all you
need is a command dispatcher then you are better of using hydra. Of
course hydra may also be a better fit not only because of the features
it lacks, but also because of the features it provides, which are in
turn missing from magit-popup.
Here is an example of how one defines a prefix command along with its
infix arguments, and then also one of its suffix commands.
;;;###autoload (autoload 'magit-tag-popup "magit" nil t)
(magit-define-popup magit-tag-popup
"Show popup buffer featuring tagging commands."
'magit-commands
:man-page "git-tag"
:switches '((?a "Annotate" "--annotate")
(?s "Sign" "--sign")
(?f "Force" "--force"))
:actions '((?t "Create" magit-tag)
(?k "Delete" magit-tag-delete)
(?p "Prune" magit-tag-prune))
:default-action 'magit-tag)
;;;###autoload
(defun magit-tag (name rev &optional args)
"Create a new tag with the given NAME at REV."
(interactive (list (magit-read-tag "Tag name")
(magit-read-branch-or-commit "Place tag on")
(magit-tag-arguments)))
(magit-run-git-with-editor "tag" args name rev))
* Menu:
* Defining Prefix Commands::
* Defining Suffix Commands::

File: magit-popup.info, Node: Defining Prefix Commands, Next: Defining Suffix Commands, Up: Defining Prefix and Suffix Commands
3.1 Defining Prefix Commands
============================
Prefix commands and their infix arguments are defined using the macro
magit-define-popup. The key bindings and descriptions of suffix
commands are also defined using that macro, but the actual interactive
commands have to be defined separately using plain defun.
-- Macro: magit-define-popup name doc [group [mode [option]]] :keyword
value...
This macro defines a popup named NAME. The NAME should begin with
the package prefix and by convention end with -popup, it is used
as the name of the command which shows the popup and for an
internal variable (whose value is used to store information about
the popup and should not be accessed directly). DOC is the
doc-string of the popup command.
This macro also defines an option and a function both named
SHORTNAME-arguments, where SHORTNAME is NAME with the trailing
-popup removed. The name of this option and this function can be
overwritten using the optional argument OPTION, but that is rarely
advisable. As a special case if OPTION is specified but nil,
then this option and this function are not defined at all, which is
useful for popups that are used as simple dispatchers that offer no
arguments.
The option SHORTNAME-arguments holds the value for the popup
arguments. It can be customized from within the popup or using the
Custom interface. It can also have a buffer local value in any
non-popup buffer. The local value for the buffer from which the
popup command was invoked, can be set from within the popup buffer.
The function SHORTNAME-arguments returns the currently effective
value of the variable by the same name. See below for more
information.
Optional argument GROUP specifies the Custom group into which the
option is placed. If omitted then the option is placed into some
group the same way it is done when directly using defcustom and
omitting the group, except when NAME begins with "magit-", in which
case the group magit-git-arguments is used.
The optional argument MODE specifies the mode used by the popup
buffer. If it is omitted or nil then magit-popup-mode is used.
The remaining arguments should have the form [KEYWORD VALUE]....
The following keywords are meaningful (and by convention are
usually specified in that order):
:actions
The actions which can be invoked from the popup. VALUE is a
list whose members have the form (KEY DESC COMMAND), see
magit-define-popup-action for details.
Actions are regular Emacs commands, which usually have an
interactive form setup to consume the values of the popup
:switches and :options when invoked from the corresponding
popup, else when invoked as the default action or directly
without using the popup, the default value of the variable
SHORTNAME-arguments. This is usually done by calling the
function SHORTNAME-arguments.
Members of VALUE may also be strings and functions, assuming
the first member is a string or function. In that case the
members are split into sections and these special elements are
used as headings. If such an element is a function then it is
called with no arguments and must return either a string,
which is used as the heading, or nil, in which case the
section is not inserted.
Members of VALUE may also be nil. This should only be used
together with :max-action-columns and allows having gaps in
the action grid, which can help arranging actions sensibly.
:default-action
The default action of the popup which is used directly instead
of displaying the popup buffer, when the popup is invoked with
a prefix argument. Also see magit-popup-use-prefix-argument
and :use-prefix, which can be used to inverse the meaning of
the prefix argument.
:use-prefix
Controls when to display the popup buffer and when to invoke
the default action (if any) directly. This overrides the
global default set using magit-popup-use-prefix-argument.
The value, if specified, should be one of default or
prefix, or a function that is called with no arguments and
returns one of these symbols.
:max-action-columns
The maximum number of actions to display on a single line, a
number or a function that return a number and takes the name
of the section currently being inserted as argument. If there
isnt enough room to display as many columns as specified
here, then fewer are used.
:switches
The popup arguments which can be toggled on and off. VALUE is
a list whose members have the form (KEY DESC SWITCH), see
magit-define-popup-switch for details.
Members of VALUE may also be strings and functions, assuming
the first member is a string or function. In that case the
members are split into sections and these special elements are
used as headings. If such an element is a function then it is
called with no arguments and must return either a string,
which is used as the heading, or nil, in which case the
section is not inserted.
:options
The popup arguments which take a value, as in "opt~OPTVAL".
VALUE is a list whose members have the form (KEY DESC OPTION
READER), see magit-define-popup-option for details.
Members of VALUE may also be strings and functions, assuming
the first member is a string or function. In that case the
members are split into sections and these special elements are
used as headings. If such an element is a function then it is
called with no arguments and must return either a string,
which is used as the heading, or nil, in which case the
section is not inserted.
:default-arguments
The default arguments, a list of switches (which are then
enabled by default) and options with there default values, as
in "--OPT=OPTVAL".
:variables
Variables which can be set from the popup. VALUE is a list
whose members have the form (KEY DESC COMMAND FORMATTER),
see magit-define-popup-variable for details.
Members of VALUE may also be strings and functions, assuming
the first member is a string or function. In that case the
members are split into sections and these special elements are
used as headings. If such an element is a function then it is
called with no arguments and must return either a string,
which is used as the heading, or nil, in which case the
section is not inserted.
Members of VALUE may also be actions as described above for
:actions.
VALUE may also be a function that returns a list as describe
above.
:sequence-predicate
When this function returns non-nil, then the popup uses
:sequence-actions instead of :actions, and does not show
the :switches and :options.
:sequence-actions
The actions which can be invoked from the popup, when
:sequence-predicate returns non-nil.
:setup-function
When this function is specified, then it is used instead of
magit-popup-default-setup.
:refresh-function
When this function is specified, then it is used instead of
calling magit-popup-insert-section three times with symbols
magit-popup-switch-button, magit-popup-option-button, and
finally magit-popup-action-button as argument.
:man-page
The name of the manpage to be displayed when the user requests
help for an argument.

File: magit-popup.info, Node: Defining Suffix Commands, Prev: Defining Prefix Commands, Up: Defining Prefix and Suffix Commands
3.2 Defining Suffix Commands
============================
Commands intended to be invoked from a particular popup should determine
the currently effective arguments by calling the function
SHORTNAME-arguments inside their interactive form. This function is
created by the magit-define-popup macro. For a popup named
prefix-foo-popup the name of this function is prefix-foo-arguments.
When the command was invoked as an action in the respective popup,
then this function returns the arguments that were set in the popup.
Otherwise when the command was invoked as the default of the popup (by
calling the popup command with a prefix argument), or without using the
popup command at all, then this function returns the buffer-local or
global value of the variable SHORTNAME-arguments.
Internally arguments are handled as a list of strings. This might
not be appropriate for the intended use inside commands, or it might be
necessary to manipulate that list somehow, i.e. to split "ARG=VAL"
into "ARG""VAL". This should be done by advising or redefining the
function SHORTNAME-arguments.
Internally SHORNAME-arguments used following variables and
function. Except when redefining the former, you should not use these
directly.
-- Variable: magit-current-popup
The popup from which this editing command was invoked.
-- Variable: magit-current-popup-args
The value of the popup arguments for this editing command.
If the current command was invoked from a popup, then this is a
list of strings of all the set switches and options. This includes
arguments which are set by default not only those explicitly set
during this invocation.
When the value is nil, then that can be because no argument is set,
or because the current command wasnt invoked from a popup at all.
-- Function: magit-current-popup-args &rest args
This function returns the value of the popup arguments for this
editing command. The value is the same as that of the variable by
the same name, except that FILTER is applied. FILTER is a list of
regexps; only arguments that match one of them are returned. The
first element of FILTER may also be :not in which case only
arguments that dont match any of the regexps are returned, or
:only which doesnt change the behavior.

Tag Table:
Node: Top770
Node: Introduction2151
Node: Usage4490
Node: Customizing Existing Popups9187
Node: Other Options15328
Node: Defining Prefix and Suffix Commands16871
Node: Defining Prefix Commands19023
Node: Defining Suffix Commands27718

End Tag Table

Local Variables:
coding: utf-8
End:

View file

@ -8,13 +8,15 @@
'(custom-safe-themes
(quote
("2679db166117d5b26b22a8f12a940f5ac415d76b004de03fcd34483505705f62" "0fffa9669425ff140ff2ae8568c7719705ef33b7a927a0ba7c5e2ffcfac09b75" "2809bcb77ad21312897b541134981282dc455ccd7c14d74cc333b6e549b824f3" "8ca8fbaeaeff06ac803d7c42de1430b9765d22a439efc45b5ac572c2d9d09b16" "229c5cf9c9bd4012be621d271320036c69a14758f70e60385e87880b46d60780" default)))
'(ispell-highlight-face (quote flyspell-incorrect))
'(package-selected-packages
(quote
(drag-stuff smex ox-epub quelpa emacsshot org-drill auctex highlight-doxygen format-all srefactor preproc-font-lock solarized-theme humanoid-themes nyan-mode neotree flycheck))))
(magit-popup elcord drag-stuff smex ox-epub quelpa emacsshot org-drill auctex highlight-doxygen format-all srefactor preproc-font-lock solarized-theme humanoid-themes nyan-mode neotree flycheck))))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; 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.
'(flyspell-incorrect ((t (:underline (:color "#f0615d" :style wave)))))
'(preproc-font-lock-preprocessor-background ((t (:foreground "lawn green")))))
(load-theme 'humanoid-dark t)

View file

@ -8,13 +8,15 @@
'(custom-safe-themes
(quote
("2679db166117d5b26b22a8f12a940f5ac415d76b004de03fcd34483505705f62" "0fffa9669425ff140ff2ae8568c7719705ef33b7a927a0ba7c5e2ffcfac09b75" "2809bcb77ad21312897b541134981282dc455ccd7c14d74cc333b6e549b824f3" "8ca8fbaeaeff06ac803d7c42de1430b9765d22a439efc45b5ac572c2d9d09b16" "229c5cf9c9bd4012be621d271320036c69a14758f70e60385e87880b46d60780" default)))
'(ispell-highlight-face (quote flyspell-incorrect))
'(package-selected-packages
(quote
(smex ox-epub quelpa emacsshot org-drill auctex highlight-doxygen format-all srefactor preproc-font-lock solarized-theme humanoid-themes nyan-mode neotree flycheck))))
(elcord drag-stuff smex ox-epub quelpa emacsshot org-drill auctex highlight-doxygen format-all srefactor preproc-font-lock solarized-theme humanoid-themes nyan-mode neotree flycheck))))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; 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.
'(flyspell-incorrect ((t (:underline (:color "#f0615d" :style wave)))))
'(preproc-font-lock-preprocessor-background ((t (:foreground "lawn green")))))
(load-theme 'humanoid-dark t)

519
plugins/elcord.el Normal file
View file

@ -0,0 +1,519 @@
;;; elcord.el --- Allows you to integrate Rich Presence from Discord
;; Copyright (C) 2017 heatingdevice
;; Author: heatingdevice
;; Wilfredo Velázquez-Rodríguez <zulu.inuoe@gmail.com>
;; Created: 21 Nov 2017
;; Version: 1.1.0
;; Keywords: games
;; Homepage: https://github.com/Mstrodl/elcord
;; Package-Requires: ((emacs "25.1"))
;; License: MIT
;;; Commentary:
;; elcord allows you to show off your buffer with all your Discord friends via the new rich presence feature
;; To use, enable the global minor mode `elcord-mode'
;; When enabled, elcord will communicate with the local Discord client in order to display information under
;; the 'Playing a Game' status, updating this information at a regular interval.
;;
;; elcord will display an Emacs title, icon, as well as information about your current buffer:
;; 1) The name and an icon (if available) for the current major mode
;; 2) The name of the current buffer
;; 3) The line number of the cursor, as well as total line count for the buffer
;; `elcord-display-buffer-details' can be customized so that buffer name and line number are omitted.
;;; Code:
(require 'bindat)
(require 'cl-lib)
(require 'json)
(require 'subr-x)
(defgroup elcord nil
"Options for elcord."
:prefix "elcord-"
:group 'external)
(defcustom elcord-client-id '"388338871475240965"
"ID of elcord client (Application ID).
See <https://discordapp.com/developers/applications/me>."
:type '(choice (const :tag "'Native' Application ID" "388338871475240965")
(string :tag "Use the specified ID")
(function :tag "Call the function with no args to get the ID."))
:group 'elcord)
(defcustom elcord-refresh-rate 15
"How often to send updates to Discord, in seconds."
:type 'integer
:group 'elcord)
(defcustom elcord-mode-icon-alist '((c-mode . "c-mode_icon")
(c++-mode . "cpp-mode_icon")
(clojure-mode . "clojure-mode_icon")
(csharp-mode . "csharp-mode_icon")
(comint-mode . "comint-mode_icon")
(cperl-mode . "cperl-mode_icon")
(emacs-lisp-mode . "emacs_icon")
(enh-ruby-mode . "ruby-mode_icon")
(erc-mode . "irc-mode_icon")
(forth-mode . "forth-mode_icon")
(fsharp-mode . "fsharp-mode_icon")
(haskell-mode . "haskell-mode_icon")
(java-mode . "java-mode_icon")
(js-mode . "javascript-mode_icon")
(kotlin-mode . "kotlin-mode_icon")
(go-mode . "go-mode_icon")
(latex-mode . "latex-mode_icon")
(lisp-mode . "lisp-mode_icon")
(magit-mode . "magit-mode_icon")
(markdown-mode . "markdown-mode_icon")
(nix-mode . "nix-mode_icon")
(org-mode . "org-mode_icon")
(racket-mode . "racket-mode_icon")
(ruby-mode . "ruby-mode_icon")
(rust-mode . "rust-mode_icon")
(rustic-mode . "rust-mode_icon")
("^slime-.*" . "lisp-mode_icon")
("^sly-.*$" . "lisp-mode_icon")
(php-mode . "php-mode_icon")
(python-mode . "python-mode_icon"))
"Mapping alist of major modes to icon names to have elcord use.
Note, these icon names must be available as 'small_image' in Discord."
:type '(alist :key-type (choice (symbol :tag "Mode name")
(regexp :tag "Regex"))
:value-type (choice (string :tag "Icon name")
(function :tag "Mapping function")))
:group 'elcord)
(defcustom elcord-mode-text-alist '((c-mode . "C ")
(c++-mode . "C++")
(csharp-mode . "C#")
(cperl-mode . "Perl")
(enh-ruby-mode . "Ruby")
(fsharp-mode . "F#")
(java-mode . "Java")
(lisp-mode . "Common-Lisp")
(markdown-mode . "Markdown")
(magit-mode . "It's Magit!")
("mhtml-mode" . "HTML")
(slime-repl-mode . "SLIME-REPL")
(sly-mrepl-mode . "Sly-REPL")
(php-mode "PHP"))
"Mapping alist of major modes to text labels to have elcord use."
:type '(alist :key-type (choice (symbol :tag "Mode name")
(regexp :tag "Regex"))
:value-type (choice (string :tag "Text label")
(function :tag "Mapping function")))
:group 'elcord)
(defcustom elcord-display-elapsed 't
"When enabled, Discord status will display the elapsed time since Emacs \
has been started."
:type 'boolean
:group 'elcord)
(defvar elcord--startup-time (string-to-number (format-time-string "%s" (current-time))))
(defcustom elcord-display-buffer-details 't
"When enabled, Discord status will display buffer name and line numbers:
\"Editing <buffer-name>\"
\"Line <line-number> (<line-number> of <line-count>)\"
Otherwise, it will display:
\"Editing\"
\"<elcord-mode-text>\"
The mode text is the same found by `elcord-mode-text-alist'"
:type 'boolean
:group 'elcord)
(defcustom elcord-use-major-mode-as-main-icon 'nil
"When enabled, the major mode determines the main icon, rather than it being the editor."
:type 'boolean
:group 'elcord)
(defcustom elcord-show-small-icon 't
"When enabled, show the small icon as well as the main icon."
:type 'boolean
:group 'elcord)
;;;###autoload
(define-minor-mode elcord-mode
"Global minor mode for displaying Rich Presence in Discord."
nil nil nil
:require 'elcord
:global t
:group 'elcord
:after-hook
(progn
(cond
(elcord-mode
(elcord--enable))
(t
(elcord--disable)))))
(defvar elcord--editor-name
(cond
((boundp 'spacemacs-version) "Spacemacs")
((boundp 'doom-version) "DOOM Emacs")
(t "Emacs"))
"The name to use to represent the current editor.")
(defvar elcord--editor-icon
(cond
((boundp 'spacemacs-version) "spacemacs_icon")
((boundp 'doom-version) "doom_icon")
(t "emacs_icon"))
"The icon to use to represent the current editor.")
(defvar elcord--discord-ipc-pipe "discord-ipc-0"
"The name of the discord IPC pipe.")
(defvar elcord--update-presence-timer nil
"Timer which periodically updates Discord Rich Presence.
nil when elcord is not active.")
(defvar elcord--reconnect-timer nil
"Timer used by elcord to attempt connection periodically, when active but disconnected.")
(defvar elcord--sock nil
"The process used to communicate with Discord IPC.")
(defvar elcord--last-known-position (count-lines (point-min) (point))
"Last known position (line number) recorded by elcord.")
(defvar elcord--last-known-buffer-name (buffer-name)
"Last known buffer recorded by elcord.")
(defvar elcord--stdpipe-path (expand-file-name
"stdpipe.ps1"
(file-name-directory (file-truename load-file-name)))
"Path to the 'stdpipe' script.
On Windows, this script is used as a proxy for the Discord named pipe.
Unused on other platforms.")
(defun elcord--make-process ()
"Make the asynchronous process that communicates with Discord IPC."
(let ((default-directory "~/"))
(cl-case system-type
(windows-nt
(make-process
:name "*elcord-sock*"
:command (list
"PowerShell"
"-NoProfile"
"-ExecutionPolicy" "Bypass"
"-Command" elcord--stdpipe-path "." elcord--discord-ipc-pipe)
:connection-type 'pipe
:sentinel 'elcord--connection-sentinel
:filter 'elcord--connection-filter
:noquery t))
(t
(make-network-process
:name "*elcord-sock*"
:remote (expand-file-name
elcord--discord-ipc-pipe
(file-name-as-directory
(or (getenv "XDG_RUNTIME_DIR")
(getenv "TMPDIR")
(getenv "TMP")
(getenv "TEMP")
"/tmp")))
:sentinel 'elcord--connection-sentinel
:filter 'elcord--connection-filter
:noquery t)))))
(defun elcord--enable ()
"Called when variable elcord-mode is enabled."
(setq elcord--startup-time (string-to-number (format-time-string "%s" (current-time))))
(unless (elcord--resolve-client-id)
(warn "elcord: no elcord-client-id available"))
(when (eq system-type 'windows-nt)
(unless (executable-find "powershell")
(warn "elcord: powershell not available"))
(unless (file-exists-p elcord--stdpipe-path)
(warn "elcord: 'stdpipe' script does not exist (%s)" elcord--stdpipe-path)))
;;Start trying to connect
(elcord--start-reconnect))
(defun elcord--disable ()
"Called when variable elcord-mode is disabled."
;;Cancel updates
(elcord--cancel-updates)
;;Cancel any reconnect attempt
(elcord--cancel-reconnect)
;;If we're currently connected
(when elcord--sock
;;Empty our presence
(elcord--empty-presence))
(elcord--disconnect))
(defun elcord--empty-presence ()
"Sends an empty presence for when elcord is disabled."
(let* ((activity
`(("details" . "Emacs"))) ;; For the time being we have to send a presence after we connect, we can't empty it :/
(nonce (format-time-string "%s%N"))
(presence
`(("cmd" . "SET_ACTIVITY")
("args" . (("activity" . ,activity)
("pid" . ,(emacs-pid))))
("nonce" . ,nonce))))
(elcord--send-packet 1 presence)))
(defun elcord--resolve-client-id ()
"Evaluate `elcord-client-id' and return the client ID to use."
(cl-typecase elcord-client-id
(null
nil)
(string
elcord-client-id)
(function
(funcall elcord-client-id))))
(defun elcord--connection-sentinel (process evnt)
"Track connection state change on Discord connection.
Argument PROCESS The process this sentinel is attached to.
Argument EVNT The event which triggered the sentinel to run."
(cl-case (process-status process)
((closed exit)
(elcord--handle-disconnect))
(t)))
(defun elcord--connection-filter (process evnt)
"Track incoming data from Discord connection.
Argument PROCESS The process this filter is attached to.
Argument EVNT The available output from the process."
(elcord--start-updates))
(defun elcord--connect ()
"Connects to the Discord socket."
(or elcord--sock
(ignore-errors
(message "elcord: attempting reconnect..")
(setq elcord--sock (elcord--make-process))
(condition-case nil
(elcord--send-packet 0 `(("v" . 1) ("client_id" . ,(elcord--resolve-client-id))))
(error
(delete-process elcord--sock)
(setq elcord--sock nil)))
elcord--sock)))
(defun elcord--disconnect ()
"Disconnect elcord."
(when elcord--sock
(delete-process elcord--sock)
(setq elcord--sock nil)))
(defun elcord--reconnect ()
"Attempt to reconnect elcord."
(when (elcord--connect)
;;Reconnected.
;; Put a pending message unless we already got first handshake
(unless elcord--update-presence-timer
(message "elcord: connecting..."))
(elcord--cancel-reconnect)))
(defun elcord--start-reconnect ()
"Start attempting to reconnect."
(unless (or elcord--sock elcord--reconnect-timer)
(setq elcord--reconnect-timer (run-at-time 0 15 'elcord--reconnect))))
(defun elcord--cancel-reconnect ()
"Cancels any ongoing reconnection attempt."
(when elcord--reconnect-timer
(cancel-timer elcord--reconnect-timer)
(setq elcord--reconnect-timer nil)))
(defun elcord--handle-disconnect ()
"Handles reconnecting when socket disconnects."
(message "elcord: disconnected")
;;Stop updating presence for now
(elcord--cancel-updates)
(setq elcord--sock nil)
;;Start trying to reconnect
(when elcord-mode
(elcord--start-reconnect)))
(defun elcord--send-packet (opcode obj)
"Packs and sends a packet to the IPC server.
Argument OPCODE OP code to send.
Argument OBJ The data to send to the IPC server."
(let* ((jsonstr (json-encode obj))
(datalen (length jsonstr))
(message-spec
`((:op u32r)
(:len u32r)
(:data str ,datalen)))
(packet
(bindat-pack
message-spec
`((:op . ,opcode)
(:len . ,datalen)
(:data . ,jsonstr)))))
(process-send-string elcord--sock packet)))
(defun elcord--test-match-p (test mode)
"Test `MODE' against `TEST'.
if `test' is a symbol, it is compared directly to `mode'.
if `test' is a string, it is a regex to compare against the name of `mode'."
(cl-typecase test
(symbol (eq test mode))
(string (string-match-p test (symbol-name mode)))))
(defun elcord--entry-value (entry mode)
"Test `ENTRY' against `MODE'. Return the value of `ENTRY'.
`entry' is a cons who's `car' is `elcord--test-match-p' with `mode''
When `mode' matches, if the `cdr' of `entry' is a string, return that,
otherwise if it is a function, call it with `mode' and return that value."
(when (elcord--test-match-p (car entry) mode)
(let ((mapping (cdr entry)))
(cl-typecase mapping
(string mapping)
(function (funcall mapping mode))))))
(defun elcord--find-mode-entry (alist mode)
"Get the first entry in `ALIST' matching `MODE'.
`alist' Should be an alist like `elcord-mode-icon-alist' where each value is
either a string,or a function of one argument `mode'.
If it is a function, it should return a string, or nil if no match."
(let ((cell alist)
(result nil))
(while cell
(setq result (elcord--entry-value (car cell) mode)
cell (if result nil (cdr cell))))
result))
(defun elcord--mode-icon ()
"Figure out what icon to use for the current major mode.
If an icon is mapped by `elcord-mode-icon-alist', then that is used.
Otherwise, if the mode is a derived mode, try to find an icon for it.
If no icon is available, use the default icon."
(let ((mode major-mode)
(ret elcord--editor-icon))
(while mode
(if-let ((icon (elcord--find-mode-entry elcord-mode-icon-alist mode)))
(setq ret icon
mode nil)
(setq mode (get mode 'derived-mode-parent))))
ret))
(defun elcord--mode-text ()
"Figure out what text to use for the current major mode.
If an icon is mapped by `elcord-mode-text-alist', then that is used.
Otherwise, if the mode is a derived mode, try to find text for its parent,
If no text is available, use the value of `mode-name'."
(let ((mode major-mode)
(ret mode-name))
(while mode
(if-let ((text (elcord--find-mode-entry elcord-mode-text-alist mode)))
(setq ret text
mode nil)
(setq mode (get mode 'derived-mode-parent))))
(unless (stringp ret)
(setq ret (format "%s" ret)))
ret))
(defun elcord--mode-icon-and-text ()
"Obtain the icon & text to use for the current major mode.
\((\"large_text\" . <text>)
(\"large_image\" . <icon-name>)
(\"small_text\" . <text>)
(\"small_image\" . <icon-name>))"
(let ((text (elcord--mode-text))
(icon (elcord--mode-icon))
large-text large-image
small-text small-image)
(cond
(elcord-use-major-mode-as-main-icon
(setq large-text text
large-image icon
small-text elcord--editor-name
small-image elcord--editor-icon))
(t
(setq large-text elcord--editor-name
large-image elcord--editor-icon
small-text text
small-image icon)))
(cond
(elcord-show-small-icon
(list
(cons "large_text" large-text)
(cons "large_image" large-image)
(cons "small_text" small-text)
(cons "small_image" small-image)))
(t
(list
(cons "large_text" large-text)
(cons "large_image" large-image)
(cons "small_text" small-text))))))
(defun elcord--details-and-state ()
"Obtain the details and state to use for Discord's Rich Presence."
(let ((activity (if elcord-display-buffer-details
(list
(cons "details" (format "Editing %s" (buffer-name)))
(cons "state" (format "Line %s (%s of %S)"
(format-mode-line "%l")
(format-mode-line "%l")
(+ 1 (count-lines (point-min) (point-max))))))
(list
(cons "details" "Editing")
(cons "state" (elcord--mode-text))))))
(when elcord-display-elapsed
(push (list "timestamps" (cons "start" elcord--startup-time)) activity))
activity))
(defun elcord--set-presence ()
"Set presence."
(let* ((activity
`(("assets" . (,@(elcord--mode-icon-and-text)))
,@(elcord--details-and-state)))
(nonce (format-time-string "%s%N"))
(presence
`(("cmd" . "SET_ACTIVITY")
("args" . (("activity" . ,activity)
("pid" . ,(emacs-pid))))
("nonce" . ,nonce))))
(elcord--send-packet 1 presence)))
(defun elcord--update-presence ()
"Check if we changed our current line..."
(when (and
(not (window-minibuffer-p))
(or (not (= (count-lines (point-min) (point))
elcord--last-known-position))
(not (string= (buffer-name) elcord--last-known-buffer-name))))
(setq elcord--last-known-buffer-name (buffer-name)
elcord--last-known-position (count-lines (point-min) (point)))
(condition-case nil
;;Try and set the presence
(elcord--set-presence)
(error
;;If we hit an error, cancel updates
(elcord--cancel-updates)
;; Disconnect
(elcord--disconnect)
;; and try reconnecting
(elcord--start-reconnect)))))
(defun elcord--start-updates ()
"Start sending periodic update to Discord Rich Presence."
(unless elcord--update-presence-timer
(message "elcord: connected. starting updates")
;;Start sending updates now that we've heard from discord
(setq elcord--last-known-position -1
elcord--last-known-buffer-name ""
elcord--update-presence-timer (run-at-time 0 elcord-refresh-rate 'elcord--update-presence))))
(defun elcord--cancel-updates ()
"Stop sending periodic update to Discord Rich Presence."
(when elcord--update-presence-timer
(cancel-timer elcord--update-presence-timer)
(setq elcord--update-presence-timer nil)))
(provide 'elcord)
;;; elcord.el ends here

View file

@ -0,0 +1,16 @@
;; Object semanticdb-project-database-file
;; SEMANTICDB Tags save file
(semanticdb-project-database-file "semanticdb-project-database-file"
:tables
(list
(semanticdb-table "semanticdb-table"
:major-mode emacs-lisp-mode
:tags nil
:file "magit-popup-autoloads.el"
:pointmax 361
:fsize 651
:lastmodtime '(24291 10481 236440 29000)
:unmatched-syntax nil))
:file "!home!balazs!.emacs.d!elpa!magit-popup-20200306.223!semantic.cache"
:semantic-tag-version "2.0"
:semanticdb-version "2.2")

View file

@ -0,0 +1,66 @@
;; Object semanticdb-project-database-file
;; SEMANTICDB Tags save file
(semanticdb-project-database-file "semanticdb-project-database-file"
:tables
(list
(semanticdb-table "semanticdb-table"
:major-mode emacs-lisp-mode
:tags
'( ("bindat" include nil nil [1123 1140])
("cl-lib" include nil nil [1141 1158])
("json" include nil nil [1159 1174])
("subr-x" include nil nil [1175 1192])
("elcord" customgroup (:user-visible-flag t) nil [1194 1278])
("elcord-client-id" variable (:default-value (quote "388338871475240965")) nil [1280 1659])
("elcord-refresh-rate" variable (:default-value 15) nil [1661 1783])
("elcord-mode-icon-alist" variable (:default-value (quote ((c-mode . "c-mode_icon") (c++-mode . "cpp-mode_icon") (clojure-mode . "clojure-mode_icon") (csharp-mode . "csharp-mode_icon") (comint-mode . "comint-mode_icon") (cperl-mode . "cperl-mode_icon") (emacs-lisp-mode . "emacs_icon") (enh-ruby-mode . "ruby-mode_icon") (erc-mode . "irc-mode_icon") (forth-mode . "forth-mode_icon") (fsharp-mode . "fsharp-mode_icon") (haskell-mode . "haskell-mode_icon") (java-mode . "java-mode_icon") (js-mode . "javascript-mode_icon") (kotlin-mode . "kotlin-mode_icon") (go-mode . "go-mode_icon") (latex-mode . "latex-mode_icon") (lisp-mode . "lisp-mode_icon") (magit-mode . "magit-mode_icon") (markdown-mode . "markdown-mode_icon") (nix-mode . "nix-mode_icon") (org-mode . "org-mode_icon") (racket-mode . "racket-mode_icon") (ruby-mode . "ruby-mode_icon") (rust-mode . "rust-mode_icon") (rustic-mode . "rust-mode_icon") ("^slime-.*" . "lisp-mode_icon") ("^sly-.*$" . "lisp-mode_icon") (php-mode . "php-mode_icon") (python-mode . "python-mode_icon")))) nil [1785 4249])
("elcord-mode-text-alist" variable (:default-value (quote ((c-mode . "C ") (c++-mode . "C++") (csharp-mode . "C#") (cperl-mode . "Perl") (enh-ruby-mode . "Ruby") (fsharp-mode . "F#") (java-mode . "Java") (lisp-mode . "Common-Lisp") (markdown-mode . "Markdown") (magit-mode . "It's Magit!") ("mhtml-mode" . "HTML") (slime-repl-mode . "SLIME-REPL") (sly-mrepl-mode . "Sly-REPL") (php-mode "PHP")))) nil [4251 5430])
("elcord-display-elapsed" variable (:default-value (quote t)) nil [5432 5598])
("elcord--startup-time" variable (:default-value (string-to-number (format-time-string "%s" (current-time)))) nil [5600 5689])
("elcord-display-buffer-details" variable (:default-value (quote t)) nil [5691 6057])
("elcord-use-major-mode-as-main-icon" variable (:default-value (quote nil)) nil [6059 6236])
("elcord-show-small-icon" variable (:default-value (quote t)) nil [6238 6373])
("define-minor-mode" code nil nil [6390 6656])
("elcord--editor-name" variable (:default-value (cond ((boundp (quote spacemacs-version)) "Spacemacs") ((boundp (quote doom-version)) "DOOM Emacs") (t "Emacs"))) nil [6658 6849])
("elcord--editor-icon" variable (:default-value (cond ((boundp (quote spacemacs-version)) "spacemacs_icon") ((boundp (quote doom-version)) "doom_icon") (t "emacs_icon"))) nil [6851 7051])
("elcord--discord-ipc-pipe" variable (:default-value "discord-ipc-0") nil [7053 7140])
("elcord--update-presence-timer" variable nil nil [7142 7275])
("elcord--reconnect-timer" variable nil nil [7277 7404])
("elcord--sock" variable nil nil [7406 7485])
("elcord--last-known-position" variable (:default-value (count-lines (point-min) (point))) nil [7487 7615])
("elcord--last-known-buffer-name" variable (:default-value (buffer-name)) nil [7617 7712])
("elcord--stdpipe-path" variable (:default-value (expand-file-name "stdpipe.ps1" (file-name-directory (file-truename load-file-name)))) nil [7714 8021])
("elcord--make-process" function nil nil [8023 9099])
("elcord--enable" function nil nil [9101 9675])
("elcord--disable" function nil nil [9677 9997])
("elcord--empty-presence" function nil nil [9999 10501])
("elcord--resolve-client-id" function nil nil [10503 10739])
("elcord--connection-sentinel" function (:arguments ("process" "evnt")) nil [10741 11066])
("elcord--connection-filter" function (:arguments ("process" "evnt")) nil [11068 11301])
("elcord--connect" function nil nil [11303 11747])
("elcord--disconnect" function nil nil [11749 11885])
("elcord--reconnect" function nil nil [11887 12175])
("elcord--start-reconnect" function nil nil [12177 12372])
("elcord--cancel-reconnect" function nil nil [12374 12570])
("elcord--handle-disconnect" function nil nil [12572 12862])
("elcord--send-packet" function (:arguments ("opcode" "obj")) nil [12864 13419])
("elcord--test-match-p" function (:arguments ("test" "mode")) nil [13421 13730])
("elcord--entry-value" function (:arguments ("entry" "mode")) nil [13732 14227])
("elcord--find-mode-entry" function (:arguments ("alist" "mode")) nil [14229 14700])
("elcord--mode-icon" function nil nil [14702 15244])
("elcord--mode-text" function nil nil [15246 15853])
("elcord--mode-icon-and-text" function nil nil [15855 16913])
("elcord--details-and-state" function nil nil [16915 17732])
("elcord--set-presence" function nil nil [17734 18173])
("elcord--update-presence" function nil nil [18175 18908])
("elcord--start-updates" function nil nil [18910 19344])
("elcord--cancel-updates" function nil nil [19346 19571])
("elcord" package nil nil [19573 19590]))
:file "elcord.el"
:pointmax 19615
:fsize 19624
:lastmodtime '(24288 41267 475287 704000)
:unmatched-syntax nil))
:file "!home!balazs!.emacs.d!plugins!semantic.cache"
:semantic-tag-version "2.0"
:semanticdb-version "2.2")

View file

@ -7,16 +7,14 @@
:major-mode emacs-lisp-mode
:tags
'( ("org-babel-load-file" code nil nil [1 44])
("custom-set-variables" code nil nil [45 942])
("custom-set-faces" code nil nil [943 1259])
("load-theme" code nil nil [1260 1289]))
("custom-set-variables" code nil nil [45 1014])
("custom-set-faces" code nil nil [1015 1404])
("load-theme" code nil nil [1405 1434]))
:file "init.el"
:pointmax 1290
:fsize 1289
:lastmodtime '(24284 45396 390939 697000)
:unmatched-syntax nil)
)
:pointmax 1435
:fsize 1434
:lastmodtime '(24291 10479 445376 402000)
:unmatched-syntax nil))
:file "!home!balazs!.emacs.d!semantic.cache"
:semantic-tag-version "2.0"
:semanticdb-version "2.2")

View file

@ -0,0 +1,43 @@
;; Object semanticdb-project-database-file
;; SEMANTICDB Tags save file
(semanticdb-project-database-file "semanticdb-project-database-file"
:tables
(list
(semanticdb-table "semanticdb-table"
:major-mode c-mode
:tags
'( ("stdio.h" include (:system-flag t) nil [1 19])
("stdlib.h" include (:system-flag t) nil [20 39])
("math.h" include (:system-flag t) nil [40 57])
("time.h" include (:system-flag t) nil [58 75])
("atlag" function
(:arguments
( ("tomb" variable
(:pointer 1
:type "int")
(reparse-symbol arg-sub-list) [90 100])
("db" variable (:type "int") (reparse-symbol arg-sub-list) [100 107]))
:type "int")
nil [80 186])
("szoras" function
(:arguments
( ("tomb" variable
(:pointer 1
:type "int")
(reparse-symbol arg-sub-list) [199 208])
("db" variable (:type "int") (reparse-symbol arg-sub-list) [208 215]))
:type "int")
nil [188 348])
("main" function
(:arguments
( ("" variable (:type "void") (reparse-symbol arg-sub-list) [359 364]))
:type "int")
nil [350 886]))
:file "main.c"
:pointmax 887
:fsize 886
:lastmodtime '(24251 43437 369109 729000)
:unmatched-syntax nil))
:file "!home!balazs!Code!Akos_rand!semantic.cache"
:semantic-tag-version "2.0"
:semanticdb-version "2.2")

View file

@ -1,17 +1,31 @@
;; ----- smex-history -----
(
load-file
customize
cd
5x5
arp
dbx
dig
flyspell-mode
calc
describe-key
elcord-mode
replace-string
shell
eval-buffer
)
;; ----- smex-data -----
(
(customize . 1)
(customize . 2)
(load-file . 1)
(replace-string . 23)
(shell . 2)
(cd . 1)
(flyspell-mode . 14)
(elcord-mode . 12)
(customize-group . 2)
(company-mode . 4)
(flush-lines . 1)
(org-latex-convert-region-to-latex . 2)
(package-install . 1)
(hexl-mode . 2)
(eval-buffer . 1)
(describe-key . 1)
(calc . 1)
)

7
snippets/org-mode/align Normal file
View file

@ -0,0 +1,7 @@
# -*- mode: snippet -*-
# name: align
# key: align
# --
\\begin{align}
\\end{align}

5
snippets/org-mode/text Normal file
View file

@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: text
# key: text
# --
\\text{}

5
tramp
View file

@ -1,4 +1,4 @@
;; -*- emacs-lisp -*- <20/06/06 12:00:21 /home/balazs/.emacs.d/tramp>
;; -*- emacs-lisp -*- <20/06/15 18:40:38 /home/balazs/.emacs.d/tramp>
;; Tramp connection history. Don't change this file.
;; You can delete it, forcing Tramp to reapply the checks.
@ -49,4 +49,5 @@
("git" "\\git")
("tmpdir" "/sudo:root@GlaDOS:/tmp")
("touch-t" t)
("touch" "\\touch")))
("touch" "\\touch")
("~root" "/root")))

View file

@ -9,5 +9,7 @@
(magit-pull nil
("--rebase"))
(magit-push nil)
(magit-remote
("-f"))
(magit-reset nil)
(magit-stash nil))

View file

@ -1,90 +0,0 @@
HTTP/1.1 200 OK
Date: Sun, 07 Jun 2020 09:17:38 GMT
Content-Type: image/svg+xml
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: __cfduid=db9753a37ada4e95bc954afc7ffaf1fdf1591521458; expires=Tue, 07-Jul-20 09:17:38 GMT; path=/; domain=.srix.cf; HttpOnly; SameSite=Lax
Last-Modified: Sun, 30 Jun 2019 11:04:09 GMT
ETag: W/"205b-58c88788e224e"
Cache-Control: max-age=14400
CF-Cache-Status: MISS
cf-request-id: 032fab52140000d42fe6171200000001
Vary: Accept-Encoding
Server: cloudflare
CF-RAY: 59f947fcef28d42f-BUD
Content-Encoding: gzip
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="612px" height="792px" viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve">
<path fill-rule="evenodd" clip-rule="evenodd" stroke="#000000" stroke-width="2.9999" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="22.9256" d="
M400.419,451.252c7.724,8.437,21.051,22.484,30.155,36.325c9.104,13.84,13.983,27.474,17.324,37.172
c3.34,9.698,5.141,15.461,4.061,21.854c-1.081,6.394-5.043,13.418-12.337,19.991s-17.92,12.697-24.313,17.74
s-8.555,9.005-7.924,18.821c0.63,9.815,4.051,25.483,10.009,34.081c5.957,8.596,14.45,10.121,22.195,10.481
c7.744,0.36,14.739-0.444,23.82,2.216c9.081,2.659,20.247,8.783,22.049,15.267c1.801,6.483-5.764,13.328-8.284,14.408
c-2.521,1.08-0.001-3.602-2.128-6.817c-2.127-3.215-8.902-4.962-16.388-6.286c-7.485-1.323-15.681-2.225-17.335-1.171
c-1.655,1.055,3.229,4.063,6.032,7.188s3.522,6.366,2.082,10.509c-1.441,4.143-5.043,9.186-5.943,9.545
c-0.9,0.36,0.9-3.961-4.143-9.904c-5.043-5.944-16.93-13.509-27.556-18.191s-19.991-6.483-27.071-6.682s-11.875,1.205-13.808,3.546
c-1.932,2.341-1.001,5.617-2.138,6.116c-1.136,0.498-4.34-1.782-6.55-5.743c-2.211-3.961-3.427-9.604-1.874-14.406
c1.552-4.804,5.875-8.766,10.737-10.386c4.862-1.621,10.266-0.901,9.905-8.465c-0.359-7.565-6.483-23.414-10.986-33.859
c-4.502-10.446-7.384-15.49-4.411-19.81s11.8-7.917,19.445-12.572s14.111-10.369,16.375-15.71s0.327-10.31-3.717-15.739
c-4.044-5.431-10.194-11.323-19.573-19.672c-4.526-4.029-9.804-8.631-14.985-13.549c-2.135,9.545-4.575,19.553-6.563,28.208
c-2.801,12.185-4.706,21.687-17.499,28.839s-36.474,11.956-49.847,18.709c-13.374,6.754-16.439,15.456-17.321,26.089
c-0.88,10.632,0.424,23.194,3.14,30.886c2.117,5.995,5.092,9.031,9.484,11.417c4.531,0.544,9.604,1.337,15.314,3.268
c8.315,2.811,17.982,8.032,19.768,14.259c1.786,6.225-4.31,13.455-6.342,14.618c-2.032,1.162,0-3.742-3.437-7.642
c-3.436-3.901-12.34-6.799-18.969-8.204c-6.629-1.406-10.984-1.319-10.549-0.393c0.436,0.927,5.662,2.693,8.517,6.045
c2.855,3.351,3.341,8.286,2.132,13.401c-1.209,5.116-4.112,10.411-4.838,10.8c-0.726,0.389,0.725-4.13-3.339-10.222
c-4.064-6.094-13.644-13.761-22.207-18.454c-8.564-4.693-16.111-6.414-22.166-8.279c-6.054-1.865-10.614-3.876-13.974-3.756
c-3.361,0.12-5.522,2.372-6.243,4.804c-0.72,2.432,0,5.043-1.891,3.917s-6.394-5.988-6.753-11.076
c-0.36-5.088,3.421-10.401,7.076-13.105c3.656-2.704,7.184-2.801,11.125-2.519c0.59,0.043,1.19,0.094,1.803,0.155
c3.345-0.093,7.438,0.595,10.571,0.157c4.376-0.613,6.881-3.424,7.653-9.986c0.772-6.564-0.188-16.88-1.089-30.117
s-1.741-29.396-0.504-37.97c1.237-8.573,4.55-9.561,8.783-10.821c4.232-1.261,9.383-2.795,18.704-4.345
c9.32-1.55,22.812-3.115,29.926-9.148c7.114-6.034,7.851-16.535,2.444-30.359c-4.02-10.277-11.434-22.391-14.826-32.851
c-8.195-17.208,8.496-48.972,10.643-68.426c0.975-8.839,0.364-8.657,0.002-12.681c-9.46,2.513-28.016,24.671-34.598,30.541
c-6.583,5.87-7.384,12.787-7.744,23.594c-0.36,10.806-0.36,25.574-1.261,38.542c-0.9,12.967-2.702,24.133-5.223,33.498
c-2.521,9.366-5.763,16.93-13.778,25.574c-8.015,8.646-20.802,18.371-33.949,20.893s-26.655-2.161-27.646-4.683
s10.536-2.882,20.081-4.683c9.545-1.801,17.11-5.043,23.234-10.806c6.123-5.764,10.805-14.049,9.725-15.67
c-1.08-1.62-7.925,3.422-16.57,7.564c-8.645,4.143-19.091,7.384-29.987,5.764c-10.896-1.621-22.243-8.104-28.906-17.11
c-6.664-9.005-8.645-20.531-7.744-23.323c0.9-2.792,4.682,3.152,9.906,10.176c5.222,7.024,11.887,15.129,23.503,17.561
c11.616,2.431,28.186-0.811,38.271-9.995c10.086-9.186,13.688-24.314,11.166-31.879c-2.521-7.563-11.167-7.563-19.451-4.862
s-16.209,8.104-18.759,13.042c-2.55,4.938,0.274,9.409-1.527,9.949c-1.801,0.541-8.228-2.851-9.64-9.769
c-1.412-6.919,2.189-17.365,8.674-23.038c6.483-5.674,15.849-6.574,23.773-7.385c7.924-0.811,14.408-1.53,18.01-5.043
c3.603-3.512,4.322-9.815,3.782-17.109c-0.54-7.294-2.341-15.579-4.143-24.404c-1.801-8.824-3.602-18.19,3.962-26.834
c7.564-8.645,24.495-16.57,34.76-27.196c10.266-10.626,13.868-23.954,19.631-32.238c12-17.25-0.566-20.284-22.515-25.573
c-14.949-3.603-31.879-5.042-47.188-2.882c-15.309,2.161-28.997,7.925-40.883,17.11c-11.887,9.186-21.972,21.792-23.414,19.631
c-1.441-2.161,5.764-19.091,17.291-35.3c11.526-16.209,27.375-31.698,33.138-40.704c5.763-9.005,1.441-11.525-8.825-12.606
c-10.266-1.081-26.476-0.72-40.523,4.142c-14.048,4.863-25.935,14.229-32.418,26.475c-6.484,12.248-7.564,27.376-9.906,22.513
c-2.342-4.862-5.943-29.717-3.242-48.268c2.701-18.55,11.706-30.797,3.602-30.617s-33.319,12.787-51.275,28.275
c-17.957,15.489-28.656,33.86-26.495,23.954s17.183-48.087,38.021-77.624s47.494-50.429,72.708-61.235
c25.214-10.806,48.988-11.527,57.453-13.688c8.465-2.161,1.621-5.763-7.745-7.924c-9.365-2.162-21.251-2.882-13.236-5.404
c8.015-2.522,35.933-6.846,62.048,1.979c26.115,8.825,50.426,30.799,69.246,45.928c18.819,15.129,32.146,23.415,26.384,32.42
c-5.763,9.005-30.617,18.73-43.944,34.759c-13.328,16.029-15.129,38.362-0.18,53.31c6.486,6.486,13.891,9.218,21.989,13.313
c5.618,2.842,10.114,4.606,16.8,3.978s15.561-3.648,19.663-9.44c4.103-5.792,3.434-14.357,0.23-18.511
c-1.266-1.643-2.928-2.595-4.716-3.355c-5.846,0.548-11.213,0.14-15.587-2.279c-10.762-5.953-15.507-24.076-7.441-39.969
s28.94-29.557,52.521-35.67c23.58-6.113,49.867-4.676,67.674,1.977s27.135,18.52,31.543,30.157
c4.407,11.637,3.896,23.042,4.031,32.16s0.915,15.948,8.567,22.182c7.651,6.234,22.175,11.874,34.665,15.64
c12.489,3.768,22.944,5.664,30.496,12.31c7.551,6.646,12.198,18.044,15.242,31.376c3.043,13.332,4.481,28.6,2.095,39.461
c-2.387,10.861-8.601,17.317-10.433,16.75s0.718-8.157,1.054-17.772s-1.542-21.254-4.352-30.15
c-2.81-8.897-6.549-15.051-13.736-19.25c-7.188-4.2-17.822-6.444-28.398-9.286c-10.575-2.842-21.094-6.28-29.174-11.833
s-13.724-13.219-14.791-12.781c-1.068,0.439,2.439,8.981,9.446,17.504c7.006,8.523,17.511,17.025,26.738,25.042
c9.227,8.016,17.174,15.545,21.548,24.475c4.374,8.929,5.174,19.257,5.916,30.184c0.742,10.925,1.427,22.448,8.316,32.166
c6.89,9.717,19.984,17.629,21.628,20.563c1.643,2.935-8.167,0.891-18.224-4.794c-10.058-5.685-20.362-15.012-26.438-26.278
c-6.075-11.266-7.921-24.47-10.572-34.376c-2.649-9.906-6.104-16.515-12.746-22.59c-6.644-6.075-16.474-11.618-24.495-17.477
c-8.022-5.859-14.236-12.034-18.23-19.298c-3.993-7.264-5.768-15.616-7.146-15.981c-1.38-0.366-2.365,7.256-0.852,16.448
c1.515,9.192,5.529,19.956,11.215,27.807c5.685,7.851,13.041,12.791,18.658,19.489c5.615,6.699,9.493,15.158,9.376,16.352
c-0.116,1.195-4.227-4.875-11.255-10.083c-7.029-5.208-16.975-9.557-25.182-15.664c-8.208-6.107-14.675-13.975-20.052-25.594
c-1.51-3.263-4.974-16.376-7.897-16.683c-3.418-0.358-7.729,1.644-8.924,6.348c-1.194,4.704,0.728,12.108,2.182,17.397
c1.51,5.498,3.341,10.898,4.683,16.443c3.805,15.726,1.95,21.958,1.791,31.82c-0.16,9.862,1.372,23.354,5.344,31.351
c3.971,7.998,10.382,10.5,20.709,13.703c10.326,3.203,24.57,7.104,36.839,11.4c12.269,4.295,22.562,8.981,30.928,13.889
c8.366,4.906,14.805,10.031,21.024,20.045c6.221,10.015,12.221,24.917,11.18,38.264c-1.042,13.347-9.128,25.137-11.821,25.426
s0.005-10.924,0.79-20.605s-0.343-17.834-4.282-25.263c-3.941-7.429-10.695-14.134-12.543-13.52
c-1.849,0.613,1.206,8.547,2.917,17.979c1.711,9.432,2.077,20.363-2.365,30.443c-4.441,10.081-13.693,19.311-24.14,23.358
s-22.086,2.913-24.54,1.307s4.276-3.684,12.432-6.864c8.153-3.182,17.731-7.468,23.146-18.029
c5.413-10.561,6.665-27.398,0.472-39.553c-6.194-12.154-19.834-19.625-27.795-19.192c-7.962,0.434-10.246,8.771-9.829,17.476
c0.416,8.704,3.533,17.774,7.622,21.538c4.088,3.765,9.147,2.222,9.191,4.102c0.046,1.88-4.923,7.182-11.969,6.716
c-7.046-0.467-16.169-6.7-19.927-14.453c-3.759-7.752-2.153-17.022-0.841-24.88c1.313-7.856,2.331-14.3-0.104-18.703
c-2.436-4.4-8.324-6.761-15.502-8.168c-7.179-1.405-15.645-1.857-24.106-5.722c-8.461-3.864-16.918-11.141-22.731-23.99
c-2.383-5.268-4.322-11.472-6.336-17.609l-0.01,0.023C380.281,416.313,385.828,435.317,400.419,451.252z"/>
</svg>