Jump to content
    

Список желаемых доработок форума

Попробую код внутрь спойлера вставить:

	// count steps @tim 14/15/16
	void addmicrostep(uint8_t i){
	static volatile uint16_t microsteps[MOTORSNO] = {0}; // current microsteps position
	if(esw_block(i)) stopflag[i] = 1; // turn on stop flag if end-switch was active
	if(++microsteps[i] == the_conf.microsteps[i]){
	microsteps[i] = 0;
	stppos[i] += motdir[i];
	uint8_t stop_at_pos = 0;
	if(motdir[i] > 0){
	if(stppos[i] >= targstppos[i]){ // reached stop position
	stop_at_pos = 1;
	}
	}else{
	if(stppos[i] <= targstppos[i]){
	stop_at_pos = 1;
	}
	}
	if(stopflag[i] || stop_at_pos){ // stop NOW
	if(stopflag[i]) targstppos[i] = stppos[i]; // keep position (for keep flag)
	stopflag[i] = 0;
	mottimers[i]->CR1 &= ~TIM_CR1_CEN; // stop timer
	if(the_conf.motflags[i].donthold)
	MOTOR_DIS(i); // turn off power
	if(stallflags[i] == STALL_STOP){
	stallflags[i] = STALL_NO;
	state[i] = STP_STALL;
	}else
	state[i] = STP_RELAX;
	SEND("MOTOR"); bufputchar('0'+i); SEND(" stop @"); printi(stppos[i]); newline();
	}
	}
	}
	

Share this post


Link to post
Share on other sites

Все равно не работает: жабоскрипт ломает все форматирование исходного кода: хоть ты его вставляй в теги через ctrl+c, хоть средней кнопкой мыши!

Вроде бы раньше этого бага не было, форматирование не ломалось.

Если отключить жабоскрипт, вообще невозможно ничего сделать.

 

И да, неправильно работает режим редактирования: там уже содержимое тегов отображается как веб. А должно отображаться натурально: чтобы все теги было видно и можно было нормально править. Скажем, я не смог добавить текст к предыдущему сообщению!

 

Почему нельзя форму ввода сообщения сделать обычной веб-формой ввода текста? Зачем эти жабоскриптовские извращения??? Ввел текст, нажал `Save`, оно "улетело". Для любителей кнопочки потыкать можно было бы менюшку сделать, которая автоматом вставляла бы теги.

Edited by Eddy_Em

Share this post


Link to post
Share on other sites

В 10.06.2022 в 14:49, makc сказал:

Сначала вставляем тег спойлера, в него вставляем код, далее в код вставляем текст. Попробуйте так.

Да, так все норм. Спасибо.

Share this post


Link to post
Share on other sites

4 минуты назад, Eddy_Em сказал:

Все равно не работает: жабоскрипт ломает все форматирование исходного кода: хоть ты его вставляй в теги через ctrl+c, хоть средней кнопкой мыши!

Ctrl-C это копирование в буфер, средняя кнопка это вставка. Вы определитесь что именно вы делаете, где и опишите это всё по шагам с примерами. 

Share this post


Link to post
Share on other sites

On 6/10/2022 at 2:58 PM, makc said:

Ctrl-C это копирование в буфер, средняя кнопка это вставка.

Тьфу, ctrl+v, естественно — вставить из клавиатурного буфера. А вставка из мышиного буфера - средней кнопкой мыши.

Я и так, и эдак пробовал.

Можете воспроизвести: открываете окошко ввода сообщения, пишете ручками тег spoiler, внутри пишете ручками тег code, а потом внутрь этого пытаетесь вставить код. Ничего не получается: форматирование напрочь ломается!

Share this post


Link to post
Share on other sites

13 минут назад, Eddy_Em сказал:

Тьфу, ctrl+v, естественно — вставить из клавиатурного буфера. А вставка из мышиного буфера - средней кнопкой мыши.

Ок. С этим разобрались. Вставлял по Ctrl-Shift-V

 
#include <stdio.h>
int main() {
   // printf() displays the string inside quotation
   printf("Hello, World!");
   return 0;
}
	

 

Ещё пример:

 

 

	       #include <sys/signalfd.h>
       #include <signal.h>
       #include <unistd.h>
       #include <stdlib.h>
       #include <stdio.h>
	       #define handle_error(msg) \
           do { perror(msg); exit(EXIT_FAILURE); } while (0)
	       int
       main(int argc, char *argv[])
       {
           sigset_t mask;
           int sfd;
           struct signalfd_siginfo fdsi;
           ssize_t s;
	           sigemptyset(&mask);
           sigaddset(&mask, SIGINT);
           sigaddset(&mask, SIGQUIT);
	           /* Block signals so that they aren't handled
              according to their default dispositions. */
	           if (sigprocmask(SIG_BLOCK, &mask, NULL) == -1)
               handle_error("sigprocmask");
	           sfd = signalfd(-1, &mask, 0);
           if (sfd == -1)
               handle_error("signalfd");
	           for (;;) {
               s = read(sfd, &fdsi, sizeof(fdsi));
               if (s != sizeof(fdsi))
                   handle_error("read");
	               if (fdsi.ssi_signo == SIGINT) {
                   printf("Got SIGINT\n");
               } else if (fdsi.ssi_signo == SIGQUIT) {
                   printf("Got SIGQUIT\n");
                   exit(EXIT_SUCCESS);
               } else {
                   printf("Read unexpected signal\n");
               }
           }
       }
	
 

 Ctrl-C + Ctrl-V отсюда.

Share this post


Link to post
Share on other sites

Проверка

 
	/**
	* @brief cmd_parser - command parsing
	* @param txt - buffer with commands & data (will be broken by this function!)
	* Common commands format: command [[N]=I], where
	* command - one of `command` from `cmdlist`
	* N - optional parameter (0..255)
	* I - value (int32_t), need for setter
	* Special commands format: s_command [text], where
	* s_command - one of `spec_cmdlist`
	* text - optional list of arguments
	*/
	void cmd_parser(char *txt){
	char cmd[32], *pcmd = cmd;
	int i = 0;
	char *eptr = omit_spaces(txt);
	if(!*eptr) return;
	while(*eptr && i < 30){
	if(*eptr < 'a' || *eptr > 'z') break;
	*pcmd++ = *eptr++;
	++i;
	}
	*pcmd = 0;
	if(cmd[0] == 0){ // empty command
	showHelp();
	return;
	}
	if(eptr && *eptr){
	eptr = omit_spaces(eptr);
	}
	// find command
	const commands *c = textcommands;
	while(c->command){
	if(0 == cmpstr(c->command, cmd)){
	#ifdef EBUG
	SEND("Find known command: "); SEND(cmd);
	if(eptr && *eptr) SEND(", args: "); SEND(eptr);
	NL();
	#endif
	if(c->cmd_code < 0){ // USB-only command
	speccmdlist[-(c->cmd_code)](eptr);
	}else{ // common command
	uint8_t par = CANMESG_NOPAR;
	int32_t val = 0;
	if(eptr && *eptr){
	char *nxt = getnum(eptr, &val);
	if(nxt && nxt != eptr){ // command has parameter?
	if(val < 0 || val >= CANMESG_NOPAR){
	SEND("Command parameter should be 0..126!"); NL();
	return;
	}
	par = (uint8_t)val;
	}else nxt = eptr;
	eptr = getchr(nxt, '=');
	if(eptr){ // command has value?
	eptr = omit_spaces(eptr + 1);
	nxt = getnum(eptr, &val);
	if(nxt != eptr){
	par |= 0x80; // setter
	}
	}
	}
	// here we got command & ppar/pval -> call CMD
	errcodes retcode = cmdlist[c->cmd_code](par, &val);
	SEND(cmd);
	par &= 0x7f;
	if(par != CANMESG_NOPAR) printu(par);
	bufputchar('='); printi(val);
	SEND(" ("); printuhex((uint32_t)val); bufputchar(')');
	if(ERR_OK != retcode){
	SEND("\nERRCODE=");
	printu(retcode);
	}
	}
	NL();
	return;
	}
	++c;
	}
	showHelp();
	}
	

 

Не работает, как и раньше. Я уж не знаю, чего там у вас, у меня firefox 100.0.2 на Gentoo, из нужных жабоскриптов (форум и яндекс) оба разрешены.

Может, в настройках форума какие-то "галочки" есть?

Повторю MWE:

1. Открываем форму для вставки сообщения.

2. Вводим текст [ spoiler ] [ code ] [ / code ] [ / spoiler ] (теги в MWE ввести не могу по понятным причинам).

3. Между тегами [ code ] [ / code ] вставляем код.

 

Проверю-ка я и в хроме. Кстати, здесь форма по-другому выглядит: в firefox у меня все поля кнопок текстом подписаны, а в chrome - рисунками помечены.

 
	static void showHelp(){
	SEND("https://github.com/eddyem/stm32samples/tree/master/F0-nolib/3steppersLB build#" BUILD_NUMBER " @ " BUILD_DATE "\n");
	SEND("Common commands format is cmd[ N[ = val]]\n\twhere N is command argument (0..127), val is its value\n");
	//SEND("Commands list:\n");
	const commands *cmd = textcommands;
	while(cmd->command){
	if(*cmd->command){
	bufputchar('\t');
	SEND(cmd->command);
	SEND(" - ");
	}
	SEND(cmd->help); newline();
	++cmd;
	}
	}
	 
	

место для текста

Share this post


Link to post
Share on other sites

8 минут назад, Eddy_Em сказал:

Повторю MWE:

1. Открываем форму для вставки сообщения.

2. Вводим текст [ spoiler ] [ code ] [ / code ] [ / spoiler ] (теги в MWE ввести не могу по понятным причинам).

3. Между тегами [ code ] [ / code ] вставляем код.

Я делаю всё то же самое с точностью до размещения тегов. У меня каждый тег на своей строке и всё получается правильно.

Share this post


Link to post
Share on other sites

Ну, не знаю, как это у вас получается. Если я пытаюсь в форму для ввода любой текст с форматированием вставить, форматирование ломается. Текст вставляется с широкими промежутками - как будто каждую строчку заключают в тег <p></p>.

Могу даже скринкаст записать ☺

Edited by Eddy_Em

Share this post


Link to post
Share on other sites

Я вставляю через Ctrl-Shift-V и перед отправкой выглядит всё так:

Спойлер

1172896543_.thumb.png.3e3d9d81aa4520789d1fa32eaded137b.png



Получается:

 
#include <stdio.h>
int main() {
    FILE *fp;
    int c;
   
    // open the current input file
    fp = fopen(__FILE__,"r");
	    do {
         c = getc(fp);   // read character
         putchar(c);     // display character
    }
    while(c != EOF);  // loop until the end of file is reached
    
    fclose(fp);
    return 0;
}
	

 

 

Браузер: Mozilla/5.0 (X11; Linux x86_64; rv:101.0) Gecko/20100101 Firefox/101.0
Distributor ID: Debian
Description:    Debian GNU/Linux 11 (bullseye)
Release:        11
Codename:       bullseye

Share this post


Link to post
Share on other sites

Eddy_Em

Почему нельзя форму ввода сообщения сделать обычной веб-формой ввода текста? Зачем эти жабоскриптовские извращения??? Ввел текст, нажал `Save`, оно "улетело". Для любителей кнопочки потыкать можно было бы менюшку сделать, которая автоматом вставляла бы теги.

_

Вот никак не получается донести до админа, что эта херь не работает. Просто какой-то звиздец на ровном месте, иной раз сообщение писать неохота.

_

makc

_

Ну не работает этот движок, пожалуйста смените на вменяемый.

Share this post


Link to post
Share on other sites

ОК, записываю видео: вот оно!

 
	static void showHelp(){
	SEND("https://github.com/eddyem/stm32samples/tree/master/F0-nolib/3steppersLB build#" BUILD_NUMBER " @ " BUILD_DATE "\n");
	SEND("Common commands format is cmd[ N[ = val]]\n\twhere N is command argument (0..127), val is its value\n");
	//SEND("Commands list:\n");
	const commands *cmd = textcommands;
	while(cmd->command){
	if(*cmd->command){
	bufputchar('\t');
	SEND(cmd->command);
	SEND(" - ");
	}
	SEND(cmd->help); newline();
	++cmd;
	}
	}
	 
	
Edited by Eddy_Em

Share this post


Link to post
Share on other sites

1 минуту назад, petrov сказал:

Ну не работает этот движок, пожалуйста смените на вменяемый.

Напишите инструкцию как это сделать и мы сразу же займёмся этой задачей.

4 минуты назад, Eddy_Em сказал:

ОК, записываю спойлер!

Запустите браузер в safemode и повторите тот же самый эксперимент. Судя по внешнему виду браузера вы над ним крепко поработали.

Share this post


Link to post
Share on other sites

В сети же полным-полно примеров, как сделать форму для ввода текста. А по нажатию submit содержимое отправляется в обработчик POST/GET запросом!

Ну так я и в chrome проверял! А там почти ничего нет, кроме adblock, stylish и ublock…

Edited by Eddy_Em

Share this post


Link to post
Share on other sites

2 минуты назад, Eddy_Em сказал:

В сети же полным-полно примеров, как сделать форму для ввода текста. А по нажатию submit содержимое отправляется в обработчик POST/GET запросом!

Конечно полно, только они оторваны от контекста движка данного форума. Дайте ссылку на способ замены стандартного редактора на примитивный, какой вам так нравится и тогда можно будет продолжить разговор на эту тему.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...