Size: a a a

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

2020 November 19

AT

Andrew Tropin in Emacs — русскоговорящее сообщество
Gradi
Добрый день. Ковыряю тут elisp и хочу пробежаться по списку пакетов и вернуть nil если хотя бы один пакет не установлен, но если список пустой то хочу вернуть t, но столкнулся с проблемкой, что всегда возвращается nil
Вот примеры кода:
; Sample 1
(let (result 't)
 (dolist (el () result) (message "%s" el)))
nil

; Sample 2
(let (result 't)
 (dolist (el '(1 2 3) result) (message "%s" el)))
nil

Почему Sample 1 и Sample 2 возвращают nil хотя result стоит в t? Sample 1 сообщений не печатает, а sample 2 печатает 1 2 3 (т.е.  это ожидаемое поведение)
у тебя не хватает скобочек в let
источник

AT

Andrew Tropin in Emacs — русскоговорящее сообщество
Gradi
Добрый день. Ковыряю тут elisp и хочу пробежаться по списку пакетов и вернуть nil если хотя бы один пакет не установлен, но если список пустой то хочу вернуть t, но столкнулся с проблемкой, что всегда возвращается nil
Вот примеры кода:
; Sample 1
(let (result 't)
 (dolist (el () result) (message "%s" el)))
nil

; Sample 2
(let (result 't)
 (dolist (el '(1 2 3) result) (message "%s" el)))
nil

Почему Sample 1 и Sample 2 возвращают nil хотя result стоит в t? Sample 1 сообщений не печатает, а sample 2 печатает 1 2 3 (т.е.  это ожидаемое поведение)
источник

G

Gradi in Emacs — русскоговорящее сообщество
Andrew Tropin
у тебя не хватает скобочек в let
Да, забыл про это)
Спасибо)
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
> пробежаться по списку пакетов и вернуть nil если хотя бы один пакет не установлен

эмм, только вопрос - а зачем?

а так, есть dash.el и -every-p
(if lst
   (-every-p #'package-installed-p lst)
 t)
источник

G

Gradi in Emacs — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
> пробежаться по списку пакетов и вернуть nil если хотя бы один пакет не установлен

эмм, только вопрос - а зачем?

а так, есть dash.el и -every-p
(if lst
   (-every-p #'package-installed-p lst)
 t)
Я в emacs'е ещё не силён.
Делаю свои инит файл и хочу в него складывать пакеты которые бы автоматом при старте ставились если уже не стоят.
В итоге от того костыля отказался и в инит файл положил код вида
(require 'package)
(custom-set-variables
'(package-selected-packages '(
                              ;; packages
                              )))

(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
(package-initialize)
(package-install-selected-packages)
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
Gradi
Я в emacs'е ещё не силён.
Делаю свои инит файл и хочу в него складывать пакеты которые бы автоматом при старте ставились если уже не стоят.
В итоге от того костыля отказался и в инит файл положил код вида
(require 'package)
(custom-set-variables
'(package-selected-packages '(
                              ;; packages
                              )))

(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
(package-initialize)
(package-install-selected-packages)
вот это более правильный подход, ещё как вариант можно сделать чтобы use-package через :ensure их ставил автоматом https://github.com/jwiegley/use-package
источник

S

Shizoid in Emacs — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
вот это более правильный подход, ещё как вариант можно сделать чтобы use-package через :ensure их ставил автоматом https://github.com/jwiegley/use-package
Ох, свежаком то как повеяло.
источник

¥

¥αros!αν in Emacs — русскоговорящее сообщество
(unless (package-installed-p 'use-package)
 (package-refresh-contents)
 (package-install 'use-package))
(require 'use-package-ensure)
(setq use-package-always-ensure t)
источник

AT

Andrew Tropin in Emacs — русскоговорящее сообщество
Gradi
Я в emacs'е ещё не силён.
Делаю свои инит файл и хочу в него складывать пакеты которые бы автоматом при старте ставились если уже не стоят.
В итоге от того костыля отказался и в инит файл положил код вида
(require 'package)
(custom-set-variables
'(package-selected-packages '(
                              ;; packages
                              )))

(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
(package-initialize)
(package-install-selected-packages)
Вот пример кода, который ты ищешь кмк: https://github.com/abcdw/rde/blob/master/stale/.emacs.d/init.org#package-list

Но Дима прав, лучше use-package юзать.
источник

¥

¥αros!αν in Emacs — русскоговорящее сообщество
¥αros!αν
(unless (package-installed-p 'use-package)
 (package-refresh-contents)
 (package-install 'use-package))
(require 'use-package-ensure)
(setq use-package-always-ensure t)
а дальше как обычно можно (use-package ...)
и не нужно везде :ensure t писать
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
> (setq use-package-always-ensure t)

я бы не сказал, что это правильный подход, пакеты могут быть не только из ELPA, но и внутренние, и локальные, и установленные всякими Quelpa/straight
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
экономия на спичках, а добавляется имплиситность
источник

¥

¥αros!αν in Emacs — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
> (setq use-package-always-ensure t)

я бы не сказал, что это правильный подход, пакеты могут быть не только из ELPA, но и внутренние, и локальные, и установленные всякими Quelpa/straight
да, но обычно таких меньшинство и всегда можно для них прописать :ensure nil
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
¥αros!αν
да, но обычно таких меньшинство и всегда можно для них прописать :ensure nil
не настолько и меньшинство, у меня порядка 80/120 вроде бы, всего в полтора раза
источник

¥

¥αros!αν in Emacs — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
не настолько и меньшинство, у меня порядка 80/120 вроде бы, всего в полтора раза
а у меня только один ebuild-mode не из elpa/melpa
так что мне так норм
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
¥αros!αν
а у меня только один ebuild-mode не из elpa/melpa
так что мне так норм
кажется ты обманываешь
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
покажи конфиг
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
ну и так возникает ложное ощущениек, что use-package это пакетный менеджер, а он нет
источник

¥

¥αros!αν in Emacs — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
покажи конфиг
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
см. строчки 21-61 как минимум, ты используешь внутренние пакеты
источник