Size: a a a

Emacs — русскоговорящее сообщество

2020 March 30

VL

Valeriy L in Emacs — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
(use-package smart-comment
 :ensure t
 :bind ("M-;" . smart-comment))
а он автоматом секспы комментит?
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Emacs — русскоговорящее сообщество
Valeriy L
а он автоматом секспы комментит?
не обращал внимания
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Emacs — русскоговорящее сообщество
Dmitriy
Нужна критика, советы и предложения. Написал скрипт создания директории для контестов по спортивному программированию, но вышло как-то громоздко
(defun start-olymp ()
 (interactive)
 (letrec ((name (read-string "Olymp's name: " "Opencups/"))
          (olymp-dir (concat "~/Codes/olymp/" name "/"))    
          (how-many (string-to-number (read-string "How many tasks: " "13")))
          (suffix "-olymp.cpp")
          (input "input.txt")  
          (output "output.txt")
          (template "~/.emacs.d/template.cpp") ; template for olympiads
          (start-char (string-to-char "A"))
          )
         (progn
           ;; creating olymp directory if not exists
           (unless (file-exists-p olymp-dir)
             (make-directory olymp-dir))

           ;; creating in-out files
           (find-file (concat olymp-dir input))
           (save-buffer (concat olymp-dir input))
           (find-file (concat olymp-dir output))
           (save-buffer (concat olymp-dir output))

           ;; creating buffers for task files
           (dotimes (i how-many)
             (find-file (concat olymp-dir (char-to-string (+ i start-char)) suffix))
             (when (eq 1 (point-max))
               (insert-file-contents template nil))
             (save-buffer)
             )))
 )
темплейты я бы использовал встроенные, типа auto-insert
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Emacs — русскоговорящее сообщество
а (concat olymp-dir input) и подобное лучше в let завернуть
источник

VL

Valeriy L in Emacs — русскоговорящее сообщество
Dmitriy
Нужна критика, советы и предложения. Написал скрипт создания директории для контестов по спортивному программированию, но вышло как-то громоздко
(defun start-olymp ()
 (interactive)
 (letrec ((name (read-string "Olymp's name: " "Opencups/"))
          (olymp-dir (concat "~/Codes/olymp/" name "/"))    
          (how-many (string-to-number (read-string "How many tasks: " "13")))
          (suffix "-olymp.cpp")
          (input "input.txt")  
          (output "output.txt")
          (template "~/.emacs.d/template.cpp") ; template for olympiads
          (start-char (string-to-char "A"))
          )
         (progn
           ;; creating olymp directory if not exists
           (unless (file-exists-p olymp-dir)
             (make-directory olymp-dir))

           ;; creating in-out files
           (find-file (concat olymp-dir input))
           (save-buffer (concat olymp-dir input))
           (find-file (concat olymp-dir output))
           (save-buffer (concat olymp-dir output))

           ;; creating buffers for task files
           (dotimes (i how-many)
             (find-file (concat olymp-dir (char-to-string (+ i start-char)) suffix))
             (when (eq 1 (point-max))
               (insert-file-contents template nil))
             (save-buffer)
             )))
 )
еще progn лишний
источник

VL

Valeriy L in Emacs — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
(use-package smart-comment
 :ensure t
 :bind ("M-;" . smart-comment))
я просто смотрел его и не счел полезным)
строку закомментить можно и C-x C-;
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Emacs — русскоговорящее сообщество
ещё вместо concat лучше юзать expand-file-name
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Emacs — русскоговорящее сообщество
Valeriy L
я просто смотрел его и не счел полезным)
строку закомментить можно и C-x C-;
а раскомментить?
источник

S

Shizoid in Emacs — русскоговорящее сообщество
походу дальше только худеть конфигом, если что и везде ну и переносы строк жрет
источник

VL

Valeriy L in Emacs — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
а раскомментить?
C-x C-; раскоменчивает
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Emacs — русскоговорящее сообщество
Valeriy L
C-x C-; раскоменчивает
хз, имхо проще M-; для всего, я уже привык и хз как раньше без этого плагина жил
источник

VL

Valeriy L in Emacs — русскоговорящее сообщество
Наверное ты прав)
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Emacs — русскоговорящее сообщество
Dmitriy
Нужна критика, советы и предложения. Написал скрипт создания директории для контестов по спортивному программированию, но вышло как-то громоздко
(defun start-olymp ()
 (interactive)
 (letrec ((name (read-string "Olymp's name: " "Opencups/"))
          (olymp-dir (concat "~/Codes/olymp/" name "/"))    
          (how-many (string-to-number (read-string "How many tasks: " "13")))
          (suffix "-olymp.cpp")
          (input "input.txt")  
          (output "output.txt")
          (template "~/.emacs.d/template.cpp") ; template for olympiads
          (start-char (string-to-char "A"))
          )
         (progn
           ;; creating olymp directory if not exists
           (unless (file-exists-p olymp-dir)
             (make-directory olymp-dir))

           ;; creating in-out files
           (find-file (concat olymp-dir input))
           (save-buffer (concat olymp-dir input))
           (find-file (concat olymp-dir output))
           (save-buffer (concat olymp-dir output))

           ;; creating buffers for task files
           (dotimes (i how-many)
             (find-file (concat olymp-dir (char-to-string (+ i start-char)) suffix))
             (when (eq 1 (point-max))
               (insert-file-contents template nil))
             (save-buffer)
             )))
 )
ещё строковые литералы, и особенно пути/имена, вынести из функции в defcustom-ы
источник

VL

Valeriy L in Emacs — русскоговорящее сообщество
Dmitriy
Нужна критика, советы и предложения. Написал скрипт создания директории для контестов по спортивному программированию, но вышло как-то громоздко
(defun start-olymp ()
 (interactive)
 (letrec ((name (read-string "Olymp's name: " "Opencups/"))
          (olymp-dir (concat "~/Codes/olymp/" name "/"))    
          (how-many (string-to-number (read-string "How many tasks: " "13")))
          (suffix "-olymp.cpp")
          (input "input.txt")  
          (output "output.txt")
          (template "~/.emacs.d/template.cpp") ; template for olympiads
          (start-char (string-to-char "A"))
          )
         (progn
           ;; creating olymp directory if not exists
           (unless (file-exists-p olymp-dir)
             (make-directory olymp-dir))

           ;; creating in-out files
           (find-file (concat olymp-dir input))
           (save-buffer (concat olymp-dir input))
           (find-file (concat olymp-dir output))
           (save-buffer (concat olymp-dir output))

           ;; creating buffers for task files
           (dotimes (i how-many)
             (find-file (concat olymp-dir (char-to-string (+ i start-char)) suffix))
             (when (eq 1 (point-max))
               (insert-file-contents template nil))
             (save-buffer)
             )))
 )
вместо dotimes я бы заюзал loop, тк логика более сложная
источник

VL

Valeriy L in Emacs — русскоговорящее сообщество
Как-то так (loop for c from ?A upto (+ ?A how-many))
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Emacs — русскоговорящее сообщество
(make-directory DIR &optional PARENTS), можно просто указать parents non-nil, тогда даже проверять на существование не надо
источник

PG

Pïg Grëënëst in Emacs — русскоговорящее сообщество
Dmitriy
Нужна критика, советы и предложения. Написал скрипт создания директории для контестов по спортивному программированию, но вышло как-то громоздко
(defun start-olymp ()
 (interactive)
 (letrec ((name (read-string "Olymp's name: " "Opencups/"))
          (olymp-dir (concat "~/Codes/olymp/" name "/"))    
          (how-many (string-to-number (read-string "How many tasks: " "13")))
          (suffix "-olymp.cpp")
          (input "input.txt")  
          (output "output.txt")
          (template "~/.emacs.d/template.cpp") ; template for olympiads
          (start-char (string-to-char "A"))
          )
         (progn
           ;; creating olymp directory if not exists
           (unless (file-exists-p olymp-dir)
             (make-directory olymp-dir))

           ;; creating in-out files
           (find-file (concat olymp-dir input))
           (save-buffer (concat olymp-dir input))
           (find-file (concat olymp-dir output))
           (save-buffer (concat olymp-dir output))

           ;; creating buffers for task files
           (dotimes (i how-many)
             (find-file (concat olymp-dir (char-to-string (+ i start-char)) suffix))
             (when (eq 1 (point-max))
               (insert-file-contents template nil))
             (save-buffer)
             )))
 )
Про with-temp-file уже написали
(defcustom olymp-default-directory
 "~/Codes/olymp/Opencups/"
 "🤔"
 :group 'emacs
 :type 'file)

(defun start-olymp (&optional olymp-dir how-many)
 (interactive
  (list
   (read-file-name "Olymp's name: " t olymp-default-directory nil)
   (read-number "How many tasks: " 13)))
 ...)
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Emacs — русскоговорящее сообщество
источник

D

Dmitriy in Emacs — русскоговорящее сообщество
Вау, спасибо вам всем!
источник

G(

GNU/😈👾Scriptod👾😈 ( λ ) in Emacs — русскоговорящее сообщество
@greenest_pig, а можно твой конфиг глянуть?
источник