Emacs - 6 рдЙрддреНрдкрд╛рджрдХрддрд╛ рдЯреНрд░рд┐рдХреНрд╕

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ Emacs рдХреЛ C ++ IDE рдФрд░ рдЕрдиреНрдп рддрдХрдиреАрдХреА рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВрдиреЗ рдЗрд╕ рддрдереНрдп рдкрд░ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдХрд┐ рдореИрдВ рдПрдордПрд╕реАрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдмрд╣реБрдд рд╕реА рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВред рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореИрдВ рдЗрд╕ рд╕рдВрдкрд╛рджрдХ рдХрд╛ рдкреВрд░реНрдг рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдерд╛ рдпрджрд┐ рдпрд╣ рдЙрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдерд╛ рдЬреЛ рдореИрдВ рдпрд╣рд╛рдВ рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдЙрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ рдпрд╣ рд╕рдм рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП (рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ, рдХреЙрдкреА .emacs)ред

рдЖрд░рдВрдн рдХрд░рдирд╛


tl; dr: рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдзреАрд░ рд╣реИрдВ рд╡реЗ рдЗрд╕ рдЦрдВрдб рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реАрдзреЗ Helm рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдореЗрд░реЗ рдкрд╛рд╕ Emacs рд╣реИ - 26.1 рд╕реНрдерд╛рдкрд┐рдд, рд╕реНрд░реЛрдд рд╕реЗ рд╕рдВрдХрд▓рд┐рддред рддреБрдореНрд╣реЗ рдЬрд░реБрд░рдд рдирд╣реАрдВред рд╕рднреА рдкреИрдХреЗрдЬ Emacs рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред Daud:

M-x list-packages

рдЖрдкрдХреЛ MELPA рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдкреИрдХреЗрдЬреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджрд┐рдЦрд╛рдИ рджреЗрдЧреА ред рдпрджрд┐ рдЖрдкрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИ, рддреЛ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ, рдпрд╣ рд╕рднреА рдРрдб-рдСрди рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рднрдВрдбрд╛рд░ рдХреА рддрд░рд╣ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдбреЗрдмрд┐рдпрди / рдЙрдмрдВрдЯреВ рд╡рд┐рддрд░рдг рдореЗрдВ рдбреЗрдмрд┐рдпрди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реАред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрдкрд▓рдмреНрдз рдкреИрдХреЗрдЬреЛрдВ рдХреА рдПрдХ рд▓рдВрдмреА рд╕реВрдЪреА рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЬреАрдЖрдИрдПрдл рдореЗрдВ рд╣реИ:



рдпрджрд┐ рдЖрдк рдПрдХ рдкреИрдХреЗрдЬ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ рд╕реНрдХреНрд░реАрди рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред рдЖрдорддреМрд░ рдкрд░ рдЗрд╕рдореЗрдВ рддреНрд╡рд░рд┐рдд рд╢реБрд░реБрдЖрдд рдХреЗ рдирд┐рд░реНрджреЗрд╢ рд╣реЛрддреЗ рд╣реИрдВред рдЖрдк рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл i , рдлрд┐рд░ x рджрдмрд╛ рд╕рдХрддреЗ рд╣реИрдВ ред рдЖрдк рдиреАрдЪреЗ рдХреЗ рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдВрдЪрд╛рд▓рди, рдкрддрд╡рд╛рд░


рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИ - рд╕рдм рдХреБрдЫ рдЫреЛрдбрд╝ рджреЗрдВ рдФрд░ рдЙрд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХрд┐рд╕реА рднреА рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдПрдХ рд╡рд┐рд╡рд░рдг рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ :
"рд╣реЗрд▓реНрдо рдПрдХ рдЗрдореИрдХ рдлреНрд░реЗрдорд╡рд░реНрдХ, рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдЦреЛрдЬ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ, рдмрдлрд░ рдирд╛рдореЛрдВ рдФрд░ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдд: рдкреВрд░реНрдгрддрд╛ рд╣реИ рдЬреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╕реВрдЪреА рд╕реЗ рдПрдХ рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ"

рдбреЗрдореЛ




(require 'helm)

(setq-default helm-M-x-fuzzy-match t)
(global-set-key "\C-x\C-m" 'helm-M-x)
(global-set-key "\C-c\C-m" 'helm-M-x)
(define-key evil-ex-map "x" 'helm-M-x)

(define-key evil-ex-map "b " 'helm-mini)
(define-key evil-ex-map "e" 'helm-find-files)

рдИрд╡рд┐рд▓ рдореЛрдб


EVIL рдХрд╛ рдорддрд▓рдм Emacs рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ VI рд▓реЗрдпрд░ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдмрдбрд╝рд╛ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╡рд┐рд╖рдп рд╣реИ, Emacs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрджреНрдз рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░рд┐рджреГрд╢реНрдп рд╕реЗ рджреВрд░ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдРрд╕рд╛ рдХреЛрдИ рдкрд░рд┐рджреГрд╢реНрдп рдирд╣реАрдВ рд╣реИред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, Emacs рдХреА рд╢рдХреНрддрд┐ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдореЗрдВ рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рд╕реЗ рдЖрддреА рд╣реИред рдореИрдВ рдмрдбрд╝рд╛ рд╣реЛ рдЧрдпрд╛ рдЬрдм рдХреБрдЫ рднреА рдирд╣реАрдВ рдерд╛ рд▓реЗрдХрд┐рди vi, рдпрд╣ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд╛рдлреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред

"рдЖрдкрдХреЗ рдЖрд░реНрдереЛрдкреЗрдбрд┐рд╕реНрдЯ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡реАрдХреГрдд"


Emacs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдХрдорд╛рдВрдб рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛, рдФрд░ рд╕рднреА рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдореИрдВ рдмрд╣реБрдд рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдЯрд╛рдЗрдк рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХрдо рд╕реЗ рдХрдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрд╡рд╛рдореА рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдореЗрдВ , рдЬрд┐рдирдХреЗ рд╕рд╛рде рдореИрдВ рдорд┐рд▓рд╛ рдерд╛ ред

рдИрд╡рд┐рд▓ рдореЛрдб рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ:

(require 'evil)
(evil-mode 1)

;;;; define shortcuts for powerful commands
;;;; these can be invoked vim-style 
;;;; Esc-:<single_key_from_below>
(define-key evil-ex-map "b " 'helm-mini)
(define-key evil-ex-map "e" 'helm-find-files)
(define-key evil-ex-map "g" 'helm-projectile-grep)
(define-key evil-ex-map "f" 'helm-projectile-find-file)

;;;; I wept with joy about this in:
;;;; http://www.mycpu.org/emacs-24-magit-magic/
(define-key evil-ex-map "m" 'magit-blame)

рдкрддрд╡рд╛рд░-рдлреЗрдВрдХрдиреЗ


рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рд▓реЛрдЧ рдЕрднреА рднреА рд╕рдбрд╝рдХ рдкрд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рджреМрдбрд╝рддреЗ рд╣реИрдВ, рдЕрдкрдиреЗ рд╕рд┐рд░ рдХреЛ рдкрдХрдбрд╝рдХрд░ рдФрд░ рдЦреБрд╢реА рд╕реЗ рдкрд╛рдЧрд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ - рдпрд╣реА рдореИрдВ рд╣реЗрд▓реНрдо-рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░рддрд╛ рд╣реВрдВред Github

рдбреЗрдореЛ




(require 'helm-projectile)
(define-key evil-ex-map "g" 'helm-projectile-grep)
(define-key evil-ex-map "f" 'helm-projectile-find-file)

рдХрдпрд╛рдордд-рд╡рд┐рд╖рдпреЛрдВ


рдпрд╣рд╛рдВ рд╣рдо рд╕реМрдВрджрд░реНрдпрд╢рд╛рд╕реНрддреНрд░ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдпрд╣ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рдЪреАрдЬ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЕрдЧрд░ рдЖрдк рд╣рд░ рдЪреАрдЬ рд╕реЗ рдЦреБрд╢ рд╣реИрдВ, рддреЛ рдиреАрдЪреЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдКрдкрд░ рдХреА рддрд╕реНрд╡реАрд░реЛрдВ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реИрдВ, рддреЛ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдЖрдкрдХреЗ рд▓рд┐рдП рд╣реИред
рдХрдпрд╛рдордд рдереАрдореНрд╕ рдиреЗ рдореБрдЭреЗ рд╕рдВрдкрд╛рджрдХ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЖрдзреБрдирд┐рдХ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХреАред рд╕рдордп-рд╕рдордп рдкрд░, рд░рдВрдЧреЛрдВ рдиреЗ рдореБрдЭреЗ рджреБрдЦреА рдХрд┐рдпрд╛ (рдордиреЛрд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдПрдХ рдХреНрд╖рдг), рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ Emacs рдХреЗ рд▓рд┐рдП "рдЙрд╕реА рд╡рд┐рд╖рдп" рдХреА рддрд▓рд╛рд╢ рд╢реБрд░реВ рдХрд░ рджреАред рдореИрдВрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЬрд╝реЗрдирдмрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ , рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдВрдЯреНрд░рд╛рд╕реНрдЯ рдлрд╝реЙрдиреНрдЯ рдкрд╕рдВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдереЛрдбрд╝рд╛ рдХрдо рдЖрдХрд░реНрд╖рдХ рдФрд░ рддреЗрдЬред рдХрдпрд╛рдордд рдереАрдореНрд╕, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрдпрд╛рдордд-рдореЛрд▓реЛрдХрдИ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ , рдЬреЛ рдЖрдзреБрдирд┐рдХ рдПрдЯрдо рдЖрдИрдбреАрдИ рдХреЗ рд╕рдорд╛рди рд╣реИ ред рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдиреАрдЪреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдЗрд╕рдХреЗ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЪреБрд░рд╛ рд▓рд┐рдпрд╛ рд╣реИ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗред

(require 'doom-themes)

(require 'indent-guide)
(indent-guide-global-mode)
(set-face-background 'indent-guide-face "dimgray")

;; Global settings (defaults)
(setq doom-themes-enable-bold t    ; if nil, bold is universally disabled
      doom-themes-enable-italic t) ; if nil, italics is universally disabled

;; Load the theme (doom-one, doom-molokai, etc); keep in mind that each
;; theme may have their own settings.
(load-theme 'doom-molokai t)

;; Enable flashing mode-line on errors
(doom-themes-visual-bell-config)

;; Enable custom neotree theme
(doom-themes-neotree-config)  ; all-the-icons fonts must be installed!

(require 'doom-modeline)
(doom-modeline-mode 1)

Rtags


рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА rtags рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдкреЛрд╕реНрдЯ рд▓рд┐рдЦреА рд╣реИрдВ: рдпрд╣рд╛рдБ рдФрд░ рд╡рд╣рд╛рдБ ред

рдПрдордпреВ 4 рдИ рдХреЗ рд╕рд╛рде Emacs рдореЗрд▓ рдкрдврд╝рдирд╛


рдПрдХ рдЕрд▓рдЧ рдкреЛрд╕реНрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреИрд░-рддреБрдЪреНрдЫ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВред Emacs рдХреЗ рд▓рд┐рдП рдИрдореЗрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдХрдореА рдиреЗ рдореБрдЭреЗ рдЙрд╕ рд╕рдордп рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рди рдХрд┐рдпрд╛ (рдЧреНрдиреБрд╕, рд╕реЙрд░реА)ред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдореИрдВ рдЗрд╕рдореЗрдВ рдЕрдХреЗрд▓рд╛ рдирд╣реАрдВ рдерд╛, рдФрд░ рдХрд┐рд╕реА рдФрд░ рдиреЗ, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭрд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдорд╛рд░реНрдЯ рдФрд░ рдЕрдиреБрднрд╡реА, рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рднрд░ рджрд┐рдпрд╛ред mu4e, рдСрдлрд╝рд▓рд╛рдЗрдирдЗрдореИрдк рдХреЗ рд╕рд╛рде, рдореЗрд░реЗ рд▓рд┐рдП рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдкрддреНрд░ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рдмрди рдЧрдпрд╛, рдЬреЛ рдореБрдЭреЗ рдЖрдЬ рддрдХ рднрд╛рддрд╛ рд╣реИред

Source: https://habr.com/ru/post/undefined/


All Articles